Quand vous obtenez et affectez de l’information dans l’État du Temps, il est possible d’utiliser des clés plus complexes que les symboles basiques comme :foo
et :bar
. Vous pouvez également utiliser des chaînes de caractères de format URL appelées chemin comme "/foo/bar/baz"
. Lorsque nous avons commencé à travailler avec les chemins, nous pouvons commencer à prendre avantage du système sophistiqué de correspondance de motif de Sonic Pi pour get
et sync
des chemins “similaires” au lieu “d’identiques”. Étudions cela de plus près.
Assumons que nous voulons attendre pour le prochain événement qui a trois segments de chemin :
sync "/*/*/*"
Ceci va faire une correspondance avec tout événement d’État du Temps avec exactement trois segments de chemin, et ce, peu importe leur nom. Par exemple :
cue "/foo/bar/baz"
cue "/foo/baz/quux"
cue "/eggs/beans/toast"
cue "/moog/synths/rule"
Toutefois, ça ne correspondra pas avec des chemins qui ont plus ou moins de segments. L’élément suivant n’aura pas de correspondance :
cue "/foo/bar"
cue "/foo/baz/quux/quaax"
cue "/eggs"
Chaque *
signifie n’importe quel contenu. Donc, nous pourrions trouver des correspondance avec des chemins d’un seul segment avec /*
ou des chemins avec cinq segments avec /*/*/*/*/*
foo
cue "/foo/bar/baz"
foo
foo
Cependant, cela ne correspondrait pas avec ceci :
foo foo foo
foo
foo
cue "/foo/bar/baz"
foo
foo
foo
Vous pouvez utiliser le caractère ?
pour faire une correspondance sur un seul caractère comme "/?oo/bar/baz"
ce qui correspondra avec :
cue "/foo/bar/baz"
cue "/goo/bar/baz"
cue "/too/bar/baz"
cue "/woo/bar/baz"
foo
foo foo foo
foo
foo foo foo
foo
foo foo foo foo foo
En appelant sync
ou get
, vous êtes libre de combiner des correspondances dans n’importe quel ordre qui vous convient pour faire correspondre des événements d’État du Temps créés par cue
ou set
. Regardons un exemple fou :
sample :loop_amen
Pour les curieux, ces règles de correspondance sont basées sur la spécification de correspondance de motif Open Sound Control, qui est expliquée en détail ici : http://opensoundcontrol.org/spec-1_0