Hola dudes, hoy traemos una pequeña explicación de como trabaja el protocolo MIDI.
La especificación MIDI (Musical Instrument Digital Interface) no transmite señales de audio, sino datos de eventos y mensajes controladores que se pueden interpretar de manera arbitraria. Se puede decir que un MIDI es una especie de "partitura" que contiene instrucciones en valores numéricos (0-127) sobre cuándo generar cierta nota de sonido y las características que debe tener; de tal forma que el aparato al que se envíe dicha partitura la transformará en música completamente audible.
El byte MIDI, a diferencia de los bytes estándar de ocho bits de las computadoras, está compuesto por diez bits. (start bit, que siempre es 0, 8 bits de datos y stop bit que siempre es 1)
0xxxxxxxx1
El protocolo MIDI se compone de mensajes con n numero de bytes y algo que todos estos mensajes tienen en común es que su primer byte es el byte de Status, este byte nos va a indicar la acción que se va a tomar (tocar o soltar una nota por ejemplo) y lo podemos distinguir porque es el único que tiene el bit 7 encendido (o sea del rango de 0x80 a 0xFF).
Para trabajar con los bytes de Status y poder descifrar su instrucción debemos separar sus 8 bits de datos en dos partes de 4 bits cada una. La primera parte nos dice de que tipo de mensaje MIDI se trata, mientras que la segunda nos indica el canal por el que vamos a transmitir (MIDI tiene hasta 16 canales lógicos).
Ejemplo:
Status Byte: 0x92
El byte de Status 0x92 quedaría con una parte igual a 9 y otra igual a 2. Según la especificación MIDI, un nueve en el primer segmento del byte de Status significa “pulsar nota” y como el segundo segmento es un 2, significa que vamos a pulsar una nota en el canal dos.
Este especifico byte de status (Note On) es seguido por dos bytes de datos, uno que muestra el numero de nota y otro su velocidad Por lo tanto el mensaje completo para pulsar una nota consta de 3 bytes (1 byte de status + 2 bytes de datos).
Como pueden ver, no es una tarea trivial ya que se trata de muchísimos mensajes diferentes para ser leídos, procesados y enviados. El reto de los orcos consiste en poder extraer los mensajes de un archivo MIDI para procesarlos y transmitirlos al microcontrolador que dará órdenes a los actuadores finales.
Hasta aquí dejamos esta breve explicación de la especificación MIDI, si deseas saber un poco mas al respecto te invitamos a visitar
este sitio, donde se encuentra toda la especificación.