Bolprocessor Sourceforge Net - Docs - bp2 Polymet HTML - Srujk324
Bolprocessor Sourceforge Net - Docs - bp2 Polymet HTML - Srujk324
Polymetric expressions are useful for string representations of polyphonic music. A simple polymetric expression is shown figure 7 in staff notation, BP2 graphics and
phase diagram . The latter is a table containing pointers to the instances of soundobjects 'C4', 'E#3', etc.
Fig.7: Staff notation, phase diagram and BP2 graphic display of a polymetric expression notated "{1, C4 , E#3 G3, A#5, D5}"
This expression is notated "{1, C4 , E#3 G3, A#5, D5}" on a BP2 text score. It shows five sequences ( fields) separated by commas. The leftmost field contains '1',
the symbolic duration of the expression. With a metronome set to 45 beats per minute, the resulting physical duration is 1.33 seconds.
The polymetric expansion algorithm imbedded in Bol Processor coerces all sequences of the structure to the same symbolic duration. The second field contains a note
'C4' followed by a silence '', both of which will be treated as quavers. The third field contains the sequence " E#3 G3" which is performed as a triplet.
Thus, the polymetric expression "{1, C4 , E#3 G3, A#5, D5}" is expanded to "/6 {C4_ _ _ _,_ E#3_ G3_,A#5_ _ _ _ _,_ _ D5_ _}" as suggested by the phase
diagram. Symbol '_' is a prolongation of the preceding soundobject, and '/6' indicates a change of tempo after which durations are divided by 6.
The phrase shown figure 7 is an excerpt of a musical example imitating Steve Reich's style. A grammar generating examples in this style, composed by Thierry Montaudon,
is shown fig.8.
Consider another example. Let {a b , c d e} be a sound structure in which two soundobject sequences: "a b" and "c d e" are superimposed. The interpretation chosen by
BP2 is
{a _ _ b _ _ , c _ d _ e _}
in which '_' is a prolongation of the preceding soundobject. The two sequences may be written on a twoline phase diagram
which exclusively states that 'a' starts with 'c', 'd' starts before 'b' which in turn starts before 'e'...
The interpretation of this polymetric expression automatically sets the tempo of "cde" at a speed which is 3/2 that of "ab". This property may be used for indicating any
fractional relative change of tempo. For example,
indicates that sequence "a b c " must be adjusted to fit exactly within 4 beats, then "d e f" within 2 beats, then "g h" within 5/3 beats. BP2 performs the necessary
calculations and stretches the final representation. The fact that a representation is ‘stretched’ does not mean it will be played slower. BP2 calculates a timescale factor to
adjust its duration accordingly.
Integers, fractions or hyphens indicating durations must appear in the first field of a polymetric expression, because if an expression contains no explicit tempo marker its
default duration is that of the first field. Compare for instance
/1 a b {c d, e f g} h i = /3 a _ _ b _ _ {c _ _ d _ _ , e _ f _ g _ } h _ _ i _ _
with:
/1 a b {e f g , c d} h i = /2 a _ b _ {e _ f _ g _ , c _ _ d _ _ } h _ i _
Another feature useful for dealing with polymetric structures is the handling of undetermined rests: notated '_rest' or '...' (Use option semicolon on a US keyboard,
never type three periods) Each field in a polymetric expression may contain one undetermined rest appearing anywhere in the sequence. BP2 first determines the structure
ignoring fields with undetermined rests, then it scans again fields with undetermined rests. Some among them have fixed durations because they contain an explicit tempo
marker, e.g.:
in which the second field contains "/2", i.e. two soundobjects per time unit. It also means that "do1" should be performed at (default) onesoundobjectpertimeunit
tempo, which is formally notated:
The symbolic duration of the first field (hence, of the second field as well) is that of sequence "/1 fa5 la5 si5", i.e. three units. The duration of the second field is 3/2 units
plus the undetermined rest. Therefore the undetermined rest is also 3/2 units, which could have been written:
An error message is generated if there is insufficient time for a rest. An undetermined rest is meant to yield the simplest possible expression. For example,
{fa5 {la5 si5,do6 re6 mi6}, do1 re1 mi1 ... fa1 }
= {fa5 {la5 si5,do6 re6 mi6}, do1 re1 mi1 fa1 }
= {fa5 _ {la5 _ si5 _ , do6 _ re6 _ mi6 _ }, do1 re1 mi1 fa1 }
Let us now compare polymetric expressions with event tables used in MIDI sequencers. The following musical fragment is borrowed from the COMPOSE Tutorial and
Cookbook (Ames 1989:2):
Fig.9
Fig.10
The list of events for this example is given in the event table (ibid:3):
Fig.11
The score shown Fig.11 may be generated by the following grammar. Variables A1, A2, etc. must be written between vertical bars so that they are not confused with
terminal symbols (musical notes A1, A2, etc.).
{{2 ,{ ...,{2 ,F#3}},2 {F5,A5}}{4 ,{1 /2 ,G#3,E5,G5}{3 /2 ,Bb4&}{2 ,&Bb4}},...{1 /4 ,G#5&,C6,E6,B6&}{2 ,&G#5,&B6}}
Time information is redundant in this representation (evidently, 4 = 1/2 + 3/2 + 2), but it is consistent. BP2 will produce the following expanded representation
/12 {/12 {/6 /18 /9 F#3 /18 /6 ,/18 {/18 F5,/18 A5}/18 }/12 /12 {/24 G#3,/24 E5,/24 G5}/12 /8 Bb4&/12 /6 &Bb4 /12 /12 ,/12 /48 /12
{/48 G#5&,/48 C6,/48 E6,/48 B6&}/12 {/6 &G#5,/6 &B6}/12 }/12
The philosophy behind polymetric representation is that it should contain a minimum amount of time information, for two major reasons:
(1) there is a lot of time information that the machine is able to calculate, for instance here the duration of chord {F5, A5};
(2) timing information should be based on final items, therefore on contextual information regarding tempo.