MIDI al desnudo (Parte 1)
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)
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:
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.
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.
Seja o primeiro a comentar
Publicar un comentario