CSS

 

Mensajes MIDI

Un mensaje MIDI se compone de un byte de estado de 8 bits a continuación del cual aparecen, por regla general, uno o dos bytes de datos
. Existen distintos tipos de mensajes MIDI que, en su nivel más alto, se clasifican como Mensajes de canal o Mensajes de sistema. Los mensajes de canal, como su nombre indica, son aquellos aplicables a un canal concreto y contienen el número de canal en su byte de estado. Los mensajes de sistema no están dirigidos a ningún canal concreto por lo que no incluyen número de canal en su byte de estado.

Los mensajes de canal pueden clasificarse, además, en dos tipos: Channel Voice y Mode. Los primeros incluyen datos referentes a la interpretación musical (la inmensa mayoría de los datos de un flujo de señal MIDI típico) y los segundos, datos que alteran la forma en que el instrumento receptor interpreta los datos de los primeros.

Estos últimos se utilizan para transmitir información sobre la interpretación musical. Entre los mensajes englobados en esta categoría están: Note On, Note Off, Polyphonic Key Pressure, Channel Pressure, Pitch Bend Change, Program Change, Control Change, etc.

Note On, Note Off, Velocity
En el protocolo MIDI, los movimientos efectuados al pulsar y soltar una tecla son considerados eventos independientes. Al pulsar una tecla, cuerda, etc. en cualquier instrumento controlador MIDI, el dispositivo emite un mensaje Note On a través del puerto MIDI Out. Si el instrumento está configurado para transmitir por cualquiera de los 16 canales MIDI, el byte de estado del mensaje Note On indicará el número de canal seleccionado. Siguen a este byte de estado dos bytes de datos que especifican el número de tecla (indicando qué nota se ha pulsado) y el valor de velocidad de pulsación (Velocity) que indica lo fuerte que se ha pulsado la tecla.

El generador de sonido que recibe el mensaje utiliza el número de tecla para determinar qué nota debe sonar y el valor de velocidad de pulsación para controlar la amplitud o volumen del sonido. Al soltar la tecla, el controlador emite un mensaje Note Off, que también incluye bytes de datos para el número de nota y la velocidad con que se ha soltado la tecla (este último dato habitualmente se ignora).

Aftertouch
Algunos instrumentos MIDI cuentan con la capacidad de medir la cantidad de presión que se aplica sobre las teclas, cuerdas, etc, una vez han sido pulsadas. Esta información sobre la cantidad de presión aplicada, denominada Aftertouch, se utiliza para controlar algunos aspectos del sonido producido por el generador correspondiente (por ejemplo, vibrato). Si el instrumento controlador dispone de sensores de presión independientes para cada tecla, etc., la información "polifónica" resultante se transmite como mensajes del tipo Polyphonic Key Pressure. Estos incluyen bytes de datos independientes para el número de tecla y la cantidad de presión.

Lo más habitual es que los teclados incorporen un solo nivel de presión para todo el teclado (no uno para cada tecla). Quizás la excepción más notable a esta regla establecida tácitamente por la mayoría de los fabricantes de sintetizadores sean los instrumentos de la firma Ensoniq, que si incorporan Polyphonic Key Pressure. Esta información de "presión por canal" (Channel Aftertouch) se transmite mediante el mensaje Channel Pressure, que sólo necesita un byte da datos para especificar el valor de presión.

Pitch Bend
El mensaje Pitch Bend se envía normalmente a partir del movimiento aplicado sobre la rueda de inflexión tonal que incorporan la inmensa mayoría de los teclados actuales (o a partir de "tirar" de las cuerdas en una guitarra MIDI, por ejemplo). Esta información se utiliza para modificar la altura tonal de los sonidos reproducidos en un canal determinado. Este mensaje incluye dos bytes de datos en vez de sólo uno, con lo que se dispone de una mayor resolución a la hora de definir los movimiento realizados sobre la rueda correspondiente (para que el sonido resultante sea continuo y no dé la sensación de moverse de forma escalonada).

Program Change
Este mensaje se utiliza para indicar el tipo de sonido a emplear en un canal determinado. Sólo precisa de un byte de datos que se encarga de especificar el nuevo número de programa.

Control Change
Estos mensajes MIDI se usan para controlar una gran variedad de funciones de un sintetizador. Como los restantes mensajes de canal, sólo afectan al canal especificado mediante el byte de estado. A continuación del byte de estado aparecen un byte de datos que indica el número de controlador y un segundo byte de datos que indica el valor a aplicar. El número de controlador identifica qué función del generador de sonido se va a controlar. En la Especificación MIDI aparece una lista completa de los números de controlador definidos.

Bank Select
El controlador número 0 (con el valor 32 como LSB) se encarga de la selección de bancos de sonidos. Esta función se utiliza, junto con el mensaje de cambio de programa, para poder acceder a un mayor número de sonidos que los que contiene un solo banco (128). Los sonidos almacenados en bancos distintos al banco 1 se seleccionan anteponiendo al mensaje de cambio de programa un mensaje Control Change que especifica un nuevo valor para los controladores 0 y 32, lo que permite acceder a 16.384 bancos de sonidos con 128 programas cada uno (para que nadie pueda decir que se queda corto en cuanto a posibilidades sonoras).

Como la Especificación MIDI no describe la forma en que los bancos de un sintetizador deben relacionarse con los mensajes de selección de banco, no existe una forma estandar de seleccionar un banco en todos los sintes del mercado. Algunos fabricantes como Roland (con su estándar GS) y Yamaha (no podían ser menos, ellos cuentan con el estándar XG), han adoptado lo que les ha parecido más apropiado para asegurar una mínima estandarización en cuanto a la selección de bancos de sonidos en sus respectivas gamas.

RPN, NRPN
El controlador número 6 (Data Entry), junto con los controladores números 96 (Data Increment), 97 (Data Decrement), 98 (Registered Parameter Number LSB), 99 (Registered Parameter Number MSB), 100 (Non-Registered Parameter Number LSB) y 101 (Non-Registered Parameter Number MSB), permiten aumentar la cantidad de controladores disponibles. Los datos se transmiten seleccionando primero el número del parámetro a editar utilizando los controladores 98 y 99 ó 100 y 101. Luego se procede a definir el valor del parámetro utilizando los controladores 6, 96 o 97.

RPN y NRPN se utilizan habitualmente para enviar datos de parámetros a un sinte para la edición de sonidos. Los Números de parámetro registrados (Registered Parameter Number - RPN) son aquellos a los que las organizaciones MIDI Manufacturers Association (MMA) y Japan MIDI Standards Committee (JMSC) han asignado alguna función particular. Por ejemplo, existen RPNs definidos para controlar la sensibilidad de pitch bend y la afinación general de un sinte. Por su lado, los no registrados (Non-Registered Parameter Number - NRPN) no tienen asignada ninguna función específica y pueden ser utilizados de forma distinta según el fabricante. De nuevo en este caso Roland y Yamaha, entre otros, han adoptado sus propios estándares.

Mensajes Mode

Estos mensajes (controladores 121 al 127) afectan a la forma en que el generador de sonidos responde a los datos MIDI. El controlador 121 se utiliza para reinicializar todos los valores. El 122, para activar o desactivar la función Local Control (en un sinte MIDI con teclado, es posible independizar las funciones del teclado y el generador de sonidos desactivando esta función, facilitando así su funcionamiento con un secuenciador externo). Los controladores 124 a 127 se utilizan para activar o desactivar el modo Omni y para seleccionar los modos Mono o Poly.

Cuando está activado el modo Omni, el generador de sonidos responde a los mensajes MIDI recibidos por todos los canales. Si está desactivado, el generador sólo responderá a los mensajes recibidos por un canal específico.

En el modo Poly, los mensajes Note On entrantes se reproducen de forma polifónica, lo que significa que cuando se reciben múltiples mensajes Note On, a cada nota se le asigna su propia voz (dependiendo siempre del nùmero de voces disponibles en ese momento en el generador de sonidos). Así, por ejemplo, al tocar un acorde sonarán todas las notas de forma simultánea. Al seleccionar el modo Mono, se asigna una sola voz por cada canal MIDI.

La mayoría de los instrumentos MIDI actuales funcionan por defecto en la configuración Omni On/Poly. El generador reproduce los mensajes de nota recibidos en cualquiera de los canales de forma polifónica. Por otra parte, la combinación Omni Off/Poly puede resultar útil en el caso que varios generadores de sonido estén conectados en cadena mediante sus puertos MIDI Thru, ya que cada uno de ellos recibirá los datos en un canal específico y reproducirá las notas de forma polifónica.

Hay que tener en cuenta que cualquier instrumento MIDI dispone de un canal designado como Canal básico y que sólo recibirá los mensajes de cambio de modo a través de este canal. Esta asignación puede ser fija o seleccionable por el usuario.

Mensajes System

Los mensajes de sistema se subdividen en mensajes System Common, System Real Time, o System Exclusive. Los primeros están destinados a todos los recpetores del sistema; los segundos se utilizan para la sincronización de los elementos que funcionan mediante un reloj temporizador. Por su parte, los mensajes de Sistema Exclusivo incluyen un código de identificación del fabricante y se utilizan para transferir bytes de datos formateados según una especificación diseñada por ese fabricante.

System Common
Actualmente están definidos los mensajes MTC Quarter Frame, Song Select, Song Position Pointer, Tune Request y End Of Exclusive (EOX). El mensaje MTC Quarter Frame forma parte de la información de código de tiempo MIDI utilizada para la sincronización de equipos MIDI con sistemas de audio y video.

El mensaje Song Select es utilizado por secuenciadores y cajas de ritmo capaces de almacenar varias composiciones distintas. Song Position Pointer se usa para iniciar la reproducción en un secuenciador; siempre en un punto distinto al inicio de la composición. Su valor está relacionado con el número de pulsaciones de reloj MIDI transcurridas desde el punto inicial de la composición. Este mensaje sólo puede ser utilizado con dispositivos capaces de reconocer mensajes System Real Time (MIDI Sync).

Tune Request se utiliza habitualmente para que un sintetizador analógico proceda a recalibrar la afinación de sus osciladores. Este mensaje carece de utilidad en el caso de los sintes digitales.

El mensaje EOX sirve para indicar la finalización de un flujo de datos de Sistema Exclusivo.

System Real Time
Estos mensajes tienen por fin la sincronización de todos los elementos de un sistema MIDI que funcionen mediante reloj MIDI (secuenciadores, cajas de ritmo, arpegiadores, etc.). Para asegurar una correcta temporización, siempre tienen prioridad sobre los otros tipos de mensaje MIDI (los mensajes a tiempo real, de un solo byte, pueden aparecer en cualquier lugar del flujo de datos, incluso entre el byte de estado y el byte de datos de cualquier otro mensaje).

Estos mensajes de sistema a tiempo real son: Timing Clock, Start, Continue, Stop, Active Sensing y System Reset. Timing Clock es el reloj master que define el tempo de reproducción de una secuencia. Se transmite 24 veces por cada nota negra. Los mensajes Start, Continue y Stop se utilizan para controlar la reproducción.

Active Sensing sirve al propósito de eliminar notas "colgadas" que pueden aparecer al desconectar un cable MIDI durante la reproducción. Sin esta función, algunas notas pueden quedar sonando de forma indefinida (han sido activadas mediante un mensaje Note On pero el mensaje Note Off correspondiente no va a llegar nunca).

El mensaje System Reset, se encarga de reinicializar cualquier dispositivo MIDI. Por la importancia de sus efectos, generalmente no se transmite de forma automática; el usuario debe iniciar su emisión de forma manual.

System Exclusive
Los mensajes de Sistema Exclusivo pueden utilizarse para enviar datos como programas de sonido o muestras entre distintos dispositivos MIDI. Cada fabricante define sus propios formatos para este tipo de datos y dispone de un código de identificación único garantizado por la MMA y el JMSC. Esta ID del fabricante, incorporada en cada mensaje de Sistema Exclusivo, precede a los distintos paquetes de datos, a continuación de los cuales aparece el mensaje EOX mencionado anteriormente, con el que finaliza la transmisión de datos. Los fabricantes están obligados a publicar los detalles que conforman sus formatos de datos de Sistema Exclusivo para que puedan ser utilizados libremente por otros fabricantes o por el propio usuario, siempre y cuando no se alteren o se utilice el formato de forma que entre en conflicto con las especificaciones originales definidas por el fabricante .

Algunos de estos números de identificación están reservados para protocolos especiales, entre los que figuran el Estándar para volcado de muestras MIDI (MIDI Sample Dump Standard), un formato de datos de Sistema Exclusivo dedicado a la transmisión de datos entre muestreadores; así como MIDI Show Control y MIDI Machine Control.

Running Status

Como los datos MIDI se transmiten en forma serial, es muy posible que dos o más eventos musicales que se produzcan en el mismo momento, al ser enviados uno detrás de otro, no se reproduzcan exactamente en el mismo instante. Con una velocidad de transmisión de datos de 31.25 Kbits/seg. y 10 bits transmitidos por cada byte, la transmisión de un mensaje Note On o Note Off de 3 bytes dura aproximadamente 1 milisegundo. Desde luego, generalmente esto es lo suficientemente rápido como para que esos eventos se perciban como simultáneos, aunque a nivel de números no sea así. Por ejemplo, se puede decir que ningún teclista es capaz de percibir ese pequeño desfase al tocar 10 teclas de forma simultánea, siempre y cuando las notas sean reproducidas en un lapso de tiempo inferior a unos 10 milisegundos.

Sin embargo, hay que tener en cuenta que los datos MIDI transmitidos por un secuenciador suelen incluir datos correspondientes a un gran número de pistas y que, en un momento determinado, puede llegar a existir un gran número de eventos que deban reproducirse de forma simultánea. En estos casos el retardo introducido por la transmisión de datos en serie puede llegar a ser claramente perceptible. Para ayudar a reducir la cantidad de datos transmitidos en el flujo de datos MIDI, se emplea una técnica denominada Running Status.

Esta técnica toma en consideración el hecho de que es muy habitual que en una cadena de mensajes consecutivos, todos sean del mismo tipo. Por ejemplo, al tocar varios acordes, se generan un montón de mensajes Note On consecutivos, a los que siguen el montón de datos Note Off correspondientes. El truco consiste en que sólo se emite el byte de estado cuando el mensaje correspondiente no es del mismo tipo que el mensaje inmediatamente anterior (en un mismo canal MIDI, claro). Es decir, sólo se transmiten los bytes de datos para todos los mensajes del mismo tipo.

La efectividad de esta técnica mejora mucho más si en vez de enviar mensajes Note Off, se envían mensajes Note On con un valor de velocidad de pulsación igual a 0 (técnica utilizada, por ejemplo, en el secuenciador Logic Audio). De esta forma se producen largas cadenas de menasjes Note On, de transmisión más rápida que las originales cadenas cortas compuestas por mensajes de distintos tipos.

<<<   >>>






© 2002 CSS - Autor: David Mellinas

Este documento (en su totalidad o parcialmente) no puede ser reproducido, copiado, impreso, modificado o transferido por medios electrónicos; salvo en el caso de su visualización directa en www.css-audiovisual.com. Es necesario disponer del permiso por escrito del autor si se desea utilizar en cualquier forma parte o la totalidad de esta documentación.




Las especificaciones de producto están sujetas a cambios sin previo aviso. Los precios son aproximativos y aparecen en euros sin incluir IVA.

Copyright © 2002-2003 CSS Audiovisual Technology. Todos los derechos reservados.