Criando controladoras MIDI — parte 1
Para produzir ou tocar musica com computadores hoje em dia uma das partes mais importantes são as controladoras MIDI. Essas controladoras não fazem som, mas te ajudam a controlar os sons que seu computador está fazendo.
Aqui vamos entender como essas coisas funcionam e como criar nossas próprias controladoras MIDI usando um Arduino.

Então o que é MIDI?
MIDI significa Musical Instrument Digital Interface ou Interface digital de controle de instrumentos musicais.
O MIDI tem muitas mensagens, vamos focar em algumas especificamente, mas se quiser saber mais sobre as outras que existem e como usar cada uma veja a documentação do MIDI.
NoteOn é o primeiro que vamos olhar. Essa mensagem diz para o computador que uma nota foi apertada. Ela envia 3 números: primeiro a informação de que se trata de um noteOn e o canal (144 + canal, vamos usar o canal zero, então mandamos só 144 mesmo), depois a nota (36 é Dó, 37 Dó sustenido, 38 Ré e assim em diante). Por ultimo é enviada a velocidade, que é a intensidade com que a nota foi apertada (0 é não apertada e 127 é com força máxima).
NoteOff é similar ao noteOn, porém para desligar uma nota que está tocando. Podemos usar o próprio comando noteOff, mas acho mais simples usarmos o noteOn com velocidade 0 (144, nota, 0).
O ultimo que vamos olhar nessa parte é o Control Change ou mudança de controle. Essa mensagem é bastante importante pois com ela conseguimos controlar algum parâmetro do som que o computador está fazendo de fato. Para mandar um CC no canal 0, primeiro mandamos o valor 176 (176 + canal), depois o numero que identifica aquele controle (esses números vão de 0 até 119, podemos usar qual quisermos, o computador depois se vira pra entender o que fazer com ele) e por ultimo o valor, que vai de 0, que é o mínimo do controle até 127, que é o máximo.
O que é o Arduino
O Arduino é uma plaquinha para desenvolvimento focada em quem não é um programador com anos de experiencia. Por isso todas as funções são bastante simples e diretas para o que você quiser fazer.

O Arduino tem uma porta USB para se comunicar com o computador (é ela que vamos usar para mandar MIDI), 13 portas digitais (que leem ou escrevem só 1 ou 0, vamos usar elas para ler botões e ligar LEDs) e 5 portas analógicas, que servem para ler qualquer valor entre 0 e 5 volts(nos vamos usa-las para ler potenciômetros).
O código do Arduino é organizado em duas partes, a primeira é o setup, esse pedaço roda uma vez quando o Arduino liga, nele vamos configurar tudo que formos usar (mais pra frente a gente vê o que). A segunda parte é o loop, que fica repetindo infinitamente enquanto o Arduino está ligado.
void setup() {
pinMode(13, OUTPUT);
}void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
Vamos analizar esse exemplo, se quiser coloque ele no seu Arduino (para isso baixe a IDE do Arduino, cole o código e clique em Upload).
No setup definimos que a porta 13 — que ja é conectada internamente com o LED amarelo na placa — como saida.
No loop nos ligamos o LED, esperamos 500ms (ou meio segundo) e o desligamos, esperamos mais meio segundo e começamos de novo.
Isso tem o efeito de piscar o LED! Como fazer o LED piscar mais rápido?
Mandando MIDI com o Arduino
void setup() {
Serial.begin(115200); // iniciamos a comunicação serial (pela USB)
}void loop() {
enviaNoteOn(36, 127); // noteOn na nota 36 com força máxima
delay(300); // espera 300ms
enviaNoteOn(36, 0); //noteOff
delay(300); // espera 300ms}void enviaNoteOn(byte nota, byte velocidade){
Serial.write(144); // noteOn no canal 0
Serial.write(nota); // manda a nota
Serial.write(velocidade); // manda a velocidade}
Esse nosso programa manda noteOn na nota 36 e depois um noteOff na mesma nota. Para usar o nosso Arduino para controlar alguma coisa, vamos precisar de um programa para interpretar as notas que o Arduino manda e converte-las para um formato que o computador consiga usar. O que eu acho mais simples e mais fácil de usar é o HairlessMIDI, instale ele no seu computador, você vai precisar para tudo que vamos fazer aqui.
Quando tiver o HairlessMIDI instalado, escolha na porta serial o seu Arduino e na saída midi você vai precisar de uma porta MIDI virtual, alguns programas existem para fazer isso, procure o que serve para o seu sistema operacional (LoopBe para windows, no Mac isso não é necessário, ja existe o IAC bus)
Para testar o funcionamento de tudo você pode usar seu software de produção, como Ableton e FL studio ou usar algum plugin. Eu achei esse site que você pode ligar o seu dispositivo midi e ele simula um sintetizador (você vai precisar escolher no canto direito inferior qual a entrada midi que no caso é a sua porta virtual)
Agora você deve ouvir um som se repetindo! show.
Na próxima parte vamos ver como usar botões para mandar noteOn (o começo de um teclado!). Até la!