MIDI 1.0

Control Change

Spec: MIDI 1.0 Core Specifications All specs

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.
MSBLSBController
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

CCHexNameTypeNotes
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.

BytesMessageEffect
Bn 78 00All Sound OffCut all sound at once, including release phases and effect tails where possible.
Bn 79 00Reset All ControllersReturn 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/7FLocal ControlOff: 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 00All Notes OffRelease all notes that were started by MIDI Note Ons. Notes held by the sustain pedal keep sounding until it is lifted.
Bn 7C 00Omni OffRespond only to the basic channel. Also performs All Notes Off.
Bn 7D 00Omni OnRespond to all channels. Also performs All Notes Off.
Bn 7E mmMono OnOne 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 00Poly OnPolyphonic operation. Also performs All Notes Off.

The four modes

The Omni and Mono/Poly switches combine into four receiver modes:

ModeOmniPoly/MonoBehavior
1OnPolyReceive on all channels and play them polyphonically as one part.
2OnMonoReceive on all channels and play one monophonic voice. Rarely used.
3OffPolyReceive only on the basic channel, polyphonically. The usual multitimbral default.
4OffMonoEach 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.