Strudel live coding : créer de la musique en code

Écrivez des motifs musicaux sous forme de code et écoutez-les instantanément dans l’éditeur Strudel intégré : TidalCycles pour navigateur.

Choisissez un motif de départ ci-dessous, appuyez sur lecture dans l’éditeur, puis modifiez le code pendant qu’il joue. C’est le live coding : la musique se met à jour dès que vous réévaluez.

Strudel live coding : créer de la musique en code
Écrivez des motifs musicaux sous forme de code et écoutez-les instantanément dans l’éditeur Strudel intégré : TidalCycles pour navigateur.
Motifs de départ

Motif: Batterie

sound("bd hh sd hh")

Le son démarre seulement après avoir appuyé sur lecture dans l’éditeur. Vous voulez l’environnement complet avec navigateur d’échantillons et visuels ? Ouvrir dans Strudel complet

Aide-mémoire de mini-notation Strudel

Les dix constructions qui donnent accès à l’essentiel du langage de motifs. Tout ce qui est entre guillemets doubles est de la mini-notation ; une séquence citée dure exactement un cycle.

ConstructionExempleEffet
sound() / s()sound("bd hh sd hh")Joue des échantillons ou synthés nommés : bd = grosse caisse, sd = caisse claire, hh = charleston. Les quatre événements partagent un cycle également.
note()note("c4 e4 g4").sound("piano")Joue des hauteurs par nom (c4, eb3) ou numéro MIDI et les envoie au son chaîné après.
* (répéter)sound("hh*8")Compresse 8 charlestons dans l’espace d’un événement : la manière standard d’écrire des subdivisions rapides.
~ (silence)sound("bd ~ sd ~")Un emplacement silencieux. La grille d’événements conserve son timing ; le tilde ne joue simplement rien.
[ ] (groupe)sound("bd [sd sd] bd sd")Les crochets placent plusieurs événements dans un seul emplacement et en subdivisent le temps ; ici deux caisses claires rapides partagent le temps 2.
< > (alterner)note("<c2 eb2 g2>")Les chevrons jouent une entrée par cycle en les faisant tourner : une progression d’accords instantanée.
stack()stack(sound("bd*4"), sound("hh*8"))Superpose les motifs pour les jouer simultanément : pour construire une batterie complète ou ajouter une basse sous les percussions.
fast() / slow()sound("bd sd").fast(2)Accélère ou étire un motif : fast(2) place deux répétitions par cycle, slow(2) étale une répétition sur deux cycles.
rev()note("c4 e4 g4 b4").rev()Inverse le motif dans chaque cycle : une variation mélodique en un mot.
.euclid(k, n)sound("bd").euclid(3, 8)Répartit k frappes aussi régulièrement que possible sur n pas. euclid(3,8) est le rythme tresillo derrière d’innombrables grooves latins et dansants.

À propos de Strudel et du live coding

Le live coding consiste à interpréter de la musique en écrivant et réécrivant du code pendant qu’elle joue. Au lieu d’arranger des notes sur une ligne temporelle, vous décrivez des motifs — une grosse caisse à chaque noire, un accord qui change à chaque cycle, des charlestons compressés en triolets — et le langage transforme immédiatement ces descriptions en son. Modifiez une ligne, réévaluez, et la musique se transforme au cycle suivant sans jamais s’arrêter. Cette pratique a fait grandir les algoraves, des soirées en club où le code des interprètes est projeté pour que le public le lise en dansant. Strudel est l’incarnation JavaScript de TidalCycles, le langage de motifs créé par Alex McLean en Haskell vers 2009 et devenu la lingua franca de la musique codée en direct. Strudel réimplémente les idées de Tidal afin qu’elles s’exécutent entièrement dans un onglet de navigateur : ni chaîne d’outils Haskell, ni serveur audio SuperCollider, ni installation. Cette page intègre le REPL officiel Strudel de strudel.cc dans un cadre ; vous obtenez donc le véritable éditeur — éclair au moment de l’évaluation, messages d’erreur, sons intégrés — et les boutons de départ y chargent des motifs fonctionnels. Le lien vers Strudel complet emmène votre motif actuel vers l’environnement avec navigateur d’échantillons et visualisations. Le cœur des langages de la famille Tidal est le cycle : une durée répétée, d’environ deux secondes par défaut, à laquelle tous les motifs sont mesurés. La mini-notation entre guillemets doubles découpe ce cycle. Écrivez bd hh sd hh et vous obtenez quatre événements égaux par cycle : grosse caisse, charleston, caisse claire, charleston. De petites modifications produisent de grands changements : un astérisque multiplie les événements, un tilde insère le silence, des crochets subdivisent un emplacement et des chevrons alternent des valeurs dans les cycles successifs ; deux caractères peuvent ainsi devenir une progression d’accords. Les langages de motifs sont addictifs parce que les transformations se composent. Chaînez rev() pour retourner une mélodie, fast(2) pour doubler sa vitesse ou euclid(3,8) pour redistribuer les frappes dans le tresillo cubain. Chacune s’applique à des motifs entiers, non à des notes isolées ; une édition modifie donc toute la texture. Commencez avec Batterie, remplacez un nom d’échantillon, ajoutez un astérisque : vous faites du live coding.

Recettes de motifs à essayer dans l’éditeur

Copiez l’un de ces exemples dans l’éditeur intégré, lancez la lecture, puis faites-les muter un jeton à la fois.

CodeCe que vous entendezIdée démontrée
sound("bd hh sd hh")Un backbeat de base : grosse caisse, charleston, caisse claire, charleston, une fois par cycleQuatre événements divisent un cycle également : le hello world de la mini-notation.
sound("bd*4, hh*8")Une grosse caisse four-on-the-floor sous un flux de charlestons en crochesUne virgule dans les guillemets superpose des séquences, comme un stack() compact.
note("<c2 eb2 g1 bb1>").sound("sawtooth").lpf(500)Une ligne de basse sombre et filtrée qui change de fondamentale à chaque cycleLes chevrons alternent par cycle ; lpf(500) est un filtre passe-bas de 500 Hz qui adoucit la dent de scie.
sound("bd").euclid(3, 8)Le tresillo : frappes aux pas 1, 4 et 7 sur 8Les rythmes euclidiens répartissent 3 frappes aussi régulièrement que possible sur 8 pas, du son cubain à l’EDM.
note("c4 e4 g4 b4").rev().fast(2)Un arpège descendant joué deux fois par cycleLes transformations s’enchaînent de gauche à droite : inversez le motif, puis doublez sa vitesse.

Comment commencer le live coding

  1. Cliquez sur un motif de départ — Batterie, Mélodie, Ligne de basse ou Polyrythmie — pour charger son code dans l’éditeur Strudel intégré.
  2. Appuyez sur le bouton lecture dans l’éditeur (les navigateurs exigent un clic avant de démarrer tout son).
  3. Modifiez le code pendant qu’il joue : changez un nom d’échantillon, ajoutez *2 à un événement ou remplacez une note, puis appuyez sur Ctrl+Enter (Cmd+Enter sur Mac) pour réévaluer.
  4. Superposez d’autres motifs avec stack() et façonnez-les avec fast, slow, rev ou euclid à l’aide du tableau de référence.
  5. Quand un motif dépasse l’ébauche, ouvrez Strudel complet pour accéder à l’environnement avec navigateur de sons et visuels.

FAQ sur le live coding Strudel

Quelle est la différence entre Strudel et TidalCycles ?
TidalCycles est le langage de motifs original, écrit en Haskell et généralement associé au moteur de synthèse SuperCollider. Strudel est un projet frère officiel qui porte le même système de motifs vers JavaScript et l’API Web Audio ; il fonctionne donc dans tout navigateur moderne sans installation. Les motifs et concepts passent presque directement de l’un à l’autre.
Pourquoi les boutons de départ rechargent-ils l’éditeur ?
Strudel accepte un programme entier dans son URL : la source du motif est encodée en base64 dans l’adresse après le symbole #. Chaque bouton de départ dirige l’éditeur intégré vers une nouvelle URL contenant ce motif ; c’est aussi pourquoi le lien vers Strudel complet emporte votre motif actuel.
Pourquoi n’y a-t-il pas de son avant que j’appuie sur lecture dans l’éditeur ?
Les navigateurs bloquent tout audio jusqu’à ce que l’utilisateur interagisse avec la page qui le produit : c’est une protection contre la lecture automatique. Le cadre Strudel est sa propre page ; le premier clic de lecture doit donc avoir lieu dans l’éditeur. Ensuite, réévaluer le code met la musique à jour sans l’arrêter.
Qu’est-ce qu’un cycle ?
Le cycle est l’unité de temps musical de Tidal et Strudel : une durée répétée d’environ deux secondes au tempo par défaut, par rapport à laquelle tous les motifs sont mesurés. Une séquence citée telle que bd hh sd hh divise un cycle en parties égales ; fast(2) fait entrer deux cycles dans un, et les chevrons donnent une valeur par cycle.
Qu’est-ce qu’une algorave ?
Une algorave est un événement musical où les interprètes génèrent la musique, et souvent les visuels, en direct en écrivant du code ; l’écran est généralement projeté afin que le public voie le code source évoluer. Le terme a été inventé vers 2012 dans la communauté TidalCycles et les algoraves ont désormais lieu dans le monde entier.
Strudel est-il gratuit ? Pourquoi est-il intégré dans un cadre ?
Oui. Strudel est un logiciel libre et open source publié sous licence AGPL-3.0 par la communauté Strudel/TidalCycles. Intégrer l’éditeur officiel strudel.cc conserve cette base de code sur sa propre origine, nettement séparée de ce site, tout en vous donnant le véritable REPL, toujours à jour, plutôt qu’une copie.