MIDI 1.0
Control Change
A Control Change message is Bn cc vv: controller number cc set to value vv on channel n. Controllers 0–119 are
sound and performance controls. Controllers 120–127 are reserved for channel mode messages.
Kinds of controller
- 14-bit pairs (0–31 with 32–63). CC n carries the 7-bit MSB and CC n+32 carries the matching LSB.
-
Switches (64–69). Values 0–63 mean off and 64–127 mean on. Send 0 and 127.
Receivers should test
value >= 64. Many modern devices send continuous values for half-pedalling on CC 64. - 7-bit continuous (70–95). No LSB partner.
- Parameter-number controllers (96–101). These drive RPN and NRPN.
- Channel mode messages (120–127). These change how the channel behaves, not a sound parameter.
14-bit controllers
For more than 128 steps, send the MSB on CC n and then the LSB on CC n+32:
value14 = (MSB << 7) | LSB // 0 … 16383
B0 01 40 ; Mod wheel MSB = 64
B0 21 00 ; Mod wheel LSB = 0 → 8192
- When a new MSB arrives, the receiver should reset the LSB to 0. A sender that changes only the coarse value can then send just the MSB.
- A sender that changes only the LSB can send just the LSB. The receiver keeps the last MSB.
- Because of these rules, always send MSB first, then LSB. Receivers that ignore CC 32–63 still get a usable 7-bit value from the MSB.
| MSB | LSB | Controller |
|---|---|---|
| 0 | 32 | Bank Select |
| 1 | 33 | Modulation Wheel |
| 2 | 34 | Breath Controller |
| 4 | 36 | Foot Controller |
| 5 | 37 | Portamento Time |
| 6 | 38 | Data Entry |
| 7 | 39 | Channel Volume |
| 8 | 40 | Balance |
| 10 | 42 | Pan |
| 11 | 43 | Expression Controller |
| 12 | 44 | Effect Control 1 |
| 13 | 45 | Effect Control 2 |
| 16 | 48 | General Purpose Controller 1 |
| 17 | 49 | General Purpose Controller 2 |
| 18 | 50 | General Purpose Controller 3 |
| 19 | 51 | General Purpose Controller 4 |
Bank Select
CC 0 (MSB) and CC 32 (LSB) together form a 14-bit bank number. Nothing changes until the next Program Change. The order is Bn 00 mm, then Bn 20 ll, then Cn pp. Some instruments use only the MSB or only the LSB. Check the device's MIDI implementation chart.
Full reference: CC 0–127
| CC | Hex | Name | Type | Notes |
|---|---|---|---|---|
| 0 |
0x00
|
Bank Select (MSB) | 14-bit MSB | Takes effect at the next Program Change. |
| 1 |
0x01
|
Modulation Wheel (MSB) | 14-bit MSB | Usually vibrato depth. |
| 2 |
0x02
|
Breath Controller (MSB) | 14-bit MSB | |
| 3 |
0x03
|
Undefined (MSB) | Undefined | |
| 4 |
0x04
|
Foot Controller (MSB) | 14-bit MSB | |
| 5 |
0x05
|
Portamento Time (MSB) | 14-bit MSB | |
| 6 |
0x06
|
Data Entry (MSB) | 14-bit MSB | Value for the selected RPN/NRPN. |
| 7 |
0x07
|
Channel Volume (MSB) | 14-bit MSB | GM default 100. |
| 8 |
0x08
|
Balance (MSB) | 14-bit MSB | 64 = center. |
| 9 |
0x09
|
Undefined (MSB) | Undefined | |
| 10 |
0x0A
|
Pan (MSB) | 14-bit MSB | 0 = hard left, 64 = center, 127 = hard right. |
| 11 |
0x0B
|
Expression Controller (MSB) | 14-bit MSB | A fraction of channel volume; GM default 127. |
| 12 |
0x0C
|
Effect Control 1 (MSB) | 14-bit MSB | |
| 13 |
0x0D
|
Effect Control 2 (MSB) | 14-bit MSB | |
| 14–15 |
0x0E–0x0F
|
Undefined (MSB) | Undefined | |
| 16–19 |
0x10–0x13
|
General Purpose Controllers 1–4 (MSB) | 14-bit MSB | |
| 20–31 |
0x14–0x1F
|
Undefined (MSB) | Undefined | |
| 32–63 |
0x20–0x3F
|
LSB for controllers 0–31 | 14-bit LSB | CC n+32 is the low 7 bits of CC n (see below). |
| 64 |
0x40
|
Damper Pedal (Sustain) | Switch | |
| 65 |
0x41
|
Portamento On/Off | Switch | |
| 66 |
0x42
|
Sostenuto | Switch | |
| 67 |
0x43
|
Soft Pedal | Switch | |
| 68 |
0x44
|
Legato Footswitch | Switch | |
| 69 |
0x45
|
Hold 2 | Switch | |
| 70 |
0x46
|
Sound Controller 1: Sound Variation | 7-bit | |
| 71 |
0x47
|
Sound Controller 2: Timbre / Harmonic Intensity | 7-bit | Often filter resonance. |
| 72 |
0x48
|
Sound Controller 3: Release Time | 7-bit | |
| 73 |
0x49
|
Sound Controller 4: Attack Time | 7-bit | |
| 74 |
0x4A
|
Sound Controller 5: Brightness | 7-bit | Often filter cutoff. MPE uses it as the "Y" axis (timbre). |
| 75 |
0x4B
|
Sound Controller 6: Decay Time | 7-bit | |
| 76 |
0x4C
|
Sound Controller 7: Vibrato Rate | 7-bit | |
| 77 |
0x4D
|
Sound Controller 8: Vibrato Depth | 7-bit | |
| 78 |
0x4E
|
Sound Controller 9: Vibrato Delay | 7-bit | |
| 79 |
0x4F
|
Sound Controller 10 | 7-bit | No default meaning. |
| 80–83 |
0x50–0x53
|
General Purpose Controllers 5–8 | 7-bit | |
| 84 |
0x54
|
Portamento Control | 7-bit | Source note number for the next note’s glide. |
| 85–87 |
0x55–0x57
|
Undefined | Undefined | |
| 88 |
0x58
|
High Resolution Velocity Prefix | 7-bit | Low 7 bits of the velocity of the next Note On/Off. |
| 89–90 |
0x59–0x5A
|
Undefined | Undefined | |
| 91 |
0x5B
|
Effects 1 Depth (Reverb Send) | 7-bit | Formerly "External Effects Depth". |
| 92 |
0x5C
|
Effects 2 Depth (Tremolo) | 7-bit | |
| 93 |
0x5D
|
Effects 3 Depth (Chorus Send) | 7-bit | |
| 94 |
0x5E
|
Effects 4 Depth (Celeste / Detune) | 7-bit | |
| 95 |
0x5F
|
Effects 5 Depth (Phaser) | 7-bit | |
| 96 |
0x60
|
Data Increment | Parameter | Value byte is ignored (send 0). |
| 97 |
0x61
|
Data Decrement | Parameter | Value byte is ignored (send 0). |
| 98 |
0x62
|
Non-Registered Parameter Number (NRPN) LSB | Parameter | |
| 99 |
0x63
|
Non-Registered Parameter Number (NRPN) MSB | Parameter | |
| 100 |
0x64
|
Registered Parameter Number (RPN) LSB | Parameter | |
| 101 |
0x65
|
Registered Parameter Number (RPN) MSB | Parameter | |
| 102–119 |
0x66–0x77
|
Undefined | Undefined | |
| 120 |
0x78
|
All Sound Off | Channel mode | Value 0. Silence immediately, including release tails. |
| 121 |
0x79
|
Reset All Controllers | Channel mode | Value 0. See RP-015 for what gets reset. |
| 122 |
0x7A
|
Local Control On/Off | Channel mode | 0 = off, 127 = on. |
| 123 |
0x7B
|
All Notes Off | Channel mode | Value 0. Notes held by sustain keep sounding until the pedal is released. |
| 124 |
0x7C
|
Omni Mode Off | Channel mode | Value 0. Also acts as All Notes Off. |
| 125 |
0x7D
|
Omni Mode On | Channel mode | Value 0. Also acts as All Notes Off. |
| 126 |
0x7E
|
Mono Mode On (Poly Off) | Channel mode | Value = number of channels (0 = as many as voices). Also acts as All Notes Off. |
| 127 |
0x7F
|
Poly Mode On (Mono Off) | Channel mode | Value 0. Also acts as All Notes Off. |
"Undefined" means the MIDI specification assigns no meaning. Hardware and software often use these numbers for MIDI-learn mappings, and that is the safest place to put custom mappings. Some numbers have specific uses in particular ecosystems. GM2, for example, assigns defaults to Sound Controllers 1–10.
Channel mode messages (120–127)
These eight controllers change how a channel responds to messages. The Omni and Mono/Poly switches (124–127) are normally recognized only on a receiver's basic channel. In multitimbral instruments, each part usually honors All Sound Off, Reset All Controllers, and All Notes Off (120, 121, 123) on its own channel.
| Bytes | Message | Effect |
|---|---|---|
| Bn 78 00 | All Sound Off | Cut all sound at once, including release phases and effect tails where possible. |
| Bn 79 00 | Reset All Controllers | Return performance controllers to their defaults: pitch bend to center, mod wheel to 0, pedals off, pressure to 0, RPN/NRPN to null. Volume, pan, and bank are left alone (RP-015). |
| Bn 7A 00/7F | Local Control | Off: the keyboard sends MIDI but does not play the internal sound engine. Use it when a DAW echoes MIDI back to the instrument. |
| Bn 7B 00 | All Notes Off | Release all notes that were started by MIDI Note Ons. Notes held by the sustain pedal keep sounding until it is lifted. |
| Bn 7C 00 | Omni Off | Respond only to the basic channel. Also performs All Notes Off. |
| Bn 7D 00 | Omni On | Respond to all channels. Also performs All Notes Off. |
| Bn 7E mm | Mono On | One voice per channel across mm channels starting at the basic channel (0 = as many as there are voices). Also performs All Notes Off. |
| Bn 7F 00 | Poly On | Polyphonic operation. Also performs All Notes Off. |
The four modes
The Omni and Mono/Poly switches combine into four receiver modes:
| Mode | Omni | Poly/Mono | Behavior |
|---|---|---|---|
| 1 | On | Poly | Receive on all channels and play them polyphonically as one part. |
| 2 | On | Mono | Receive on all channels and play one monophonic voice. Rarely used. |
| 3 | Off | Poly | Receive only on the basic channel, polyphonically. The usual multitimbral default. |
| 4 | Off | Mono | Each channel plays one monophonic voice. Guitar controllers use this, and it is the ancestor of MPE. |
Panic buttons
A reliable "panic" sends, on all 16 channels, CC 64 = 0 (release sustain), CC 120 (All Sound Off), CC 123 (All Notes Off), and optionally CC 121. As a last resort it sends a Note Off for every key. Do not count on All Notes Off alone: notes held by the sustain pedal ignore it.
Spotted an error? Edit this page on GitHub.