El protocolo MIDI

MIDI – CAPÍTULO 2

INTRODUCCIÓN

El código de comunicación MIDI

Visto el concepto de MIDI como sistema de conexión y transmisión de datos de carácter musical entre instrumentos, aparatos y ordenadores, queda, aún, un asunto importante.

Como cualquier medio de comunicación, MIDI necesita un código que posibilite el “entendimiento” entre los equipos conectados (como lo es el idioma para los humanos).

Dada su naturaleza digital, la información MIDI utiliza un sistema lógico basado en el leguaje binario propio de los sistemas informáticos y, en general, de cualquier dispositivo que integre un procesador. (Ver “El sonido digital. 1. Un mundo digital”).

Cada acción o variable que MIDI deba manejar tiene que ser expresada en dicho código binario digital. Así, los mensajes MIDI están compuestos por cadenas o series de bytes1 que se organizan en forma de comandos u órdenes.

El protocolo MIDI establece las pautas a las que deben ceñirse los fabricantes de dispositivos, aparatos e instrumentos musicales para garantizar que la información MIDI que se transmite sea compatible entre ellos (es decir, que “hablen el mismo idioma”).

1 El byte es la unidad de información digital; equivale a 8 bits, cada uno de los cuales puede tomar el valor 0 ó 1. Esta combinación de 2 elementos, que agrupamos de 8 en 8, nos permite codificar 256 acciones o estados distintos por cada byte.

Modo de transmisión de los mensajes MIDI

Es importantísimo recordar que la transmisión de los mensajes MIDI se realiza en serie:

  • Todos los datos que salen del dispositivo maestro son enviados siempre de manera secuencial, uno tras otro. No se transmiten al mismo tiempo.
  • Del mismo modo, el aparato o instrumento “esclavo” que los recibe ejecuta las órdenes contenidas en estricto orden de llegada.
Por ejemplo -simplificando mucho el proceso-, cuando pulsamos un acorde en un teclado maestro, las notas se transmiten una tras otra como comandos MIDI; el módulo de sonidos, a medida que va recibiendo la infomación, las hará sonar. La transmisión sucede con tal rapidez que parecen hacerlo al mismo tiempo. El proceso es similar para todos los demás parámetros y acciones MIDI.

Implicaciones

En una instalación de conexión simple, o en cadenas de hasta tres aparatos, el oído no percibirá ningún desfase debido a la elevadísima velocidad con que se realiza la transferencia de datos.

Sin embargo, si vamos a conectar más aparatos o instrumentos o, simplemente, queremos establecer una comunicación más directa y fluida entre los que ya tenemos, es necesario emplear una interfaz MIDI (o alguno de los dispositivos descritos en el capítulo correspondiente) para que gestione la transferencia de datos de un modo más eficaz.

— : —

ESTRUCTURA Y CLASIFICACIÓN DE LOS COMANDOS MIDI

Los mensajes MIDI normales están formados por uno, dos, o tres bytes, como máximo. En los de tipo SysEx (System exclusive), el número de bytes es ilimitado.

No vamos a complicarnos describiendo como son los bytes que componen un mensaje MIDI, no es relevante para nuestro propósito; pero sí, al menos, debemos conocer cuales son las acciones más habituales que se pueden transmitir y como se llaman.


Tipos de bytes

Byte de estado – Status Byte

Es el primero de la serie de bytes que forman un comando MIDI. Indica el tipo de mensaje (acción que se debe realizar) y el canal. El byte de estado comienza siempre por 1 y se divide en dos bloques: Acción (cuatro primeros dígitos) + Canal (resto).

Byte de datos – Data Byte

Bytes que siguen al de estado. Según el tipo de mensaje definido en el byte de estado podemos tener hasta dos bytes a mayores. El byte de datos comienza siempre por 0.


Mensajes de canal MIDI. Tipos

Los mensajes de canal son los más comunes y sólo afectan al canal que se haya indicado en el byte de estado (codificado en el bloque de los 4 últimos dígitos).

Notas previas acerca de los canales MIDI:

MIDI dispone de 16 canales virtuales de comunicación que nos permiten establecer hasta 16 conexiones o “conversaciones” distintas a través del mismo cable MIDI.

Funciona como la TV o la radio: cada cadena de TV/Radio emite por un canal determinado, si quiero ver/escuchar esa emisora tengo que sintonizar su canal en el receptor.

Así sucede en MIDI, excepto que aquí controlamos el número de canal de transmisión del emisor.

A cada uno de los dispositivos receptores de nuestro sistema MIDI (módulo de sonidos, sintetizador, etc.) le asignaremos un número de canal MIDI, que será su canal activo o abierto. De este modo, sólo se ejecutarán las instrucciones del emisor (teclado maestro o secuenciador) recibidas por ese mismo número de canal e ignorará las de los otros.

Ejemplo: Teclado maestro – Canal 1  ||  Sintetizador – Canal 3  ||  Módulo – Canal 1.

Con esta configuración sonará en el módulo lo que toquemos en el maestro. Si en cualquier momento asignamos el canal 3 al teclado maestro,  sonará será el sintetizador. Si cambiamos el canal del sintetizador al 1, sonarán en ambos equipos lo que toquemos, cada uno con el instrumento (soniso) que tenga seleccionado.

MENSAJES De voz

  • Note on – Activar nota

Indica que se ha pulsado una tecla.

  • Pitch – Tono

Byte que indica qué nota debe sonar (la correspondiente a la pulsada).

  • Velocity– Velocidad

Indica la fuerza con la que se ha pulsado la nota. Se percibe como su volumen.

En algunos equipos también cuantifica la velocidad con que se sueltan las teclas (llamado Release Velocity).

  • Note off – Desactivar nota

Determina que la nota debe dejar de sonar (se ha soltado la tecla).

  • After touch – Después de tocar

Informa de la presión ejercida sobre las teclas mientras aún las estamos tocando. El efecto dependerá de la respuesta programada del módulo y del sonido seleccionado respecto a ese parámetro: vibrato, brillo, volumen, etc.

Key Pressure: es la variante polifónica, es decir, recoge la variación de presión de cada una de las teclas de modo independiente.

Channel Pressure: Recoge el valor de presión más alto y lo aplica a todo el canal, es decir a todo el instrumento por igual.

  • Patch o Program Change – Cambio de programa

Cada instrumento/sonido del generador de sonidos (sintetizador, módulo, sampler, etc.) se corresponde con un nº de Programa o Patch MIDI que puede tomar los valores del 0 al 127 (128 programas en total).

Este comando permite el elegir el Patch que nos interesa (dentro de un banco concreto, como veremos a continuación).

  • Bank Change – Cambio de banco

Los bancos son grupos de Programas o Patches (instrumentos/sonidos). Cada uno de ellos puede contener hasta 128 diferentes.

Es decir, si nuestro sintetizador tiene 4 bancos, quiere decir que tendremos a nuestra disposición hasta 512 instrumentos/sonidos.

Bank Change nos permite el elegir el banco de sonidos que contiene el instrumento o sonido que nos interesa.

Para saber qué mensaje MIDI de banco debemos enviar para activar uno u otro, lo mejor es recurrir al manual del dispositivo.

  • Control Change – CC –Cambio de controlador

Están identificados por un número comprendido entre el 0 y el 127 (128 en total). Algunos son un estándar: CC7, controla el volumen, CC10, controla el panorama, CC64, controla el pedal de sustain, etc.

Pero en otros casos, habrá que consultar el manual del aparato en cuestión.

  • Pitch-Bend – Rueda de variación de tono

Indica variación de tono que se aplica con la rueda de Pitch-Bend.

MENSAJES De modo

Informan de cómo se distribuyen los sonidos internamente o el modo en que el módulo de sonidos responde a los mensajes MIDI.

  • Omni on/off

ON: El dispositivo receptor “escuchará” los mensajes MIDI de todos los canales.

OFF: El receptor “escuchará” los mensajes MIDI por un único canal que debemos determinar y activar.

  • Mono on/off

ON: El receptor sólo reproducirá una nota cada vez.

OFF: El receptor podrá reproducir varias notas a la vez. Es el modo “polifónico”.

  • Local on/off

Función incluida en los sintetizadores con teclado que permite seleccionar el modo de acceso al generador de sonidos.

ON: acceso desde el propio teclado.

OFF: Facilita el acceso desde un secuenciador externo al independizar el módulo de sonidos del teclado.


Mensajes de sistema

Afectan a todo el sistema, independientemente del canal MIDI por el que se reciben.

MENSAJES Comunes

Dentro de estos hallamos los de afinación general del instrumento y los de selección de canción en un secuenciador o caja de ritmos (incluso la posibilidad de ir a puntos concretos de las mismas).

MENSAJES RMT – Mensajes de tiempo real

Son mensajes que permiten enviar información de tiempo (ciclos de reloj) para sincronizar los secuenciadores con otros aparatos, mensajes de inicio/parada, etc. También mensajes de inicio (start), parada (stop) y continuación (continue).

Algunos aparatos responden al comando System Reset, de restablecimento del sistema en caso de que quede bloqueado.

MENSAJES Exclusivos – SysEx – System Exclusive

Son comandos exclusivos de sistema, es decir, propios de cada dispositivo. Debemos tener a mano la guía del fabricante (cada modelo y marca tiene los suyos) para conocer cuales son y como activarlos y desactivarlos.

— : —

Tabla de contenido del tema:

— : —

Anuncios

3 pensamientos en “El protocolo MIDI

  1. Buenos días, antes que nada, dejame felicitarte por tu página: es un buen complemento para quienes tratamos de estar en contacto con esto y lo entiendo como un buen puntapié para principiantes, felicitaciones!

    Por otro lado, quería saber si en relación a MIDI, tendras algo de información en cuanto a programación en lenguaje Assembler.

    Aguardo tu respuesta.

    Gracias, Juan.

    • Hola, Juan!

      Muchas gracias. De verdad. No sabes hasta qué punto animan comentarios como este, en especial cuando uno empieza a sentirse poco inspirado, las más de las veces debido a la sensación de soledad y vacío que envuelve la Web, nube o como quiera que lo llamemos.

      De repente, voces como la tuya rompen el silencio y, entre líneas, te dicen: “no estás solo” Y entienden la filosofía o intención de Musicalecer, que consiste, simplemente, en una ayuda para iniciarse en este apasionante mundo de la música. ¡Qué inyección de ánimo! Por ello, aunque resulte pesado y redundante, gracias otra vez.

      En cuanto a la programación en lenguaje Assembler, lo lamento mucho, pero no puedo ayudarte. Conozco muy poco sobre los programas ensambladores. Casi nada. Mis caminos se abrieron hacia otros derroteros, como la programación de bases de datos (SQL, Access). De veras que lo siento.

      Un abrazo, Juan.

  2. Pingback: El protocolo MIDI | Musicalecer. Creación, edición y producción musical

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s