Como fazer um controlador MIDI com um Arduino

Como fazer um controlador MIDI com um Arduino

Como um músico que acumulou uma coleção de instrumentos musicais e caixas de ruído, o humilde Arduino é a ferramenta perfeita para criar um controlador MIDI personalizado. Embora o Raspberry Pi possa ter levado a coroa para projetos de Internet das Coisas (IoT), um simples Arduino Uno (quais são os diferentes tipos de Arduino?) Tem potência mais do que suficiente para este projeto.





Primeira vez usando um Arduino? Não se preocupe, nós temos um completo Guia do iniciante do Arduino para ler antes de abordar este projeto.





O que é MIDI?

MIDI significa Interface Digital de Instrumento Musical. Ele descreve uma maneira padrão para dispositivos musicais se comunicarem uns com os outros. Se você possui um teclado eletrônico, provavelmente possui uma interface MIDI. Embora existam alguns detalhes técnicos envolvidos na implementação de MIDI, é importante lembrar que MIDI não é áudio! Os dados MIDI são um conjunto simples de instruções (uma instrução é chamada de 'mensagem') que outro dispositivo pode implementar para fazer sons ou parâmetros de controle diferentes.





MIDI suporta 16 canais. Isso significa que cada cabo pode suportar 16 dispositivos diferentes que se comunicam independentemente uns com os outros. Os dispositivos são conectados por meio de um cabo DIN de 5 pinos. DIN significa 'Instituto Alemão de Padronização' e é simplesmente um cabo com cinco pinos dentro do conector. O USB geralmente é usado no lugar do DIN de 5 pinos, ou uma interface USB-MIDI pode ser usada.

MIDI-Cabo-Macho



Mudança de controle e mudança de programa

Existem dois tipos principais de mensagem MIDI: Mudança de controle e Mudança de programa.

As mensagens de alteração de controle (CC) contêm um número de controlador e um valor entre 0 e 127. As mensagens CC costumam ser usadas para alterar configurações como volume ou tom. Dispositivos que aceitam MIDI devem vir com um manual explicando quais canais e mensagens são configurados por padrão e como alterá-los (conhecido como mapeamento MIDI).





As mensagens de mudança de programa (PC) são mais simples do que as mensagens CC. As mensagens do PC consistem em um único número e são usadas para alterar o preset ou patch em um dispositivo. As mensagens do PC às vezes são conhecidas como 'Alteração do patch'. Semelhante às mensagens CC, os fabricantes devem fornecer um documento descrevendo quais predefinições são alteradas por uma mensagem específica.

O que você vai precisar

  • Arduino
  • Soquete fêmea DIN de 5 pinos
  • 2 x resistores de 220 ohms
  • 2 x resistores de 10k ohm
  • 2 x interruptores momentâneos
  • Fios de conexão
  • Tábua de pão
  • Cabo MIDI
  • Dispositivo MIDI ou interface USB
Água e Madeira 5 Pcs DIN 5 Pinos PCB de Montagem de Soquetes Femininos para Teclado de PC COMPRE AGORA NA AMAZON

Plano de construção

Este projeto será bastante simples. É claro que você pode adicionar mais botões ou hardware para atender às suas necessidades. Quase qualquer Arduino será adequado - apenas três pinos são necessários para este exemplo. Este projeto consiste em dois botões para controlar o programa, uma porta MIDI para enviar os dados e um dispositivo para receber as mensagens. Este circuito foi construído em uma placa de ensaio aqui, no entanto, é possível transferi-lo para uma caixa de projeto e conectores soldados para uma solução robusta.





Montagem de Circuito

Arduino-Midi-Controller-Circuit

Conexão MIDI

MIDI-Pinout

Conecte seu soquete MIDI da seguinte maneira:

  • Pino MIDI 5 para Arduino Transmit (TX) 1 por meio de um resistor de 220 ohms
  • Pino MIDI 4 para Arduino + 5V por meio de um resistor de 220 ohms
  • Pino MIDI 2 para aterramento Arduino

Conexão de botão

Os botões funcionam alterando a resistência que o Arduino 'vê'. O pino do Arduino passa pelo interruptor direto para o aterramento ( BAIXO ) por meio de um resistor de 10k ohm (um resistor 'pull down', garantindo que o valor permaneça baixo). Quando o botão é pressionado, o valor visto pelo circuito muda para + 5v sem um resistor ( ALTO ) O Arduino pode detectar essa mudança usando o digitalRead (pin) comando. Conecte os botões aos pinos 6 e 7 na entrada / saída digital (E / S) do Arduino. Conecte os dois botões:

  • Lado esquerdo do botão para + 5V
  • Lado direito do botão para o Arduino Ground por meio de um resistor de 10k ohm
  • Lado direito do botão para o pino Arduino (6 ou 7)

Teste MIDI

Agora que todo o hardware está pronto, é hora de testá-lo. Você precisará de uma interface USB-MIDI (muitas interfaces de áudio podem fazer isso) e um cabo MIDI. A porta MIDI conectada na placa de ensaio está enviando dados, portanto, é a saída. Seu computador está recebendo os dados, portanto, é a entrada. Este projeto usa o excelente Arduino Biblioteca MIDI v4.2 por quarenta e sete efeitos. Depois de instalar a Biblioteca, você pode incluí-la em seu código acessando Sketch> Incluir Biblioteca> MIDI .

Você também precisará de um programa para monitorar os dados MIDI de entrada:

Conecte o Arduino ao seu computador e carregue o seguinte código de teste (não se esqueça de selecionar a placa e a porta corretas do Ferramentas> Tabuleiro e Ferramentas> Porta menus).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Este código irá enviar uma mensagem CC, espere 1 segundo, enviará uma mensagem para o PC e então espere 1 segundo indefinidamente. Se tudo estiver funcionando corretamente, você deverá ver uma mensagem no monitor MIDI.

Se nada acontecer, não entre em pânico! Tente solucionar o problema:

  • Certifique-se de que todas as conexões estão corretas
  • Verifique se a porta MIDI está conectada corretamente - deve haver 2 pinos sobressalentes nas bordas externas
  • Verifique se o circuito está correto
  • Verifique se o circuito está conectado a uma interface USB-MIDI com um cabo MIDI
  • Verifique se o cabo MIDI está conectado ao entrada em sua interface USB-MIDI
  • Certifique-se de que o Arduino tenha energia
  • Instale o driver correto para sua interface USB-MIDI

Se você é ainda tendo problemas, pode valer a pena verificar sua placa de ensaio. Pranchas baratas às vezes podem ser muito inconsistentes e de baixa qualidade - aconteceu comigo enquanto trabalhava neste projeto.

Teste de botão

Agora é hora de testar se os botões estão funcionando corretamente. Faça upload do seguinte código de teste. O MIDI não precisa estar conectado para testar esta parte.

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Execute este código (mas mantenha o cabo USB conectado) e abra o Monitor Serial ( Superior direito> Monitor serial ) Quando você pressiona um botão, deve ver 'Botão Um Funciona!' ou 'Botão Dois Funciona!' dependendo do botão que você pressionou.

Há uma observação importante para tirar deste exemplo - o software de-bounce. Este é um atraso simples de 10 milissegundos (ms) entre verificar o botão e, em seguida, verificar o botão novamente. Isso aumenta a precisão do pressionamento do botão e ajuda a evitar que ruídos acionem o Arduino. Você não precisa fazer isso, embora seja recomendado.

Criando o controlador

Agora que tudo está conectado e funcionando, é hora de montar o controlador completo.

Este exemplo enviará uma mensagem CC diferente para cada botão pressionado. Estou usando isso para controlar o Ableton Live 9.6 no OS X. O código é semelhante aos dois exemplos de teste acima.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Nota - você não será capaz de usar Serial.println () com saída MIDI.

Se você quiser enviar uma mensagem para o PC em vez de um CC, basta substituir:

midiOut.sendControlChange(42,127,1);

Com:

midiOut.sendProgramChange(value, channel);

Em ação

Abaixo está uma demonstração como um controlador para Ableton Live ( Melhor software de DJ para todos os orçamentos ) A parte superior direita mostra os medidores de áudio e a parte superior central mostra as mensagens midi recebidas (via Monitor MIDI no OS X).

android lê mensagens de texto em voz alta

Você fez um controlador MIDI?

Existem muitos usos práticos para um controlador MIDI personalizado. Você poderia construir uma vasta unidade controlada pelo pé ou um controlador de estúdio elegante. E se você estiver interessado em comprar um, aqui estão os melhores controladores USB MIDI que você pode comprar.

Crédito da imagem: Keith Gentry via Shutterstock.com

Esperamos que goste dos itens que recomendamos e discutimos! A MUO tem afiliados e parcerias patrocinadas, por isso recebemos uma parte da receita de algumas de suas compras. Isso não afetará o preço que você paga e nos ajuda a oferecer as melhores recomendações de produtos.

Compartilhado Compartilhado Tweet O email Vale a pena atualizar para o Windows 11?

O Windows foi redesenhado. Mas isso é suficiente para convencê-lo a mudar do Windows 10 para o Windows 11?

Leia a seguir
Tópicos relacionados
  • faça você mesmo
  • DJ Software
  • Arduino
  • Eletrônicos
  • MEIO-DIA
Sobre o autor Joe Coburn(136 artigos publicados)

Joe é graduado em Ciência da Computação pela University of Lincoln, no Reino Unido. Ele é um desenvolvedor de software profissional e, quando não está pilotando drones ou escrevendo música, pode ser encontrado tirando fotos ou produzindo vídeos.

Mais de Joe Coburn

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever