Sobre el proyecto

SyntaxWave es un entorno experimental de programación de audio dirigido a intérpretes de live coding y exploradores de música algorítmica. En lugar de un DAW basado en línea de tiempo, trata el código como el instrumento: un lenguaje de dominio específico propio con palabras clave para osciladores, envolventes, filtros, líneas de retardo y síntesis granular compila a operaciones de audio vectorizadas, y el README afirma una compilación por debajo de los cinco milisegundos para parches típicos. El runtime se describe en cuatro capas. Una capa de editor ofrece un IDE basado en navegador con resaltado de sintaxis, autocompletado del DSL, documentación en línea y edición colaborativa mediante transformación operacional. Una capa de compilación analiza el DSL a una representación intermedia, lo compila JIT a WebAssembly y distribuye la generación de búferes a la GPU. Una capa de audio usa backends de plataforma (WASAPI, CoreAudio, ALSA, Web Audio API como respaldo) para programación con precisión de muestra y enrutamiento multicanal. Una capa de red construye una malla WebRTC donde cada nodo es a la vez productor y consumidor, con sincronización de estado basada en CRDT para que las ediciones concurrentes converjan en la misma salida. La colaboración es una característica destacada: los participantes comparten un grafo de audio distribuido, pueden compartir fragmentos, silenciar o aislar las contribuciones de los demás y fusionar flujos en una salida maestra. El README indica una latencia inferior a 15 ms entre nodos y un presupuesto de latencia de red por debajo de 30 ms entre nodos de borde. Un navegador de línea de tiempo maestra muestra los cambios de código de cada participante como carriles con formas de onda debajo de ellos. Una canalización de análisis neuronal extrae rejillas de beats, armaduras de clave, patrones de onset y descriptores tímbricos del audio en vivo, y devuelve espectrogramas, cromagramas y agrupaciones de formas de onda al editor como retroalimentación visual. El control por gestos asigna faders MIDI, acelerómetros o posiciones de manos rastreadas por cámara a cualquier variable del DSL. Una arquitectura de plugins permite unidades de síntesis, efectos y módulos de análisis escritos en Rust o C, compilados a WebAssembly y cargados en caliente a mitad de sesión. Las especificaciones técnicas indicadas incluyen frecuencias de muestreo configurables de 44,1 kHz a 384 kHz, tamaños de búfer de 32 a 4096 muestras, hasta 512 voces simultáneas por nodo, una ABI de plugins wasm32-wasi y compatibilidad con Windows 10/11, macOS 12+, Linux (x86_64, aarch64) y Chrome/Firefox/Edge. El proyecto se distribuye como un único ejecutable que lanza un servidor web local y un backend de audio, y abre la interfaz en el navegador. Un ejemplo mínimo es `sine freq:440 gain:0.3`, ejecutado con Ctrl+Enter. Las características orientadas al escenario incluyen edición multicursor, scrubbing del historial de código, un modo de congelación que mantiene la salida actual mientras se prepara la siguiente sección y una vista de proyector que oculta los elementos de la interfaz. La interfaz es responsiva en escritorio, tableta y móvil, con gestos táctiles y un modo móvil de carga reducida. Las cadenas de la interfaz, la información sobre herramientas y los mensajes de error se ofrecen en dieciséis idiomas, y el DSL acepta alias de palabras clave localizados (por ejemplo `sinus` o `正弦波`). El README también anuncia soporte humano ininterrumpido mediante un chat integrado y una base de conocimiento. El proyecto se publica bajo la Licencia MIT e invita a contribuciones de la comunidad de live coding, investigadores de DSP y entusiastas de los lenguajes; el README menciona un repositorio de plugins con más de doscientas unidades de síntesis aportadas por la comunidad y code jams en línea periódicos. Un aviso legal señala que el audio en tiempo real puede producir sonidos fuertes o inesperados, por lo que los usuarios deben monitorear cuidadosamente los niveles de salida.