Essai · Informatique musicale
RACK-02 : dans les coulisses du générateur de techno
Comment un programme peut-il « inventer » un rythme de techno différent à chaque fois, sans que ça sonne comme du bruit ? RACK-02 le fait dans le navigateur, sans rien installer. Je raconte ici comment, sans magie ni IA : des règles, de la probabilité et une graine.
Comment un programme peut-il « inventer » un rythme de techno différent à chaque fois, et que ça sonne toujours juste, au lieu de tourner au bruit ? Ça fait un moment que j’appuie sur le bouton REROLL de RACK-02 et chaque nouvelle graine sonne comme de la vraie techno. Ça, dans un onglet de navigateur, sans rien installer, c’est ce qui m’a donné envie de m’asseoir pour écrire ceci.
La réponse courte, pour ne pas te faire attendre : il n’y a ni IA générative ni magie là-derrière. Il y a des règles de composition, de la probabilité et un nombre —la graine— qui décide, à l’intérieur de ces règles, ce qui sonne. Ce texte est un petit audit de comment ça fonctionne à l’intérieur, avec quelles pièces on pourrait construire quelque chose de similaire, et pourquoi ça s’inscrit dans ce que j’explore déjà dans ce cahier au sujet des moteurs audio qui vivent entièrement dans le navigateur.
C’est l’œuvre d’un développeur qui se présente sous le pseudonyme SSX360. Je ne sais pas qui il est au-delà de ce pseudo, et je ne vais pas spéculer —je le traite pour ce qu’il est : un pseudo, pas une biographie.
Qu’est-ce que RACK-02
RACK-02 est un générateur algorithmique de loops de techno. « Algorithmique » signifie qu’il ne joue ni ne lit d’audio enregistré : chaque son est calculé à l’instant même, selon des règles, avec la Web Audio API —l’ensemble d’outils audio déjà inclus de série dans le navigateur, sans besoin d’installer le moindre programme ni d’avoir un serveur derrière—. Tout le traitement du son se passe sur ton propre ordinateur, dans l’onglet. Il a sa propre fiche sur /concepto/rack-02.
Sa décision de conception la plus frappante, c’est qu’il imite, à dessein, un synthétiseur modulaire physique —ces boîtiers pleins de modules avec des câbles de couleurs que tu vois dans les studios et les concerts de musique électronique—. Dans ce monde physique, chaque pièce s’appelle un « module », chaque module fait une seule chose (générer une grosse caisse, filtrer un signal, moduler un autre module…), et on les connecte entre eux avec des câbles pour construire le son final. Le standard le plus répandu de ces systèmes s’appelle l’Eurorack, et ses modules se mesurent dans une unité appelée HP (Horizontal Pitch). RACK-02 recrée cette logique à l’écran : chaque bloc de l’interface —la grosse caisse, la basse, les charlestons, la matrice de modulation— occupe sa place comme le ferait un module réel vissé dans un boîtier. Ce n’est pas qu’une question d’esthétique : c’est la même façon de penser le son par pièces connectées entre elles.
Contrôle : lancer, mélanger, muter
Les contrôles principaux sont peu nombreux et directs :
- RUN lance la lecture.
- REROLL génère une nouvelle graine —un nombre de départ différent— : le loop change complètement.
- MUTATE varie à partir de la graine actuelle, sans en changer la racine.
- SCENES propose quatre emplacements —A, B, C, D— chaînables avec CHAIN, chacun avec sa propre longueur et son propre mode de transition entre les scènes.
- PERFORM ajoute des pads pensés pour le jeu en direct : Fill, Drop, Stutter, Freeze.
Cette combinaison —REROLL pour explorer, MUTATE pour affiner, SCENES pour structurer une progression— ce n’est pas composer note par note, comme tu le ferais avec un piano ou un éditeur de partitions. C’est composer l’ensemble de règles d’où va sortir la musique : tu définis le terrain de jeu, et le programme décide, à l’intérieur de celui-ci, ce qui sonne à chaque instant.
Les modules : une chaîne de synthèse techno complète
RACK-02 n’est pas qu’un séquenceur avec une boîte à rythmes derrière —l’équivalent numérique d’une batterie électronique avec des motifs enregistrés—. Il embarque une chaîne complète de générateurs de son, chacun avec un rôle précis dans le mixage final, tous observables directement dans l’interface :
| Module | Fonction |
|---|---|
| Kick | Grosse caisse, tête de la chaîne rythmique |
| Rumble | Sub-grave alimenté par le kick, filtré et compressé en duck contre lui |
| Bassline | Ligne de basse avec racine, gamme, mode de mouvement et forme d’oscillateur sélectionnables (par exemple D#, Phrygian, Walking, Pulse-PWM) |
| Hats | Charlestons |
| Clap | Clap |
| Perc | Percussion auxiliaire |
| Tom | Tom |
| Stab | Coup harmonique court |
| Drone | Paire d’oscillateurs désaccordés en continu, avec un filtre lent |
| Air | Bande de bruit résonant pour le room tone et les risers |
| Vox | Entrée de voix en direct —chanter, parler ou envoyer une ligne audio— traitée par la même chaîne de plate reverb, delay et duck que le reste des modules, pas comme un canal à part |
| Grain | Granulateur |
Ce dernier détail sur Vox me semble révélateur de l’approche du projet : il ne traite pas la voix comme un ajout spécial avec sa propre chaîne d’effets, il l’intègre dans le même bus de traitement déjà utilisé par Kick, Clap ou Stab. C’est une décision d’architecture, pas un détail cosmétique.
Séquençage probabiliste, pas des motifs fixes
Voici le cœur technique de l’article, et aussi la réponse à la question du début. Une boîte à rythmes classique fonctionne avec une grille de cases : chaque case est allumée ou éteinte, et sonne exactement pareil tour après tour. RACK-02 ne fonctionne pas ainsi. Chaque pas de chaque instrument a deux nombres qui lui sont propres et que tu peux régler :
- PROB (probabilité) : la chance que ce pas sonne à chaque tour. Un pas avec PROB à 60 % sonne environ six fois sur dix, pas toutes —comme lancer un dé pipé plutôt que décider oui ou non à l’avance.
- ROTATE : décale le motif complet, en changeant quel pas tombe où sans toucher aux valeurs de PROB de chacun.
Voici la clé de tout : la graine ne génère pas le son directement, elle génère les conditions du tirage. Elle fixe quelle gamme est utilisée, combien d’instruments sonnent, comment ils se relient entre eux —le « terrain de jeu »—. À l’intérieur de ce terrain, la probabilité décide, tirage après tirage, ce qui sonne à chaque tour concret. C’est pour ça que REROLL ne transforme pas la musique en bruit : il change la graine —le terrain—, pas les règles du jeu. Et c’est pour ça que deux loops issus de la même graine ne sonnent pas exactement pareil note pour note, mais sonnent bien reconnaissablement de la même famille : la pièce qu’on lance change, la main qui la lance non.
Cette même idée —des règles plus une graine, au lieu du hasard pur ou
d’une séquence fixe— est transposable hors du navigateur, et elle n’est
pas exclusive à la musique : c’est la même logique derrière la
génération procédurale de mondes dans les jeux vidéo, par exemple. Un
programme équivalent en Python, avec un random.seed() fixe et une
table de probabilité par pas, produirait le même comportement :
reproductible si la graine est fixée, varié sinon. On ne génère pas de
la musique au hasard pur —ça sonnerait comme du bruit, pas comme de la
techno— ; on génère à l’intérieur de contraintes qui portent déjà une
intention musicale intégrée de fabrique.
PATCHBAY et CROSS-MOD : une vraie modulation
Ce qui distingue ensuite RACK-02 d’un simple pas à pas, c’est le PATCHBAY : sur un synthétiseur modulaire physique, « moduler » un paramètre signifie utiliser un signal pour en contrôler un autre automatiquement —par exemple, que le volume d’un son monte et descende tout seul, en suivant un motif, au lieu de devoir le bouger à la main—. Le PATCHBAY de RACK-02 fait exactement ça avec quatre générateurs de ces signaux de contrôle (avec des formes d’onde différentes —rampe, carrée, aléatoire par paliers et dent de scie—, chacune avec son propre caractère de mouvement) routés vers des paramètres précis d’autres modules. Dans mes essais, j’ai vu des routes comme « le timbre des charlestons », « l’anneau de la voix » ou « la reverb », chacune avec sa propre intensité et sa propre période mesurée en mesures (4, 8 ou 16). C’est exactement le vocabulaire d’un système modulaire physique —des câbles de contrôle qui sortent d’un module et entrent dans un autre— implémenté en logiciel, sans aucun câble.
CROSS-MOD va un cran plus loin : au lieu de moduler à la vitesse lente de ces générateurs de contrôle (quelque chose qui se perçoit comme un mouvement), ici la modulation se produit à la même vitesse que le son audible lui-même —ce qui, en pratique, change le timbre du son, pas seulement son volume ou son filtrage—. La route que j’ai observée concerne le timbre de la basse, avec des contrôles de profondeur, de proportion et de forme d’onde. C’est de la FM (modulation de fréquence) pour de vrai : la même technique de synthèse, déjà classique, qui a rendu célèbre la Yamaha DX7 dans les années 80, appliquée ici sur la basse même du rack.
GRAIN : granulaire avec feedback sur sa propre sortie
Le module GRAIN applique la synthèse granulaire : au lieu de jouer un son entier, il le découpe en fragments minuscules —des « grains » de quelques millisecondes— et les recompose, en changeant leur hauteur ou leur ordre, pour créer une texture nouvelle à partir de l’originale. Ce qui est intéressant chez RACK-02, c’est d’où viennent ces grains : pas d’un échantillon externe que tu charges, mais de ce que le rack lui-même est en train de produire à cet instant précis. L’interface elle-même le décrit ainsi : « les grains sont découpés dans la sortie du rack lui-même il y a un instant, puis renvoyés retranscrits en hauteur et dispersés ». C’est la machine qui s’écoute elle-même et qui recycle son propre son en boucle.
Rendu déterministe et reproductible
Chaque fois que tu exportes le résultat dans un fichier audio (« faire un
bounce », dans le jargon du métier, c’est enregistrer ce qui sonne en
temps réel dans un fichier), RACK-02 affiche la graine utilisée —j’ai vu
des valeurs comme 84149— et le processus est déterministe : la même
graine produit toujours le même résultat exact, note pour note. L’outil
lui-même le déclare sans détour : « chaque export ici porte sa graine et
est reproductible ; la vérification, c’est ce qu’on fait pour les
systèmes critiques ». C’est une phrase que, venant de mon travail
quotidien avec des systèmes que j’ai besoin de pouvoir vérifier et
reproduire, j’apprécie plus que je n’apprécierais un nouvel effet
sonore. La génération algorithmique sans graine reproductible est
difficile à déboguer, difficile à partager et difficile à citer. Avec
une graine, un loop précis est une donnée, pas une anecdote.
AUTOMATION : capturer le geste, pas seulement le programmer
RACK-02 permet d’armer une automatisation et de bouger n’importe quel bouton pendant que le rack tourne : « arme le mode, puis bouge n’importe quel contrôle pendant que le rack sonne ; le mouvement est enregistré sur une piste de quatre mesures, se répète à partir de là, et se retrouve intégré dans chaque export ». C’est une capture de geste en temps réel, pas une automatisation dessinée point par point à la souris sur une grille. La différence compte : un geste capturé en direct —la main qui bouge un bouton— porte l’irrégularité humaine qu’une courbe dessinée à la main avec précision reproduit rarement aussi bien.
Exportation : audio, MIDI et état
RACK-02 ne reste pas enfermé dans l’onglet du navigateur. Il exporte :
- De l’audio : le résultat déjà mixé, au format loop, par pistes séparées ou en morceau/kit complet.
- Du MIDI : pas l’audio en lui-même, mais les notes et événements qui l’ont généré, dans le protocole standard que pratiquement n’importe quel programme ou instrument de musique informatique comprend (un DAW, Digital Audio Workstation, c’est justement ça : le programme où l’on enregistre, édite et mixe de la musique). Tu peux ainsi emporter les motifs générés vers un autre outil et continuer à travailler avec.
- L’état complet du rack dans un fichier : tous les réglages sauvegardés dans un format texte reproductible et versionnable, comme n’importe quel autre fichier de données.
Le MIXER, avec mute et solo par canal —Kick, Rumble, Clap, Hats, Perc, Tom, Bass, Stab et le reste—, referme le flux de travail avec le contrôle de mixage qu’on attend de tout moteur audio sérieux, pas seulement d’un jouet génératif.
La même ligne qu’openDAW, un cran plus loin
J’ai déjà écrit sur openDAW : un DAW open source qui vit dans le navigateur, un DAW complet construit sur la Web Audio API, sans backend, sans inscription. RACK-02 appartient au même territoire de recherche que cet article : ce qu’il est possible de construire avec de l’audio en temps réel en utilisant uniquement ce que le navigateur offre déjà de série, sans serveur derrière.
La différence est une question d’approche, pas de territoire. openDAW reproduit l’architecture d’un DAW généraliste : pistes, plugins, mixage. RACK-02 va plus étroit et plus profond dans une direction précise —synthèse modulaire de type Eurorack, génération algorithmique avec graine, modulation croisée à fréquence audio, granulaire avec feedback sur sa propre sortie—, le tout avec le même moteur de base : la Web Audio API tournant entièrement côté client. Deux cas différents de la même question : combien d’un studio de production professionnel tient aujourd’hui dans un onglet de navigateur, sans rien installer.
Bibliographie
- SSX360. RACK-02. https://ssx360.github.io/rack-02/rack.html
- MDN Web Docs. Web Audio API. Mozilla Foundation.
- MIDI Association. MIDI 1.0 Specification. MIDI Manufacturers Association.
Questions fréquentes
-
Comment RACK-02 génère-t-il un loop de techno différent à chaque REROLL ?
Chaque pas du séquenceur de RACK-02 a une valeur de PROB —la probabilité que ce pas sonne à chaque tour— et de ROTATE —le décalage du motif complet. REROLL génère une nouvelle graine qui fixe un espace de possibles différent pour ces valeurs ; MUTATE varie à l’intérieur de la graine actuelle sans en changer la racine. Le résultat n’est ni du hasard pur ni un motif fixe répété : c’est un système génératif reproductible par graine, comme je le décris dans RACK-02 : ce qui se cache derrière un générateur algorithmique de techno dans le navigateur.
-
Dois-je installer quelque chose pour utiliser RACK-02 ?
Non. RACK-02 s’ouvre directement à ssx360.github.io/rack-02/rack.html et tout le traitement audio —synthèse, séquençage, modulation— se fait dans le navigateur lui-même avec la Web Audio API, sans serveur derrière. Le résultat s’exporte avec BOUNCE en audio (loop, stems ou song/kit), avec EXPORT MIDI en MIDI, ou comme patch JSON avec l’état complet du rack. Je le décris plus en détail dans RACK-02 : ce qui se cache derrière un générateur algorithmique de techno dans le navigateur.
-
En quoi RACK-02 se distingue-t-il d'openDAW ?
Les deux fonctionnent entièrement dans le navigateur avec la Web Audio API et sans backend, mais ils visent des objectifs différents. openDAW reproduit l’architecture d’un DAW généraliste : pistes, plugins, mixage. RACK-02 va plus étroit et plus profond dans une direction précise : synthèse modulaire inspirée d’un rack Eurorack physique, séquençage probabiliste avec graine reproductible, modulation croisée à fréquence audio et granulaire avec feedback. Ce sont deux cas du même territoire de recherche : combien d’un studio de production tient aujourd’hui dans un onglet de navigateur. Je le développe dans RACK-02 : ce qui se cache derrière un générateur algorithmique de techno dans le navigateur.