Qué es midi


Definición

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.

En este punto vale la pena hacer una aclaración para los más novatos. Uno de los mitos más recurrentes entre los no iniciados es que el MIDI es algo material, un formato de sonido en sí mismo. Eso ha llevado a las tópicas y erróneas expresiones "escucha este MIDI que acabo de hacer", "estoy buscando el MIDI de esta canción", y el más inocente de todos ellos, "quiero pasar este WAV a MIDI". Todos estos conceptos se basan en una mala comprensión del MIDI. El MIDI es un protocolo de comunicación, un conjunto de comandos que circulan entre dispositivos MIDI dando órdenes a los mismos respecto a lo que deben hacer. Lo que suena son los aparatos, no "el MIDI" que, además, tiene otras funciones aparte de controlar la ejecución de sonidos. Cuando alguien pregunta "cómo pasar de WAV a MIDI", está en la misma situación que aquel que tiene una foto digital (un JPG por ejemplo) de un texto y quiere que esa foto se convierta en formato TXT para usarlo en un procesador de textos. Así como el WAV y el JPG son "fotos" digitales de una realidad material (el sonido y la imagen), el MIDI y el TXT son lenguajes que indican a ciertos dispositivos qué deben hacer. En el caso de un sintetizador, el MIDI le dice qué notas deben sonar, a qué volúmenes, etc; y en el caso de un procesador de textos, el TXT le dice qué caracteres deben presentarse, en qué formato... Es cierto que existen las tecnologías OCR para leer caracteres a partir de una foto, pero esta técnica está implementada en el audio digital con menos fortuna. Existen programas que pueden identificar tonos a partir de un wav y construir mensajes MIDI a partir de ellos, pero normalmente solo funciona con WAVs monofónicos y no muy complejos.

Volviendo al tema que nos ocupa, conviene hablar un poco del funcionamiento interno de este lenguaje para entender cómo se comporta. 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: Note On, Note Off, System Exclusive (SysEx), 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.

Conexiones y cadenas MIDI

Seguramente ya estás familiarizado con esas conexiones de 5 pines de tus teclados o aparatos MIDI, etiquetadas como IN, OUT y THRU. Alrededor de estos tres conectores girará todo nuestro sistema MIDI.

Por los puertos MIDI IN de un aparato se recibirán todos los mensajes MIDI y por el MIDI OUT cada aparato enviará los suyos. La conexión MIDI THRU es algo que desconcierta a los más novatos, pero no tiene ningún misterio y es de gran utilidad para configurar una cadena. Lo que hace el MIDI THRU es copiar los datos que se reciben por el MIDI IN de ese aparato y enviarlos de nuevo hacia fuera. Aunque del MIDI THRU salgan datos MIDI, no debe confundirse con el MIDI OUT; de este último salen solamente los datos enviados por el mismo aparato, mientras que del THRU sale la copia de los datos recibidos por el aparato en su MIDI IN.

¿Cuál es la utilidad de este MIDI THRU? Básicamente, enlazar unos aparatos con otros en una cadena, de manera que todos respondan a una fuente de datos MIDI inicial. Como ejemplo práctico, si tenemos un secuenciador MIDI del que nacen todos nuestros mensajes de control y queremos enviarlos a 2 aparatos distintos, tendríamos que establecer la siguiente cadena:


En nuestro esquema, el secuenciador envía sus datos MIDI por la salida MIDI OUT (A); estos datos son recibidos por el sintetizador a traves de su MIDI IN (B), y reenviados por el MIDI THRU (C) hacia el sampler, que los recibe, lógicamente, por su MIDI IN (D). Así pues, los datos del secuenciador estarían siendo recibidos por los dos aparatos, ya que el primero (sintetizador) los recibe directamente por su MIDI IN, y al mismo tiempo los copia y los reenvía por su MIDI THRU hacia el sampler.

Como ya habrás imaginado, podríamos seguir conectando dispositivos MIDI en esta cadena, simplemente enlazándolos con el MIDI THRU. Por ejemplo si queremos añadir otro sintetizador, podríamos enviar el MIDI THRU del sampler hacia su MIDI IN. De todos modos, por la cuestión antes mencionada de que el MIDI se transmite en serie, no conviene enlazar una cadena demasiado larga por MIDI THRU, ya que el último aparato de esta cadena podría sufrir retardos al recibir los mensajes. Por esta razón, muchos secuenciadores tienen varias salidas MIDI, para poder enviar los mismos datos en distintas series a diferentes aparatos sin utilizar las conexiones THRU, o al menos reduciéndolas. Por ejemplo, si nuestro secuenciador tuviese dos MIDI OUT, el esquema anterior no necesitaría el uso de la cadena THRU: simplemente conectariamos el sintetizador y el sampler a cada una de esas dos salidas, y ambos recibirían los datos del secuenciador al mismo tiempo.

Comments