All MIDI status byte and data byte values are in hexadecimal
| Status Byte | Data Bytes | Message | Description | |||
|---|---|---|---|---|---|---|
| 8n | kk | vv | Normally sent when a key (on a synthesizer) is released (note 1) | |||
| Value | Range | Description | ||||
| n | 0-F | MIDI Channel | 0 = Ch 1 | |||
| kk | 00-7F | Key which was released This must correspond to a previous note-on message for correct operation | 3C = Middle-C | |||
| vv | 00-7F | Velocity with which key was released Devices which are not velocity sensitive should send vv=40 The interpretation of this message is up to the receiving MIDI device | 00=min 40=default 7F=max | |||
| Status Byte | Data Bytes | Message | Description | |||
| 9n | kk | vv | Normally sent when a key (on a synthesizer) is pressed A corresponding note-off message must be sent for each and every note-on message | |||
| Value | Range | Description | ||||
| n | 0-F | MIDI Channel | 0 = Ch 1 | |||
| kk | 00-7F | Key which was pressed Each value is a 'half-step' above or below the adjacent values | 3C = Middle-C | |||
| vv | 00-7F | Velocity with which key was pressed Devices which are not velocity sensitive should send vv=40 By definition, a note-on message with vv=0 is equivalent to the message: "note-off vv=40" (note 2) | 00=note-off (40) 01=ppp 40=mf 7F=fff | |||
| Status Byte | Data Bytes | Message | Description | |||
| An | kk | ww | Also known as Aftertouch. This message is sent when there is a change in the pressure being applied to a key (ie on a per-key basis). | |||
| Value | Range | Description | ||||
| n | 0-F | MIDI Channel | 0 = Ch 1 | |||
| kk | 00-7F | Key which was pressed Each value is a 'half-step' above or below the adjacent values | 3C = Middle-C | |||
| ww | 00-7F | Pressure with which key is being pressed | 00=min, 7F=max | |||
| Status Byte | Data Bytes | Message | Description | |||
| Bn | cc | nn | Sent when a change is made in a footswitch, expression pedal, slider, or other controller. | |||
| Value | Range | Description | ||||
| n | 0-F | MIDI Channel | 0 = Ch 1 | |||
| cc | 00-77 | Controller Number | see detailed descriptions | |||
| nn | 00-7F | Controller Value | 00=min, 40=center, 7F=max | |||
| Status Byte | Data Bytes | Message | Description | |||
| Cn | pp | Program Change | Used to change the instrument (or sound) to be played when a note-on message is received. This is usually not retro-active, and only applies to subsequent note-on messages This message may have a completely different interpretation depending on the type of device. For example, it could change the current rhythm on a drum-machine. | |||
| Value | Range | Description | ||||
| n | 0-F | MIDI Channel | 0 = Ch 1 | |||
| pp | 00-7F | New Program number | 00=1st program | |||
| Status Byte | Data Bytes | Message | Description | |||
| Dn | ww | Also known as Aftertouch. This message is sent when there is a change in the overall pressure being applied to the keyboard (ie for the channel overall, and not on a per-key basis). | ||||
| Value | Range | Description | ||||
| n | 0-F | MIDI Channel | 0 = Ch 1 | |||
| ww | 00-7F | Channel Pressure Value | 00=min, 7F=max | |||
| Status Byte | Data Bytes | Message | Description | |||
| En | lsb | msb | Sent when a change is made in a pitch-bender lever. | |||
| Value | Range | Description | ||||
| n | 0-F | MIDI Channel | 0 = Ch 1 | |||
| lsb | 00-7F | Least significant byte | 00=min, 00=center, 7F=max | |||
| msb | 00-7F | Most Significant Byte | 00=min, 40=center, 7F=max | |||
Footnotes
|
| MIDI Channel Voice Messages | ||||
|---|---|---|---|---|
| The table below presents a summary of the MIDI Channel Voice Message codes in binary form. A MIDI channel voice message consists of a Status Byte followed by one or two Data Bytes. | ||||
| Status Byte | Data Byte 1 | Data Byte 2 | Message | Legend |
| 1000nnnn | 0kkkkkkk | 0vvvvvvv | Note Off | n=channel* k=key # 0-127(60=middle C) v=velocity (0-127) |
| 1001nnnn | 0kkkkkkk | 0vvvvvvv | Note On | n=channel k=key # 0-127(60=middle C) v=velocity (0-127) |
| 1010nnnn | 0kkkkkkk | 0ppppppp | Poly Key Pressure | n=channel k=key # 0-127(60=middle C) p=pressure (0-127) |
| 1011nnnn | 0ccccccc | 0vvvvvvv | Controller Change | n=channel c=controller v=controller value(0-127) |
| 1100nnnn | 0ppppppp | [none] | Program Change | n=channel p=preset number (0-127) |
| 1101nnnn | 0ppppppp | [none] | Channel Pressure | n=channel p=pressure (0-127) |
| 1101nnnn | 0ccccccc | 0fffffff | Pitch Bend | n=channel c=coarse f=fine (c+f = 14-bit resolution) |
*The last four bits of a status byte signify the MIDI channel (1-16) the message is intended for offset by 1 [0000=channel #1, 1111=channel #16]
An example of a MIDI channel voice message would be:
10010001 00111100 01000000
The first four bits of the status byte specify the Note On command, while the last four specify MIDI channel #2. The first data byte specifies the key number for middle C (=60 decimal), while the second data byte specifies a median velocity (= 64 decimal).
|