MIDI Message Reference
The MIDI 1.0 channel and system messages — each status byte, its data bytes, and what it does. The byte-level reference for anyone sending or parsing MIDI in code.
| Message | Status byte | Data bytes | Meaning |
|---|---|---|---|
| Note Off | 0x8n | note, velocity | Release a note on channel n. |
| Note On | 0x9n | note, velocity | Start a note (velocity 0 acts as Note Off). |
| Poly Aftertouch | 0xAn | note, pressure | Pressure on an individual held note. |
| Control Change | 0xBn | controller, value | Move a controller — see the CC list. |
| Program Change | 0xCn | program | Select a patch/instrument (one data byte). |
| Channel Aftertouch | 0xDn | pressure | Single pressure value for the whole channel. |
| Pitch Bend | 0xEn | LSB, MSB | 14-bit bend, centred at 8192. |
| System Exclusive | 0xF0 … 0xF7 | manufacturer data | Arbitrary-length manufacturer message. |
The low nibble n of a channel status byte is the MIDI channel (0–15, shown as 1–16). Data bytes are 0–127 (high bit clear). So a middle-C note-on at full velocity on channel 1 is 0x90 0x3C 0x7F. See the CC list, GM programs and note numbers.