Aller au contenu

Syntaxe des Patterns (Mini-notation)

Maîtrisez la syntaxe qui permet de créer des rythmes complexes.


Introduction

La mini-notation est le langage de patterns de Tidal/Strudel. Elle permet de créer des rythmes complexes avec une syntaxe simple.


Concepts de Base

Séquence simple

Séparez les éléments par un espace :

sound("bd hh sd")

Cycle

Le contenu d'une séquence est joué sur un cycle (1 beat par défaut).


Symboles Spécials

< > - Alternance

Joue un élément différent à chaque cycle :

sound("<bd sd hh>")
// Cycle 1: bd
// Cycle 2: sd
// Cycle 3: hh

[] - Sous-séquence

Subdivise le temps :

sound("bd [hh hh] sd")
// bd (1 temps)
// hh hh (1 temps, 2x plus vite)
// sd (1 temps)

~ ou - - Silence

sound("bd ~ sd ~")

, - Parallèle

Joue plusieurs patterns simultanément :

sound("bd hh, sd")

Opérateurs de Temps

*n - Multiplication

Accélère un son (joue n fois) :

sound("bd*2")     // 2 fois
sound("hh*4")     // 4 fois
sound("bd*32")    // très vite

Division

sound("bd/2")     // moitié moins de fois

.x - Valeurs décimales

sound("bd*1.5")   // 1.5x
sound("[hh rim]*1.5")

Imbrication

Niveaux multiples

// Niveau 1: beat principal
// Niveau 2: sous-pattern
// Niveau 3: sous-sous-pattern

sound("bd [[hh rim] cp] sd")

Profondeur illimitée

sound("bd [[[hh hh] rim] cp]")

Groupement avec stack

stack permet de combiner plusieurs patterns :

stack(
  sound("bd*4"),
  sound("hh*8"),
  sound("sd*2")
)

Fonctions de Temps

slow

Ralentit le pattern :

sound("bd sd hh").slow(2)

fast

Accélère le pattern :

sound("bd sd hh").fast(2)

sometimes

Applique parfois un effet :

sound("bd sd hh").sometimes(rev)

every

Applique un effet à chaque n cycles :

sound("bd sd hh").every(4, rev)

Jouer avec le Tempo

setcps

Définit les cycles par seconde :

setcps(1)    // 1 cycle par seconde
setcps(0.5) // 1 cycle toutes les 2 secondes
setcps(2)   // 2 cycles par seconde

setcpm

Définit les cycles par minute :

setcpm(60)    // 60 cycles par minute
setcpm(120/4) // Équivalent à 120 BPM en 4/4

Fonctions Conditionnelles

when

Applique un effet quand une condition est vraie :

sound("bd sd hh").when(every(4), fast(2))

if

Condition if/else :

if(every(2), fast(2), slow(2))

Fonctions Aléatoires

sometimes

Applique aléatoirement (50% du temps) :

sound("bd").sometimes(rev)

often

Applique fréquemment (70% du temps) :

sound("bd").often(gain(0.5))

rarely

Applique rarement (30% du temps) :

sound("bd").rarely(fast(2))

almostAlways

Presque toujours (90% du temps) :

sound("bd").almostAlways(lpf(500))

Exemples de Patterns Avancés

Polyrhythmie

sound("bd*4, hh*3")
// 4 beats vs 3 beats

Pattern Euclidien

sound("bd(3,8)")
// 3 beats répartis sur 8 temps

Variation progressive

sound("bd sd hh").jux(rev)

Résumé des Symboles

Symbole Description Exemple
Espace Séparateur bd sd hh
<> Alternance <bd sd>
[] Sous-suite bd [hh sd]
~ ou - Silence bd ~ sd
, Parallèle bd, hh
*n Multiplication bd*2
/n Division bd/2

Résumé des Fonctions

Fonction Description
slow(n) Ralentit n fois
fast(n) Accélère n fois
sometimes(f) Aléatoire 50%
often(f) Aléatoire 70%
rarely(f) Aléatoire 30%
every(n, f) Every n cycles
jux(f) Effet mirror
rev() Reverse
stack(...) Combiner patterns

Exercice

Créez un pattern complexe en utilisant les symboles de la mini-notation !