Tzopilotl : créez votre musique en live-coding
Quand les compilateurs font de la musique
Tu connais ce feeling ? Tu es en train de coder ton synthé, la session tourne, et là — catastrophe — tu dois tout casser pour tester une idée. Tzopilotl débarque pour flinguer cette frustration.
Le concept
Concrètement, Tzopilotl c'est un langage de live coding pour l'audio. Mais pas n'importe lequel : avec du typage statique. Là où la plupart des DAW te forcent à recompiler, redémarrer, recharger ton plugin dans des cases prédefinis, ici tu modifies tes paramètres en temps réel. Le son suit. Sans coupure. Sans glitch.
Ce qui change vraiment
Fini le jeu du mikado entre code et son. Tzopilotl compile tes definitions de synthés en plugins natifs via un pipeline de 14 passes. Pendant que la musique tourne, le compilateur bosse en arrière-plan. Des que c'est pret, hop — hot-swap sans perdre une seule note.
Pour les curieux du technique, derrière le capot on trouve un moteur de réécriture algébrique et une génération de C++ optimisé SIMD. Le tout tournant sur une VM avec un allocateur O(1) TLSF et un garbage collector incrémental avec des pauses sous la milliseconde. Pas de parasites audio en pleine исполнениe, quoi.
Les trois piliers
Tout tient sur trois moteurs qui fonctionnent ensemble :
- Le langage lui-même — Une approche fonctionnelle de la programmation audio, avec inférence de types moderne
- Le compilateur de synthdef — Transforme les graphes de signaux en plugins natifs optimisés, avec environ 200 générateurs d'unités disponibles
- Le moteur temps réel — Gère le patching dynamique, les connexions en crossfade, la communication lock-free entre threads RT et non-RT, le parallélisme multicœur et le scheduling à l'échantillon près
La stack technique
Pour les amateurs de details :
- Typage statique avec inférence — moins de bugs, moins de boilerplate
- Immuable par défaut — code concurrent plus sûr
- Pattern matching et coroutines — des flux audio complexes mais lisibles
- Mapping auto sur les arrays — pas besoin de boucles explicites pour vectoriser
- Pipeline gauche-droite — ça ressemble à du signal flow, et ça s'utilise comme tel
Ça tourne comment ?
Compiler depuis les sources, c'est direct. macOS et Linux supported. Il te faut Clang (AppleClang pour Apple, Clang 19+ pour Linux), CMake 3.21+, un toolchain C++23, et CoreAudio sur Mac ou ALSA/JACK/PulseAudio sur Linux.
Un clone, le build script, et tu peux commencer à coder ton LFO sur un sine via un filtre peigne. Le classique pour découvrir la plateforme.
Pourquoi ça compte
Le live coding, historiquement, c'était le Far West. Soit tu bidouillais des APIs bas niveau, soit tu déboursais pour des outils propriétaires souvent opaques.
Tzopilotl apporte les réflexes de la prog moderne dans le domaine audio. Typage statique, immuabilité, patterns fonctionnels — mais sans sacrifier l'immédiateté que le live coding exige.
Pour les devs qui bossent sur des systèmes temps réel, le design de compilateurs ou la programation audio, c'est un terrain de jeu béton. Le pipeline de génération de code seul justifie le détour si tu veux voir comment des abstractions audio haut niveau se transforment en code machine efficace.
Va jetter un œil sur le projet : https://lfnoise.github.io/tzpl. La prochaine fois que tu mixes du code et de la musique, autant avoir les bons outils.