Sound-objects,
simple notes, homomorphisms
Simple
note
s
are predefined sound-objects containing only a NoteOn/NoteOff pair of messages
in the MIDI environment. BP2 allows the combined use of simple notes and
sound-objects in the same project.
If
the Csound output is active, simple notes are converted to Csound events using
the current instrument specifications and default channel-to-instrument
mappings (see §17.3).
The
labels of simple notes and sound-objects are
terminal
symbols
of the grammar. Whereas the labels of simple notes are predefined, the names of
sound-objects must be declared in the "Alphabet" windo
w
(which is saved as a "-ho.<filename> " file).
The
alphabet may also be used to define mappings of terminal symbols -- both
sound-objects and simple notes. Project "-gr.tryhomomorphis
m"
is a simple grammar illustrating the use of a such a mapping -- more precisely,
a
homomorphism.
The
grammar reads:
S
-->
a
b c (=X) * (:X)
X
-->
do4
c mi4 fa4
The
use of brackets (= )(: ) and the asterisk will be explained in a minute. Let us
first look at the "-ho.tryhomomorphis
m"
alphabet:
-mi.abc
*
a
--> b
do4
--> re4
c
--> fa4 --> d
sync
a' b' c' d' e e' f f' g g' h h' i i' j j' k k' l l' m m' n n' o o' p p' q q' r
r' s s' t t' u u' v v' w w' x x' y y' z z'
Sound-objects
are named 'a', 'b', 'c', 'd', 'sync', etc. Their detailed specifications are
found in the file "-mi.abc". The asterisk is
not
a terminal symbol. BP2 recognises it as the label of an
homomorphism.
It does so because it finds arrows in the following list of terminal symbols.
Thus, an expression like
a
--> b
means
that 'b' is the image of 'a' through the homomorphism notated '*'. We will see
later how this mapping is used. Similarly, the alphabet indicates that 're4'(a
simple note) is the image of 'do4', 'fa4'the image of 'c', and 'd' the image of
'fa4'. Sound-objects can be mapped to simple notes and conversely.
Every
terminal symbol (sound-object or simple note) that is not explicitly mapped to
another one is mapped to itself. Thus, the image of 'b' is 'b', etc.
Since
this mapping is a
homomorphism,
strings of terminals are also mapped in a straightforward manner. Thus, "b
re4" is the image of "a do4" since 'b' is the image of 'a' and 're4'the image
of 'do4'. To complete the scene, the image of an empty string is an empty
string.
Several
homomorphisms may be defined on the same alphabet. Their descriptions should
be separated with lines of hyphens, and the labels of homomorphisms should
appear on top of each section. If a section contains at least an arrow, BP2
understands that the first line contains the label of a homomorphism, otherwise
it will pick it up as a new terminal symbol.
Let
us now see how this simple
homomorphism
is used.
When
running the grammar (cmd-r) a single musical item is produced
a
b c (= do4 c mi4 fa4) * (: re4 c mi4 d)
which
is actually printed without brackets:
a
b c do4 c mi4 fa4 re4 c mi4 d
The
leftmost bracket (marked with '=') is a 'master' expression while the rightmost
one (marked with ':') is its 'slave'. The slave bracket reproduces exactly the
content of the master bracket it is attached to. Exactly? Not here: since the
slave bracket is preceded by '*' its content is replaced with a mapping of the
master bracket through homomorphism '*'.
You
do not need to understand everything about homomorphisms to go on with BP2.
(More information is available in the reference manual §4.1, and
publications, notably Kippen & Bel 1992.) The idea came from the need of a
general syntactic model coping with repetitions and pseudo-repetitions in
music. The first homomorphism we ever used was a transformation known to North
Indian tabla players: when repeating patterns they often change voiced sounds
such as 'dha', 'ge' to their unvoiced counterparts 'ta', 'ke'... (See "-gr.dhin-
-"
for instance.)
Projects
"-gr.Ruwe
t"
and "-gr.cloches
1"
are illustrations of homomorphisms used to modify tonal and modal patterns.