À propos du projet

SyntaxWave est un environnement de programmation audio expérimental destiné aux performers de live coding et aux explorateurs de musique algorithmique. Au lieu d'un DAW basé sur une timeline, il traite le code comme l'instrument : un langage dédié personnalisé avec des mots-clés pour les oscillateurs, enveloppes, filtres, lignes de retard et synthèse granulaire compile vers des opérations audio vectorisées, le README affirmant une compilation en moins de cinq millisecondes pour les patches typiques. Le runtime est décrit en quatre couches. Une couche éditeur fournit un IDE basé navigateur avec coloration syntaxique, autocomplétion DSL, documentation en ligne et édition collaborative via transformation opérationnelle. Une couche de compilation analyse le DSL en une représentation intermédiaire, la compile JIT vers WebAssembly et distribue la génération de tampons au GPU. Une couche audio utilise des backends de plateforme (WASAPI, CoreAudio, ALSA, Web Audio API en secours) pour un ordonnancement précis à l'échantillon et un routage multicanal. Une couche réseau construit un maillage WebRTC où chaque nœud est à la fois producteur et consommateur, avec une synchronisation d'état basée sur CRDT afin que les éditions concurrentes convergent vers la même sortie. La collaboration est une fonctionnalité phare : les participants partagent un graphe audio distribué, peuvent partager des extraits, couper ou isoler les contributions des autres, et fusionner les flux dans une sortie maître. Le README indique une latence inférieure à 15 ms entre les nœuds et un budget de latence réseau inférieur à 30 ms entre les nœuds en périphérie. Un navigateur de timeline maître montre les modifications de code de chaque participant sous forme de pistes avec des formes d'onde en dessous. Un pipeline d'analyse neuronale extrait les grilles rythmiques, les signatures de tonalité, les motifs d'attaque et les descripteurs timbraux de l'audio en direct, renvoyant spectrogrammes, chromagrammes et clusters de formes d'onde dans l'éditeur comme retour visuel. Le contrôle gestuel mappe les faders MIDI, les accéléromètres ou les positions des mains suivies par caméra à n'importe quelle variable DSL. Une architecture de plugins permet d'écrire des unités de synthèse, des effets et des modules d'analyse en Rust ou C, compilés vers WebAssembly et chargés à chaud en pleine session. Les spécifications techniques annoncées incluent des taux d'échantillonnage configurables de 44,1 kHz à 384 kHz, des tailles de tampon de 32 à 4096 échantillons, jusqu'à 512 voix simultanées par nœud, une ABI de plugin wasm32-wasi, et la prise en charge de Windows 10/11, macOS 12+, Linux (x86_64, aarch64) et Chrome/Firefox/Edge. Le projet est distribué sous forme d'un exécutable unique qui lance un serveur web local et un backend audio, ouvrant l'interface dans le navigateur. Un exemple minimal est `sine freq:440 gain:0.3`, exécuté avec Ctrl+Entrée. Les fonctionnalités orientées scène incluent l'édition multi-curseur, le parcours de l'historique du code, un mode gel qui maintient la sortie actuelle pendant la préparation de la section suivante, et une vue projecteur qui masque l'habillage de l'interface. L'interface est responsive sur ordinateur, tablette et mobile, avec des gestes tactiles et un mode mobile à charge réduite. Les chaînes d'interface, infobulles et messages d'erreur sont proposés en seize langues, et le DSL accepte des alias de mots-clés localisés (par exemple `sinus` ou `正弦波`). Le README annonce également un support humain 24h/24 via un chat intégré et une base de connaissances. Le projet est publié sous licence MIT et invite les contributions de la communauté du live coding, des chercheurs en DSP et des passionnés de langages ; le README mentionne un dépôt de plugins avec plus de deux cents unités de synthèse contribuées par la communauté et des code jams en ligne réguliers. Un avertissement note que l'audio en temps réel peut produire des sons forts ou inattendus, les utilisateurs devant donc surveiller attentivement les niveaux de sortie.