Ir al contenido principal

El lenguaje MIDI

 

MIDI (Musical Instruments Digital Interface) es el lenguaje que utilizan actualmente muchos instrumentos para comunicarse entre ellos, enviar y recibir datos y sincronizarse.

Nació dentro del mundo de los sintetizadores como respuesta a una necesidad de los músicos: controlar varios equipos con sus dos manos y hacer capas de varios sonidos entre ellos. Los primeros resultados de esta nueva tecnología se mostraron en el North American Music Manufacturers Show de 1983 en Los Ángeles. La demostración consistió en dos sintetizadores de distintos fabricantes conectados por MIDI con un par de cables; el representante de una de esas dos compañías tocó uno de los sintetizadores... ¡y el público se alborotó entre muecas de asombro al ver como los teclados sonaban juntos! Al igual que dos ordenadores pueden conectarse por módem, dos instrumentos que soporten el protocolo MIDI pueden comunicarse. 

La información MIDI tiene un carácter netamente musical: se refiere a comandos play-stop, activación de nota, tempo, volumen, etc, aunque su uso avanzado permite muchas mas posibilidades.

La base de la comunicación MIDI es el byte (una unidad de información digital). Cada comando MIDI tiene una secuencia de bytes específica. El primer byte es el byte de estado (status byte), que le dice al dispositivo MIDI qué función activar. Codificado en ese byte de estado va el canal MIDI. El MIDI opera en 16 canales diferentes, numerados del 0 al 15. Las unidades MIDI aceptarán o ignorarán un byte de estado dependiendo de en qué canal estén configuradas para recibir datos. Sólo este byte de estado tiene codificado el número de canal, ya que los demás bytes de la cadena se asume que circulan en el canal indicado por el byte de estado.

Algunas de las funciones que puede activar el byte de estado son estas: 

  1. Note On
  1. Note Off
  1. System Exclusive (SysEx)
  1. Patch Change, y otras.
Así pues, dependiendo del byte de estado, le seguirán un numero diferente de bytes. Por ejemplo, el estado Note On le dice al dispositivo MIDI que empiece a hacer sonar una nota. Así pues, se requerirán dos bytes adicionales al de estado; uno que indique el tono de la nota (pitch byte) y otro que marque la velocidad de la misma (velocity byte). Este último byte de velocidad es el que determina con que fuerza ha sido pulsada esa nota. Aunque no todos los dispositivos MIDI aceptan el byte de velocidad -especialmente los aparatos antiguos o algunos modernos de gama baja-, sigue siendo un byte requerido para completar la cadena.

Y ¿para qué citamos aquí todo este farragoso sistema de datos? Es importante hacer notar ahora una limitación del lenguaje MIDI, y es su transmisión en serie. Por un cable MIDI discurren todos esos bytes que hemos citado... pero uno detrás de otro, no todos a la vez. Esto tiene implicaciones prácticas: por ejemplo, si tenemos un teclado controlador conectado a un sampler y estamos enviando datos MIDI al sampler desde el teclado, al pulsar un acorde de varias notas no llegarán todas juntas al sampler, sino una detrás de otra. El proceso se hace a gran velocidad y no hay retardos audibles en este ejemplo, pero en una cadena interconectada de dispositivos MIDI sí podrían surgir problemas, como indicaremos a continuación. Por todo esto, es importante tener una idea de lo que realmente transmiten los datos MIDI: qué bytes y en qué orden.



Comentarios