The following are simple examples explaining the design of Csound scores containing instructions to control parameters that may vary continuously. We will use simple notes (no sound-object) and no Csound instruments file so that all scores may be easily converted to sound files using the “default.orc” orchestra file supplied with BP3.
Consider the following grammar with a metronome setting of 60 beats/mn:
S --> _pitchcont _pitchrange(200) C5 _pitchbend(0) D5 _ _pitchbend(120) _ _pitchbend(-150) _ _ _pitchbend(0) E5
The graphic display does not show pitchbend controls:

Instruction _pitchcont in the beginning instructs the interpreter to interpolate pitchbend values in the whole sequence. This process may be interrupted by _pitchstep.
Instruction _pitchrange(200) indicates that the pitch may vary between -200 and +200 units, respectively mapped to MIDI standard values 0 and +16383 (both logarithmic). This is the range required by “default.orc” in which intervals are counnted in cents. There are 1200 cents in one octave. Thus, _pitchbend(100) would raise the following note by a semitone.
Note ‘C5’ is not assigned a pitchbend value. Default “0” value will be assigned. Notes ‘D5’ and ‘E5’ are preceded with _pitchbend(0) assigning a “0” value. All pitchbend variations are assigned during the prolongation of ‘D5’. How will it be taken care of?
The MIDI output is deceptive. Such pitchbend assignments are not taken into account in this format:
However, the Csound output has taken into account all parameters:
How does Csound process this phrase? Let us look at the Csound score:
t 0.000 60.000
i1 0.000 1.000 9.00 90.000 90.000 0.000 0.000 0.000 0.000 ; C5
f101 1.000 256 -7 0.000 102 120.000 51 -150.000 103 0.000
i1 1.000 5.000 9.02 90.000 90.000 0.000 0.000 0.000 101.000 ; D5
i1 6.000 1.000 9.04 90.000 90.000 0.000 0.000 0.000 0.000 ; E5
s
e
A table (Function Table Statement, read documentation) labeled f101 has been created by Bol Processor and inserted above ‘D5’ to specify variations of the pitchbend parameter. This table is called by the 10th argument of line ‘D5’. Arguments 8 and 9 contain the start and end values of pitchbend according to “default.orc”. These are 0 for all three notes.
The second argument of the table is the duration of its validity, here 1.000 seconds. The third argument (256) is its size — always a power of 2. The fourth argument “-7” designates the GEN routine that Csound will use for its interpolation (read documentation). By default, GEN07 (linear interpolation) is used.
Numbers highlighted in red indicate the values of pitchbend during the variation: 0, 120, -150, 0. Values in black indicate the time intervals between two values. Note that 102 + 51 + 103 = 256.
All continuous parameters are handled in this same way by Bol Processor when producing Csound scores. This includes standard MIDI controls (volume, pressure, modulation, panoramic, pitchbend) and any additional parameter defined in the Csound instruments file. See for example Sarasvati Vina.
Note
There is a workaround for playing the same piece with correct pitchbend changes in MIDI. Change the rule to:
S --> _pitchcont _pitchrange(200) {C5 D5 _ _ _ _ E5, - _pitchbend(0) - _ _pitchbend(120) - _pitchbend(-150) - _ _pitchbend(0) -}
This is the same piece in a polymetric structure adding a line of silences ‘-‘ put at the right places to receive pitchbend modifications. Since pitchbend modifies all sounds on the current MIDI channel it will also modify ‘D5’ during its prolongation. The following is a MIDI rendering on PianoTeq — at a higher speed so that ‘D5’ remains audible: