Sobre o projeto

Waveform Playlist é um editor e reprodutor de áudio multipista para o navegador, construído sobre React, Tone.js e a Web Audio API. Ele renderiza formas de onda em canvas e oferece suporte à edição de clipes por arrastar e soltar, sendo uma alternativa baseada na web a editores de desktop como o Audacity. Principais recursos descritos no README: - Edição multipista: vários clipes por faixa, com movimentação por arrastar e alças de corte. - Visualização da forma de onda: renderização em canvas com controles de zoom, além de picos pré-calculados opcionais para carregamento mais rápido. - Efeitos: uma biblioteca de efeitos Tone.js (reverb, delay, filtros, distorção e outros) com controle de parâmetros em tempo real e uma cadeia de efeitos master. - Gravação: captura baseada em AudioWorklet com pré-visualização da forma de onda ao vivo, medição VU, overdub e substituição por punch-in na variante Web Components. - Exportação: exportação WAV de faixas individuais ou da mixagem completa, com relatório de progresso. - Anotações: anotações de texto sincronizadas no tempo, com navegação por teclado e edição por arrastar. - MIDI: análise de arquivos MIDI, visualização em piano roll e reprodução com SoundFont ou PolySynth. - Temas: temas personalizáveis com modo escuro e claro. - TypeScript: definições de tipos incluídas. O uso é baseado em componentes. Uma configuração típica envolve a interface em WaveformPlaylistProvider, fornece faixas criadas via createTrack e createClipFromSeconds, e compõe PlayButton, PauseButton, StopButton e Waveform. Os hooks cobrem carregamento de áudio (useAudioTracks), controle de transporte (usePlaylistControls), animação de reprodução, zoom, efeitos dinâmicos e exportação WAV. Tone.js e @dnd-kit/react são dependências de par instaladas separadamente. O projeto é organizado como um conjunto de pacotes: componentes e hooks para navegador, tipos e utilitários centrais, um motor de linha do tempo independente de framework, componentes de UI estilizados, um motor de reprodução Tone.js e extração de picos. Pacotes opcionais adicionam MIDI, anotações, gravação, processadores AudioWorklet compartilhados, renderização de espectrograma e uma reprodução baseada em HTMLMediaElement com taxa de reprodução que preserva o tom. Uma camada experimental de Web Components (baseada em Lit, sem exigir React) oferece elementos declarativos daw-track e daw-clip, uma API imperativa de editor, escolha de adaptador entre Web Audio nativo e Tone.js, movimentação/corte/divisão de clipes com detecção de colisão, desfazer/refazer, atalhos de teclado, arrastar e soltar arquivos, metrônomo com compassos mistos e mudanças de andamento, automação de andamento e hospedagem de plugins WAM 2.0 com compilação opcional de Faust DSP no navegador. Um documento de especificação descreve o catálogo de elementos e as fases de migração. A documentação inclui exemplos interativos ao vivo, guias de introdução e uma referência de API. O suporte a navegadores exige uma implementação moderna da Web Audio API (Chrome, Firefox, Safari, Edge). O projeto é licenciado sob MIT e teve origem no projeto Airtime, na Sourcefabric.