Sobre el proyecto

Undertone es un motor de síntesis procedural basado en TypeScript diseñado para efectos de sonido de juegos y producción musical. Opera bajo el principio de que todo es un patrón, lo que permite a los usuarios crear desde simples pitidos de UI hasta canciones complejas de múltiples secciones utilizando una sintaxis consistente inspirada en Strudel y TidalCycles. Capacidades clave incluyen: - **Mini-notación**: Una sintaxis basada en cadenas poderosa para definir secuencias, subdivisiones, acordes, ritmos euclidianos y alternancias. - **Síntesis y Reproducción**: Soporta diversas formas de onda (seno, triángulo, cuadrado, diente de sierra) y tipos de ruido (blanco, rosa, marrón), así como un sistema de reproducción de muestras "trae tus propios recursos". - **Herramientas de Teoría Musical**: Soporte incorporado para melodías basadas en grados de escala y expansión de símbolos de acordes (voicing) basada en implementaciones matemáticas en lugar de datos agrupados. - **Control de Voz**: Controles encadenables e inmutables para envolventes ADSR, filtros paso bajo/paso alto, fasores y deslizamientos de pitch. La mayoría de los parámetros numéricos pueden ser patronizados usando mini-notación. - **Audio Espacial**: Soporta panoramización estéreo y colocación multicanal hasta sonido envolvente 7.1. - **Combinadores de Patrones**: Herramientas para manipular patrones como `fast`, `slow`, `rev` (inverso), `jux` (yxtaposición) y `arrange` para estructurar canciones. - **Modos de Rendimiento**: Ofrece tanto `.play()` para efectos percusivos de un solo golpe como `.loop()` para secuencias musicales programadas con control de BPM.