UNIVERSIDAD NACIONAL DE QUILMES
CARRERA DE COMPOSICION CON MEDIOS ELECTROACUSTICOS
COMPUTACION APLICADA A LA MUSICA I
Prof. Oscar Pablo Di Liscia
INTRODUCCION AL PROTOCOLO MIDI
El siguiente es un resumen sobre MIDI basado principalmente en la Sección 19 del libro Sound Reinforcement Handbook (Gary Davis y Ralph Jones, Hall Leonard Pub.Corp., Milwaukee, 1987). Se han omitido numerosos datos que no servían al propósito de este apunte y, a la vez, se han agregado otros que provienen de diversas fuentes (se ofrece una bibliografía comentada al final). Se ha conservado la denominación en inglés de numerosos términos, ya que su uso habitual así lo requiere.
1- GENERALIDADES SOBRE MIDI
MIDI, (Musical Instruments Digital Interface), fué desarrollado en 1983 por un consorcio de fabricantes de sintetizadores -Yamaha, Roland, Kawaii y Sequential Circuits - , y es un método para comunicar datos de ejecución musical a través de instrumentos electrónicos.
Antes de la creación del MIDI la mayoría de los sintetizadores usaban el flujo de corriente eléctrica para controlar aspectos de la generación de sonido -altura, volumen inicial de la nota, duración, cambio de amplitud y timbre en el tiempo, etc.- Cada fabricante usaba, sin embargo, diferentes standards eléctricos.
MIDI fué la respuesta industrial a un mercado que demandaba compatibilidad de los instrumentos electrónicos. Usando los extraordinarios avances de la década en tecnología digital, los instrumentos equipados con MIDI emplean microprocesadores para convertir acciones de ejecución (qué tecla se acciona, con que velocidad, qué pedales están abajo, qué programa se usa, etc.) en un flujo de datos codificados digitalmente. Los datos digitales se pasan de un instrumento a otro a través de una interfaz serial, requiriendo un sólo cable para cada conexión. Por medio de este método una multiplicidad de instrumentos pueden compartir datos musicales.
Originalmente concebida como una herramienta para la ejecución "en vivo", la interfaz MIDI proliferó con sorprendente velocidad. Actualmente pueden encontrarse puertos de comunicación MIDI no sólo en sintetizadores, sino también en consolas, controles de luz, procesadores de efectos y computadoras personales.
El protocolo de formato y datos de la interfaz MIDI se especifican en un documento editado por la MMA (MIDI Manufacturers Association) y la JMSC (Japan MIDI Standard Comittee), cuyo título es MIDI 1. 0 Detailed Specification.
El hardware emplea conectores DIN de 5 pins dispuestos en 180 grados. Los cables de conexión deben estar limitados a una longitud máxima de 15 metros, tal como se indica en la 1.0 Specification. Los datos se transmiten en serie como un flujo de ceros (paso de corriente) y unos (ausencia de corriente) a una velocidad de 31,25 Kbaud (31.250 bits por segundo). Los puertos de entrada se denominan MIDI IN y los de salida MIDI OUT. Opcionalmente existe un conector adicional denominado MIDI THRU que envía una copia de los datos ingresados por MIDI IN hacia otros instrumentos, permitiendo encadenarlos en serie. En algunos instrumentos el MIDI THRU es omitido, de la misma manera que, por no generar usualmente ningun dato MIDI, los procesadores de efectos carecen de MIDI OUT.
2 - ESTRUCTURA DE LOS DATOS MIDI
En un intercambio típico de datos MIDI un instrumento transmisor presenta en su puerto MIDI OUT un comando o mensaje que especifica una acción a ejecutarse ("tocar un do central mf, por ejemplo) y el instrumento que lo recibe ejecuta el comando, si está dentro de sus posibilidades (en caso contrario, lo ignora). Cada mensaje MIDI está codificado en una cadena de datos digitales.
Los datos MIDI se organizan en bytes de 8 bits (o "palabras") precedidos de un start bit (siempre "0") y seguidas de un stop bit (siempre "1"). Estos últimos permiten al microprocesador del instrumento receptor distinguir el final de un byte del comienzo del siguiente.
Los bytes de datos MIDI se combinan en mensajes, que consisten en un status byte seguido de uno o varios data bytes. Los status byte definen el tipo de comando que se transmite (note on, pitch bend, patch change, etc.) y su primer bit es siempre un "1". Los data bytes indican información específica respecto del comando del status byte (key velocity, valor del pitch bend, número de patch, etc.) y su primer bit es siempre un "0".
Los mensajes MIDI se clasifican en dos grupos: channel messages y system messages.
2.1 - Channel messages
Para posibilitar un control independiente de varias unidades en un sistema los datos MIDI se pueden asociar a 16 canales. Un instrumento puede ser preparado para recibir datos en un canal (o canales) específico y/o ignorar datos en otros canales. El canal MIDI por el que un instrumento recibe las instrucciones principales se denomina su basic channel.
Como el nombre lo indica, los channel messages contienen información que se destina para un canal de recepción específico. Hay dos tipos de channel messages: Voice channel message y Mode channel message.
Voice channel message : estos constituyen la mayor parte de la información MIDI. La mayoría de los casos controlan la circuitería interna de generación de sonido, definiendo cuándo y cómo ha de tocarse una nota. Pueden usarse para otros propósitos también: los mensajes de Note On pueden disparar sonidos de percusión en máquinas de ritmo, controlar luces en un escenario o faders en una consola de mezcla.
Mode channel message : definen la respuesta de los instrumentos a los mensajes anteriores y deben ser enviados a través del basic channel del instrumento que los recibirá. Existen cuatro modos: 1)También llamado Omni on / Poly (responde a todos los canales y ejecuta polifónicamente); 2)Llamado Omni on / Mono (responde a todos los canales y ejecuta monódicamente); 3)Llamado Omni off / Poly (responde sólo a su canal asignado y ejecuta polifónicamente) y 4)Llamado Omni off / Mono (responde sólo a su canal asignado y ejecuta monódicamente).
2.1 - System messages
En vez de ser codificados por canal, los system messages se dirigen o bien a todos los instrumentos de un sistema, o bien a algún sintetizador de una marca específica. Estos mensajes son de tres tipos: System Common, System Real Time y System Exclusive.
System Common : se dirigen a todos los instrumentos de un sistema, sin importar el canal MIDI. Generalmente usados con secuenciadores y máquinas de ritmo, estos mensajes llevan información tal como: la canción a ejecutar, en qué punto debe comenzarse y datos de MIDI time code.
System Real Time : llevan referencia temporal a equipos MIDI (una máquina de ritmo, por ejemplo) que utiliza un reloj de sincronización. Por ejemplo, el Timming Clock message provee un pulso de reloj a una frecuencia de 24 pulsos por negra. Otros mensajes son comandos Start, Stop y Continue para playback de secuenciadores.
System Exclusive : tienen formatos especiales para cada marca y modelo de equipo MIDI y se usan para transmitir datos (como valores de parámetros en un patch, memoria de sampleo o datos de archivo de un secuenciador) sólo aplicables a un instrumento en particular. Estos mensajes usan en su Status Byte un número que identifica al fabricante. Cada compañía programa a sus instrumentos para reconocer sólo sus números de identificación.
3 - CONTROL DE INSTRUMENTOS MUSICALES
MIDI fué originalmente desarrollado para la ejecución en vivo. Una de sus principales ventajas es que varios generadores de sonido pueden ser ejecutados por un sólo teclado. El teclado controlador se denomina master y las unidades controladas, slaves.
Una configuración típica se muestra en la figura. El MIDI OUT del master se conecta con el MIDI IN del primer slave y el MIDI THRU de éste último se conecta al IN del segundo slave. De esta manera los datos de ejecución del master pasan al slave 1 y son retransmitidos al slave 2. Controlando los canales MIDI y otras disposiciones de los instrumentos puede lograrse una gran variedad de combinaciones de "solos" y "duplicaciones". Los slaves pueden no tener teclado y, en este caso se denominan módulos. Otras configuraciones más complejas son posibles combinando más instrumentos, o por medio de procesadores de datos MIDI y/o Computadoras Personales.

3.1 - Controladores
Para imitar la variedad de matices sonoros de los instrumentos tradicionales, los instrumentos digitales proveen mecanismos de control que se pueden asignar a variaciones de parámetros programados en sus patchs y controlar por MIDI. La MIDI 1.0 Specification provee un protocolo aplicable a los controladores. Los datos para los controladores se transmiten como Channel Voice Control Change messages y se integran de dos data bytes (número del controlador y valor del controlador) precedidos por un status byte. El número de controlador varía de 0 a 127 y ha sido asignado por acuerdo en la MIDI 1.0 Specification. Algunos de los controladores son: Modulation wheel(1), Breath controler((2), Foot controler(4), Damper pedal(64), etc.
4 - CONTROL MIDI POR COMPUTADORA
Con el desarrollo de las Computadoras Personales (PC) se diseñaron también interfaces MIDI que posibilitaron su comunicación con equipo MIDI de producción y procesamiento de sonido. Paralelamente se desarrolló software aplicable a varias funciones de procesamiento de datos MIDI. La ventaja del uso de las PC reside en su mayor versatilidad para el manejo de datos, la conexión con diversos programas musicales (por ejemplo, gráfica musical, o composición asistida) y la capacidad de almacenamiento de datos.
La comunicación con la computadora se realiza por vía de una interfaz MIDI, que debe instalarse en la misma. El procedimiento de instalación incluye la instalación física (inserción de la placa MIDI en uno de los slots de la computadora y selección, mediante la disposición de los jumpers especiales, del puerto en serie -COM- a utilizar) y el reconocimiento de la interfaz/puerto de comunicaciones por parte del software a utilizar. En los dos casos es imprescindible referirse al manual técnico correspondiente a la interfaz y a los manuales del software.
Típicamente las interfaces MIDI para PC tienen dos conectores MIDI (IN/OUT), existen algunas con MIDI THRU o un doble MIDI OUT, etc. Puede lograrse un efecto de MIDI THRU por vía del llamado MIDI ECHO, que consiste en que los datos ingresados por IN son también retransmitidos por el OUT. El software de instalación de la interfaz y/o el software a utilizar generalmente permiten habilitar el MIDI ECHO.
Opcionalmente, algunos modelos de interfaz poseen una salida de audio para un pulso de metrónomo y dos conectores para enviar y recibir señales de sincronización (sync in / sync out).
La figura siguiente muestra una configuración típica de conexión de equipo MIDI con una PC. Como se observa, el master keyboard (teclado maestro, Kawai K4) está conectado MIDI IN/MIDI OUT con la interfaz de la PC. A su vez, el MIDI THRU del K4 está conectado al MIDI IN del slave (módulo Kawai K5). De esta manera, los datos de ejecución "en vivo" del teclado pueden enviarse a la PC y ser retransmitidos por esta por su MIDI OUT (en virtud del MIDI ECHO, habilitado a tal efecto), volver a ingresar en el K4 por su MIDI IN y salir a su vez por su MIDI THRU para ingresar por MIDI IN al K5 (el puerto de MIDI THRU no transmite datos locales). A su vez, pueden enviarse datos MIDI directamente desde la PC al K4 (MIDI OUT de la PC a MIDI IN del k4) y una copia de estos datos es retransmitida desde el K4(MIDI THRU) al K5(MIDI IN).

4.1 - Software
El software desarrollado para MIDI se puede clasificar en dos grupos: 1)Secuenciadores, 2)Librarians y/o Editores. Existe además software de aplicación musical que no trabaja necesariamente con datos MIDI, pero pueden convertirse en datos MIDI para su posterior transmisión, ejecución y/o procesamiento, tal es el caso de los programas de gráfica musical. Algunos programas reúnen todas las funciones enumeradas (secuenciación, edición y gráfica musical).
Finalmente debe mencionarse el caso de los programas de Composición Algorítmica y los Entornos de Improvisación.
Se mencionarán algunas características generales de los tipos de software enumerados.
Secuenciadores: permiten el ingreso, edición, envío y almacenamiento en disco de datos MIDI de ejecución (ejecución de notas con sus valores de duración, key velocity, movimientos y valores de controladores, etc.). Estos datos son codificados como eventos MIDI constituyendo secuencias que pueden ser editadas, almacenadas en disco y retransmitidas a hardware MIDI. Actualmente existen secuenciadores muy poderosos con un alto grado de complejidad en sus funciones de recepción, envío y edición de datos. Un estudio detallado de alguno de ellos escapa a los fines de este apunte y debe referirse al manual correspondiente.
Es importante señalar algunas características de los archivos que producen los secuenciadores para ser grabados en disco. En principio estos programas producen archivos con un formato que les es propio (esto es, no pueden ser procesados por otros programas, a menos que un usuario muy experto domine el formato propio). Existe, sin embargo, un formato standard de archivos MIDI denominado Midifile (se describe en el Standard MIDI Files 1.0 specification). Algunos secuenciadores tienen la opción de usar su propio formato o bien usar el formato de un Midifile (típicamente con la extensión ".mid"), de manera tal que los archivos producidos con un programa pueden ser tomados por otro (por ejemplo, un programa de gráfica musical) y reprocesarse los datos de otra manera (convertir datos MIDI en una partitura musical, siguiendo el ejemplo anterior). También existen secuenciadores que proveen un formato de archivo ASCII y subprogramas que lo convierten a su propio formato.
Librarians y/o Editores: permiten el ingreso, edición, envío y almacenamiento en disco de datos MIDI de sistema exclusivo. Se usan básicamente para modificar, almacenar en memoria y enviar Patchs y Multipatchs de sintetizadores y/o módulos y/o Samplers. Los Librarians permiten guardar los datos en archivos y retransmitirlos, pero no modificarlos; los editores, además de esto, trabajan en tiempo real con los datos de sistema exclusivo, permitiendo editar patchs y multipatchs. Las ventajas de estos últimos son, obviamente, la comodidad en la edición usando el monitor de la PC (que permite visualizar todos los datos al mismo tiempo), el uso del mouse, la utilización de gráficos analógicos (por ejemplo, de las envolventes), etc. Estos programas necesitan los datos de sistema exclusivo de cada marca de equipo para poder funcionar, por lo que usan pequeños archivos llamados drivers para guardarlos y consultarlos.
BIBLIOGRAFIA RECOMENDADA
1-Dos enfoques muy completos sobre MIDI:
R. A. Penfold MIDI avanzado
Edición: RA-MA, Madrid, 1992
Sergi Jorda Puig Audio Digital y MIDI
Anaya Multimedia, Madrid, 1997
2-Para quienes quieran profundizar en MIDI desde el punto de vista de la programación y posean o estén dispuestos a desarrollar conocimientos del lenguaje C:
Charte, F. Programación Multimedia para Windows, Anaya, Madrid, 1994
Jim Conger MIDI Sequencing in C
M&T Pub., Inc., Redwood City, CA, 1989
3-Una pequeña referencia general de lectura rápida, realizada de manera clara y concisa:
Jorge Farall MIDI, Sintes, Samplers... y algo más
Ricordi Americana, Buenos Aires, 1993
RESUMEN SOBRE MENSAJES MIDI
CHANNEL MESSAGES
Voice
note off
note on
key aftertouch
control change
program change
channel after touch
pitch change
mode
local control
all note off
omni off
omni on
mono on (poly off)
poly on (mono off)
SYSTEM MESSAGES
common
midi time code
song posicion pointer
song selector
tunning request
end exclusive
realtime
clock
start
continue
stop
wait
system reset
exclusive