MIDI Voice Messages
Jordi Bartolomé 10-1-2013


3-Descripción de los códigos de operación de los Voice Messages
Tal como se indica anteriormente, los Voice Messages son mensajes dirigidos a un determinado canal. El número de canal se encuentra incluido en el propio status byte tras los cuatro primeros bits del código de operación. A continuación se listan y describen los diferentes tipos de Voice Messages:

      0x8X = Note off ( categoría Voice Messages )
      0x9X = Note on ( categoría Voice Messages )
      0xAX = After touch ( categoría Voice Messages )
      0xBX = Control change ( categoría Voice Messages )
      0xCX = Program change ( categoría Voice Messages )
      0xDX = Channel presure ( categoría Voice Messages )
      0xEX = Pitch Wheel ( categoría Voice Messages )
 

0x8X = Note off ( categoría Voice Messages ) :
Indica que se debe finalizar la reproducción de una determinada nota. En el caso de utilizar algún tipo de ADSR indicaría que debe iniciarse la fase Release , última fase de la envolvente en que la nota decae hasta finalizar. Si el equipo dispone de pedal Hold Pedal y este está activo la nota permanecerá activa pero deberá finalizarse tan pronto se deje de pulsar dicho pedal. Cada mensaje Note Off debe suceder a un mensaje Note On. Aunque lo más correcto es utilizar el mensaje Note off, algunos equipos implementan la finalización de reproducción de una nota con el mensaje Note on con una velocidad 0.
 
-Trama: Stauts Byte + Data Byte 0 + Data Byte 1
 
-Status byte: 0x8X: donde X indica el número de canal ( 0x0 a 0xF ) al que corresponde la operación .
 
-Data Byte 0: indica el número de nota cuya reproducción se desea finalizar. Puede codificar 128 notas ( 0 a 127 ) siendo la nota 60 el Do central, cada unidad hacia arriba o hacia abajo indica una incremento o decremento de la frecuencia de la nota en 1 semitono.
 
-Data Byte 1: indica la velocidad con que la nota debe finalizarse. Cada equipo puede interpretar esta información a su manera, y por lo general el valor 127 se corresponde a la velocidad más rápida ( la nota finaliza más rápidamente ) y el valor 0 con la más lenta ( la nota se prolonga más y finaliza más lentamente ).
 
El evento Note Off iniciaría la fase de Relajación

 
0x9X = Note on ( categoría Voice Messages ) :
Indica que debe iniciarse la reproducción de una determinada nota y suele ir sucedido de un mensaje Note off. En caso de utilizar algún tipo de ADSR indicaría que debe iniciarse la fase de Attack ( primera fase de la envolvente ) en que la amplitud de la nota crece hasta la fase de Decay.
 
-Trama: Stauts Byte + Data Byte 0 + Data Byte 1
 
-Status byte:0x9X: donde X indica el número de canal ( 0x0 a 0xF ) al que corresponde la operación .
 
-Data Byte 0: indica el número de nota cuya reproducción debe iniciarse. Puede codificar 128 notas ( 0 a 127 ) siendo la nota 60 el Do central y cada unidad hacia arriba o hacia abajo indica una distancia de 1 semitono.
 
-Data Byte 1: indca la velocidad con que la nota debe iniciarse. Cada equipo puede interpretar esta información a su manera, pero por lo general el valor 127 se corresponde a la velocidad más rápida ( la nota se inicia más rápidamente ) y el valor 0 a la más lenta ( el inicio de la nota se prolonga e inicia más lentamente ). Cada mensaje Note On debe ser sucedido por un mensaje Note Off para finalizar la nota . Algunos equipos implementan la finalización de reproducción de una nota con el mensaje Note On con una velocidad 0 .
 
0xAX = After touch ( categoría Voice Messages ) :
Permite codificar o indicar la variación de fuerza o presión que se ejerce sobre las notas de un instrumento. De este modo un controlador u otro dispositivo MIDI va enviando diferentes mensajes After rouch mientras va variando la intensidad o fuerza con que se utiliza el instrumento. Cada equipo puede utilizar la información de este tipo de mensaje según convenga, y una forma puede ser variando el nivel del VCA incrementando o decrementando la amplitud con que la nota es reproducida.
 
Los equipos de viento pueden interpretar este mensaje como una variación de presión que se traduciría en una modificación del volumen de la nota indicada ( p.ej mediante el ADSR o VCA etc. de la nota ).
 
-Trama: Stauts Byte + Data Byte 0 + Data Byte 1
 
-Status byte:0xAX: donde X indica el número de canal ( 0x0 a 0xF ) al que corresponde la operación.
 
-Data Byte 0: indica el número de nota sobre el que ha de aplicarse la variación de presión ( obviamente la nota ha de estar sonando ). Puede codificar 128 notas ( 0 d a 127 ) siendo la nota 60 el Do central y cada unidad hacia arriba o hacia abajo indica una distancia de 1 semitono.
 
-Data Byte 1: indica la presión de la nota, donde 127 es la máxima presión.
 
0xBX = Control change ( categoría Voice Messages ) :
Permite establecer el valor de variables internas o controles de un equipo. El equipo destino del comando Control Change se indica a través de los 4 bits de canal del status byte. Los controles pueden ser elementos ( como pontenciómetros y sliders ) o variables internas del dispositivo MIDI utilizados para para fijar o configurar diferentes parámetros del instrumento. Cada equipo MIDI puede codificar hasta 128 controles que se numeran con valores que van de 0x00 ( 0 ) a 0x7F ( 127 ) . Algunos de estos valores se utilizan siempre para un determinado tipo de control ( p.ej. el 1 es según el estándar MIDI el control Modulation Wheel ), mientras que otros se pueden asignar libremente a diferentes tipos de control según convenga . Este código también permite modificar variables internas del dispositivo MIDI independientemente de si esta variable se encuentra asociada o no a algún control físico del equipo ( potenciómetro, slider u opción del menu ). Algunos controles que requieren más precisión utilizan dos números de controlador, uno para el valor grueso o parte alta ( coarse ) y otra para el valor de ajuste o parte baja ( fine ). Es decir que estos controles necesitan de dos números de control para fijar su valor.
 
-Trama: Stauts Byte + Data Byte 0 + Data Byte 1
 
-Status byte:0xBX: donde X indica el número de canal al que corresponde la operación ( 0x0 a 0xF )
 
-Data Byte 0: indica el número de control del cual se quiere modificar el valor. Se pueden codificar 128 controles ( 0 d a 127 d ) .
 
-Data Byte 1: indica el valor que hay que establecer en el control.
 
La siguiente es la lista de números de control establecidos por el estándar MIDI y que deberían respetarse en la implementación de dispositivos MIDI:
 
En el apartado Control Numbers figura una lista con la descripción de los diferentes números de control soportados por este Voice Message.
 
0xCX = Program change ( categoría Voice Messages ) :
Permite modificar el instrumento o patch utilizado por el dispositivo MIDI destino de la trama. Así mediante esta función podemos indicar al receptor el número de instrumento, patch, preset o programa que ha de utilizar ( p.ej, que utilice el patch del Bass o del Piano ) . Aquellos equipos que por su naturaleza no disponen de instrumentos ( p.ej. equipos de efectos ) pueden utilizar esta función para cambiar su configuración.
 
-Trama: Stauts Byte + Data Byte 0
 
-Status byte:0xCX: donde X indica el número de canal ( 1 d a 16 d ) al que corresponde la operación ( 0x0 a 0xF )
 
-Data Byte 0: codifica el instrumento a utilizar, es decir, permite seleccionar entre uno de los 128 instrumentos que puede haber en los equipos MIDI y que se codifican con valores comprendidos del 0x00 ( 0 d ) al 0x7F ( 127 d ).
 
Con la finalidad de hacer los equipos MIDI más compatibles, el estándar General MIDI establece que códigos debe tener cada tipo de instrumento, no obstante es posible que los equipos no sigan este estandar, y un mismo código de instrumento se corresponda a un equipo distinto.
 
0xDX = Channel presure ( categoría Voice Messages ) :
Permite codificar la fuerza o presión que se ejerce sobre un instrumento. Así, cada vez que cambia la presión ejercida sobre las notas del instrumento, se envía un mensaje con un nuevo "valor global" de presión. Las variaciones de presión codificadas con los mensajes "0xD-Channel presure" refieren simultáneamente a todas las notas del instrumento, mientras que las variaciones codificadas con el comando "0xA-After touch" permiten codificar la variación de presión de las notas de forma individual. Por tanto, en aquellos casos en que sea necesario determinar la variación de las notas de forma individual se deberán utilizar mensajes "0xA-After touch", mientras que en los casos en que sea necesario indicar la variación de presión de las notas de forma global bastará con usar los mensajes de tipo "0xD-Channel presure". Probablemente el uso del primer comando implicará el envío de más mensajes que el uso del segundo.
 
El equipo destinatario del mensaje de variación de presión suele traducirlo en una modificación del volumen de las notas ( p.ej mediante el ADSR o VCA etc. del instrumento ).
 
-Trama: Stauts Byte + Data Byte 0
 
-Status byte: 0xDX: donde X indica el número de canal ( 1d a 16d ) al que corresponde la operación ( 0x0 a 0xF )
 
-Data Byte 0: para indicar la cantidad de presión ejercida sobre el instrumento (127d es la máxima presión o fuerza )
 
0xEX = Pitch Wheel ( categoría Voice Messages ) :
Permite indicar el estado de la rueda de tono o "Pitch Wheel". Mediante este comando, un controlador MIDI puede indicar a otros equipos las alteraciones de tono realizadas por el intérprete mediante el "Pitch wheel". La rueda de tono es una pequeña rueda, palanca o banda de deslizamiento, que se sitúa en el extremo de los teclados u otros instrumentos y permite modificar, de forma proporcional al desplazamiento de la palanca, el tono de las notas que se están tocando. El modo en que los equipos interpretan estos mensajes puede variar: algunos actúan sobre todas las notas a la vez, otros únicamente sobre la última nota pulsada etc.
 
-Trama: Stauts Byte + Data Byte 0 + Data Byte 1
 
-Status byte: 0xEX: donde X indica el número de canal al que corresponde la operación ( 0x0 a 0xF )
 
-Data Byte 0: los 7 bits bajos del Byte 0 y Byte 1 se combinan para formar un valor de 14 bits. Los 7 primeros bits del Byte 0 ( bits del 0 a 6 ) se corresponden con los 7 bits bajos ( bits del 0 al 7 ) del valor de 14 bits.
 
-Data Byte 1: los 7 bits bajos del Byte 0 y Byte 1 se combinan para formar un valor de 14 bits. Los 7 primeros bits del Byte 1 ( bits del 0 a 6 ) se corresponden con los 7 bits altos ( bits del 7 al 13 ) del valor de 14 bits.
El valor de 14 bits indica el desplazamiento de tono, y aunque el valor central es siempre el 0x2000, la variación de tono en función de la posición de la rueda puede variar en cada dispositivo MIDI. Sea como sea valores por encima del valor central indican incremento de tono, y por debajo del valor central decremento de tono. Se recomienda mapear el rango completo del recorrido de la rueda al rango de posibles valores para el valor de 14 bits ( 0x0000 a 0x3FFF ) y que las posiciones extremas de la "Pitch Wheel" permitan llegar a una nota por debajo y a una nota por encima del valor central ( -2 semitonos o +2 semitonos ).
 
Página anterior (pag 1/4)   Volver al índice   Página siguiente (pag 3/4)