Trabajando con señales MIDI - Comprendiendo el protocolo
El MIDI es un protocolo de comunicacion diseñado para interfacez musicales. Por sus siglas en inglés, Musical Instrument Digital Interface, podemos deducir un poco de qué se trata.
Digital se refiere al tipo de señal. Es decir, como se trata de informacion digital y no-analógica vamos a trabajar con una sucesión de valores discretos, de ceros y unos. Es por este motivo, que si hablamos de MIDI, no tendremos jamas una señal de audio.
Los mensajes MIDI, se transmiten mediante uno, dos o tres bytes. El primer bit, indica el tipo de mensaje a transmitir. Un byte de status, siempre inicia con un 1 y un byte de datos inicia en 0.
Un mensaje de note-on por ejemplo se compone de tres bytes de la manera 10000111-00010101-01010000

Byte de status, note on, canal 8
Byte de datos, valor de la nota,
Byte de datos, velocity de la nota, valor
Como en los bytes de datos, el bit de mayor peso es de valor 0, nos quedan solo 7 bits de resolucion. Esto nos deja un total de 128 valores posibles, (del 0 al 127), que nos permite utilizar hasta 128 notas diferentes, o 128 niveles de intensidad. En algunos mensajes especiales, como el de variacion de pitch, se combinan ambos bytes de datos, obteniendo asi 128*128 escalones. Esto es especialmente útil en algunos casos, para que el escalonado entre notas de un glissando sea imperceptible al oido. Tenemos tambien, el mensaje de *note-off* con u byte de status y dos de datos, uno de nota y otro de velocity. Este útimo, seria la veocidad con la que se extingue la nota, que puede resutar muy util para algunos instrumentos como violines, vientos, o sintetizadores. Pero como la mayoria de los controladores no utilizan esos valores, lo mas habitual es enviar un mensaje de note-on con velocity 0. Algunos ejemplos de mensajes midi son los siguentes:

Note On
Note Off
Program Change
Control change