Sobre o projeto

Undertone é um motor de síntese procedural baseado em TypeScript projetado para efeitos sonoros de jogos e produção musical. Ele opera com o princípio de que tudo é um padrão, permitindo que os usuários criem desde simples blips de UI até músicas complexas de múltiplas seções usando uma sintaxe consistente inspirada no Strudel e TidalCycles. Principais capacidades incluem: - **Mini-notation**: Uma sintaxe baseada em string poderosa para definir sequências, subdivisões, acordes, ritmos euclidianos e alternâncias. - **Síntese & Reprodução**: Suporta várias formas de onda (seno, triângulo, dente de serra, dente de serra inverso) e tipos de ruído (branco, rosa, marrom), além de um sistema de reprodução de amostras "traga-seus-próprios-assets". - **Ferramentas de Teoria Musical**: Suporte interno para melodias baseadas em graus de escala e expansão de símbolos de acordes (voicing) baseada em implementações matemáticas, em vez de dados agrupados. - **Controle de Voz**: Controles encadeáveis e imutáveis para envelopes ADSR, filtros passa-baixo/passa-alto, fasers e glissandos de pitch. A maioria dos parâmetros numéricos pode ser padronizada usando mini-notation. - **Áudio Espacial**: Suporta panorâmica estéreo e posicionamento multicanal até som surround 7.1. - **Combinadores de Padrão**: Ferramentas para manipular padrões como `fast`, `slow`, `rev` (reverso), `jux` (juxtaposição) e `arrange` para estruturar músicas. - **Modos de Desempenho**: Oferece tanto `.play()` para efeitos percussivos one-shot quanto `.loop()` para sequências musicais agendadas com controle de BPM.