MIDI Controller message


A MIDI event that carries the MIDI controller message tells a MIDI device that at a certain time the value of some controller should change.

A controller is a slider, knob, or a switch, and hence could be a volume control, pan control, legato pedal, and others (a list of standard MIDI controllers is provided below).

This message belongs to the category of MIDI voice messages.

The MIDI controller message consists of three bytes of data. The first byte is the status byte and has hexadecimal values between 0xB0 and 0xBF. The high nibble of the status byte is B, which tells the MIDI device that this is a "controller" message. The low nibble of the status byte is between 0 and F (0 and 15 in decimal values) and points to one of the 16 MIDI channels. Two bytes follow the status byte. The first byte after the status byte is has values between 0x00 and 0x7F (0 and 127 in decimal values) and identifies the controller that should be affected (see below). A value of 0x07, for example, signifies that this is a coarse volume controller. The second byte after the status byte carries the value that the controller should receive. What the value means depends on the MIDI device.

The following is an example of a MIDI controller message.

0xB6 0x07 0x10

The status byte 0xB6 shows that this is a controller message for channel 6. The controller is 0x07, which is a coarse volume controller. This volume should be set to 0x10.

The following is a list of defined standard controllers. The last column shows whether these controllers are required for compliance with the standard General MIDI 1 (GM1) or General MIDI 2 (GM2). "Coarse" and "fine" should be interpreted as the most significant bits (MSB) and least significant bits (LSB) of controller values that can be sent in pairs to form 14-bit values, after the top-most bit of each controller value byte is dropped.

Hexadecimal valueDecimal valueControllerValuesRequired by
0x000Bank select (coarse)0-127GM21
0x011Modulation wheel (coarse)0-127GM1, GM2
0x022Breath controller (coarse)0-127
0x044Foot controller (coarse)0-127
0x055Portamento time (coarse)0-127GM2
0x066Data entry (coarse)0-127GM1, GM2
0x077Channel volume (coarse) (formerly main volume)0-127GM1, GM2
0x088Balance (coarse)0-127
0x0A10Pan (coarse)0-127GM1, GM2
0x0B11Expression (coarse)20-127GM1, GM2
0x0C12Effect control 1 (coarse)0-127
0x0D13Effect control 2 (coarse)0-127
0x1016General purpose controller 1 (coarse)0-127
0x1117General purpose controller 2 (coarse)0-127
0x1218General purpose controller 3 (coarse)0-127
0x1319General purpose controller 4 (coarse)0-127
0x2032Bank select (fine)0-127GM2
0x2133Modulation wheel (fine)0-127
0x2234Breath controller (fine)0-127
0x2436Foot controller (fine)0-127
0x2537Portamento time (fine)0-127
0x2638Data entry (fine)0-127GM1, GM2
0x2739Channel volume (fine) (formerly main volume)0-127
0x2840Balance (fine)0-127
0x2A42Pan (fine)0-127
0x2B43Expression (fine)20-127
0x2C44Effect control 1 (fine)0-127
0x2D45Effect control 2 (fine)0-127
0x4064Hold (damper, sustain) pedal 1 (on/off)< 63 is off, >= 64 is onGM1, GM2
0x4165Portamento pedal (on/off)< 63 is off, >= 64 is onGM2
0x4266Sostenuto pedal (on/off)< 63 is off, >= 64 is onGM2
0x4367Soft pedal (on/off)< 63 is off, >= 64 is onGM2
0x4468legato pedal (on/off)< 63 is off, >= 64 is on
0x4569Hold pedal 2 (on//off)< 63 is off, >= 64 is on
0x4670Sound controller 1 (default is sound variation)0-127
0x4771Sound controller 2 (default is timbre / harmonic intensity / filter resonance)0-127GM2
0x4872Sound controller 3 (default is release time)0-127GM2
0x4973Sound controller 4 (default is attack time)0-127GM2
0x4A74Sound controller 5 (default is brightness or cutoff frequency)0-127GM2
0x4B75Sound controller 6 (default is decay time)0-127GM2
0x4C76Sound controller 7 (default is vibrato rate)0-127GM2
0x4D77Sound controller 8 (default is vibrato depth)0-127GM2
0x4E78Sound controller 9 (default is vibrato delay)0-127GM2
0x4F79Sound controller 10 (default is undefined)0-127
0x5080General purpose controller 50-127
0x5181General purpose controller 60-127
0x5282General purpose controller 70-127
0x5383General purpose controller 80-127
0x5484Portamento control0-127
0x5888High resolution velocity prefix0-127
0x5B91Effect 1 depth (default is reverb send level, formerly external effect depth)0-127GM2
0x5C92Effect 2 depth (formerly tremolo depth)0-127
0x5D93Effect 3 depth (default is chorus send level, formerly chorus depth)0-127GM2
0x5E94Effect 4 depth (formerly celeste depth)0-127
0x5F95Effect 5 depth (formerly phaser level)0-127
0x6096Data button increment
0x6197Data button decrement
0x6298Non-registered parameter (coarse)0-127
0x6399Non-registered parameter (fine)0-127
0x64100Registered parameter (coarse)0-127GM1, GM2
0x65101Registered parameter (fine)0-127GM1, GM2
0x78120All sound off0
0x79121All controllers off0GM1, GM2
0x7A122Local control (on/off)0 off, 127 on
0x7B123All notes off0GM1, GM2
0x7C124Omni mode off0
0x7D125Omni mode on0
0x7E126Mono operation and all notes off
0x7F127Poly operation and all notes off0

1 The MIDI Manufacturer's Association (MMA) specifies that some GM2 controllers are optional. It is not clear which ones are optional and which ones are required.

2 The expression controllers (coarse expression 0x0B and fine expression 0x2B) are typically used for expression of music dynamics. Expressions in music can refer to tempo (e.g., andante), dynamics (e.g., crescendo), style (e.g., furioso), or articulation (e.g., staccato), but here the controllers are for dynamics (i.e., volume). Thus, they work similarly to controllers for volume (e.g., 0x07). By convention though, a volume controller on a MIDI device would be a knob and would be used for setting the volume level for the song throughout. An expression controller could be a pedal and would be used to modify the volume during the song.

How a MIDI device would respond to a controller depends on the device. For controllers between 0x01 and 0x1F and between 0x40 and 0x5F, with the General MIDI 2 standard, the MIDI controller destination message was defined to help standardize device response to these controllers (and the channel pressure and key pressure messages).

See also:
Musical Instrument Digital Interface (MIDI)

Rate This Page: Poor Great   |  Rate Content |
Average rating:  5   
Number of Ratings : 2
Add Comment
Fantastic information, nicely explained. Thank You
Posted At 09-07-2011 22:53:13

Copyright 2006 by Kaliopa Publishing, LLC