Synchronisation tags

Consider the following instructions:

IN Synchro tag W1 = C3 channel 15
IN Synchro tag W2 = C#3 channel 15
IN Synchro tag W7 = D3 channel 15
IN Synchro tag W8 = D#3 channel 15

These define synchronisation tags notated <<W1>>, <<W2>>... Each tag is assigned an input sound-object.

When BP2 finds a tag within a structure of sound-objects it stops everything (including its internal clock) until the input sound-object is received, i.e. the corresponding NoteOn is received or the mouse is clicked. This allows you to synchronise any performance on notes or sequences of notes expected at a particular time.

Suppose that you have typed or produced the following item:

a b <<W7>> c <<W1>> <<W3>> <<W8>> d

(Use example in file "-da.trytags") BP2 will play 'a' and 'b' normally, then it will display a message indicating that it is waiting for "D3 channel 15", i.e. the <<W7>> tag. You may actually depress the "D3" key , send a NoteOn or simply click the mouse. BP2 will then continue playing 'c' and hang again waiting for C3, the <<W1>> tag. Now it must stand on the <<W3>> tag, which is not defined, so it prompts you to send a mouse click. Eventually, it will hang on <<W8>>, prompting you to play D#3 or send a mouse click. When done, BP2 will play 'd'.

Synchronisation tags may appear in polymetric expressions as well. Each tag relates to the sound object immediately following it in the same sequence. For instance, the item

b b <<f>> {5, a c b, f - <<W8>> f} a <<chik>> b <<sync>>

yields exactly the graphic output shown Fig.17, but the <<W8>> synchronisation tag will force BP2 to wait for a click or D3 channel 15 before it performs the second occurrence of 'f'. The score table below (Fig.26) makes it clear that the actual interruption separates the item in two parts:

Fig.26 A phase diagram for
"b b <<f>> {5, a c b, f - <<W8>> f} a <<chik>> b <<sync>>"

Synchronisation tags are processed as out-time sound-objects but they represent "input" instead of "output" sound-objects. They are also less complex than other out-time objects because they may only be defined as NoteOn's. Undefined tags react to mouse clicks.

Synchronisation tags have been implemented in an earlier version of BP2, at a time scripts and performance controls were not available. A tag like <<W8>> could equivalently be replaced with any variable rewritten as:

_script(Wait for D#3 channel 15)