La especificación MIDI incluye un
aspecto de software que parte de la estructura de mensaje y la organización de
los bytes. Partimos pues y recordamos el
hecho de que cuando el músico pulsa una tecla, un botón, una palanca o activa
un sensor se genera cierta información
en unos y ceros al que
denominamos mensaje.
Bytes MIDI
El byte se define como un número binario (dos combinaciones
1 o 0) de 8 bits. La transmisión de los datos se efectúa en serie, es decir, un
bit tras otro, de manera asíncrona, lo que obliga a agregar un bit de inicio y
otro de parada. La velocidad de recepción/transmisión de los datos MIDI se
definió en 31.250 baudios, o bits por segundo, así sólo deben transcurrir 32
microsegundos entre un bit y el siguiente. También se exige que los 8 bits que
conforman el dato en cuestión se envíen LSB primero.
Existen dos tipos de bytes: De estado -status byte- y
de información -data byte-. Se diferencian por el primer bit: si es un
1, tenemos un byte de estado, y si es un 0, es un byte de datos. Al generar un
mensaje MIDI, por norma general, siempre enviamos un byte de estado, que puede
estar seguido de cierta cantidad de bytes de datos. Por ejemplo, podemos enviar
un primer mensaje de estado "activar nota", seguido de un byte de
datos informado qué nota es la que se activa.
A su vez, los mensajes de estado se dividen en dos grupos:
mensajes de canal y mensajes de sistema. Los mensajes de canal se envían a un
dispositivo específico, mientras que los mensajes de sistema son recibidos por
todos los equipos.
En la siguiente tabla tenemos una lista con todos los
mensajes de estado disponibles.
Los primeros bytes, cuyos últimos cuatro bits están marcados
como "cccc", se refieren a mensajes de canal; el resto de bytes son
mensajes de sistema.
Antes de explicar más detalladamente las características de
algunos de los mensajes, conviene conocer dos importantes características de
MIDI: los canales y los modos.
Mensajes de estado disponibles
Canales MIDI
Como se comentó con anterioridad, MIDI está pensado para
comunicar un único controlador con varias unidades generadoras de sonido (cada
una de las cuales puede tener uno o varios instrumentos sintetizados que
deseemos utilizar), todo por un mismo medio de transmisión. Es decir, todos los
aparatos conectados a la cadena MIDI reciben todos los mensajes generados desde
el controlador. Ello hace necesario un método para diferenciar cada uno de los
instrumentos. Este método es el denominado canal. MIDI puede direccionar hasta 16 canales (también llamados
voces, o instrumentos); por ello, al instalar el sistema MIDI será necesario
asignar un número de canal para cada dispositivo.
Modos MIDI
Dentro del sistema MIDI, se
decidió crear una serie de diferentes modos de funcionamiento, cada uno con
ciertas características. Antes de verlo, debemos diferenciar entre los
siguientes conceptos:
§ Monofónico: un instrumento monofónico sólo puede reproducir una nota
simultáneamente. Es decir, para reproducir una nueva nota debe primero dejar de
sonar la anterior. Por ejemplo, los instrumentos de viento son monofónicos, ya
que sólo reproducen un único sonido cada vez.
§ Polifónico: un instrumento polifónico puede reproducir varias notas
simultáneamente. Un ejemplo es un piano, que puede formar acordes por medio de
hacer sonar dos o más notas a la vez.
Una vez aclarado este aspecto,
podemos resumir los modos MIDI en la siguiente tabla:
Modos MIDI
Los
dos primeros modos se denominan "Omni on". Esto se debe a que en esos
modos la información de canal está desactivada. Esas configuraciones se
reservan para configuraciones donde sólo utilicemos un instrumento. Los otros
dos modos, "Omni off", sí admiten la información de canal.
Ejemplo de estructura del mensaje
Como ya hemos dicho todos los
mensajes MIDI comienzan con un encabezamiento (byte status) de ocho bits donde
se indica el tipo de mensaje y el número de canal. A estos les siguen 2 mensajes de datos. Esto se resume en las siguientes figuras donde se
informa de la activación y desactivación de notas:
Ejemplos de formato de mensajes
En el primer byte de datos lleva el número de nota siguiendo
el criterio que presenta en la siguiente tabla :
Correspondencia entre el numero y su nota correspondiente
Si, por ejemplo, el músico ha
pulsado un do medio enviaremos el número 60 en binario. El rango de datos (0 a
127), junto con la resolución de un semitono da una cobertura de más de diez de
octavas, bastante amplia..
De hecho son poco los
instrumentos MIDI con un rango tan amplio pero esto no es problema ya que si un
instrumento recibe una nota fuera de su rango puede o ignorarlo o trasladarla
una o más octavas para que quede dentro de su rango.
En los mensajes de desactivación
puede parecer que no tiene sentido el valor de la nota, pero es absolutamente
esencial porque en el caso de que estemos trabajando en uno de los modos que permiten polifonía en un canal
necesitamos determinar que nota es la que tiene que acabarse. Como excepción a
esto, para instrumentos de batería no es necesario el envío de desactivación de
nota. La razón reside en que, por ejemplo, para un teclado influye el tiempo
que mantenemos pulsadas las teclas para sonidos que se mantengan durante la
presión, mientras que en la percusión sólo influye el impacto transmitido
(velocidad) y no tiene sentido hablar de continuidad del sonido. Los
sintetizadores son capaces de ocuparse correctamente de esta diferencia entre
instrumentos, ya que se especifica que los instrumentos de batería transmitan
por el canal 10.
El segundo byte de datos lleva el
valor de la velocidad de pulsación que nos da una medida de la fuerza con que
se pulsan las teclas o golpean los sensores del instrumento. Este parámetro es
importante, ya que es lo que deben captar los sensores de la batería.
Cuando se golpea un instrumento
de batería, aparecerá una vibración en la membrana o superficie del mismo, con
amplitud máxima en instantes cercanos al impacto y con una disminución de la
misma en forma exponencial a medida que pasa el tiempo. El parámetro de
velocidad que se debe enviar para la batería es ese valor de amplitud máxima,
en los momentos iniciales.
El hecho de llamar a este
parámetro “velocidad” se debe a que los primeros instrumentos MIDI eran
teclados, y el cálculo de la fuerza con que se pulsaba la tecla se hacía
mediante dos sensores colocados en las teclas(uno se activaba al inicio de la
pulsación, y el segundo al llegar la tecla al final de su recorrido). La fuerza
se hallaba en función del tiempo que se tardara desde que se activaba un sensor
hasta que se activaba el otro, es decir, la velocidad que adquiría la tecla en
bajar. Para nuestro caso, la velocidad es la fuerza con que se golpean los
sensores.
Las velocidades pueden oscilar
entre 0 (más fuerte) y 127 (más suave).