Los Mensajes MIDI

Vicente Frías
By -
11 minute read
0

La especificación MIDI incluye un aspecto de software que parte de la misma organización de los bytes.

La transmisión de los datos se efectúa en serie, de manera asíncrona, lo que obliga a agregar un bit de inicio y otro de parada. Para clarificar lo dicho, se puede decir sencillamente que una transmisión asincrónica de datos se da cuando el receptor no "sabe" cuándo vendrá el siguiente dato, así que se encuentra en estado constante de espera, ya sea en nivel alto o en bajo, hasta que se produzca un cambio de estado, que indique el inicio de un nuevo mensaje. Este bit primero debe ser siempre el mismo, para que sea siempre diferente al estado "por defecto", así que este bit no puede formar parte del byte recibido. A este bit que sirve para indicar la llegada de un dato y permite al aparato receptor prepararse para la cadena de bits que viene después, se le conoce como "bit de inicio"

En la especificación MIDI, la entrada se encuentra en un estado alto por defecto, así que el bit de inicio es un 0. El bit de parada sirve para dar tiempo al aparato receptor de decidir qué hacer con la información una vez recibida. En el caso del MIDI, este bit es siempre 1. 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; ni más ni menos.


Los mensajes MIDI están formados por dos o tres bytes, dependiendo del tipo de mensaje que se envíe.

Estos bytes pueden ser de dos clases:
  • De estado -status byte-
  • 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, siempre enviamos un byte de estado, que puede estar seguido de cierta cantidad de bytes de datos.

A su vez, los mensajes de estado se dividen en dos grupos:
  • Mensajes de canal
  • 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. A continuación veremos más en detalles todos los bytes y mensajes MIDI. 

Estructura del mensaje

Todo mensaje MIDI se compone de un primer byte de status (que determina el tipo  del  mensaje) y uno o dos bytes restantes de datos (dependiendo del tipo de mensaje).

En el byte de status, tan solo tres, de los siete bits disponibles (no olvidemos que el más significativo está siempre a 1), son los que determinan el tipo de mensaje. Los cuatro restantes indican el canal al que el mensaje va dirigido, lo que explica porque son dieciséis (24) los canales MIDI posibles. En la figura 3 se puede apreciar la estructura binaria de un mensaje genérico.

Figura 3. Estructura binaria de un mensaje

los tres bits que siguen al primero, identifican el mensaje, por lo cual, habrá solo ocho tipos de mensajes, en tanto que los cuatro bits restantes identifican el canal, es decir habrá dieciséis canales posibles para transmitir.


Tipos de mensajes

Como ya se comentó anteriormente, los mensajes pueden ser de 8 tipos diferentes, que se resumen en la tabla siguiente:

Tabla 1. Cuadro sinóptico de los mensaje MIDI

  • nnnn son los cuatro bits que determinan el canal al que se aplica el mensaje, de forma que 0000 es el canal 1, y 1111 el canal 16.
  • N corresponde al carácter hexadecimal de este canal (0-F).
  • Todos los bytes de datos tienen una resolución de siete bits, con valores decimales comprendidos entre 0 y 127.
  • Cuando en la tabla el segundo byte de datos está en blanco (Channel Aftertouch y Program Change), significa que el mensaje utiliza un único byte de datos.
  • En el mensaje Pitch Bend, los dos bytes de datos se combinan para formar un único valor con catorce bits de resolución, comprendido entre -8192 y +8191.

Un dispositivo MIDI no tiene porque utilizar todos los mensajes. Cuando un dispositivo MIDI recibe un mensaje que no es capaz de interpretar, simplemente lo ignora y (si dispone de un puerto MIDI THRU) lo reenvía al igual que cualquier otro mensaje, y si no dispone del puerto MIDI THRU, pasa al siguiente mensaje.

Veamos más en detalle los más importantes de estos ocho mensajes de canal, que serán los usados, aquellos que van dirigidos a un canal en concreto:

Note On

Este mensaje le indica al dispositivo, que debe iniciar una nota. Se genera cuando se aprieta una tecla desde un teclado.
  • El primer Byte nos indica la altura de la nota, de lo que se deduce que el MIDI contempla 128 posibles notas, siendo la 0 la nota más grave y la 127 la más aguda. Teniendo en cuenta que existen doce notas por octava, el MIDI tiene pues una tesitura de más de diez octavas (un piano de cola sólo tiene siete) que se corresponde aproximadamente con el número de octavas que el oído humano es capaz de captar. Aunque es posible modificar el mapa de asignación, por defecto, los múltiplos de 12 corresponden a notas Do, siendo la nota 60 el Do central de un piano.
  • El segundo byte indica la velocidad de ataque, que viene determinada por la fuerza  con que se ha apretado la tecla. Es decir, se podría decir que se corresponde con la intensidad sonora. El valor cero es un carácter especial, pues no se corresponde con  ninguna nota, sino que podría entenderse como un interruptor, cuya función lo que hace es “apagar” o desactivar la nota que estaba sonando.

Note Off

Funciona de forma similar al Note On con velocidad 0, es decir se envía un dato de valor cero. Para liberar la nota pulsada.
  • El primer byte es la altura de la nota.
  • El segundo byte es la velocidad de liberación.
La inmensa mayoría de dispositivos no generan ni responden a la velocidad de liberación, por lo que es un mensaje muy poco utilizado. En su lugar, cuando se libera una tecla, la mayoría de teclados envían un Note On con velocidad 0, que todos los sintetizadores entienden.

Program Change

Este mensaje modifica el programa activo. Puede ser enviado desde los botones de un teclado, aunque hoy en día es más frecuente enviarlo desde el propio ordenador, editándolo en el secuenciador. El único byte utilizado define un número de programa. Algunos sintetizadores disponen de más de 128 programas diferentes. En estos casos, los programas suelen agruparse en varios bancos, de hasta 128 programas cada uno. Algunos sintetizadores numeran sus sonidos comenzando por el 1 y terminando por el 128.

Los mensajes de Control Change (cambio de control)

El mensaje de Control Change forma parte de los mensajes de canal que se ha descrito  en  el  apartado anterior. Este engloba 128 posibles mensajes de control diferentes. Todos ellos afectan de alguna forma a la calidad del sonido; existen controles para modificar el volumen, la modulación, la reverberación, etc. Su estructura es la siguiente:

  • El primer byte indica el tipo de control. De los 128 controles posibles, tan solo una pequeña parte está asignada, por lo que todavía quedan muchos por definir en un futuro.
  • El segundo byte indica el valor de este control. La mayoría de controles utiliza la escala del 0 al 127, pero algunos funcionan sólo de forma binaria (on/off).

Este tipo de mensajes se puede enviar de varias formas distintas.

Existen varias alternativas para enviar estos mensajes. De la dos ruedas que suelen disponer los teclados, una acostumbra a enviar mensajes de Control Change de tipo 1 (la otra ya habíamos visto que se utiliza para el Pitch Bend), aunque en muchos teclados este número de control puede ser modificado por el usuario. Existen también paneles de control MIDI, con varios botones o potenciómetros configurables, de forma que el usuario puede  decidir el canal y el tipo de control al que asigna cada potenciómetro. 

A continuación se describen algunos de los tipos de control más utilizados.

• Control Change 0: Cambio de banco
Si el sintetizador dispone de varios bancos, éste es el mensaje de control que nos permite acceder a todos ellos, ya que el valor del tercer byte indica el número de banco deseado. Este mensaje suele ir seguido de un mensaje de cambio de programa. A veces en alguno sintetizadores el cambio de control no se consigue con el valor cero, sino con el 32 o una combinación de los dos, todo dependerá del tipo de sintetizador que se esté usando.

• Control Change 1: Modulación
Este es el control que se envía por defecto desde una de las dos ruedas de los teclados.  El efecto sonoro producido puede variar de un sintetizador a otro y frecuentemente es programable por el usuario. Entre los efectos más frecuentes está la modulación de amplitud (trémolo), la modulación de altura (vibrato), o la modulación de la frecuencia de corte del filtro (wah-wah).

• Control Change 7: Volumen
Este es uno de los controles más utilizados. Mientras que la velocidad de pulsación del mensaje de Note On afecta a la intensidad de una sola nota, el control 7 modifica el volumen del canal en general, como si fuera un mezclador. Cuando por ejemplo, enviamos un mensaje de Control 7 con un valor 0, el canal dejará de oírse a pesar de que se siguen emitiendo notas, hasta que enviemos un nuevo Control 7 no nulo que invalide el anterior. Muchos secuenciadores incorporan una ventana “mezclador” con dieciséis potenciómetros, que se utiliza para enviar este control a cualquiera de los dieciséis canales MIDI. Asimismo, si el secuenciador dispone de un editor gráfico de controles, se pueden dibujar curvas de volumen para modificar el ataque y la evolución de algunas notas o fragmentos. 

• Control Change 10: Panorama
Este control permite definir la posición de sonido de un canal, en un ámbito de 180 grados. Un valor 0, sitúa la fuente de sonido a la izquierda, 64 la centra y 127 la sitúa a la derecha.  Enviando valores diferentes es posible conseguir que las notas "bailen" entre los dos altavoces.

• Control Change 11: Expresión
Aunque muchos usuarios desconocen este control, su uso en secuenciadores con posibilidades de edición de controles, puede simplificar la mezcla final. La expresión está pensada para trabajar en colaboración con el volumen (Control 7). Cuando la expresión vale 127 (valor defecto) el volumen general del canal viene determinado por el valor del Control 7, pero a medida que el valor de la expresión desciende, también lo hace el  volumen general del canal, de forma que podemos establecer la siguiente ecuación: 

Volumen general de un canal = Control7 x Control11 + 127

Esto permite utilizar el Control 7 para controlar la mezcla global (desde la ventana mezclador del secuenciador o asignando un único valor inicial), y el Control 11 para controlar la articulación particular de algunos fragmentos (dibujando su evolución con el ratón), teniendo muy en cuenta que, si no se utiliza, el valor del Control 11 debería permanecer a 127.

• Control Change 64: Sostenido
Es similar al pedal de sostenido de los pianos. A diferencia de los anteriores, este control  sólo tiene dos posiciones: apagado (0-63) o encendido (64-127). Estando activado, las notas se mantienen más tiempo.

• Control Change 91: Reverberación
Muchos sintetizadores modernos incorporan este efecto. La reverberación (o reverb en el argot del músico informático) indica la proporción entre el sonido directo y el  sonido  reflejado. Este efecto se utiliza para simular la acústica de las salas de concierto. De forma  simplificada, cuanto mayor sea una sala mayor reverberación ofrecerá. Asimismo, cuanto más distante sea una fuente sonora, más reverberada llegará a nuestros oídos, ya que la proporción de sonido reflejado por las paredes de la sala será superior. Por ello, cuanto mayor sea el valor de este controlador, más distante parecerá la fuente sonora.

• Control Change 93: Chorus
Este es otro efecto utilizado regularmente en las grabaciones en estudio, y que, como  el  anterior, también incorporan muchos sintetizadores modernos. El chorus produce un efecto parecido al que se obtiene duplicando los instrumentos, por lo que cuanto mayor sea el valor de este controlador, más “grueso” parecerá el sonido.

• Mensajes de Modo
Aunque la implementación MIDI 1.0 no los considera como mensajes de control estrictos, los incluimos aquí para simplificar. Esta denominación especial, corresponde a los controles 121 a 127, de los cuales comentaremos tan sólo dos:
  • Control Change 121: Reset-All Controllers. Este mensaje restaura todos los restantes controles a sus valores defecto (banco=0, programa=0, modulación=0, volumen=100, panorama=64, expresión=127, etc.). Si desde el secuenciador finalizamos por ejemplo un tema con fundidos de volumen (el Control 7 va descendiendo hasta llegar a 0) y el tema siguiente no contiene ningún valor inicial de  volumen, posiblemente cuando intentemos reproducirlo no oigamos nada. La causa es que los volúmenes siguen estando a cero. Una solución que la mayoría de  secuenciadores contemplan como opción, es la de enviar este mensaje después de terminar un tema (o inmediatamente antes de comenzarlo), y restaurar así todos los parámetros.
  • Control Change 123: All Notes Off. A veces una nota puede quedarse colgada sonando porque se haya perdido el mensaje de Note Off que debía cortarla. En este caso puede ser de ayuda el Control 123, que desactiva automáticamente todas las notas. 
Sergi Jordà Puig

Tags:

Publicar un comentario

0Comentarios

Publicar un comentario (0)

#buttons=(Ok, adelante!) #days=(20)

Nuestro sitio web utiliza cookies para mejorar su experiencia. Aprender más
Ok, Go it!