MIDI significa Musical Instrument Digital Interface, es decir interfaz digital de instrumentos musicales, y es un código de comunicación entre diferentes aparatos digitales de aplicación musical, no sólo instrumentos productores de sonido (sintetizadores y samplers), sino también procesadores de efectos, secuenciadores, computadoras, mezcladoras, etcétera.
Debemos tener presente que los instrumentos musicales que nos ocupan constan de dos grandes partes: generador y controlador. El generador es la sección que produce el sonido propiamente, y que puede ser programada, asignándole valores determinados a sus diferentes parámetros, para variar sus características tímbricas. El conjunto de todos esos valores se denomina habitualmente patch, y es el que determina el tipo de sonido resultante. Un patch puede estar programado de manera de buscar reproducir o imitar el timbre de un instrumento acústico, o por el contrario producir un timbre totalmente sintético. El controlador por su parte es la sección sobre la que actúa el ejecutante en el momento de tocar, y que envía la información al generador, diciéndole por ejemplo que debe prender o apagar una determinada nota, aplicar cierta modulación, etcétera. Los más comunes son los controladores en forma de teclado del tipo piano u órgano, pero puede haber de otras clases, tanto con analogías a instrumentos tradicionales (guitarra, saxo, instrumentos de percusión) como de nuevos diseños. No hay que olvidar esto, aunque muchas veces al hablar de un controlador daremos por sobrentendido que se trata de un teclado. También integran el controlador otros dispositivos (como ser ruedas, pedales, etc.) que agregan expresión adicional en el momento de tocar, ya que, según cómo haya sido programado el generador, accionarlos producirá diferentes variaciones en el resultado sonoro.
Los controladores adicionales más estandarizados, especialmente en los teclados, son los siguientes:
ruedas:
rueda de modulación (modulation wheel) - se posiciona libremente entre mínimo y máximo, y se usa típicamente para abrir o cerrar filtros, o controlar la amplitud y/o frecuencia de filtros de modulación (LFO) para lograr efectos de vibrato.
pitch-bender (rueda de inflexión de altura) - a diferencia de la anterior no va de mínimo a máximo sino que tiene el 0 en la posición central, y adquiere valores positivos o negativos al desplazarla arriba o abajo. Tampoco se posiciona libremente, ya que un resorte la mantiene en la posición central mientras no está siendo accionada. Su función básica es efectuar glissandos o inflexiones de altura (pitch-bending) ascendentes o descendentes, aunque algunos instrumentos permiten asignarles otras funciones.
pedales:
pedal de sostenimiento (sustain pedal) - su efecto es similar al del pedal derecho del piano: mientras está oprimido no envía mensajes de apagado de las notas. Si bien es de movimiento continuo, sólo adquiere dos valores.
pedal de volumen - es de movimiento continuo y duplica el potenciómetro de volumen del instrumento. Es útil para controlar el volumen mientras se usan ambas manos para tocar.
Otros dispositivos no tan comunes incluyen el joystick, el controlador de soplo (breath controller), etcétera.
En los primeros modelos de sintetizador de producción masiva lanzados al mercado a fines de la década del 60, los distintos componentes del generador (básicamente osciladores, filtros, amplificadores, y generadores de envolvente) eran controlados por voltaje. Así, al accionar una tecla, ésta enviaba una corriente cuyo voltaje determinaba qué nota produciría el oscilador. Estos controladores eran extremadamente sencillos, sólo podían tocar una nota por vez y no enviaban ningún tipo de información adicional, como ser velocidad con que era oprimida la tecla, o la presión que se ejercía sobre la misma. Durante los años 70 se fueron ampliando poco a poco las posibilidades de los sintetizadores, tanto en lo referente al generador como al controlador.
El gran cambio ocurrió sin embargo recién a inicios de la década del 80, con la incorporación de la tecnología digital a los instrumentos musicales electrónicos, la que demoró muy poco tiempo en afirmarse y extenderse completamente. Hoy en día virtualmente todos los instrumentos electrónicos de aplicación musical son íntegramente digitales. Vale decir que todas sus funciones se llevan a cabo bajo forma de operaciones matemáticas realizadas por microprocesadores especialmente diseñados y programados a ese fin. Al accionar entonces sobre cualquier parte del controlador, éste envía al generador la correspondiente información en forma de un número, el que será interpretado según se haya realizado la programación.
Con el vertiginoso desarrollo de la tecnología informática -aumento de la velocidad de los microprocesadores y de la disponibilidad de memoria- las posibilidades de los instrumentos digitales se han ido ampliando sin cesar. Ha aumentado enormemente la capacidad polifónica (la de generar varias notas simultáneamente) y multitímbrica (capacidad de producir varios timbres diferentes simultáneamente); los algoritmos de síntesis son cada vez más complejos, llegando a incluir diversos procesamientos de la señal, como ser reverberación y otros efectos; se puede trabajar no sólo con ondas simples sintéticas, sino también con ondas complejas grabadas de instrumentos acústicos y almacenadas en forma digital, lo que permite mayor realismo en las síntesis de tipo imitativo. Por otra parte, el que los valores de los parámetros estén representados por números, permite una mayor precisión en la programación, exacta reproducibilidad, y la capacidad de almacenamiento de bancos enteros de programas o patches, los que quedan disponibles en forma inmediata. A su vez, los controladores también se han ido haciendo cada vez más sensibles, y al accionar una tecla por ejemplo, se envía información no sólo de qué nota se trata, sino también la velocidad con que fue oprimida y levantada (velocity), y las variaciones de presión que se ejercieron sobre ella (aftertouch). Según cómo esté programado el patch correspondiente (y las posibilidades que ofrezca el instrumento), el generador puede responder a estos matices de ejecución realizando desde pequeñas variaciones de articulación hasta drásticos cambios tímbricos.
La inquietud de comunicar varios sintetizadores entre sí, es decir, que al accionar el controlador de uno de ellos pudieran hacerse sonar los generadores de dos o más, existió desde la época de los sintetizadores controlados por voltaje, y si bien aparecieron algunas interfaces, ninguna llegó a ser realmente universal y extendida, debido en parte a que no todos los fabricantes utilizaban la escala de controlar los generadores a razón de 1 volt por octava. Al introducirse componentes digitales en los sintetizadores aparecieron nuevos problemas y posibilidades, surgiendo en 1981 una propuesta de crear finalmente un protocolo de comunicación universal. La propuesta fue presentada a la Audio Engineering Society (AES) de Estados Unidos, y durante dos años un panel que incluía representantes de los mayores fabricantes de sintetizadores del mercado trabajó sobre la misma, dando a conocer en 1983 el estándar finalmente diseñado, que fue denominado MIDI. El mismo fue rápidamente adoptado por todos los fabricantes, quienes deben respetar estrictamente todas las especificaciones, de modo de que está garantizada una total compatibilidad. Actualmente esto es controlado por asociaciones como la MMA (MIDI Manufacturers Asociation), que nuclea los fabricantes de instrumentos MIDI en Estados Unidos, y la IMA (International MIDI Asociation), las que además coordinan y regulan el desarrollo y ampliación de la norma. Se puede decir que desde ese entonces todos los instrumentos electrónicos de aplicación musical virtualmente sin excepción incluyen una completa implementación MIDI.
En primera instancia entonces, el MIDI permitió tocar varios generadores a través de un solo controlador, obteniendo así sonidos con más cuerpo y timbres más complejos. Aparecieron también los módulos solamente generadores de sonido sin controlador propio, de precio más reducido y que podían ser tocados desde otro sintetizador. A su vez comenzaron a fabricarse controladores especializados que funcionaban solamente como tales, sin generador, y que ofrecían más posibilidades que los incluidos en los sintetizadores comunes. Pero éstas fueron tan sólo las aplicaciones más inmediatas. Pronto comenzaron a desarrollarse los secuenciadores, dispositivos que graban la información MIDI y que permiten además distintos tipos de edición, de modo tal que una "ejecución" sobre un controlador MIDI puede ser luego reproducida todas las veces que se desee, con las eventuales correcciones que fueran necesarias. Por medio de mensajes MIDI pueden alterarse también los parámetros de programación de un sintetizador o procesador. Con el agregado de la interfaz correspondiente, una computadora puede comunicarse con cualquier instrumento MIDI, y surgieron así sofisticados programas de distintas aplicaciones, como ser secuenciadores, editores y/o almacenadores de patches para sintetizadores, generadores automáticos de acompañamientos, compositores algorítmicos, etcétera. También por medio del MIDI pueden sincronizarse secuenciadores entre sí, con grabadores de audio y con video, pueden controlarse mezcladoras, mesas de luces, etcétera.
El MIDI es muy limitado en varios aspectos, como por ejemplo su relativamente baja velocidad de transmisión, y que sólo puede transmitir en 16 canales diferentes, los cuales pueden llegar a ser escasos si el sistema tiene interconectados muchos aparatos. Sin embargo el MIDI ha demostrado ser flexible y abierto, pudiendo adaptarse a las nuevas necesidades que han surgido en este tiempo. Es además de fácil implementación, está totalmente universalizado, y no presenta ningún tipo de problemas de comunicación entre los más diversos aparatos de diferentes marcas y modelos. Hace años que es prácticamente impensable prescindir del MIDI en ninguna aplicación musical que involucre instrumentos electrónicos.
Los datos MIDI se transmiten por medio de impulsos eléctricos a través de un cable. La transmisión se hace en un sólo sentido, de manera que una comunicación de ida y vuelta necesita dos cables. Los aparatos con interfaz MIDI tienen entonces una puerta de entrada y otra de salida, señaladas como MIDI IN y MIDI OUT respectivamente. En casi todos los casos se puede encontrar una tercera puerta, llamada MIDI THRU, que no sirve como puerta de envío sino solamente como paso, y por la que sale una copia exacta de lo que entra por la puerta IN.
La interfaz opera a 31.25 (±1%) Kbaud, con un bit de inicio, 8 bits de datos, y un bit de cierre, conformando así bytes de 10 bits con período de 320 microsegundos.
La corriente es de 5 mA, correspondiendo la presencia de corriente al bit lógico 0. Las puertas de entrada deben tener optoisoladores que necesiten menos de 5 mA para dispararse, y cuyo tiempo de subida y caída sea inferior a los 2 microsegundos.
Los conectores son de tipo DIN de 5 patas 180 grados, los conectores hembra montadas en el panel, y los machos en el cable. Las dos patas laterales (1 y 3) deben estar desconectadas para que el cable pueda transmitir. La pata del medio (2) está conectada a tierra, y la transmisión se realiza por las otras dos patas (4 y 5).
La longitud de un cable MIDI no debe superar en ningún caso los 15 metros, de modo de no generar demoras en la transmisión, y cada OUT debe conectarse a un solo IN. Si se quieren controlar varios dispositivos por una sola salida, puede hacerse una cadena usando los respectivos THRU, aunque en ese caso son necesarios optoisoladores muy veloces, ya que los errores de subida y caída de cada uno se adicionan. También hay que cuidar que la suma del largo de los cables no supere el máximo de 15 metros. En general, conviene no disponer más de tres unidades en serie, y utilizar siempre cables cortos.
Otra forma de conformar un sistema integrado por varios dispositivos es mediante una disposición en estrella. Para ello es necesario un MIDI thru box, una pieza de hardware que presenta una entrada y varias salidas. De esa forma se evita la suma de las demoras que se dan en la transmisión en serie.
La pieza de hardware que cumple la función contraria es el MIDI merger, o mezclador MIDI, que suma la entrada de dos o más puertas IN y la envía por la salida. Una utilización típica es cuando se quiere tocar mediante un controlador externo un instrumento que a la vez está siendo tocado por un secuenciador. Algunos instrumentos, especialmente los módulos generadores que no tienen controlador propio, están provistos de dos puertas IN, previendo esa situación. De la misma manera hay controladores especializados e interfaces MIDI para computadoras que disponen de dos puertas OUT. En algunos casos ambas puertas envían una copia de la misma salida, en otros casos se trata efectivamente de dos salidas diferentes, lo que duplica la cantidad de canales de transmisión.
Aparte de los MIDI merger y los MIDI thru boxes, hay otros dispositivos que cumplen funciones inteligentes sobre los datos recibidos. Algunos de estos procesadores MIDI cumplen funciones específicas, otros pueden ser programados para realizar varias diferentes. Las operaciones más usuales son:
recanalización: cambia el canal de los mensajes recibidos, asignando a un canal determinado de entrada otro diferente de salida.
filtrado: evita el paso de mensajes MIDI que no interesan, como forma de alivianar la línea.
transposición: cambiando el valor de los mensajes de datos, se pueden transportar las alturas de las notas en un determinado número de semitonos ascendentes o descendentes, u otros parámetros, como la velocity.
renumerador de controlador: hace que los mensajes de control change recibidos sean enviados a un controlador diferente.
Estas operaciones pueden servir entre otras cosas para superar limitaciones en la implementación MIDI de algunos instrumentos, como ser que no transmitan en los 16 canales, que tengan pocos números de controladores, etcétera.
Cada uno de los impulsos eléctricos por medio de los cuales se transmiten los datos MIDI conforma un bit de información, y puede tomar el valor 1 ó 0. El MIDI utiliza "palabras" o bytes de 8 bits, con las que se pueden representar valores entre 0 y 255. Puede convenir escribir los bytes en sistema de numeración binario (base 2), en el cual el bit menos significativo -el de la derecha, llamado least significant bit o LSB - toma el valor 0 ó 1 (es decir 20) según esté desactivado o activado, el siguiente los valores 0 ó 2 (21), el que sigue los valores 0 ó 4 (22), y así sucesivamente hasta el bit más significativo (el último de la izquierda, most significant bit o MSB), que toma los valores 0 ó 128 (27). Para saber el equivalente decimal (base 10) de un byte, se suman los valores de todos los bits que tengan valor 1:
0000 0000 = 0
:
:
0010 1100 = 25 + 23 + 22 = 32 + 8 + 4 = 44
:
:
1111 1111 = 27 + 26 + 25 + 24 + 23 + 22 + 21 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
La cantidad de valores que se pueden representar con n bits es 2n. Por tanto, si se mantiene por ejemplo el bit más significativo fijo, quedan sólo 7 bits libres, y se podrán representar 27 = 128 valores. Por otra parte, se puede dividir el byte en dos grupos de 4 bits, llamados nibbles. Con un nibble es posible representar 16 valores, los que en algunos casos puede convenir escribir en sistema hexadecimal (base 16), de acuerdo a la siguiente tabla de conversión:
| binario | decimal | hexadecimal |
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | 10 | A |
| 1011 | 11 | B |
| 1100 | 12 | C |
| 1101 | 13 | D |
| 1110 | 14 | E |
| 1111 | 15 | F |
(Queda claro entonces que la base de un sistema de numeración es la cantidad de símbolos diferentes que hay a disposición para representar los valores, y por tanto la cantidad de valores que puedo representar con un sólo símbolo. Como en MIDI se transmiten los valores en forma de voltajes, conviene usar la base más baja, porque se puede transmitir a gran velocidad pero sin mucha precisión.)
Los bytes de 8 bits pueden ser representados en hexadecimal con dos símbolos, siendo cada uno de ellos la traducción del respectivo nibble:
| binario | hex | decimal |
| 0000 0000 | 00 | 0 |
| : | : | : |
| 0010 1100 | 2C | 44 |
| : | : | : |
| 0111 1001 | 79 | 121 |
| : | : | : |
| 1111 1111 | FF | 255 |
Referirse también a la tabla completa de conversión entre estos tres sistemas de numeración en el apéndice. Como se ve, algunas expresiones coinciden en diferentes sistemas, por lo que es necesario aclarar cuál se está usando.
En la especificación MIDI están definidos dos tipos de byte, de estatus y de datos, que están identificados por su primer bit o MSB, según sea 1 ó 0 respectivamente.
Status byte (byte de estatus): es el que determina de qué tipo de mensaje se trata, por ejemplo prender o apagar una nota en un determinado canal, iniciar o detener el secuenciador, seleccionar un patch, o enviar un pulso de reloj o clock para sincronización, etcétera. Todos los bytes de estatus comienzan con bit 1 (de 1000 0000 a 1111 1111): son los valores 128 a 255 (de 80 a FF en hexadecimal).
Data byte (byte de datos): según cuál sea el byte de estatus, puede ser seguido de uno o más bytes de datos, con los valores correspondientes al tipo de mensaje. Por ejemplo si el byte de estatus es de prender una nota en cierto canal, deben seguir dos bytes de datos indicando respectivamente qué nota hay que prender y con qué velocidad. Si el byte de estatus es seleccionar un patch en cierto canal, le sigue un byte de datos con el número de patch. Los data bytes son los que comienzan con bit 0 (de 0000 0000 a 0111 1111), de 0 a 127 en decimal, de 00 a 7F en hexadecimal. Es por esto que varios parámetros (como las velocities, las modulaciones, volumen, etcétera) tienen 128 valores posibles. También es la cantidad total de notas que hay en MIDI, diez octavas y 8 semitonos, de C-1 a G9, siendo A4 el la central de 440 Hz. Otros parámetros, como el pitch bending y el posicionador dentro de una canción, precisan mayor definición; en ese caso son necesarios dos bytes consecutivos de datos, lo que da una definición de 14 bits (16.384 valores).
Running status: cuando hay una sucesión de mensajes del mismo tipo, no es necesario repetir todas las veces el status byte; solamente se envía el primero de ellos, y luego los bytes de datos respectivos. Por ejemplo si se trata de prender una serie de notas en un canal, se envía el status byte correspondiente, y luego los dos bytes de datos para cada una de las notas.
La línea MIDI transmite información simultáneamente en 16 canales. Si se están controlando varios instrumentos a la vez, cada uno de ellos puede ser programado para responder a un canal específico, de modo de que queda conformada una "orquesta" en la que se pueden tocar notas independientemente en cada instrumento. La mayoría de los instrumentos musicales digitales actualmente tienen capacidad multitímbrica, es decir que funcionan como varios instrumentos virtuales en uno: reciben en más de un canal simultáneamente (usualmente 8 o los 16), pudiendo asignar un patch o timbre diferente a cada canal. Algunos mensajes se dirigen a un canal específico; en ellos el primer nibble del status byte indica de qué comando se trata, y el segundo nibble a qué canal se aplica (recordar que un nibble puede representar precisamente hasta 16 valores), según la siguiente tabla:
| binario | decimal | hexa | número de canal |
| 0000 | 0 | 0 | 1 |
| 0001 | 1 | 1 | 2 |
| 0010 | 2 | 2 | 3 |
| 0011 | 3 | 3 | 4 |
| 0100 | 4 | 4 | 5 |
| 0101 | 5 | 5 | 6 |
| 0110 | 6 | 6 | 7 |
| 0111 | 7 | 7 | 8 |
| 1000 | 8 | 8 | 9 |
| 1001 | 9 | 9 | 10 |
| 1010 | 10 | A | 11 |
| 1011 | 11 | B | 12 |
| 1100 | 12 | C | 13 |
| 1101 | 13 | D | 14 |
| 1110 | 14 | E | 15 |
| 1111 | 15 | F | 16 |
Hay dos tipos de mensaje: de canal (channel message) y de sistema (system message).
channel messages: afectan solamente a uno de los 16 canales MIDI, y sólo responden a este tipo de mensajes los instrumentos sintonizados para recibir en ese canal. Los mensajes de canal se subdividen a su vez en:
channel voice tienen que ver con la producción de sonido (como por ejemplo prender y apagar notas)
channel mode determinan la forma en que el dispositivo responde a los mensajes recibidos
system messages: éstos son recepcionados por todos instrumentos conectados a la red. Hay tres tipos de mensajes de sistema:
system exclusive (sistema exclusivo) estos mensajes comienzan con un encabezamiento que identifica la marca y modelo determinado del instrumento al cual están dirigidos, siendo ignorados por todos los demás dispositivos.
system common (sistema común) afectan a todos los instrumentos conectados al sistema.
system real time (sistema tiempo real) están relacionados con el funcionamiento de secuenciadores, su timing y sincronización.
En los siguientes capítulos se dará el formato completo de transmisión de cada uno de estos mensajes.
Como indica su nombre, los mensajes de canal sólo actúan sobre los instrumentos asignados a ese canal. Estos mensajes constan de un byte de estatus, seguido de uno o dos bytes de datos. En todos los channel messages el nibble más significativo del byte de estatus corresponde al comando en cuestión, mientras que el segundo nibble indica a cuál de los 16 canales MIDI afecta dicho comando.
Estos mensajes están relacionados directamente con la producción de sonido, e incluyen comandos como prender o apagar nota, aplicar controladores, pitch bending, cambios de patch, etcétera.
nibble de comando: bin 1000; hex 8 - el segundo nibble indica el canal
formato: byte de estatus más dos bytes de datos, uno para la nota y otro para la velocidad
el paquete completo queda conformado entonces por tres bytes, que pueden oscilar entre los siguientes valores, expresados en los tres sistemas de numeración:
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1000 0000 a 1000 1111 |
80 a 8F |
128 a 143 |
apagar nota en canal 1 a apagar nota en canal 16 |
|
2 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
nº de nota (por las equivalencias ver tabla en el apéndice) |
|
3 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
velocidad (con que se levanta la tecla, por ejemplo) |
Nota: muy pocos instrumentos responden o transmiten velocidad de apagado de la nota. En ese caso se envía siempre un valor fijo, usualmente 0 ó 64, según el modelo de sintetizador.
comando: bin 1001; hex 9 - el segundo nibble indica el canal
formato: byte de estatus más dos bytes de datos, uno para la nota y otro para la velocidad
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1001 0000 a 1001 1111 |
90 a 9F |
144 a 159 |
prender nota en canal 1 a prender nota en canal 16 |
|
2 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
nº de nota (por las equivalencias ver tabla en el apéndice) |
|
3 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
velocidad de ataque |
Nota: cuando el segundo byte de datos es 0000 0000 (vel = 0), el comando equivale a apagar nota. Esto es conveniente en running status, ya que se puede tanto prender como apagar notas sin necesidad de cambiar de status byte.
Este mensaje envía la modulación solamente a la tecla que está siendo presionada.
nibble de comando: bin 1010; hex A - el segundo nibble indica el canal
formato: byte de estatus más dos bytes de datos, uno para la nota y otro para la presión
| nº | tipo | binario | hexa | decimal |
|
|
1 |
estatus |
1010 0000 a 1010 1111 |
A0 a AF |
160 a 175 |
presionar nota en canal 1 a presionar nota en canal 16 |
| 2 | data | 0000 0000 a 0111 1111 | 00 a 7F | 0 a 127 | nº de nota
|
|
3 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
presión |
Nota: no todos los instrumentos responden y/o transmiten este comando.
nibble de comando: bin 1011; hex B - el segundo nibble indica el canal
formato: comando más dos bytes de datos, uno para el nº de controlador y otro para su valor
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1011 0000 a 1011 1111 |
B0 a BF |
176 a 191 |
accionar controlador en canal 1 a accionar controlador en canal 16 |
|
2 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
nº de controlador
|
|
3 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
valor del controlador |
Notas:
Hay diversos tipos de controladores: los llamados continuos (rueda de modulación, volumen, etcétera) ofrecen todos los valores posibles dentro del rango disponible, mientras que los del tipo interruptor o switch (como el pedal de sostenimiento, etcétera) sólo tienen dos posiciones, off y on.
Los números de controlador 0 a 31 (hex 00 a 1F) están reservados para controladores continuos. Enviando un byte de datos se logra una definición de 7 bits (128 valores). Estos controladores pueden sin embargo admitir una resolución de 14 bits (16.384 valores), en cuyo caso es necesario enviar un segundo mensaje portando otro byte de datos.
Los controladores 32 a 63 (20 a 3F) transmiten el segundo byte de datos de los controladores 0 a 31 respectivamente.
Los controladores 64 a 95 (40 a 5F) se asignan a parámetros de baja resolución o a switches, y sólo admiten un byte de datos, o sea una resolución de 0 a 127. En el caso de los switches, los valores 0 a 63 se reconocen como igual a 0 (off), y los valores 64 a 127 como igual a 127 (on).
El controlador nº 1 está asignado a la rueda de modulación; los demás números de controlador quedan libres para ser determinados por cada fabricante, aunque hay varios tipos de controlador, como ser volumen general, pedal de sostenimiento, etcétera, que están asignados en forma prácticamente universal a un número determinado (ver la tabla en el apéndice). El pitch bend no se transmite como controlador, sino que tiene su propio tipo de mensaje.
Los últimos siete números, de 121 a 127 (hex 79 a 7F), no están asignados a controladores, sino que quedan reservados para mensajes de channel mode (ver 1.2).
Este comando se utiliza para seleccionar un "patch" o timbre determinado de los guardados en la memoria del instrumento, y asignarlo a un canal.
nibble de comando: bin 1100; hex C - el segundo nibble indica el canal
formato: comando más un byte de datos para el número de programa
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1100 0000 a 1100 1111 |
C0 a CF |
192 a 207 |
cambio de programa en canal 1 a cambio de programa en canal 16 |
|
2 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
nº de programa
|
A diferencia del polyphonic aftertouch, este mensaje modula a todas las notas que están sonando en ese canal, como la rueda de modulación (1.1.4) y el pitch bend (1.1.7).
nibble de comando: bin 1101; hex D - el segundo nibble indica el canal
formato: byte de estatus más un byte de datos para la presión
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1101 0000 a 1101 1111 |
D0 a DF |
208 a 223 |
presión en canal 1 a presión en canal 16 |
|
2 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
valor de la presión |
nibble de comando: bin 1110; hex E - el segundo nibble indica el canal
formato: byte de estatus más dos bytes de datos, para la posición de la rueda (actúa sobre todas las notas del canal)
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1110 0000 a 1110 1111 |
E0 a EF |
224 a 239 |
pitch bend en canal 1 a pitch bend en canal 16 |
|
2 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
byte más significativo (MSB) de la posición de la rueda |
|
3 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
byte menos significativo (LSB) |
Nota: el pitch bend requiere gran definición, de modo de poder hacer desplazamientos de altura bastante amplios (hasta una octava hacia arriba y hacia abajo) sin que se noten "escalones". Usar dos bytes de datos da una definición de 14 bits (recordar que en los bytes de datos el primer bit siempre es 0, lo que deja 7 bits significativos), permitiendo representar hasta 214 = 16384.
Estos bytes determinan la manera en que se recibe y responde a los datos MIDI en los diferentes canales. Los comandos de channel mode no tienen un byte de estatus propio, sino que se trasmiten bajo el formato de control change, con número de controlador de 122 a 127 (ver 1.1.4).
número de controlador: 121 (bin 0111 1001, hex 79). Reestablece todos los controladores a los valores que por defecto adquiere el instrumento al encenderse.
formato: tres bytes, el primero (byte de estatus) es el de control change, el segundo es dec 121, y el tercero es siempre 0.
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1011 0000 a 1011 1111 |
B0 a BF |
176 a 191 |
controlador en canal 1 a controlador en canal 16 |
|
2 |
data |
0111 1010 |
79 |
121 |
reset all controllers |
|
3 |
data |
0000 0000 - 0111 1111 |
00 - 7F |
0 - 127 |
off on |
Abre o cierra la ruta que conecta el controlador (teclado u otro tipo) del sintetizador con su generador. En local control off, accionar el teclado no producirá sonido en el sintetizador interno, aunque puede enviar datos vía MIDI a otro módulos. A su vez el generador puede responder a datos recibidos externamente.
número de controlador: 122 (bin 0111 1010, hex 7A)
formato: tres bytes, el primero (byte de estatus) es el de control change, el segundo es dec 122, y el tercero puede tomar el valor 0 (local control off) ó 127 (local control on).
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1011 0000 a 1011 1111 |
B0 a BF |
176 a 191 |
controlador en canal 1 a controlador en canal 16 |
|
2 |
data |
0111 1010 |
7A |
122 |
local control |
|
3 |
data |
0000 0000 - 0111 1111 |
00 - 7F |
0 - 127 |
off on |
Manda apagar todas las notas en un canal determinado. Se utiliza en casos de emergencia, cuando una o más notas han quedado "colgadas", y no sustituye al comando note off.
número de controlador: 123 (bin 0111 1011, hex 7B).
formato:
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1011 0000 a 1011 1111 |
B0 a BF |
176 a 191 |
controlador en canal 1 a controlador en canal 16 |
|
2 |
data |
0111 1011 |
7B |
123 |
all notes off |
|
3 |
data |
0000 0000 |
00 |
0 |
(3er byte siempre es 0) |
En el modo de recepción "omni", el generador responde a los mensajes MIDI transmitidos en cualquiera de los 16 canales. "Omni mode off" desactiva este modo de recepción, a la vez que envía un mensaje de "all notes off".
número de controlador: 124 (bin 0111 1100, hex 7C)
formato:
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1011 0000 a 1011 1111 |
B0 a BF |
176 a 191 |
controlador en canal 1 a controlador en canal 16 |
|
2 |
data |
0111 1100 |
7C |
124 |
omni mode off (all notes off) |
|
3 |
data |
0000 0000 |
00 |
0 |
(3er byte siempre es 0) |
Activa el modo omni, y envía un comando de "all notes off".
número de controlador: 125 (bin 0111 1101, hex 7D)
formato:
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1011 0000 a 1011 1111 |
B0 a BF |
176 a 191 |
controlador en canal 1 a controlador en canal 16 |
|
2 |
data |
0111 1101 |
7D |
125 |
omni mode on (all notes off) |
|
3 |
data |
0000 0000 |
00 |
0 |
(3er byte siempre es 0) |
En modo mono, el generador responderá monofónicamente, es decir asignando una sola voz a cada uno de los canales que esté activado, a partir de un número de canal determinado que funciona como canal base (base channel). El número de canales activados está determinado por el tercer byte. En el caso especial de que éste tenga valor 0, se asignan tantos canales como voces tenga el receptor, siempre a partir del canal base. Envía simultáneamente un mensaje de "all notes off".
número de controlador: 126 (bin 0111 1110, hex 7E)
formato:
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1011 0000 a 1011 1111 |
B0 a BF |
176 a 191 |
controlador en canal 1 a controlador en canal 16 |
|
2 |
data |
0111 1011 |
7B |
123 |
all notes off |
|
3 |
data |
0000 0000 |
00 |
0 |
(3er byte siempre es 0) |
Desactiva el modo mono, y el receptor responde polifónicamente. Envía simultáneamente un mensaje de "all notes off".
número de controlador: 127 (bin 0111 1111, hex 7F)
formato:
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1011 0000 a 1011 1111 |
B0 a BF |
176 a 191 |
controlador en canal 1 a controlador en canal 16 |
|
2 |
data |
0111 1111 |
7F |
127 |
poly mode on / mono mode off (all notes off) |
|
3 |
data |
0000 0000 |
00 |
0 |
(3er byte siempre es 0) |
Según la combinación entre omni mode on/off y los modos poly y mono, se formarían entonces cuatro modos de recepción:
|
modo |
omni on/off |
mono/poly |
|
|
1 |
omni on |
poly |
se reciben mensajes en todos los canales y se responde polifónicamente en el base channel |
|
2 |
" " |
mono |
se reciben mensajes en todos los canales y se responde monofónicamente en el base channel |
|
3 |
omni off |
poly |
se reciben mensajes sólo en el base channel, y se responde polifónicamente |
|
4 |
" " |
mono |
se reciben mensajes en un número de canales determinado por el tercer byte a partir del base channel, y se responde monofónicamente en cada uno de ellos |
Hace tiempo que estos cuatro modos, definidos en una primera época de capacidades polifónicas y multitímbricas muy limitadas, están obsoletos. Actualmente los sintetizadores funcionan en modo multi como varios instrumentos virtuales, cada uno de ellos respondiendo a un canal MIDI diferente con su propio timbre. Usualmente se puede definir en forma independiente el canal de recepción de cada uno de esos "instrumentos", que pueden oscilar entre 8 y 16, así como asignar a cada uno de ellos un timbre o patch determinado. La distribución de voces entre los instrumentos se hace en forma dinámica a medida que cada uno va tocando nuevas notas (dynamic voice allocation), aunque a veces interesa determinar que un instrumento responda monofónicamente, cuando va a tocar solamente líneas melódicas, de manera de que no utilice innecesariamente voces adicionales.
Los mensajes de sistema no tienen especificación de canal, y son recibidos por todos los dispositivos interconectados dentro del sistema. Abarcan los bytes de 240 a 255 (bin 1111 0000 a 1111 1111, hex F0 a FF), y se dividen en sistema exclusivo (System Exclusive), sistema común sistema:sistema común (System Common), y sistema tiempo real (System Real Time).
Los mensajes de sistema exclusivo (SysEx) están dirigidos a instrumentos de una marca y modelo determinados, y son solamente aceptados por ellos. Cada fabricante tiene total libertad de determinar el formato y la longitud del mensaje, solamente debe respetar el formato del encabezamiento, que incluye precisamente un número identificatorio del fabricante. El sistema exclusivo fue pensado para poder enviar mensajes específicos de un aparato determinado, como ser el cambio de parámetros en la programación de los patches, el volcado de los programas de los bancos de memoria, etcétera. El SysEx no sólo permite este tipo de comunicación de un instrumento a otro del mismo modelo, sino también entre un instrumento y un secuenciador, ya sea con fines de almacenamiento de bancos de timbres, o para modificar parámetros tímbricos durante una secuencia. Es utilizado además por los programas de computadora que editan y almacenan patches.
El formato de transmisión consta
de un ancabezamiento o header, cuyo primer byte es el de
inicio de SysEx (dec 240, hex F0, bin 1111 0000), y cuyo segundo byte
es el ID del fabricante. Lo que sigue es libremente determinado por
el fabricante, pero generalmente el header tiene un tercer byte
correspondiente al modelo. (Cuando una serie de modelos diferentes
tienen arquitectura muy similar, el fabricante puede designar para
todos ellos el mismo ID, como forma de reservar números para
el futuro. Recordar que sólo hay 128 valores disponibles).
Luego viene una serie de cualquier longitud posible de bytes de
datos, con la única condición de que todos tengan 0
como bit más significativo. Iniciar con bit 1 significaría
un byte de estatus, y eso interrumpiría el SysEx. Los únicos
bytes de estatus que pueden intercalarse son los del tipo System Real
Time (ver 2.3). El fin del sistema exclusivo está indicado por
el byte dec 247 (hex F7, bin 1111 0111).
binario | hexa | decimal | |||
| header | status byte | 1111 0000 | F0 | 240 | SysEx - inicio de Sistema Exclusivo |
| ID 1 | 0iii iiii | ID - número del fabricante, o tipo de comando universal | |||
| ID 2 | 0iii iiii | modelo | |||
| data | data bytes | 0ddd dddd | data (cualquier cantidad de bytes puede ser enviado aquí, siempre que el byte más significativo sea 0; no se puede intercalar ningún otro tipo de byte de status, exceptuando Real Time) | ||
| tail | status byte | 1111 0111 | F7 | 247 | EOX (End of SysEx) - fin de Sistema Exclusivo |
Los ID numbers son distribuidos por la MMA y por su contrapartida japonesa la JMSC (Japanese MIDI Standard Comitee). Algunos de esos números, sin embargo, han sido asignados a mensajes de tipo universal, como forma de ampliar la norma MIDI. Hay tres tipos de mensaje dentro de este formato: Sample Dump Standard (SDS), Standard MIDI File (o simplemente MIDI File), y el MIDI Time Code (MTC).
El Sample Dump Standard es una forma estandarizada de volcar samples, es decir muestras digitales de sonido. El formato admite gran variedad de frecuencias de sampleo y número de bits de cuantización, de forma de que puede ser implementado por cualquier sampler, aunque no todos los modelos se adaptan a este tipo de comunicación, aparte del suyo propio. El SDS puede transmitir también los puntos de inicio y final de gran cantidad de loops dentro del sample.
El Standard MIDI File es un formato también estandarizado de guardar secuencias, o sea series ordenadas de eventos MIDI determinados en su ubicación temporal en términos de compases y tiempos. Hay diversos tipos de secuenciadores, tanto de software (programas de computadora que cumplen esa función), como de hardware (aparatos dedicados a ese fin, sean independientes, o integrados a un sintetizador o sampler). Cada secuenciador tiene su propio formato de secuencias, y el MIDI File es una forma de guardar la información básica en un formato estandarizado, de manera de poder leer archivos de un secuenciador a otro. Prácticamente todos los secuenciadores, especialmente los de software, pueden tanto leer como guardar archivos en formato MIDI File.
El MIDI Time Code es un código de tiempo similar al de la SMPTE (Society of Motion Pictures and Television Engineers), utilizado en la sincronización de videos y películas. Arriba mencionábamos que en las secuencias MIDI la información de ubicación temporal de los eventos se hace en términos relativos de compases, tiempos dentro del compás, y sudivisiones de los tiempos. La ubicación real de los eventos varía con los cambios de tempo. El código SMPTE, por el contrario, utiliza una referencia temporal en términos absolutos de horas, minutos, segundos y cuadros de imagen (divisiones del segundo en 25, 29.97 ó 30, según la norma utilizada). El MTC es una manera de traducir el código SMPTE a un formato que puede transmitirse como mensajes MIDI.
El SPP es un registro, usualmente en términos de cuartos de tiempo, del tiempo que ha pasado desde el inicio de una secuencia. Se resetea a 0 cada vez que hay un comando de start, se detiene con el de stop, y reinicia la cuenta con el de continue (ver 2.3). Este mensaje ordena al secuenciador a ubicarse en determinado lugar de la canción.
byte de estatus: bin 1111 0010, dec 242, hex F2
formato: byte de estatus más dos bytes de datos, que indican la posición en cuartos de unidad de tiempo desde el inicio de la secuencia
el mensaje completo es:
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1111 0010 |
F2 |
242 |
song position pointer |
|
2 |
data |
0000 0000
a
0111 1111
|
00 a 7F |
0 a 127 |
byte más significativo (MSB) de la posición en la canción |
|
3 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
byte menos significativo (LSB) |
Similar a program change, pero para secuencias en lugar de patches. Selecciona una canción de la memoria para ser tocada al recibir el comando start.
byte de estatus: bin 1111 0011, dec 243, hex F3
formato: byte de estatus más un byte de datos
el mensaje completo es:
|
nº |
tipo |
binario |
hexa |
decimal |
|
|
1 |
estatus |
1111 0011 |
F3 |
243 |
song select |
|
2 |
data |
0000 0000 a 0111 1111 |
00 a 7F |
0 a 127 |
nº de secuencia |
Este comando hace que todos los instrumentos del sistema realicen su rutina de afinación de acuerdo a su referencia interna.
byte de status: bin 1111 0110, dec 246, hex F6
formato: byte de estatus
Los cuatro primeros de estos mensajes están relacionados con el funcionamiento de secuenciadores. Cuando se utilizan varios secuenciadores simultáneamente, es necesario sincronizarlos, de modo que el clock interno de uno de ellos, que funcionará como maestro, controle a todos los demás, que serán sus esclavos.
Controla la velocidad de funcionamiento de los secuenciadores esclavos, quienes obedecen a estos mensajes en lugar de sus relojes internos. El pulso es enviado por el secuenciador maestro a intervalos iguales, a razón de 24 veces por la figura que represente la unidad de tiempo.
byte de estatus: bin 1111 1000, dec 248, hex F8
formato: byte de estatus
Manda empezar a tocar la secuencia actualmente en memoria desde el principio (song position pointer 0).
byte de estatus: bin 1111 1010, dec 250, hex FA
formato: byte de estatus
Manda comenzar a tocar la secuencia desde el lugar de la última detención, o del señalado por el último song position pointer.
byte de estatus: bin 1111 1011, dec 251, hex FB
formato: byte de estatus
Manda detener el secuenciador.
byte de estatus: bin 1111 1100, dec 252, hex FC
formato: byte de estatus
Mensaje enviado cada tercio de segundo para verificar que el instrumento está conectado al sistema y respondiendo.
byte de estatus: bin 1111 1110, dec 254, hex FE
formato: byte de estatus
Ordena al aparato a resetearse, readoptando todas las variables los valores por defecto que tienen al encenderse.
bytes de status: bin 1111 1111, dec 255, hex FF
formato: byte de estatus
| bin | hex | dec | nota | tipo de controlador | bin | hex | dec | nota | tipo de controlador |
| 0000 0000 | 00 | 0 | C 1 |
| 0010 0000 | 20 | 32 | G#1 | segundo byte (LSB) |
| 0000 0001 | 01 | 1 | C# 1 | modulation wheel | 0010 0001 | 21 | 33 | A1 | |
| 0000 0010 | 02 | 2 | D 1 | breath controller | 0010 0010 | 22 | 34 | A#1 | |
| 0000 0011 | 03 | 3 | D# 1 |
| 0010 0011 | 23 | 35 | B1 | |
| 0000 0100 | 04 | 4 | E 1 | foot controller | 0010 0100 | 24 | 36 | C2 | |
| 0000 0101 | 05 | 5 | F 1 | portamento | 0010 0101 | 25 | 37 | C#2 | |
| 0000 0110 | 06 | 6 | F# 1 |
| 0010 0110 | 26 | 38 | D2 | |
| 0000 0111 | 07 | 7 | G 1 | main volume | 0010 0111 | 27 | 39 | D#2 | |
| 0000 1000 | 08 | 8 | G# 1 | balance | 0010 1000 | 28 | 40 | F2 | |
| 0000 1001 | 09 | 9 | A 1 |
| 0010 1001 | 29 | 41 | F2 | |
| 0000 1010 | 0A | 10 | A# 1 | pan | 0010 1010 | 2A | 42 | F#2 | |
| 0000 1011 | 0B | 11 | B 1 | control de expresión | 0010 1011 | 2B | 43 | G2 | |
| 0000 1100 | 0C | 12 | C0 |
| 0010 1100 | 2C | 44 | G#2 | |
| 0000 1101 | 0D | 13 | C#0 |
| 0010 1101 | 2D | 45 | A2 | |
| 0000 1110 | 0E | 14 | D0 |
| 0010 1110 | 2E | 46 | A#2 | |
| 0000 1111 | 0F | 15 | D#0 |
| 0010 1111 | 2F | 47 | B2 | |
| 0001 0000 | 10 | 16 | E0 |
| 0011 0000 | 30 | 48 | C3 | |
| 0001 0001 | 11 | 17 | F0 |
| 0011 0001 | 31 | 49 | C#3 | |
0001 0010 | 12 | 18 | F#0 |
| 0011 0010 | 32 | 50 | D3 | |
0001 0011 | 13 | 19 | G0 |
| 0011 0011 | 33 | 51 | D#3 | |
0001 0100 | 14 | 20 | G#0 |
| 0011 0100 | 34 | 52 | E3 | |
0001 0101 | 15 | 21 | A0 |
| 0011 0101 | 35 | 53 | F3 | |
0001 0110 | 16 | 22 | A#0 |
| 0011 0110 | 36 | 54 | F#3 | |
0001 0111 | 17 | 23 | B0 |
| 0011 0111 | 37 | 55 | G3 | |
0001 1000 | 18 | 24 | C1 |
| 0011 1000 | 38 | 56 | G#3 | |
0001 1001 | 19 | 25 | C#1 |
| 0011 1001 | 39 | 57 | A3 | |
0001 1010 | 1ª | 26 | D1 |
| 0011 1010 | 3A | 58 | A#3 | |
0001 1011 | 1B | 27 | D#1 |
| 0011 1011 | 3B | 59 | B3 | |
0001 1100 | 1C | 28 | E1 |
| 0011 1100 | 3C | 60 | C4 | |
0001 1101 | 1D | 29 | F1 |
| 0011 1101 | 3D | 61 | C#4 | |
0001 1110 | 1E | 30 | F#1 |
| 0011 1110 | 3E | 62 | D4 | |
0001 1111 | 1F | 31 | G1 |
| 0011 1111 | 3F | 63 | D#4 | |
0100 0000 | 40 | 64 | E4 | sustain | 0110 0000 | 60 | 96 | C7 |
|
0100 0001 | 41 | 65 | F4 | portamento | 0110 0001 | 61 | 97 | C#7 |
|
0100 0010 | 42 | 66 | F#4 | sostenuto pedal | 0110 0010 | 62 | 98 | D7 |
|
0100 0011 | 43 | 67 | G4 | soft pedal | 0110 0011 | 63 | 99 | D#7 |
|
0100 0100 | 44 | 68 | G#4 |
| 0110 0100 | 64 | 100 | E7 |
|
0100 0101 | 45 | 69 | A4 |
| 0110 0101 | 65 | 101 | F7 |
|
0100 0110 | 46 | 70 | A#4 |
| 0110 0110 | 66 | 102 | F#7 |
|
0100 0111 | 47 | 71 | B4 |
| 0110 0111 | 67 | 103 | G7 |
|
0100 1000 | 48 | 72 | C5 |
| 0110 1000 | 68 | 104 | G#7 |
|
0100 1001 | 49 | 73 | C#5 |
| 0110 1001 | 69 | 105 | A7 |
|
0100 1010 | 4A | 74 | D5 |
| 0110 1010 | 6A | 106 | A#7 |
|
0100 1011 | 4B | 75 | D#5 |
| 0110 1011 | 6B | 107 | B7 |
|
0100 1100 | 4C | 76 | E5 |
| 0110 1100 | 6C | 108 | C8 |
|
0100 1101 | 4D | 77 | F5 |
| 0110 1101 | 6D | 109 | C#8 |
|
0100 1110 | 4E | 78 | F#5 |
| 0110 1110 | 6E | 110 | D8 |
|
0100 1111 | 4F | 79 | G5 |
| 0110 1111 | 6F | 111 | D#8 |
|
0101 0000 | 50 | 80 | G#5 |
| 0111 0000 | 70 | 112 | E8 |
|
0101 0001 | 51 | 81 | A5 |
| 0111 0001 | 71 | 113 | F8 |
|
0101 0010 | 52 | 82 | A#5 |
| 0111 0010 | 72 | 114 | F#8 |
|
0101 0011 | 53 | 83 | B5 |
| 0111 0011 | 73 | 115 | G8 |
|
0101 0100 | 54 | 84 | C6 |
| 0111 0100 | 74 | 116 | G#8 |
|
0101 0101 | 55 | 85 | C#6 |
| 0111 0101 | 75 | 117 | A8 |
|
0101 0110 | 56 | 86 | D6 |
| 0111 0110 | 76 | 118 | A#8 |
|
0101 0111 | 57 | 87 | D#6 |
| 0111 0111 | 77 | 119 | B8 |
|
0101 1000 | 58 | 88 | E6 |
| 0111 1000 | 78 | 120 | C9 |
|
0101 1001 | 59 | 89 | F6 |
| 0111 1001 | 79 | 121 | C#9 | reset all controllers |
0101 1010 | 5A | 90 | F#6 |
| 0111 1010 | 7A | 122 | D9 | local control |
0101 1011 | 5B | 91 | G6 | efectos | 0111 1011 | 7B | 123 | D#9 | all notes off |
0101 1100 | 5C | 92 | G#6 | trémolo | 0111 1100 | 7C | 124 | E9 | omni off |
0101 1101 | 5D | 93 | A6 | chorus | 0111 1101 | 7D | 125 | F9 | omni on |
0101 1110 | 5E | 94 | A#6 | detune | 0111 1110 | 7E | 126 | F#9 | mono on |
0101 1111 | 5F | 95 | B6 | phaser | 0111 1111 | 7F | 127 | G9 | poly on |
bin | hex | dec | tipo de mensaje | canal | bin | hex | dec | tipo de mensaje | canal |
1000 0000 | 80 | 128 | Note off | ch 1 | 1010 0000 | A0 | 160 | Poly press | ch 1 |
1000 0001 | 81 | 129 | ch 2 | 1010 0001 | Al | 161 | ch 2 | ||
1000 0010 | 82 | 130 | ch 3 | 1010 0010 | A2 | 162 | ch 3 | ||
1000 0011 | 83 | 131 | ch 4 | 1010 0011 | A3 | 163 | ch 4 | ||
1000 0100 | 84 | 132 | ch 5 | 1010 0100 | A4 | 164 | ch 5 | ||
1000 0101 | 85 | 133 | ch 6 | 1010 0101 | A5 | 165 | ch 6 | ||
1000 0110 | 86 | 134 | ch 7 | 1010 0110 | A6 | 166 | ch 7 | ||
1000 0111 | 87 | 135 | ch 8 | 1010 0111 | A7 | 167 | ch 8 | ||
1000 1000 | 88 | 136 | ch 9 | 1010 1000 | A8 | 168 | ch 9 | ||
1000 1001 | 89 | 137 | ch 10 | 1010 1001 | A9 | 169 | ch 10 | ||
1000 1010 | 8A | 138 | ch 11 | 1010 1010 | AA | 170 | ch 11 | ||
1000 1011 | 8B | 139 | ch 12 | 1010 1011 | AB | 171 | ch 12 | ||
1000 1100 | 8C | 140 | ch 13 | 1010 1100 | AC | 172 | ch 13 | ||
1000 1101 | 8D | 141 | ch 14 | 1010 1101 | AD | 173 | ch 14 | ||
1000 1110 | 8E | 142 | ch 15 | 1010 1110 | AE | 174 | ch 15 | ||
1000 1111 | 8F | 143 | ch 16 | 1010 1111 | AF | 175 | ch 16 | ||
1001 0000 | 90 | 144 | Note on | ch 1 | 1011 0000 | B0 | 176 | Control change | ch 1 |
1001 0001 | 91 | 145 | ch 2 | 1011 0001 | B1 | 177 | ch 2 | ||
1001 0010 | 92 | 146 | ch 3 | 1011 0010 | B2 | 178 | ch 3 | ||
1001 0011 | 93 | 147 | ch 4 | 1011 0011 | B3 | 179 | ch 4 | ||
1001 0100 | 94 | 148 | ch 5 | 1011 0100 | B4 | 180 | ch 5 | ||
1001 0101 | 95 | 149 | ch 6 | 1011 0101 | B5 | 181 | ch 6 | ||
1001 0110 | 96 | 150 | ch 7 | 1011 0110 | B6 | 182 | ch 7 | ||
1001 0111 | 97 | 151 | ch 8 | 1011 0111 | B7 | 183 | ch 8 | ||
1001 1000 | 98 | 152 | ch 9 | 1011 1000 | B8 | 184 | ch 9 | ||
1001 1001 | 99 | 153 | ch 10 | 1011 1001 | B9 | 185 | ch 10 | ||
1001 1010 | 9A | 154 | ch 11 | 1011 1010 | BA | 186 | ch 11 | ||
1001 1011 | 9B | 155 | ch 12 | 1011 1011 | BB | 187 | ch 12 | ||
1001 1100 | 9C | 156 | ch 13 | 1011 1100 | BC | 188 | ch 13 | ||
1001 1101 | 9D | 157 | ch 14 | 1011 1101 | BD | 189 | ch 14 | ||
1001 1110 | 9E | 158 | ch 15 | 1011 1110 | BE | 190 | ch 15 | ||
1001 1111 | 9F | 159 | ch 16 | 1011 1111 | BF | 191 | ch 16 | ||
1100 0000 | C0 | 192 | Program change | ch 1 | 1110 0000 | E0 | 224 | Pitch Bend | ch 1 |
1100 0001 | C1 | 193 | ch 2 | 1110 0001 | E1 | 225 | ch 2 | ||
1100 0010 | C2 | 194 | ch 3 | 1110 0010 | E2 | 226 | ch 3 | ||
1100 0011 | C3 | 195 | ch 4 | 1110 0011 | E3 | 227 | ch 4 | ||
1100 0100 | C4 | 196 | ch 5 | 1110 0100 | E4 | 228 | ch 5 | ||
1100 0101 | C5 | 197 | ch 6 | 1110 0101 | E5 | 229 | ch 6 | ||
1100 0110 | C6 | 198 | ch 7 | 1110 0110 | E6 | 230 | ch 7 | ||
1100 0111 | C7 | 199 | ch 8 | 1110 0111 | E7 | 231 | ch 8 | ||
1100 1000 | C8 | 200 | &n |