Patroonherkenning

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.

Komt overeen met ieder pad segment

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:

Het zal echter niet matchen voor paden met minder of meer pad segmenten. Het volgende zal niet matchen:

Iedere * betekent elke inhoud. We kunnen paden matchen met slechts één segment met /* of paden met vijf segmenten middels /*/*/*/*/*

Matcht gedeeltelijke segmenten

foo

Het zou echter niet matchen met het volgende:

foo

Matcht Geneste Pad Segmenten

foo

Matcht Alleenstaande Letters

Je kunt het ? karakter gebruiken om te matchen met een single karakter zoals "/?oo/bar/baz" wat zal matchen met:

Matcht Met Meerdere Woorden

foo

Matcht Met Meedere Letters

foo

foo

Gecombineerde Matches

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

OSC Patroon Matching

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