Comandos MIDI de Control Change

por Miguel Ratton



Quando foi criado o padrão MIDI, através da MIDI Specification 1.0 (1983), não só foram definidas as características elétricas da transmissão de informações entre equipamentos, como também foram estabelecidos os códigos digitais para diversas mensagens de comando a serem transferidas de um instrumento para outro, como a execução de notas, por exemplo. Dentre essas mensagens, há uma categoria que engloba todos os tipos de controles, como ajuste de volume e de pan, posição do pedal de sustain, ajuste de tempo do portamento, de intensidade de efeitos, etc, e essas mensagens são chamadas de control change messages, ou mensagens de alteração de controle.

Como são diversos os comandos de control change, o assunto foi dividido em uma série de artigos, iniciando com este que trata de tópicos genéricos sobre os controles e detalha o Bank Select.

Considerações Iniciais

Os comandos de control change se subdividem em dois subgrupos: controles contínuos (cujo valor pode variar gradualmente) e controles liga/desliga (que atuam como chaves de dois estados).Todas as mensagens de control change contêm identificação de canal, para que possam ser dirigidas ao instrumento desejado, que está configurado para receber no mesmo canal em que a mensagem está sendo transmitida.

Quando o músico move algum dos dispositivos de controle de seu instrumento (pedal de volume, alavanca de modulation, etc), são transmitidas mensagens correspondentes de control change, que contêm três códigos, compondo o seguinte formato:

control change / canal
número do controle
valor do controle

O primeiro código identifica que a mensagem MIDI é de control change, e também informa qual o número do canal de MIDI em que ela está sendo transmitida; o segundo código identifica qual o controle (volume, pan, etc) que se está ajustando; o terceiro código indica qual o valor do ajuste a ser feito naquele controle.

Exemplo: Ao se pressionar o pedal de sustain de um instrumento que está transmitindo pelo canal MIDI nº1, é enviada a seguinte mensagem (através de MIDI OUT), contendo três códigos, aqui representados em hexadecimal:

B0 40 7F

No primeiro código, o valor B (que em decimal vale 11) identifica que o comando é de control change, e o valor 0 identifica que o comando está sendo transmitido pelo canal nº1; no segundo código, o valor 40 (que em decimal vale 64) identifica o número do controle (no caso, é o pedal de sustain); e finalmente no terceiro código, o valor 7F (que em decimal vale 127) indica que o pedal de sustain foi pressionado (onde valor 0=solto, e 127=pressionado).

Observe que o valor de canal 0 corresponde ao canal MIDI nº1, pois os 16 canais são codificados por números de 0 a 15:

em hexadecimal em decimal canal MIDI
0 0 1
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
6 6 7
7 7 8
8 8 9
9 9 10
A 10 11
B 11 12
C 12 13
D 13 14
E 14 15
F 15 16

A especificação original estabeleceu 121 números para comandos de control change, mas alguns até hoje ainda não têm função definida, e continuam vagos para aplicações futuras, para o caso de novos dispositivos de controle que venham a ser implementados.


Figura 1: Ilustração do mecanismo de representação de valores com MSB e LSB.

Antes porém, é preciso esclarecer um aspecto importante a respeito da definição destas mensagens. Como com o grupo de três códigos só podemos ajustar os controles para valores dentro da faixa de 0 a 127 (veja exemplo anterior sobre o pedal de sustain), e como em alguns casos é necessário uma faixa maior de valores, criaram-se mensagens complementares, que são usadas quando se requer ajustes mais minuciosos (em mais do que 128 passos). Dessa forma, estabeleceu-se que quando um comando de control change necessita de uma precisão maior do que 128 valores, então é transmitida uma mensagem complementar, que pode indicar valores intermediários a cada um dos 128 valores originais. Os 128 valores originais são chamados de parte mais significativa (em inglês, most significant byte - MSB), enquanto os demais 128 valores intermediários são chamados de parte menos significativa (em inglês. least significant byte - LSB). Veja pela ilustração da Fig.1 que os valores MSB servem para ajustar controles que não necessitam de muita precisão. Caso seja necessária uma precisão maior, então usa-se um byte LSB para indicar o valor exato, com mais 128 níveis intermediários.

O valor MSB é o que é transmitido normalmente na maioria dos comandos de control change. Quando se precisa enviar também o LSB, então é transmitida uma mensagem complementar, cujo número de control change é igual ao número daquele controle somado de 32. Por exemplo, no caso do controle de volume (controle nº 7), quando apenas 128 níveis são adequados, então basta enviar uma mensagem de control change 7, com o valor desejado (de 0 a 127). Entretanto, caso se deseje ajustá-lo com mais precisão, então é necessário enviar também uma mensagem de control change nº 39, com o valor LSB (de 0 a 127).

Importante: O ajuste só será preciso se o equipamento receptor tiver capacidade de efetuá-lo, caso contrário, ele ajustará dentro da precisão dele (descartando o LSB).


Condições para transmissão e recepção de control change

  • É importante que se tenha em mente de que um equipamento só executará os ajustes de volume, pan, expression ou qualquer outro control change se estiver habilitado para isso. Alguns equipamentos permitem que se habilite ou desabilite individualmente a recepção de cada tipo de control change. No caso de equipamentos transmissores, vale o mesmo raciocínio, considerando que se pode habilitar ou desabilitar a transmissão de control change, individualmente ou não.

  • É preciso também certificar-se de que os canais de recepção e de transmissão dos equipamentos envolvidos estão devidamente ajustados.

Veja a descrição detalhada de alguns comandos MIDI de control change nos tópicos abaixo:

Os controles MIDI de numeros 64 a 69 atuam como chaves do tipo liga/desliga, possuindo apenas dois estados (On e Off). Eles podem ser implementados sob a forma de pedal (como o de sustain), ou mesmo uma chave ou tecla no painel do instrumento, com duas posições. Estes controles só utilizam uma parte de mensagem, que é o MSB, não possuindo o complemento LSB (parte baixa).

Existem ainda outros comandos MIDI de control change que são chaves do tipo liga/desliga implementadas como pedais. Eles são bem menos comuns nos instrumentos atuais, mas foram definidos na especificação MIDI para atender a possíveis necessidades em futuros instrumentos. São eles o Pedal de Sostenuto (control change nº 66), o Pedal Abafador (control change nº 67) e o Pedal de Hold-2 (control change nº 69). Todos eles podem assumir dois estados, ligado ou desligado, que são codificados, respectivamente, pelos valores 127 e 0.

Há ainda uma outra categoria de controles que, embora ainda usada em poucos equipamentos, tem grande potencial de uso. Eles são usados para controlar funções ou recursos dos instrumentos não cobertos pelos controles usuais (modulation, volume, pan, etc), e são designados como controles RPN e NRPN.


Este artigo foi publicado no music-center.com.br em 1996


Copyright ©1996-2005 Miguel Ratton (www.music-center.com.br)