Sobre el proyecto
Waveform Playlist es un editor y reproductor de audio multipista para el navegador, construido sobre React, Tone.js y la Web Audio API. Renderiza formas de onda en canvas y admite edición de clips mediante arrastrar y soltar, lo que lo convierte en una alternativa web a editores de escritorio como Audacity.
Capacidades principales descritas en el README:
- Edición multipista: varios clips por pista, con arrastre para mover y manejadores de recorte.
- Visualización de formas de onda: renderizado en canvas con controles de zoom, además de picos precalculados opcionales para una carga más rápida.
- Efectos: una biblioteca de efectos de Tone.js (reverb, delay, filtros, distorsión y otros) con control de parámetros en tiempo real y una cadena de efectos maestra.
- Grabación: captura basada en AudioWorklet con vista previa de forma de onda en vivo, medición VU, overdub y reemplazo por punch-in en la variante de Web Components.
- Exportación: exportación WAV de pistas individuales o de la mezcla completa, con informes de progreso.
- Anotaciones: anotaciones de texto sincronizadas en el tiempo con navegación por teclado y edición por arrastre.
- MIDI: análisis de archivos MIDI, visualización en piano roll y reproducción con SoundFont o PolySynth.
- Tematización: temas personalizables con modo oscuro y claro.
- TypeScript: definiciones de tipos incluidas.
El uso está basado en componentes. Una configuración típica envuelve la interfaz en WaveformPlaylistProvider, proporciona pistas creadas mediante createTrack y createClipFromSeconds, y compone PlayButton, PauseButton, StopButton y Waveform. Los hooks cubren la carga de audio (useAudioTracks), el control de transporte (usePlaylistControls), la animación de reproducción, el zoom, los efectos dinámicos y la exportación WAV. Tone.js y @dnd-kit/react son dependencias peer que se instalan por separado.
El proyecto está organizado como un conjunto de paquetes: componentes y hooks del navegador, tipos y utilidades centrales, un motor de línea de tiempo agnóstico del framework, componentes de interfaz con estilos, un motor de reproducción Tone.js y extracción de picos. Los paquetes opcionales añaden MIDI, anotaciones, grabación, procesadores AudioWorklet compartidos, renderizado de espectrograma y una reproducción basada en HTMLMediaElement con velocidad de reproducción que preserva el tono.
Una capa experimental de Web Components (basada en Lit, sin necesidad de React) ofrece elementos declarativos daw-track y daw-clip, una API imperativa de editor, elección de adaptador entre Web Audio nativo y Tone.js, movimiento, recorte y división de clips con detección de colisiones, deshacer/rehacer, atajos de teclado, arrastre de archivos, metrónomo con compases mixtos y cambios de tempo, automatización de tempo y alojamiento de plugins WAM 2.0 con compilación opcional de Faust DSP en el navegador. Un documento de especificación describe el catálogo de elementos y las fases de migración.
La documentación incluye ejemplos interactivos en vivo, guías de introducción y una referencia de API. La compatibilidad con navegadores requiere una implementación moderna de la Web Audio API (Chrome, Firefox, Safari, Edge). El proyecto tiene licencia MIT y se originó en el proyecto Airtime de Sourcefabric.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.