- Author Profile John Moxey
- John Moxey Website
The MIDI Message Format, as defined within the MIDI Specification, defines two basic types of message bytes: the status byte and the data byte. The Most Significant Bit (MSB) of a status byte is always 1. The Most Significant Bit of a data byte is always 0. The maximum length for a standard MIDI message is three bytes but for some types of MIDI messages, the length can be less.
Midi Message Format Explained
| Status | Data 1 | Data 2 |
|---|---|---|
| 1 t t t n n n n | 0 x x x x x x x | 0 x x x x x x x |
There are only 7 bits, in each byte, to represent the unique data that the message byte contains. It can easily be calculated that there are only 2^7, or 128, discrete values available per byte. This means that there are 8 fundamental types of status message (t) which, if a channel specific message, can be sent to any one of 16 different MIDI Channels. If the status message is not channel specific the lower nibble (4 bits) of the status represents one of 16 different message sub-classes.
There are two different classifications of MIDI messages: MIDI Data Messages and MIDI System Messages. MIDI Data Messages are channel specific, MIDI System Messages are not channel specific.
Note: All values are in HEX format!
| Message | Status | Data 1 | Data 2 |
|---|---|---|---|
| Note Off | 8n | Note Number | Velocity |
| Note On | 9n | Note Number | Velocity |
| Polyphonic Aftertouch | An | Note Number | Pressure |
| Control Change | Bn | Controller Number | Data |
| Program Change | Cn | Program Number | Unused |
| Channel Aftertouch | Dn | Pressure | Unused |
| Pitch Wheel | En | LSB | MSB |
Key
| Term | Meaning |
|---|---|
| n | MIDI Channel Number (0-F) |
| LSB | Least Significant Byte |
| MSB | Most Significant Byte |
There are several different types of controller messages.
MIDI Data Messages - Control Messages
Note: All values are in HEX format!
| Message | Status | Data 1 | Data 2 |
|---|---|---|---|
| 14-bit controllers MSB | Bn | 01 (Modulation Wheel) | Data |
| 02 (Breath Controller) | Data | ||
| 04 (Foot Controller) | Data | ||
| 05 (Portamento Time) | Data | ||
| 06 (Data Entry Slider) | Data | ||
| 07 (Main Volume) | Data | ||
| 14-bit Controllers LSB | Bn | 21 (Modulation Wheel) | Data |
| 22 (Breath Controller) | Data | ||
| 24 (Foot Controller) | Data | ||
| 25 (Portamento Time) | Data | ||
| 26 (Data Entry Slider) | Data | ||
| 27 (Main Volume) | Data | ||
| 7-Bit controllers | Bn | 40 (Sustain Pedal) | 00-3F (off) 40-FF (on) |
| 41 (Portamento) | 00-3F (off) 40-FF (on) | ||
| 42 (Sostenato Pedal) | 00-3F (off) 40-FF (on) | ||
| 43 (Soft Pedal) | 00-3F (off) 40-FF (on) | ||
| 60 (Data Increment) | 7F | ||
| 61 (Data Increment) | 7F | ||
| 62 (NRPN) | LSB | ||
| 63 (NRPN) | MSB | ||
| 64 (RPN) | LSB | ||
| 65 (RPN) | MSB | ||
| 79 (Reset All Controllers) | 7F | ||
| Channel Modes | Bn | 7A (Local) | 00 (off) / 7F (on) |
| 7B (All Notes Off) | 0 | ||
| 7C (Omni Off) | 0 | ||
| 7D (Omni On) | 0 | ||
| 7E (Mono) | 00-0A | ||
| 7F (Poly) | 0 |
Key
| Term | Meaning |
|---|---|
| n | MIDI Channel Number (0-F) |
| LSB | Least Significant Byte |
| MSB | Most Significant Byte |
| NRPN | Non-Registered Parameter Number |
| RPN | Registered Parameter Number |
System Exclusive
| Message | Status | Data 1 | Data 2 |
|---|---|---|---|
| System Exclusive Start | F0 | Manufacturers ID | Data, data, data |
| System Exclusive End | F7 | ||
| Polyphonic Aftertouch | An | Note Number | Pressure |
System Common
| Message | Status | Data 1 | Data 2 |
|---|---|---|---|
| Song Pointer | F2 | LSB | MSB |
| Song Select | F3 | Song Number | |
| Tune Request | F6 |
Midi Time Code
| Message | Status | Data 1 | Data 2 |
|---|---|---|---|
| Quarter Frame | F1 | Data |
System Realtime
| Message | Status | Data 1 | Data 2 |
|---|---|---|---|
| Timing Clock | F8 | ||
| Measure End | F9 | Unused | |
| Start | FA | ||
| Continue | FB | ||
| Stop | FC | ||
| Active Sensing | FE | ||
| Reset | FF |
MIDI Message Format Conclusion
Use these tables to be able to construct or deconstruct MIDI messages. This could be for software programming, or MIDI file processing, or debugging issues in MIDI data streams. If you have any questions about the MIDI message format you can discuss this article in our Music Forum.
Related Articles
Do you want to read more gear reviews? If so, you can find articles and tutorials on our Music Product Reviews page.
You might find the following selection of recording and midi articles by John Moxey useful:
Author
-
Editor of Songstuff and a Scottish singer, songwriter, and multi-instrumentalist with a passion for production. Fusing all sorts of different styles from chill out electronica to rock and acoustic ballad, the influences on John's music is wide and varied.
John is currently working on a large collection of original material with planned releases starting late 2025.
Artist Website: www.johnmoxey.com


