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 value Decimal value Controller Values Required by
0x00 0 Bank select (coarse) 0-127 GM21
0x01 1 Modulation wheel (coarse) 0-127 GM1, GM2
0x02 2 Breath controller (coarse) 0-127
0x04 4 Foot controller (coarse) 0-127
0x05 5 Portamento time (coarse) 0-127 GM2
0x06 6 Data entry (coarse) 0-127 GM1, GM2
0x07 7 Channel volume (coarse) (formerly main volume) 0-127 GM1, GM2
0x08 8 Balance (coarse) 0-127
0x0A 10 Pan (coarse) 0-127 GM1, GM2
0x0B 11 Expression (coarse)2 0-127 GM1, GM2
0x0C 12 Effect control 1 (coarse) 0-127
0x0D 13 Effect control 2 (coarse) 0-127
0x10 16 General purpose controller 1 (coarse) 0-127
0x11 17 General purpose controller 2 (coarse) 0-127
0x12 18 General purpose controller 3 (coarse) 0-127
0x13 19 General purpose controller 4 (coarse) 0-127
0x20 32 Bank select (fine) 0-127 GM2
0x21 33 Modulation wheel (fine) 0-127
0x22 34 Breath controller (fine) 0-127
0x24 36 Foot controller (fine) 0-127
0x25 37 Portamento time (fine) 0-127
0x26 38 Data entry (fine) 0-127 GM1, GM2
0x27 39 Channel volume (fine) (formerly main volume) 0-127
0x28 40 Balance (fine) 0-127
0x2A 42 Pan (fine) 0-127
0x2B 43 Expression (fine)2 0-127
0x2C 44 Effect control 1 (fine) 0-127
0x2D 45 Effect control 2 (fine) 0-127
0x40 64 Hold (damper, sustain) pedal 1 (on/off) = 64 is on GM1, GM2
0x41 65 Portamento pedal (on/off) = 64 is on GM2
0x42 66 Sostenuto pedal (on/off) = 64 is on GM2
0x43 67 Soft pedal (on/off) = 64 is on GM2
0x44 68 legato pedal (on/off) = 64 is on
0x45 69 Hold pedal 2 (on//off) = 64 is on
0x46 70 Sound controller 1 (default is sound variation) 0-127
0x47 71 Sound controller 2 (default is timbre / harmonic intensity / filter resonance) 0-127 GM2
0x48 72 Sound controller 3 (default is release time) 0-127 GM2
0x49 73 Sound controller 4 (default is attack time) 0-127 GM2
0x4A 74 Sound controller 5 (default is brightness or cutoff frequency) 0-127 GM2
0x4B 75 Sound controller 6 (default is decay time) 0-127 GM2
0x4C 76 Sound controller 7 (default is vibrato rate) 0-127 GM2
0x4D 77 Sound controller 8 (default is vibrato depth) 0-127 GM2
0x4E 78 Sound controller 9 (default is vibrato delay) 0-127 GM2
0x4F 79 Sound controller 10 (default is undefined) 0-127
0x50 80 General purpose controller 5 0-127
0x51 81 General purpose controller 6 0-127
0x52 82 General purpose controller 7 0-127
0x53 83 General purpose controller 8 0-127
0x54 84 Portamento control 0-127
0x58 88 High resolution velocity prefix 0-127
0x5B 91 Effect 1 depth (default is reverb send level, formerly external effect depth) 0-127 GM2
0x5C 92 Effect 2 depth (formerly tremolo depth) 0-127
0x5D 93 Effect 3 depth (default is chorus send level, formerly chorus depth) 0-127 GM2
0x5E 94 Effect 4 depth (formerly celeste depth) 0-127
0x5F 95 Effect 5 depth (formerly phaser level) 0-127
0x60 96 Data button increment
0x61 97 Data button decrement
0x62 98 Non-registered parameter (coarse) 0-127
0x63 99 Non-registered parameter (fine) 0-127
0x64 100 Registered parameter (coarse) 0-127 GM1, GM2
0x65 101 Registered parameter (fine) 0-127 GM1, GM2
0x78 120 All sound off 0
0x79 121 All controllers off 0 GM1, GM2
0x7A 122 Local control (on/off) 0 off, 127 on
0x7B 123 All notes off 0 GM1, GM2
0x7C 124 Omni mode off 0
0x7D 125 Omni mode on 0
0x7E 126 Mono operation and all notes off
0x7F 127 Poly operation and all notes off 0

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)

Comments

admin: First posted on 2011 07 09

BlueChip, 2011 07 09: Fantastic information, nicely explained. Thank You

Add new comment

Filtered HTML

  • Freelinking helps you easily create HTML links. Links take the form of [[indicator:target|Title]]. By default (no indicator): Click to view a local node.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.