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.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.