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:

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

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

Matching partial segments

foo

However, it wouldn’t match the following:

foo

Matching Nested Path Segments

foo

Matching Single Letters

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

Matching Multiple Words

foo

Matching Multiple Letters

foo

foo

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:

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/"

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