Strudel.cc #
strudel.cc. Quelle magnifique découverte ce truc.
Pour qui, pour quoi #
Pour les devs, Strudel est un REPL (READ-EVAL-PRINT LOOP) codé en javascript pour la musique avec une bibliothèque de sample intégré.
Pour les musiciens, il s’agit d’un looper où l’on décrit chaque pattern via du texte.
Pour tous le monde, Strudel utilisable dans n’importe quel navigateur, est open source et libre sous la licence GNU. Parfait.
Voici la présentation officiel:
Strudel est une version JavaScript de TidalCycles, qui est un langage de live coding populaire pour la musique, écrit en Haskell. Strudel est un logiciel libre et open source : vous pouvez le redistribuer et/ou le modifier selon les termes de la GNU Affero General Public License. Vous pouvez trouver le code source sur Codeberg.
Strudel permet aussi d’appliquer des visuels en plus des sons sur les évènements pour créer des effets sympathique.
Pour qui alors ? N’importe qui avec un navigateur et des oreilles, finalement.
Quelques exemples #
Au clair de la lune
$: note(`<
C C C D E@2 D@2 C E D D C@4
C C C D E@2 D@2 C E D D C@4
D D D D A2@2 A2@2 D C B2 A2
G2@3 ~
C C C D E@2 D@2 C E D D C@4
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
>`).sound("piano").cpm(120)
Va jouer une note par temps, avec le son piano, à 120bpm.
Alors bien sûr, on a plusieurs type de son, et notamment un module de percu. Par exemple, on peut définir un pattern de kick pop basique:
let kik = stack(
sound(`
<sd> <cp> [ - sd ] <cp>
`)
);
- sd -> snare
- cp -> cymbale
Et zou.
Pour le jouer, on a juste à l’invoquer
let kik = stack(
sound(`
<sd> <cp> [ - sd ] <cp>
`)
);
stack(
kik,
).cpm(40);
Mais ce qui est intéressant c’est de combiner les pattern, donc on ajoute une ligne de basse
let poinpoin = cat(
"- - - -",
"<c2> <db2> <d2> <d#2>",
).note()
.n(3).sound("gm_synth_bass_1")
// use effects to modify a sound
// low pass filter allows low frequencies to pass through
.lpf(200).lpenv(5).lpa(.5).lps(.8).lpd(.1);
let kik = stack(
sound(`
<sd> <cp> [ - sd ] <cp>
`)
);
stack(
kik,
poinpoin,
).cpm(40);
…puis une ligne mélodique
let tuputu = cat(
"<c4> <c5> <c4> <c5> <c4> <c5> <c4> <c5>",
"- - - -",
"<c4> <c5> <c4> <a4> <c4> <g4> <c4> <e4>",
"- - - -",
"<c4> <c5> <c4> <c5> <c4> <c5> <c4> <c5>",
"- - - -",
"<c4> <c5> <c4> <a5> <c4> <g5> <c4> <c5>",
"- - - -",
).note()
.n(3)
.sound("sine")
.lpf(200).lpenv(5).lpa(.5).lps(.8).lpd(.1);
let poinpoin = cat(
"- - - -",
"<c2> <db2> <d2> <d#2>",
).note()
.n(3).sound("gm_synth_bass_1")
// use effects to modify a sound
// low pass filter allows low frequencies to pass through
.lpf(200).lpenv(5).lpa(.5).lps(.8).lpd(.1);
let kik = stack(
sound(`
<sd> <cp> [ - sd ] <cp>
`)
);
stack(
tuputu,
kik,
poinpoin,
).cpm(40);
Et voilà le travail.
Je vous laisse avec cette cover de Charlie XCX - 360, qui montre en plus les effets visuels de Strudel.
Et maintenant ? #
En vrai, c’est très marrant. La documentation est monstrueuse et les possibilités aussi.
Surtout, surtout, c’est un outil qui permet d’écrire de la musique et de la partager. De la modifier et de repartager ensuite. C’est l’esprit open-source qui rencontre la musique, et ça c’est magique. Ça donne des gens qui écrivent des choses marrantes, d’autre réellement chouette, et qui publie leur travail, pour que d’autre s’en inspire. On se passait des partoches avant, c’est devenu plus compliqué de partager un projet FL Studio, puisque quasi tout les DAW sont propriétaire et putain de cher. Ça donne des gens qui mixent en live, avec leur code sur videoproj, et ça donne un mouvement: l’Algorave. Le partage, la liberté, la musique.
Tout ce qu’on aime.
Reste que c’est un peu chiant de créer de gros projet dans le navigateur. Il s’agirait maintenant d’intégrer strudel dans un workflow un peu plus pratique (input/output). Ou alors passer à TidalCycles écrit en Haskell, dont Strudel est le port JavaScript. Ceci dit, c’est moi qui n’y connait rien, et qui a tout à découvrir. Je dis juste que l’UX n’est pas très agréable passé la première heure. À creuser…
Quelques liens #
- Documentation officielle
- Switch Angel coding DnB on youtube
- DJ Dave Twitch set replay on youtube
- DJ Dave a fait un TED talk
- Documentaire d’Arte sur l’algorave (parce que bien sûr qu’Arte a fait un doc dessus).