MIDI Messages Summary
For a more detailed explanation of MIDI message formats, see MIDI Messages.
The general format of a MIDI message is: <status-byte> [<data-byte> ...]
- Status bytes are
80-FF. - Data bytes are
00-7F.
Channel messages
n is the MIDI channel nibble from 0 = channel 1 to F = channel 16.
| Message format | Message name |
|---|---|
| 8n <note> <velocity> | Note Off |
| 9n <note> <velocity> | Note On |
| An <note> <pressure> | Polyphonic Key Pressure |
| Bn <controller> <value> | Control Change / Mode Change |
| Cn <program-number> | Program Change |
| Dn <pressure> | Channel Pressure |
| En <lsb> <msb> | Pitch Bend Change |
System common messages
| Message format | Message name |
|---|---|
| F0 <manufacturer-id> … F7 | System Exclusive |
| F1 <value> | MIDI Time Code Quarter Frame |
| F2 <lsb> <msb> | Song Position Pointer |
| F3 <song-number> | Song Select |
| F4 | Undefined |
| F5 <value> | Cable Select |
| F6 | Tune Request |
| F7 | End of Exclusive |
System real-time messages
System real-time messages contain no data bytes and may appear anywhere in the MIDI stream, even between the data bytes of another message.
| Message format | Message name |
|---|---|
| F8 | Timing Clock |
| F9 | Undefined |
| FA | Start |
| FB | Continue |
| FC | Stop |
| FD | Undefined |
| FE | Active Sensing |
| FF | System Reset |
Quick lookup by first byte
| First byte | Message type |
|---|---|
| 80 - 8F | Note Off |
| 90 - 9F | Note On |
| A0 - AF | Polyphonic Key Pressure |
| B0 - BF | Control Change / Mode Change |
| C0 - CF | Program Change |
| D0 - DF | Channel Pressure |
| E0 - EF | Pitch Bend Change |
| F0 | System Exclusive |
| F1 - F7 | System Common |
| F8 - FF | System Real-Time |