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.