Pattern Matching

foo

Match any path segment

Let’s assume we want to wait for the next event that has three path segments:

sync "/*/*/*"

This will match any Time State event with exactly three path segments, regardless of their names. For example:

cue "/bla/bar/baz" cue "/bla/baz/quux" cue "/eggs/beans/toast" cue "/moog/synths/rule"

However, it will not match paths with fewer or more path segments. The following will not match:

cue "/bla/bar" cue "/bla/baz/quux/quaax" cue "/eggs"

Each * means any content. So we could match paths with just one segment with /* or paths with five segments with /*/*/*/*/*

Matching partial segments

foo

cue "/bla/bar/baz" cue "/bla/baz/baz" cue "/bla/beans/baz"

However, it wouldn’t match the following:

cue "/bla/flibble/baz" cue "/bla/abaz/baz" cue "/bla/beans/baz/eggs"

foo

Matching Nested Path Segments

foo

cue "/bla/bar/baz" cue "/bla/bar/beans/baz" cue "/bla/baz" cue "/bla/a/b/c/d/e/f/baz"

Matching Single Letters

You can use the ? character to match against a single char such as "/?oo/bar/baz" which will match:

cue "/bla/bar/baz" cue "/goo/bar/baz" cue "/too/bar/baz" cue "/woo/bar/baz"

Matching Multiple Words

foo

cue "/bla/bar/quux" cue "/bla/beans/quux" cue "/bla/eggs/quux"

Matching Multiple Letters

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"

Combining Matchers

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:

sample :loop_amen

OSC Pattern Matching

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