À propos du projet

Waveform Playlist est un éditeur et lecteur audio multipiste pour le navigateur, construit sur React, Tone.js et la Web Audio API. Il affiche les formes d'onde sur canvas et prend en charge l'édition de clips par glisser-déposer, ce qui en fait une alternative web aux éditeurs de bureau tels qu'Audacity. Capacités principales décrites dans le README : - Édition multipiste : plusieurs clips par piste, avec déplacement par glisser et poignées de rognage. - Visualisation de forme d'onde : rendu canvas avec contrôles de zoom, plus des pics pré-calculés optionnels pour un chargement plus rapide. - Effets : une bibliothèque d'effets Tone.js (reverb, delay, filtres, distorsion et autres) avec contrôle des paramètres en temps réel et une chaîne d'effets maître. - Enregistrement : capture basée sur AudioWorklet avec aperçu de forme d'onde en direct, mesure VU, overdub et remplacement par punch-in dans la variante Web Components. - Export : export WAV de pistes individuelles ou du mix complet, avec rapport de progression. - Annotations : annotations textuelles synchronisées dans le temps avec navigation au clavier et édition par glisser. - MIDI : analyse de fichiers MIDI, visualisation en piano-roll et lecture SoundFont ou PolySynth. - Thématisation : thèmes personnalisables avec mode sombre et clair. - TypeScript : définitions de types incluses. L'utilisation est basée sur des composants. Une configuration typique enveloppe l'interface dans WaveformPlaylistProvider, fournit des pistes créées via createTrack et createClipFromSeconds, et compose PlayButton, PauseButton, StopButton et Waveform. Les hooks couvrent le chargement audio (useAudioTracks), le contrôle du transport (usePlaylistControls), l'animation de lecture, le zoom, les effets dynamiques et l'export WAV. Tone.js et @dnd-kit/react sont des dépendances pair installées séparément. Le projet est organisé en un ensemble de paquets : composants et hooks navigateur, types et utilitaires de base, un moteur de timeline agnostique du framework, composants UI stylisés, un moteur de lecture Tone.js, et l'extraction de pics. Des paquets optionnels ajoutent MIDI, annotations, enregistrement, processeurs AudioWorklet partagés, rendu de spectrogramme et une lecture basée sur HTMLMediaElement avec vitesse de lecture préservant la hauteur. Une couche expérimentale Web Components (basée sur Lit, sans React requis) offre des éléments déclaratifs daw-track et daw-clip, une API d'éditeur impérative, un choix d'adaptateur entre Web Audio natif et Tone.js, le déplacement/rognage/découpage de clips avec détection de collision, annuler/rétablir, raccourcis clavier, dépôt de fichiers, métronome avec mesures mixtes et changements de tempo, automatisation du tempo, et hébergement de plugins WAM 2.0 avec compilation Faust DSP optionnelle dans le navigateur. Un document de spécification décrit le catalogue d'éléments et les phases de migration. La documentation comprend des exemples interactifs en direct, des guides de démarrage et une référence API. La prise en charge par les navigateurs nécessite une implémentation moderne de la Web Audio API (Chrome, Firefox, Safari, Edge). Le projet est sous licence MIT et est issu du projet Airtime chez Sourcefabric.