MIDI Reference (replace # with hex channel number):
| Message Type | Status Byte | Data Byte One | Data Byte Two |
| Note Off | 0x8# | note number | velocity |
| Note On | 0x9# | note number | velocity |
| Poly Pressure | 0xa# | note number | value |
| Control Change | 0xb# | controller number | value |
| Program Change | 0xc# | program number | |
| Channel Pressure | 0xd# | value | |
| Pitch Bend | 0xe# | 0 | bend amount |
| System Exclusive | 0xf0 | (sysex message) | 0xf7 |
| Time Code | 0xf1 | data | |
| Song Position | 0xf2 | 0 | position |
| Song Select | 0xf3 | song number | |
| Tune Request | 0xf6 | ||
| Clock Tick | 0xf8 | ||
| Start | 0xfa | ||
| Continue | 0xfb | ||
| Stop | 0xfc | ||
| Active Sense | 0xfe | ||
| System Reset | 0xff |
Please note: status or data bytes may be entered in either hex (0x__) or decimal format, and may be mixed within a MIDI message
Status byte hexadecimal channel # lookup:
0x_0 = channel 1
0x_1 = channel 2
0x_2 = channel 3
0x_3 = channel 4
0x_4 = channel 5
0x_5 = channel 6
0x_6 = channel 7
0x_7 = channel 8
0x_8 = channel 9
0x_9 = channel 10
0x_a = channel 11
0x_b = channel 12
0x_c = channel 13
0x_d = channel 14
0x_e = channel 15
0x_f = channel 16
Sample Messages:
/midi/0x90 60 x - Note on, channel 1, note 60 (middle C), velocity will be 127 on press, zero (note off) on release when used with a momentary push button
/midi/0xbf 1 x - Control change, channel 16, controller 1, value will be determined by the slider or rotary's value, range 0-127
/midi/0xc2 x(0..15) - Program change, channel 3, program number determined by slider or rotary, range 0-15
/midi/0x96 60 x 0x96 67 x 0x96 76 x 0x96 83 x 0x96 90 x - Multiple note-on messages (a chord), channel 6, notes 60, 67, 76, 83, 90, notes off when button released
/midi/0x96 60 x 67 x 76 x 83 x 90 x - Same as above (using running status)
/midi/0x96 60 x(0..100) 67 x(0..96) 76 x(0..92) 83 x(0..88) 90 x(0..84) - Same as above, but with different velocities for each note-on
/midi/0xb0 22 99 - Control change, channel 1, value 99 - with no variable, it only sends on a button press, but not on release
/midi/0xb0 25 x(0..100) 26 y(0..63) - Control changes, channel 1, each axis has its own range - for an x/y pad
/midi/0xf0 0x43 0x10 0x00 124 x(0..99) 0xf7 - This is a SYSEX message to control the OP1 oscillator fine tuning on a Yamaha DX7
/midi/button/0xfa/0xfc - This will send a start on press and a stop on release if using a momentary button, or for a toggle button it will send a start on the first press (button on)and stop on the second press (button off)
/midi/z/0x90 60 100/0xb0 25 x(0..100) 0xb0 27 y(0..35)/0x90 60 0 - This sends a note-on, channel 60, velocity 100 on press, CC#s 25 & 27 with individual ranges according to x/y position while dragging, and velocity=0 (note-off) on release - used with an x/y pad
