Básicos 101
¿Qué es el Protocolo MIDI?
Por Xabier Blanco
Tomado de www.hispasonic.com
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.
En conclusión...
En este primer artículo básico hemos explicado las
ideas más generales del lenguaje MIDI, y te hemos dado algún
ejemplo práctico de cómo aplicarlo en un entorno
real de trabajo. Quedan muchas cuestiones fuera que trataremos
en próximos tutoriales: aprenderemos cuales son los mensajes
MIDI y cómo se utilizan, cómo sincronizar diversos
aparatos, y como hacer un uso creativo del MIDI.
|