My Music (Listen with quality headphones)

Sunday, 11 August 2013

The MIDI channel voice message for "Note Off" and "Note On" events explained

Here's the format of a midi channel voice message (based on the MIDI Summary of MIDI messages) for "Note Off" and "Note On" events:
status_byte + key_data_byte + velocity_data_byte

e.g.:
10010100 00111100 01111111

---
 

"status byte":
The status byte is composed of 2 four-bit parts (or nibbles). The first nibble specifies the function/type of message ("note on", "note off", etc).


The second nibble specifies the midi channel. midi channel values are between 1-16, so to provide the correct number you give a binary value that is 1 less than the midi channel number, e.g. a binary value of 0100 (decimal value 4) means midi channel #5.


e.g.:
10010100

1001 is the "note on" function.
0100 is midi channel #5, i.e. (2*2)+1.

---

"key data byte" is the binary representation of the midi key number value, expressed generally as 0kkkkkkk.

e.g.:
00111100

is midi note #60 ("counting" from right to left):

0 + 0 + (2*2) + (2*2*2) + (2*2*2*2) + (2*2*2*2*2) + 0 + 0


0+0+4+8+16+32+0+0==60

---

"velocity data byte" is the binary representation of the midi velocity number value
, expressed generally as 0vvvvvvv.

e.g.:
01111111

is midi velocity 127--the loudest possible velocity ("counting" from right to left):

(2 to the zero power == 1) + (2 to the 1th power == 2) + (2*2) + (2*2*2) + (2*2*2*2) + (2*2*2*2*2) + (2*2*2*2*2*2) + 0

1+2+4+8+16+32+64==127

---

Additional reading:
why any number raised to the zero power is 1
binary numbers and arithmetic

No comments:

Post a Comment

My content is under the Creative Commons Attribution 3.0 license. I work hard to publish relevant and useful information in order to help people learn difficult things and find solutions to their problems, so please attribute me if you reuse my content elsewhere.