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.trytag
s")
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
ta
gs
may appear in polymetric expressio
ns
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)