Wanneer je informatie haalt (‘get’) van de Time State of gegevens in de Time State vastlegd (‘set’), kun je ook complexere waarden gebruiken dan de basissymbolen zoals ‘:foo’ en ‘:bar’. Je kan bijvoorbeeld paden in een URL-stijl gebruiken zoals ‘/foo/bar/baz’. Zodra we zulke paden gaan gebruiken, kunnen we voordeel halen uit de slimme patroonherkenning van Sonic Pi, zodat we met vergelijkbare (‘similar’) in plaats van precies gelijke (‘identical’) paden kunnen halen (‘get’) en synchroniseren (‘sync’). Laten we eens kijken.
Laten we aannemen dat wij willen wachten op een volgend event dat beschikt over drie pad segmenten:
sync "/*/*/*"
Dit zal overeenkomen met ieder ‘Time State’ event met exact drie pad segmenten, ongeacht hun namen. Bijvoorbeeld:
cue "/bla/bar/baz"
cue "/bla/baz/quux"
cue "/eggs/beans/toast"
cue "/moog/synths/rule"
Het zal echter niet matchen voor paden met minder of meer pad segmenten. Het volgende zal niet matchen:
cue "/bla/bar"
cue "/bla/baz/quux/quaax"
cue "/eggs"
Iedere *
betekent elke inhoud. We kunnen paden matchen met slechts één segment met /*
of paden met vijf segmenten middels /*/*/*/*/*
foo
cue "/bla/bar/baz"
cue "/bla/baz/baz"
cue "/bla/beans/baz"
Het zou echter niet matchen met het volgende:
cue "/bla/flibble/baz"
cue "/bla/abaz/baz"
cue "/bla/beans/baz/eggs"
foo
foo
cue "/bla/bar/baz"
cue "/bla/bar/beans/baz"
cue "/bla/baz"
cue "/bla/a/b/c/d/e/f/baz"
Je kunt het ?
karakter gebruiken om te matchen met een single karakter zoals "/?oo/bar/baz"
wat zal matchen met:
cue "/bla/bar/baz"
cue "/goo/bar/baz"
cue "/too/bar/baz"
cue "/woo/bar/baz"
foo
cue "/bla/bar/quux"
cue "/bla/beans/quux"
cue "/bla/eggs/quux"
foo
cue "/bla/aux/baz"
cue "/bla/bux/baz"
cue "/bla/cux/baz"
foo
cue "/bla/aux/baz"
cue "/bla/bux/baz"
cue "/bla/cux/baz"
cue "/bla/dux/baz"
cue "/bla/eux/baz"
Wanneer sync
of get
wordt aangeroepen kun je jezelf vrij voelen om Matchers
in iedere orde te matchen met ieder Time State
event aangemaakt door cue
of set
. Laten we het volgende voorbeeld bekijken:
sample :loop_amen
Voor de nieuwsgierigen; deze matching regels zijn gebaseerd op de Open Sound Control Pattern Matching Specification welke uitgebreid uitgelegd staat op de volgende website: http://opensoundcontrol.org/spec-1_0