MIDI (Musical Instruments Digital interface) es un sistema de comunicación entre instrumentos musicales digitales, creado en 1983 a partir de una asociación formada por fabricantes (MIDI Manufacturers Association). Entre los instrumentos MIDI más utilizados encontramos teclados (órganos, sintetizadores), guitarras, baterías, acordeones, instrumentos de viento y módulos de producción de sonido.
Para saber más sobre esta organización y consultar tutoriales y
especificaciones MIDI puede visitar el sitio de MMA:
<http://www.midi.org>
Cada instrumento posee una interfaz incorporada, cuyas especificaciones están detalladas en la norma MIDI. Los
fabricantes de instrumentos deben seguir esas especificaciones para que sus instrumentos puedan comunicarse con
instrumentos de otras marcas.
Conectando la salida de un instrumento con la entrada de otro, podemos lograr que lo que se interpreta en el primer
instrumento sea reproducido por el segundo. El instrumento en el que tocamos es, a veces, llamado controlador, pues,
no es el que produce el sonido directamente, sino que envía datos a otros generadores del sonido.
La interfaz MIDI consta de tres puertos: IN, OUT y THRU:
• Por IN entran los datos provenientes de otros dispositivos MIDI.
• Por OUT salen los mensajes generados por el propio dispositivo.
• El THRU está conectado con el IN, internamente, y sirve para dar salida hacia otros dispositivos a los mensajes que
arriban al IN.
Un instrumento funciona como maestro y el otro como esclavo. El primero transmite mensajes relacionados con las operaciones
que sobre él se practican, por ejemplo, bajar una tecla, cambiar el tipo de sonido (piano, guitarra, etc.), modificar
el volumen. El esclavo recibe estos mensajes y realiza las mismas operaciones que el maestro (ver G.9.1.).
También es posible conectar una computadora a través de MIDI. Para esto es necesario colocarle una interfaz para computadoras
y conectarla a los instrumentos empleando cables MIDI. G.9.2. muestra un tipo de configuración posible.
La función de la computadora es capturar los mensajes que viajan por la línea, con la posibilidad de almacenarlos y, más tarde, poder editarlos y/o reproducirlos. Es importante aclarar que en este caso la computadora no graba el sonido mismo, sino tan solo una sucesión de órdenes que envía el instrumento mientras se lo ejecuta, concretamente qué notas se ejecutaron, con qué intensidad, en qué momento. Luego, la computadora puede reenviarlos al instrumento para que este interprete automáticamente.
En algún sentido, el sistema se parece a una pianola. Cuando el pianista toca sus teclas, en el rollo se inscriben mensajes que indican cuándo se tocó una nota, qué notas se tocaron, a qué intensidad, cuánto dura cada nota, cuál es el tempo de la música. Luego, la pianola puede leer la información del rollo y ejecutar la música sin la presencia del músico. Resulta obvio que en el papel quedaron registradas las acciones del pianista, pero no el sonido del piano, y esto nos lleva a pensar las diferencias entre MIDI y audio digital.
Un archivo MIDI contiene información sobre cómo interpretar una música, como si se tratara de una partitura. Un archivo de audio digital contiene una forma de onda, a la música grabada.
La ventaja principal de MIDI es que la cantidad de información necesaria para interpretar la música es muy pequeña
(comparada con la misma música registrada digitalmente). Esto permite almacenarla y transmitirla con facilidad y,
además, procesar los mensajes en tiempo real, aun con una bajísima capacidad de procesamiento de datos. Pero la
principal desventaja es que se hacen necesarios los instrumentos musicales electrónicos que reciban los mensajes
MIDI y los conviertan en sonido y música.
Existen 16 canales MIDI y en la mayoría de los mensajes es necesario especificar un número de canal. Esto permite
que los dispositivos que reciben la información puedan configurarse para recibir parte de toda la información que se
transmite a través de la conexión. Supongamos que un instrumento musical que funciona como esclavo está configurado
para recibir solamente lo que se transmite por el canal 1, en este caso, todos los mensajes que no pertenezcan a
ese canal serán ignorados por el instrumento.
La división de la información por canales resulta muy útil cuando se envían mensajes desde una computadora. Si un
tema musical está conformado por una parte a cargo de piano, por ejemplo, y otra a cargo de una flauta, los mensajes
a cada uno de estos instrumentos deberán ser enviados por canales MIDI diferentes. De este modo, el instrumento
electrónico que recibe los datos podrá discriminar qué notas asignar al piano que hay en él y qué notas derivar a la
flauta. Vale aclarar que un mismo instrumento electrónico (un órgano o sintetizador) puede imitar varios instrumentos
al mismo tiempo. La cantidad de instrumentos a imitar simultáneamente es en general 16, cifra que coincide con
la cantidad total de canales MIDI.
Los archivos MIDI son generados y reproducidos con programas denominados secuenciadores (Sonar, Cubase, etc.). Cada programa graba un formato de archivo propio, como ocurre con cualquier procesador de texto, por ejemplo. Con el objeto de unificar el formato, los creadores de la norma MIDI diseñaron un tipo de archivo intercambiable entre programas, denominado MIDI Standard File, cuya extensión es .mid.
Antes de que la norma MIDI incorporara el concepto General MIDI, los fabricantes de instrumentos electrónicos incluían
diversos “timbres”, como piano, guitarra o violín, que ordenaban de la manera que les parecía más conveniente.
Una secuencia realizada para un instrumento de determinada marca, al ser reproducida en otro instrumento diferente
producía resultados inesperados, ya que las notas eran las que correspondían, pero interpretadas por otros timbres.
Para solucionar este problema, se agregó a la norma una lista ordenada de timbres denominada General MIDI. Cuando
un instrumento electrónico admite la configuración General MIDI, garantiza la correcta ejecución de una secuencia
creada con base en esa norma.
Los tipos de mensajes más comunes del protocolo MIDI son los siguientes:
Note On
Enciende una nota en un instrumento.
Note Off
La apaga.
Program Change
Cambia de timbre en el instrumento MIDI.
Control Change
Envía mensajes a los controladores, que son las palancas
o perillas del panel de control de un instrumento
MIDI que alteran al sonido en alguna forma.
El mensaje Note On, por ejemplo, tiene una longitud de
3 bytes. Al primer byte se lo denomina Status Byte, porque
especifica el tipo de mensaje, a los restantes se los
denomina Data Bytes.
El primer byte indica, entonces, el tipo de mensaje (en este caso Note On) y además el canal MIDI por el cual se envía.
Vemos que hay dos informaciones distintas codificadas en un mismo byte: los 4 bits menos significativos indican canal
MIDI (4 bits = 16 posibilidades), y los otros 4 bits indican el tipo de mensaje.
El segundo byte indica qué número de nota hay que tocar (0 a 127).
El tercer byte indica a qué intensidad debe ejecutarse esa nota (Key Velocity, de 1 a 127).
Los bytes de datos siempre tienen un 0 en el bit más significativo, por lo tanto, la información que pueden llevar es
solamente de 7 bits (números decimales comprendidos entre 0 y 127).
Veamos un mensaje Note On en sistema de numeración binario:
byte 1 : 1 0 0 0 x x x x
El “1” del bit más significativo señala que se trata de un byte de Status. “000” significa Note On. Las x, si se reemplazan
con unos o ceros, dan 16 posibilidades y especifican el canal MIDI.
byte 2 : 0 x x x x x x x
El primer “0” indica que se trata de un byte de datos. Las x, siete en total, permiten enviar un número entre 0 y 127 que
es la nota MIDI a tocar.
byte 3 : 0 x x x x x x x
Otra vez se trata de un byte de datos, pero ahora las x representan la intensidad de la nota a ejecutar. Las intensidades
varían de 1 a 127, debido a que una intensidad cero equivale a apagar la nota, lo cual se denomina mensaje alternativo
de Note Off.
Los objetos MIDI de PD pueden dividirse en dos grupos. El primer grupo está formado por objetos que reciben mensajes
MIDI, mientras que el segundo está integrado por objetos que los envían. Para recibir o enviar mensajes debemos
contar con un instrumento MIDI (un teclado, por ejemplo) que los genere o los interprete, según sea el caso,
conectado a la computadora a través de una interfaz.
Entre los objetos más usados que reciben información MIDI encontramos los siguientes:
Los objetos más comunes que envían información son:
Si dispone de un teclado MIDI y una interfaz para conectarlo
a la computadora, podrá comprobar la transmisión
y recepción de datos, y el efecto que cada mensaje
produce. De no poseer estos dispositivos, puede
probar en una computadora que disponga de un sintetizador
de sonido interno (varias de las computadoras
que emplean una placa de sonido on-board poseen
uno). Otro recurso posible es instalar un sampler o un sintetizador virtual, y comunicarlo con PD a través de
puertos MIDI virtuales.
G.9.4. muestra un patch que envía mensajes Note in y
mensajes de cambio de instrumento a un dispositivo
MIDI externo, a un sintetizador interno, o bien a un dispositivo
MIDI virtual (sampler o sintetizador) conectado
a través de un puerto MIDI virtual. Para configurar alguna
de estas opciones puede ir al menú Media-Preferencias
MIDI.
El patch genera sucesiones de notas de una escala pentatónica (escala de 5 sonidos, sin semitonos), ascendentes o
descendentes, cambiando la direccionalidad de forma aleatoria. En la ejecución de los giros escalares, que abarcan
3 octavas, la velocidad aumenta o disminuye, simulando una interpretación expresiva. Para dar un grado mayor de
interés al resultado, se agrega una segunda voz, más grave, cuyas notas atacan al doble de tiempo que las de la voz
superior. Desde el panel, es posible modificar la duración de las notas (cada nota más corta o más larga), el instrumento
(números que corresponden al catálogo General MIDI) y la velocidad promedio de la ejecución.
El gráfico G.9.5. pertenece al subpatch PD instrumento1, que es el que interpreta la voz aguda. Observamos allí un nuevo objeto, denominado makenote, que recibe por sus inlets, de izquierda a derecha, un número de nota MIDI a ejecutar, su key velocity (intensidad) y la duración en milisegundos que deseamos darle al sonido. El objeto deja pasar el número de nota y el key velocity al objeto noteout, y transcurrido el tiempo de duración, envía nuevamente el número de nota y un valor de key velocity igual a cero, para apagar la nota encendida.
El objeto zl, de la librería Cyclone, lleva inscripto el argumento nth. Así configurado, el objeto devuelve el enésimo elemento
de la lista que ingresa por su inlet izquierdo. El número de elemento a obtener será calculado en otro subpatch,
y enviado a este remotamente mediante la variable n1.
El objeto makenote recibe por la izquierda la nota y por la derecha la duración, mientras que el valor de key velocity está especificado como argumento (64 equivale a mezzo forte).
La figura siguiente (G.9.6.) muestra el subpatch donde se genera el número de elemento a interpretar de la escala.
El objeto counter (librería Cyclone) cuenta entre 0 y 14, pero aleatoriamente recibe un bang por el segundo inlet, que
lo obliga a cambiar de dirección en la cuenta (si cuenta de forma ascendente pasa a descendente y viceversa).
Por último, el subpatch velocidad (G.9.7.) produce una desviación en la velocidad establecida para generar las notas,
sumando un valor de desvío que varía sinusoidalmente, a muy baja frecuencia
.
De la salida de audio del oscilador sinusoidal se extrae una muestra cada 20 milisegundos, con el objeto snapshot~.
Cada vez que este objeto recibe un bang desde metro, devuelve el valor de amplitud de la señal de audio. Este método
se emplea para convertir señales de audio, a frecuencia de muestreo, a señales de control de pocas muestras por
segundo.
Los valores de amplitud, convenientemente escalados, se suman a la velocidad establecida por el usuario del programa.
La programación del patch de G.9.4. se encuentra en el archivo “70-protocolo MIDI.pd”. Para ejecutarlo debe disponer de una placa de sonido con sintetizador incorporado, un dispositivo físico MIDI de generación de sonidos, o bien un instrumento MIDI virtual (sampler o sintetizador).