
In Computer Music Journal 22,2 (1998) page 63, Dutch composer Visser commented:
I think that the development of more and more visual stuff curtails the possibility of “thinking in your chair.” Sometimes I develop grammars, not at the computer, but sitting with a pencil and paper. With programs [other than BP2] this is not possible: you must sit in front of the computer. The difference lies in the type of attention that each software environment demands on the part of the composer, and indeed reflects on the way s/he thinks about music.
The following is a presentation and discussion of a few examples composed on Bol Processor by Harm Visser in 1998. All examples shown on this page are available in the sample set bp3-ctests-main.zip shared on GitHub. Follow instructions on page Bol Processor ‘BP3’ and its PHP interface to install BP3 and learn its basic operation. Download and install Csound from its distribution page.
Period notation
In the same way it deals with superimposed sequences, the polymetric expansion algorithm works out equal symbolic durations between beat separators notated ‘•’ — namely the period notation. A note sequence in period notation and the context-free grammar it originated from are shown below. In this example, beats contain increasing numbers of notes resulting in an accelerating movement.
S --> _vel(60) A B _vel(65) C D _vel(70) E F _vel(75) G _vel(77) H _vel(80) I _vel(85) J _vel(87) K _vel(90) L
A --> E2 •
B --> D2 A
C --> B2 B
D --> G2 C
E --> F#2 D
F --> A#2 E
G --> C2 F
H --> G#2 G
I --> A2 H
J --> D#2 I
K --> C#2 J
L --> F2 K
The “_vel” operator is a control of velocity producing a stepwise increasing volume of the piece. This grammar yields the following “score”:
_vel(60) E2 • D2 E2 •_vel(65) B2 D2 E2 • G2 B2 D2 E2 • _vel(70) F#2 G2 B2 D2 E2 • A#2 F#2 G2 B2 D2 E2 • _vel(75) C2 A#2 F#2 G2 B2 D2 E2 • _vel(77) G#2 C2 A#2 F#2 G2 B2 D2 E2 • _vel(80) A2 G#2 C2 A#2 F#2 G2 B2 D2 E2 • _vel(85) D#2 A2 G#2 C2 A#2 F#2 G2 B2 D2 E2 • _vel(87) C#2 D#2 A2 G#2 C2 A#2 F#2 G2 B2 D2 E2 • _vel(90) F2 C#2 D#2 A2 G#2 C2 A#2 F#2 G2 B2 D2 E2 •
and the following piano-roll representation with the sound example on a Pianoteq synthesizer:

Serial tools
The following grammar produces a 10-minute musical piece with only 12 rules and 3 notes (C3, D4, F#3). It is an illustration of Visser’s motto: “composing with a pencil and paper”.
The rhythmic intricacy is the result of using polymetric expressions: superimposition of sequences listed between curled brackets {} and resizing “beats” thanks to the period marker ‘•’.
The length and complexity of the piece is achieved by the use of recursive rules. For instance, rule gram#2[2] produces “Mel1” that will be rewritten again by rule gram#2[1].
Three “serial tools” are used:
- _transpose(n) shifts up the following sequence by n semitones
- _rotate(x) rotates the following sequence by x units
- _keyxpand(basenote, ratio) multiplies melodic intervals with ratio relative to basenote. For instance, after _keyxpand(C4, 2), sequence D4 E4 F4 would be replaced with E4 G#4 Bb4. This tool is applied recursively to the fields of a polymetric expression.
Note that all subgrammars are headed with “ORD”, meaning that rules will be applied in order instead of being randomly selected. Thus, this grammar produces a unique musical piece, which is the case with all examples composed by Harm Visser. The only stochastic element of this piece is the velocity that may vary between 60 and 100 due to performance controls _vel(80) _rndvel(20).
The sound output was played on a Pianoteq synthesizer:
Trills
The following grammar produces trills taking advantage of tempo variations and continuous variations of velocities:
played on a Pianoteq physical-model synthesizer
Waves
Harm Visser had been invited to compose a piece à la Debussy with rubato rhythms creating the impression of waving movements. We had expected him to use the “_tempo()” tool with floating-point values (or integer ratios) as arguments.
In fact he did not… In the following grammar, only markers “1/2”, “1/4” indicate regular speed changes applied to an entire section. The waving effect is produced by a clever use of (self-imbedded) polymetric expressions. As indicated by the composer: “It is build on the idea of imbedding: {5, A B {3, A B {2, A B C D} C D} C D}.”
The following is a rendering of the piece for piano solo on a Pianoteq synthesizer:
played on a Pianoteq physical-model synthesizer
In the final version, the composer assigned parts to a different MIDI channel controlling a physical-model synthesized saxophone (which he had designed on his own):
played on physical-model synthesis saxophone and piano
Fractals
Harm Visser sent this grammar with the following commentr (1998):
It is completely based on a function that I have made in PatchWork. Take 3 notes and take their intervals to transpose. The result is a kind of ‘autotranspose’. You get a ‘fractal’ - the idea of the famous Von Koch-curve. The next step is making a recursive loop, so that you can set the level of recursion. The number of notes grows exponential: 3 9 27 81 243 etc. Of course you can do the same with rhythm-values.
This grammar is a BP2-version of exactly the same idea. It has 4 recursion levels. (You might also say ‘depth’. It is in fact a ‘copy’ of the PW-function). That’s why S --> L4 (level 4) (number of notes 243).
The difference between BP2 and PW is that the function in PW is fixed, which is not the case in BP2. I can easy make subtle changes (deviations) in the process. I can ‘break in’, so to speak. In his grammar I have set a comma between M10 and M11 and set M11 on the sax. The result is a polymetric canon!
The following sound rendering is with piano solo on a Pianoteq synthesizer. The version with saxophone is unfortunately missing. It could be generated playing the (type-1) MIDI file Visser8.mid on a synthesizer assigning MIDI channel 9 to a saxophone sound.