Aviso: o texto abaixo requer que você tenha algum conhecimento sobre MIDI e algum conhecimento sobre hexadecimal. Não diga que eu não avisei.
O padrão MIDI, que completou já 30 anos, provou ser um padrão muito bem pensado e resistiu a prova do tempo, tanto que continua o mesmo até os dias de hoje. Pois bem, vou falar de uma das partes interessantes do padrão MIDI, o sysex.
Se você já conhece o protocolo MIDI, sabe por exemplo, que para aumentarmos ou diminuirmos o volume enviamos o control change número 7, para enviarmos o sinal de um pedal de sustain usamos normalmente o control change 64, com os valores 127 para pressionado e 0 para não pressionado. Aliás, hoje em dias, alguns synths, como o Motif XS aceitam valores intermediários para o meio pedal nos timbres de piano.
Bom, controlar volume, pedal de sustain, de expressão, modwheel, pitchwheel, são coisas que esperamos de todos os synths. Mas e se o meu synth fizer algo diferente dos outros. Por exemplo, eu poderia querer alterar um padrão de configuração esotérico do meu synth. Ou talvez, o meu synth tivesse a maravilhosa habilidade de fazer café expresso (seria um sonho para alguns de nós!) Como poderemos controlar essas funcionalidades remotamente, via MIDI?
A resposta vem através do system exclusive. O system exclusive é uma forma de permitir que o padrão MIDI possa ser expandido através de um conjunto de mensagens dentro do fluxo de mensagens MIDI.
Para distinguir a mensagem sysex das outras, ela vem dentro de um ‘envelope’- começa sempre com o byte F0 (240 em hexadecimal) e termina sempre com o byte F7 (247 em hexadecimal). Para uma análise simples, vou mostrar como fazer o transpose para um módulo nanosynth em 2 semitons. Lembrando que esse módulo não tem interface de usuário, então esse pode ser um comando útil 🙂
A mensagem a ser enviada para o nanosynth seria essa:
F0 00 00 0E 0E 10 00 00 04 02 F7
Essa mensagem então pode ser analisada da seguinte forma:
- F0 – início da mensagem sysex
- 00 00 0E – código de fabricante da Alesis – indica que estou mandando uma mensagem pra um synth Alesis (cada fabricante tem um código diferente, e essa é outra parte obrigatória do sysex)
- 0E – Id da famíiia quadrasynth – porque estou mandando uma mensagem pra um synth dessa família.
- 10 – indica que quero editar um parâmetro
- 00 – Esse parâmetro é global
- 00 – página (jeito interno da alesis catalogar seus comandos. O comando a ser editado no modo global na página 0 é o transpose)
- 04 – pelo que to lendo aqui na documentação é o canal, quando eu coloquei essa mensagem, sei lá pq eu coloquei no canal 4 mas enfim.
- 02 – valor que estou enviando.
- F7 – Tchau sysex!
Enfim, essa é uma mensagem de exemplo, usando algumas coisas que eu tinha guardado aqui da época que tinha o nanosynth.
Basicamente, todo sysex se comporta dessa forma. O formato padrão é esse: cabeçalho (F0), código do fabricante, a mensagem que é definida de forma diferente por cada fabricante, então aí entra a consulta as famosas MIDI Implementation Charts, e a despedida, o F7 que encerra tudo.
A maioria dos controladores pode enviar apenas control change padrão por seus potênciometros e sliders, o Roland A800 pro consegue enviar sysex. O BCR-2000 consegue enviar sysex e na lista de discussão (em inglês) os usuários disponibilizam vários ‘mapas’ prontos para editar diversos synths e módulos.
Um exemplo de uso que eu já fiz: o Motif XS Rack, tem os mesmos timbres do Motif XS, mas não os mesmos controles. Existe um timbre de orgão Hammond que é feito de 8 drawbars (a forma de constituição de timbres do Motif ele tem 8 elementos, então 1 dos drawbars foi na verdade juntado com outro). Se fosse no Motif XS teclado, para controlar o volume de cada parte poderíamos usar os oito sliders, mas no módulo isso não está disponível. E aumentar o volume de cada slider não é possível via uma mensagem MIDI comum, mas sim via sysex apenas. Na época eu enviava as informações do meu controlador (o Axiom 61) para um software no computador, o MIDI OX. Entre as coisas legais que o MIDI OX pode fazer, ele pode traduzir uma mensagem na outra. Então eu traduzia o valor do slider para o sysex que o Motif receberia como volume daquele elemento em particular do timbre, e assim eu poderia controlar o volume dos 8 elementos, como se fossem drawbars.
Muitto bom á esplicação,bem claro!
A esplicação de mensagens MIDI sobre-sysex
parabéns!
Lindo ! É realmente uma tecnologia fascinante e bem atual apesar da idade, impressionante como algumas coisas não mudam com o tempo.
A informação foi muito útil pra mim, apesar de eu estar bem no início dos meus projetos.
Mas valeu pela explicação.