Performance controls

MIDI folks are primarily interested in controlling all sound parameters in a flexible and acurate way. A Japanese company is already offering direct control of MIDI by brainwaves! Perhaps the reverse -- controlling the brain from MIDI -- would make more sense, but this is what music is about after all.

Access to fine control may be compared with skills at playing an instrument. In BP2 the term performance control is used to name an access to such parameters.

The following is a demo of BP2's ability to control MIDI parameters. Detailed comments and sound examples may be found in (Bel 1996a) available from <>.

Enter a sequence of notes using the MIDI keyboard, then select it with the mouse and type cmd-p, or select "Play selection" in the "Action" menu. You will hear the sequence just entered. Durations and velocity information are ignored. They can be specified afterwards. Notes are played with the current metronome setting (mm = 60 by default). Type cmd-m to change the speed.

Readers who never heard, and don't want to hear, about pitch benders and other MIDI torture instruments might jump to §1.11.

Let us now edit the sequence. Suppose that you entered "C5 D5 F5 G5 C6 A#5 A5 G5". Type cmd-j once again to return to text editing mode (the blinking cursor). Then try the following performance controls:

(These examples belong to file "-da.SomeNotes" that may be opened from the "Data" window.)

Silences and prolongations: C5 - D5 F5 G5_ C6 A#5 A5 G5
Polyphony (see §1.12): {C5 D5 F5 G5 C6, A#5 A5 G5}
Imbedded script instruction: _script(Beep) C5 D5 F5 G5 C6 _script(Wait for space) A#5 A5 G5
Performance control (velocity): _vel(60) C5 D5 F5 G5 _vel(127) C6 A#5 A5 G5
Performance control (crescendo): _volumecont _volume(20) C5 D5 F5 G5 _volume(127) C6 A#5 A5 G5 _volume(80)
Performance control (pitchbend): _pitchcont _pitchrange(200) _pitchbend(0) C5___ _pitchbend(150)___ _pitchbend(-180)
Program change: _script(MIDI program 1) C5 D5 F5 G5 _script(MIDI program 5) C6 A#5 A5 G5

The last example deserves a comment: "_script(MIDI program x)" selects MIDI program x on the MIDI device, with the effect of changing the timbre (the "patch"). This generally requires a set-up time on the synthesiser, roughly 0.5 second on my D-50 and much more with QuickTime Music. It is therefore not advisable to insert this instruction in a fast movement. It is generally better to use a multitimbral patch able to assign a different instrument to each MIDI channel. QuickTime Music does it fine; see "MIDI orchestra" in the "Devices" menu and follow on-line help.)

Performance control "_script(MIDI program...)" may be recorded by BP2 in the same way notes are entered: type cmd-j and change the patch manually on the MIDI device. This will paste the instruction to the current edit window.

Instead of typing performance controls you may pick them from a predefined list: select "Pick performance control" in the "Edit" menu.

If you want to know everything about performance controls in BP2, you may activate the "Data" window and load "-da.checkControls". (Type cmd-o or select "Open" in the "File" menu.) There is a line "-gl.GeneralMIDI" on top of the window, meaning that BP2 is going to use a glossary comprehensible to synthesisers based on General MIDI.

To hear all examples, type cmd-a or select "Select all" in the "Edit" menu, then type cmd-p or select "Play selection" in the "Action" menu. BP2 skips remarks and plays all items in the window.