Essai · Informatique musicale
RACK-02 : dans les coulisses du générateur de techno
Audit technique de RACK-02 : comment une graine et des règles de probabilité génèrent des loops de techno reproductibles avec un moteur modulaire.
Ça fait un moment que j’appuie sur REROLL dans RACK-02 et chaque nouvelle graine sonne comme de la vraie techno —pas comme du bruit aléatoire avec une grosse caisse en dessous. Ça, dans un onglet de navigateur, sans rien installer, c’est ce qui m’a donné envie de m’asseoir pour écrire ceci. Ce n’est pas un test de produit. C’est un petit audit : ce qu’il y a derrière un outil comme celui-ci, avec quelles pièces on pourrait construire quelque chose de similaire, et pourquoi cela 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 pseudonyme, 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 construit avec la Web Audio API, sans backend : tout le traitement du signal se fait dans le navigateur lui-même. Il a sa propre fiche sur /concepto/rack-02.
Sa décision de conception la plus visible est qu’il imite, à dessein, un rack modulaire Eurorack physique. Les panneaux se mesurent en HP (Horizontal Pitch), l’unité réelle avec laquelle on mesure la largeur d’un module Eurorack dans le monde physique. Ce n’est pas qu’une question esthétique : chaque bloc de l’interface —Kick, Bassline, Hats, le PATCHBAY de modulation— occupe sa place dans le rack comme le ferait un module réel vissé dans un boîtier. Quiconque a déjà patché un système modulaire reconnaît le vocabulaire immédiatement ; qui ne l’a pas fait l’apprend en observant comment les pièces se connectent à l’écran.
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 : le loop change complètement.
- MUTATE varie à partir de la graine actuelle, sans en changer la racine.
- SCENES propose quatre emplacements chaînables —A, B, C, D— reliés par CHAIN, chacun avec sa propre longueur et son propre mode de morphing entre 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— est, en substance, un flux de composition assisté par des règles : on ne compose pas note par note, on compose l’espace des possibles d’où sort le résultat.
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. Il embarque une chaîne de synthèse aux rôles bien définis, tous observables dans l’interface même :
| 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 | Charleston |
| 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 les autres 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. Un séquenceur pas à pas classique est une grille on/off : le pas sonne ou ne sonne pas, toujours pareil, tour après tour. RACK-02 ne fonctionne pas ainsi. Chaque pas a deux paramètres propres :
- PROB : probabilité de déclenchement. Un pas avec PROB à 60 % sonne environ six tours sur dix, pas tous.
- ROTATE : décalage du motif complet, qui réorganise quel pas tombe où sans toucher aux valeurs de PROB de chacun.
Le résultat est un système génératif à deux couches : la graine fixe l’espace des possibles —quelle gamme, quelle densité, quelle relation entre les modules— et la probabilité décide, à l’intérieur de cet espace, ce qui sonne à chaque tour concret. C’est pour cela que REROLL ne sonne pas comme du bruit : il change la graine, pas les règles. Et c’est pour cela que deux loops issus de la même graine ne sonnent pas exactement pareil note pour note, mais sonnent bien de la même lignée, reconnaissable.
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. Un générateur équivalent
en Python avec un random.seed() fixe et une table de probabilité par pas
produirait le même type de comportement : reproductible si la graine est
fixée, varié sinon. La pièce conceptuelle est la même que celle qui soutient
tout système de composition algorithmique fondé sur des règles : on ne
génère pas de la musique au hasard, on génère à l’intérieur de contraintes
qui portent déjà une intention musicale intégrée.
PATCHBAY et CROSS-MOD : une vraie modulation
Ce qui distingue ensuite RACK-02 d’un simple pas à pas, c’est le
PATCHBAY : une matrice de modulation par CV avec quatre LFO —formes
rampe, carrée, sample & hold et dent de scie— routés vers des paramètres
précis d’autres modules. Dans mes essais, j’ai vu des routes comme
hat.tone, vox.ringhz, fx.plate ou perc.tone, chacune avec sa propre
quantité et sa propre période mesurée en mesures (4, 8 ou 16). C’est
exactement le vocabulaire d’un système modulaire physique —sortie CV d’un
module, entrée CV d’un autre— implémenté en logiciel, sans aucun câble.
CROSS-MOD va un cran plus loin : une modulation croisée à fréquence audio, et non à la vitesse lente d’un LFO. La route observée est « Bass pitch (FM) », avec des contrôles Depth, Ratio, Fine et forme d’onde (Shape). C’est de la vraie FM —modulation de fréquence classique, la même famille technique qui a historiquement fait le DX7— appliquée ici à la basse même du rack.
GRAIN : granulaire avec feedback sur sa propre sortie
Le module GRAIN rééchantillonne la sortie du rack lui-même en boucle de feedback. L’interface elle-même le décrit ainsi : « grains are cut from the rack’s own output a moment ago, then thrown back pitched and scattered ». C’est de la synthèse granulaire appliquée non pas à un échantillon externe chargé par l’utilisateur, mais à ce que le rack est en train de produire à cet instant même, découpé, retranscrit en hauteur et dispersé de nouveau dans le mixage.
Rendu déterministe et reproductible
Chaque bounce de RACK-02 porte une graine visible —j’ai vu des valeurs comme
84149— et est déterministe : la même graine produit toujours le même
résultat. L’outil lui-même le déclare sans détour : « every bounce here is
seeded and reproducible; verification is what we do for critical systems ».
C’est une phrase que, venant de mon travail quotidien avec des systèmes que
j’ai besoin de pouvoir vérifier et reproduire, je valorise plus que je ne
valoriserais 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 : « Arm, then move any knob while the rack runs. The move is written to a 4-bar lane, loops from then on, and is baked into every bounce ». C’est une capture de geste en temps réel sur une piste de quatre mesures, pas une automatisation dessinée point par point sur une grille. La différence compte : un geste capturé en direct porte l’irrégularité humaine qu’une courbe dessinée à la main 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, via BOUNCE, au format loop, stems ou song/kit complet.
- Du MIDI, avec EXPORT MIDI, ce qui permet d’amener les motifs générés vers n’importe quel DAW ou instrument compatible avec le protocole standard d’échange d’événements musicaux.
- Des patches en JSON, avec PATCH state : l’état complet du rack sérialisé, reproductible et versionnable comme n’importe quel autre fichier texte.
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 : une station de travail audio 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 seulement 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.