Cambridge poster
Is text an adequate tool for modelling musical analysis, composition and performance?
This poster was presented at the conference Language and Music as Cognitive Systems in Cambridge (UK), on 11-13 May 2007.
➡ Download the poster (20 Mb PDF)
Shapes in Rhythm
This composition was part of the choreographic work CRONOS created by Andréine Bel and performed at the National Centre for the Performing Arts (Mumbai, India) and the Shri Ram Center (Delhi) in October 1994.
The following grammar "-gr.ShapesInRhythm" was written (in about 2 days) by Andréine and Bernard Bel.
There were six dancers on the stage: Smriti Mishra, Olivier Rivoirard, Vijayshree Chaudhary, Arindam Dasgupta, Somenath Chatterjee and Suresh Shetty.
The musical structure consists of 9 parts using very different sound patches played on Roland D-50 synthesiser with a Musitronics extension card. Each part is based on the rhythmic structure of a tihai: three equal repetitions of a rhythmic pattern, interspersed with two equal rests, with the constraint that the last unit must fall on the first beat of the rhythmic cycle. The cycle has 16 beats, or tintal in North-Indian music/dance. Tihais are basic figures of Kathak dance and tabla drumming.
On an old Mac IIci, this would take 14 minutes to produce and time! For this reason, subgrammar instructions have been optimised: instead of the standard "RND" mode, "ORD" has been used wherever possible, otherwise "SUB1", whose process is a unique "parallel" rewrite of the work string.
Playing the piece required a 30-millisecond quantization setting which reduced the size of the phase table by a factor of 222. See Complex ratios in polymetric expressions for a detailed explanation.
At the time this grammar was written, BP2 did not support articulation or glossaries. This grammar has highlighted the need for such features.
Smooth time and time patterns (with time-objects t1, t2 and t3) were used because the dancers expected the first sections to start slowly and speed up. Thus, the composition starts at metronome 60, continues at metronome 80 and ends at 88. In this composition, however, striated time would be a much better option because speed changes can be managed using the "_tempo()" tool: forget time patterns, set the metronome to 88 and insert _tempo(60/88) then _tempo(80/88) and finally _tempo(1) to change speeds. This work was an incentive to implement the "_tempo()" performance tool…
Click this link to display the score of this piece.➡ Video at the bottom of this page.
An extract of this work is shown in the following video from 3mn 36s to 3mn 48s:
References
Related work
Reference manual (BP2.9.8)
The complete reference manual for version 2 of the Bol Processor
Computing ‘ideas’

A composition in Carnatic musical style by Srikumar K. Subramanian, June 1995.
Name: "-gr.trial.mohanam"
This is a non-stop improvisation of variations in a style similar to Carnatic music. The compositional approach here is to decide that each variation should contain 32 notes and can use up to 20 "ideas". To do this, a flag called Ideas is set to 20 at the beginning, and it is decreased by 1 unit in certain rules (such as GRAM#2[2]) or 2 units in others (such as GRAM#2[3]). See the page Flags in grammars for more details.
Rules in subgrammar #3 can only be candidates if there are few ideas left, but they do not reduce ideas.
Rules in subgrammar #6 use wildcards to create patterns.
Rules in subgrammar #9 create "effects" by changing velocities.
In the ‘Improvize’ mode, the values of flags and rule weights can be carried over from one variation to the next. This allows them to be used to trigger/inhibit events at any distance from those that created/modified them.
The following output was recorded on a Roland D-50 synthesiser.
Undetermined rests in dance performance
The polyrhythmic piece "765432" composed by Andréine Bel for her CRONOS dance production (1994) illustrates the use of undetermined rests. Six dancers were on stage: Suresh Shetty, Smriti Mishra, Olivier Rivoirard, Vijayshree Chaudhary, Arindam Dasgupta and Andréine Bel.
In this grammar, "SUB1" indicates a substitution that only needs to be performed once. Using it to replace "SUB" saves computation time.
Glyphs "…" are undetermined rests, i.e. silences whose duration is a priori unknown and will be precisely calculated by the polymetric expansion algorithm.
The whole structure is based on regular arithmetic divisions. For example, Suresh moves at "speed 7", Smriti at "speed 6" and Olivier at "speed 5".
"CR47" and "C46" are patches from the Roland D-50 synthesiser.
The following output was recorded on a Roland D-50 synthesiser.
This performance was part of the choreographic work CRONOS performed at the National Centre for the Performing Arts (Mumbai, India) and the Shri Ram Center (Delhi) in October 1994. An excerpt is shown from 4mn 50s to 5mn 10s:
References
Tutorials
Time patterns (smooth time)
The following is a simple grammar illustrating the use of time patterns in smooth time. Whereas striated time is filled with (regular or irregular) pulses, smooth time does not involve counting.
_mm(120.0000) _smooth
GRAM#1[1] S --> {10 , t1 t2 , Part1 Part2}
GRAM#1[2] Part1 --> {t1 t3 t4 , C4 D4 E4 F4 - A4}
GRAM#1[3] Part2 --> {t3 t1 , B4 C5 _ E5}
TIMEPATTERNS:
t1 = 1/1 t2 = 3/2 t3 = 4/3 t4 = 1/2
In this grammar, "t1", "t2" etc. are the time patterns arranged in such a way that they define a structure of (irregular) "beats" on which notes "C4", "D4" etc. will be located.
The final arrangement is as follows:
{10, t1 t2, {t1 t3 t4, C4 D4 E4 F4 - A4} {t3 t1, B4 C5 _ E5}}

Time flexibility in Bol Processor is not the effect of arbitrary numerical functions. This flexibility stems from a time structure — Xenakis’ (1963) structure temporelle — that is deeply interwoven with the syntactic description of music.
If striated time is selected, the same structure will be displayed as shown below:

time-objects ‘t1’, ‘t2’, etc., have null durations.
Some time patterns were used in Andréine Bel's choreographic work: Shapes in Rhythm.
Reference
- Bel, Bernard. Migrating Musical Concepts: An Overview of the Bol Processor. Computer Music Journal, Massachusetts Institute of Technology Press, 1998, 22 (2): 56-64.
Interactive improvisation with sound-objects

This grammar (namely “-gr.koto3") is an improvisation model running on the Bol Processor BP2 connected to a Roland D-50 synthesiser. The choice of synthesiser was crucial for a good reproduction of the sound imitating a Japanese koto.
The underlying model (SUB grammar) is a one-dimensional cellular automaton using substitution rules: at each step of the computation, a set of randomly selected rules is applied to the work string. Conversely, in a RND grammar, a new rule would be selected each time the previous one was applied. For more details, see a presentation of "-gr.koto3" on the Bol Processor ‘BP3’ and its PHP interface page.
In subgrammar #2 we see a competition between constructive rules, such as gram#2[8] and gram#2[11] which increase the length of the work string, and destructive rules, such as gram#2[10] and gram#2[15] which decrease its length.
The weight of gram#2[12], initially set to 100, decreases by 10 each time it is applied, until the rule is invalidated.
SUB gram#1[1] <100> S --> _vel(127) _volume(40) X X X X Y X X X X Y X X X X gram#1[2] <K9> X --> a [Weight is controlled by K9, see Interaction] gram#1[3] X --> b ----- SUB gram#2[1] Y --> Y gram#2[2] #? ?1 --> #? ?1 [Keep leftmost symbol] gram#2[3] ?1 #? --> ?1 #? [Keep rightmost symbol] gram#2[4] } --> } gram#2[5] , --> , gram#2[6] <5> a --> a gram#2[7] <30> a b a --> a a gram#2[8] <100> #({) a b a --> {5,a c b,f f f - f} gram#2[9] <5> b --> b gram#2[10] <30> #({) b a b #(}) --> b b gram#2[11] <100> #({) b a b --> {3,b a b c b a,f a f} gram#2[12] <100-10> #({) #a b #(}) --> #a c b gram#2[13] c c c --> c a c gram#2[14] c a c --> b a b gram#2[15] <50> ?1 ?1 ?2 ?3 ?4 ?4 --> ?2 ?3 gram#2[16] <K9> ?1 ?1 ?1 --> ?1 gram#2[17] <K9> ?1 ?1 --> ?1 ----- SUB gram#3[1] <40> Y --> <<f>> gram#3[2] <50> Y --> <<chik>> gram#3[3] <1-1> ? #? --> ? Silence _script(MIDI send Continue) #? gram#3[4] <50> Silence --> - - - - - gram#3[5] <15> Silence --> - - - - gram#3[6] <8> Silence --> - - - gram#3[7] <8> Silence --> - -
Rules in subgrammar #2 are applied until none of them can be a candidate. Then the rules in subgrammar #3 are applied, producing the out-time sound-objects <<f>> (a bass note) and <<chick>> (a chord).

The sound objects "a", "b", "c", "f", "chick" are defined in a sound-object prototype file called "-so.koto3". Some of them have specific properties that force a relocation to satisfy topological constraints. For example, "a" must maintain continuity with the preceding object (as shown in the image), which may cause it to be moved into the past.
The time-setting algorithm takes into account all the constraints to create a piece that may not fit exactly into the metronomic beat pattern. Below is an example of the final piece created using this grammar (played 3 times):

In this grammar, parameter K9 is set to follow the position of a controller (e.g. the pitchbend or a pedal on the D-50), assigning a value from 0 to 100. This value is the weight of the rules gram#1[2], gram#2[16] and gram#2[17]. The higher the weight, the more "a" and the less "b" in the string; in addition, the final string becomes smaller due to the higher weight of the destructive rules gram#2[16] and gram#2[17].
During the improvisation, the work string is played at each step of its transformation. The end of the transformation is indicated by the <<f>> and <<chick>> sound-objects.
Below is an example of improvisation played in real time MIDI:
The following video illustrates the grammar at work on BP2.9.8 — unfortunately with a GeneralMIDI "koto" sound:
References
- Two Algorithms for the Instantiation of Musical Structures (1994) on polymetric structures and the time-setting algorithm of sound objects
- Migrating Musical Concepts: An Overview of the Bol Processor (1998)