What else can be controlled?

MIDI specifications make it possible for BP2 to handle continuous changes of the following parameters:

Pitch, modulation, channel pressure (polyphonic aftertouch), volume (default controller 7) on all synthesisers;
Panoramic (default controller 10) on synthesisers complying with General MIDI;
Up to 250 parameters with arbitrary names that are only recognised by Csound instruments. See "_value(param,x)", "_step(param)", "_cont(param)" and "_fixed(param)" in §17.5.

The sampling rate (default 50 messages per second) can be adjusted to compromise between accuracy and MIDI bandwidth. Keep in mind that BP2 creates messages in real time, sometimes resulting in hundreds of messages being sent to MIDI every second. Some of them might get lost notably if other MIDI devices are active on the same network. When this happens it is necessary to reduce sampling rates to the minimum values required for smooth movements. Ten messages per second would be enough in many cases.

Velocity is not controlled continuously: a unique velocity value is assigned to every note or sound-object. (In the case of sound-objects it is possible to instruct some objects to ignore this velocity assignment.) Velocity values may be interpolated between two pre-set values along the sequence. This is done using instruction "_velcont" (or equivalently "_velstep") which may be cancelled by "_velfixed".

Transposition is supported by the "_transpose(x)" command in which x is the number of semitones up (down if negative). Note that transpositions may be cumulated, using curled brackets (i.e. polymetric expressions). For instance,

_transpose(-3) { A4 _transpose(+7) C3 D3}

is interpreted as:

A4 _transpose(+4) C3 D3 [ ... since -3 + 7 = 4 ]


Controls are limited by MIDI specifications. For instance, it is not possible to assign different pitchbend corrections to several notes on the same MIDI channel. Fanatics of microtonal intonation must either content themselves with monodic music or distribute notes on separate channels.

Each MIDI implementation has its own limitations: for instance, Roland D-50 does not distinguish volume controls on separate MIDI channels, even though BP2 produces the correct messages.

Results also depend on the OMNI ON/OFF and POLY/MONO settings, briefly discussed in "-da.checkControls". See MIDI literature or the synthesiser's instruction manual for a detailed explanation. BP2 makes it possible to change these settings with script commands. These must be executed on the basic channel of the MIDI device. See the instruction manual of the device.

MIDI implementation are by-passed by some software environments. For instance, Opcode OMS makes it possible to use more than 16 MIDI channels; it simply maps channels above 16 to other devices. Future versions of BP2 will take advantage of such features.

Csound is another way of going far beyond MIDI. (See §17)