Site icon AranaCorp

Gerar sons com uma interface MIDI Arduino

Para gerar sons sintéticos e criar música usando uma interface no seu computador, é possível transformar o Arduino num dispositivo MIDI.

Material

Introdução ao protocolo MIDI

O MIDI (Musical Instrument Digital Interface) é um protocolo de comunicação entre instrumentos eletrônicos, controladores e software de música. Ele consiste em enviar uma série de bytes (comando e depois dados) a uma velocidade (baudrate) de 31250 para especificar o tipo de mensagem (tocar nota, parar nota, mudar de programa, etc.) e as informações associadas (nota tocada, programa selecionado, etc.). Veja aqui um resumo das mensagens MIDI.

Código para enviar mensagens MIDI com o Arduino

Veremos como enviar mensagens MIDI através da porta serial. Neste exemplo, enviaremos sucessivos comandos de notas como se apertássemos as teclas de um piano. Para tal, enviamos as seguintes informações, nesta ordem::

No protocolo MIDI, há um grande número de mensagens para realizar diferentes ações, como mudar de instrumento, modular notas, etc.

 int velocity = 100;//velocity of MIDI notes, must be between 0 and 127
 //higher velocity usually makes MIDI instruments louder
 
 int noteON = 144;//144 = 10010000 in binary, note on command
 int noteOFF = 128;//128 = 10000000 in binary, note off command

void setup() {
  Serial.begin(115200);
}

void loop() {
  for (int note=50;note<70;note++) {//from note 50 (D3) to note 69 (A4)
    MIDImessage(noteON, note, velocity);//turn note on
    delay(300);//hold note for 300ms
    MIDImessage(noteOFF, note, velocity);//turn note off
    delay(200);//wait 200ms until triggering next note
  }
}

void MIDImessage(int command, int MIDInote, int MIDIvelocity) {
  Serial.write(command);//send note on or note off command 
  Serial.write(MIDInote);//send pitch data
  Serial.write(MIDIvelocity);//send velocity data
}

Carregue o código acima no microcontrolador Arduino antes de prosseguir.

Obs: a velocidade da comunicação MIDI é de 31250. Neste exemplo, utilizaremos um conversor MIDI / Serial. Com isso poderemos utilizar qualquer baudrate.

Configuração da geração de som MIDI com o Windows

Configurar um instrumento MIDI virtual

Para gerar som, precisamos de um software de síntese sonora ou de uma DAW (Digital Audio Workstation). As DAWs podem ser um pouco complicadas de utilizar. Neste tutorial, usaremos um sintetizador de som virtual muito simples, o CoolSoft Virtual MIDI Synth.

Para que o software de síntese funcione, é necessário utilizar uma base de som (SoundFont) para converter as mensagens MIDI em sons vindos de um piano, por exemplo. Há uma lista de SoundFonts disponível na página CoolSoft. Em seguida, basta fazer o download do arquivo .sf2 desejado e adicioná-lo na interface CoolSoft.

Configuração do conversor Serial / MIDI

A comunicação MIDI é um protocolo específico diferente da comunicação USB. Para que as mensagens MIDI enviadas pelo Arduino via USB sejam levadas em conta, é necessário um conversor Serial / MIDI

Para tal, usamos o software Hairless Midi to Serial Bridge, que permite converter mensagens seriais em mensagens MIDI.

Se ativar o Debug MIDI messages, poderá ver rolarem as notas tocadas e as suas velocidades .

Se a saída de áudio do seu computador estiver ligada, ouvirá as notas musicais.

Obs: Não é possível carregar o código para o Arduino se a opção Serial <->MIDI Bridge On estiver selecionada.

Depois de criar a sua primeira interface MIDI com o Arduino, já pode dar os seus primeiros passos na síntese sonora.

Aplicações

Fontes

Exit mobile version