Criando controladoras MIDI — parte 1

Gabriel Yshay
4 min readJan 6, 2020

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.

Launchpad, uma das controladoras MIDI mais famosas

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!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Gabriel Yshay
Gabriel Yshay

Written by Gabriel Yshay

Data Science, Hardware and Music

No responses yet

Write a response