foo
Supponiamo di voler attendere il prossimo evento che ha un percorso con tre segmenti:
sync "/*/*/*"
Questo corrisponderà a qualsiasi evento Time State con esattamente tre segmenti, questo indipendentemente dal loro nome. Per esempio:
cue "/foo/bar/baz"cue "/foo/baz/quux"cue "/eggs/beans/toast"cue "/moog/synths/rule"Tuttavia, non corrisponderà a percorsi con meno o più segmenti. I seguenti non corrisponderanno:
cue "/foo/bar"cue "/foo/baz/quux/quaax"cue "/eggs"Ogni * significa qualsiasi contenuto. In questo modo possiamo abbinare i percorsi con un solo segmento con /* oppure quelli con cinque segmenti con /*/*/*/*/*
foo
cue "/foo/bar/baz"cue "/foo/baz/baz"cue "/foo/beans/baz"Tuttavia, non corrisponderebbe a quanto segue:
cue "/foo/flibble/baz"cue "/foo/abaz/baz"cue "/foo/beans/baz/eggs"foo
foo
cue "/foo/bar/baz"cue "/foo/bar/beans/baz"cue "/foo/baz"cue "/foo/a/b/c/d/e/f/baz"È possibile utilizzare il carattere ? per trovare una corrispondenza con un singolo carattere, ad esempio "/?oo/bar/baz" che corrisponderà:
cue "/foo/bar/baz"cue "/goo/bar/baz"cue "/too/bar/baz"cue "/woo/bar/baz"foo
cue "/foo/bar/quux"cue "/foo/beans/quux"cue "/foo/eggs/quux"foo
cue "/foo/aux/baz"cue "/foo/bux/baz"cue "/foo/cux/baz"foo
cue "/foo/aux/baz"cue "/foo/bux/baz"cue "/foo/cux/baz"cue "/foo/dux/baz"cue "/foo/eux/baz"When calling sync or get you are free to combine matchers in any order you see fit to powerfully match any Time State event created by cue or set. Let’s look at a crazy example:
in_thread do
sync "/?oo/[a-z]*/**/ba*/{quux,quaax}/"
sample :loop_amen
end
sleep 1
cue "/foo/beans/a/b/c/d/e/bark/quux/"
For those curious, these matching rules are based on the Open Sound Control pattern matching specification which is explained in detail here: http://opensoundcontrol.org/spec-1_0