simple notes, homomorphisms
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.
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).
labels of simple notes and sound-objects are
of the grammar. Whereas the labels of simple notes are predefined, the names of
sound-objects must be declared in the "Alphabet" windo
(which is saved as a "-ho.<filename> " file).
alphabet may also be used to define mappings of terminal symbols -- both
sound-objects and simple notes. Project "-gr.tryhomomorphis
is a simple grammar illustrating the use of a such a mapping -- more precisely,
b c (=X) * (:X)
c mi4 fa4
use of brackets (= )(: ) and the asterisk will be explained in a minute. Let us
first look at the "-ho.tryhomomorphis
--> fa4 --> d
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'
are named 'a', 'b', 'c', 'd', 'sync', etc. Their detailed specifications are
found in the file "-mi.abc". The asterisk is
a terminal symbol. BP2 recognises it as the label of an
It does so because it finds arrows in the following list of terminal symbols.
Thus, an expression like
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.
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.
this mapping is a
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
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.
us now see how this simple
running the grammar (cmd-r) a single musical item is produced
b c (= do4 c mi4 fa4) * (: re4 c mi4 d)
is actually printed without brackets:
b c do4 c mi4 fa4 re4 c mi4 d
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 '*'.
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-
are illustrations of homomorphisms used to modify tonal and modal patterns.