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.

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.
Propaganda

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. Enquanto o Raspberry Pi pode ter levado a coroa para a Internet das Coisas (IoT) A Internet das Coisas: 10 Produtos úteis que você deve experimentar em 2016 A Internet das Coisas: 10 Produtos úteis que você deve experimentar em 2016 A Internet das Coisas está crescendo 2016, mas o que isso significa exatamente? Como você, pessoalmente, se beneficia da Internet das Coisas? Aqui estão alguns produtos úteis para ilustrar. Leia mais projetos, um simples Arduino Uno (quais são os diferentes tipos de Arduino? Arduino Guia de Compra: Qual placa você deve obter? Arduino Guia de Compra: Qual placa você deve ter? Existem tantos tipos diferentes de placas Arduino lá fora, você ser perdoado por ser confuso. Que você deve comprar para o seu projeto? Deixe-nos ajudar, com este guia de compra Arduino! Leia mais) tem poder mais do que suficiente para este projeto.

Primeira vez usando um Arduino? Não se preocupe, temos um guia completo do Arduino para iniciantes Introdução ao Arduino: um guia para principiantes Introdução ao Arduino: um guia para principiantes O Arduino é uma plataforma de prototipagem eletrônica de código aberto baseada em hardware e software flexível e fácil de usar. É destinado a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos. Leia mais para ler antes de abordar este projeto.

Arduino-Midi-Controller-Breadboard

O que é o MIDI?

MIDI significa Interface Digital para Instrumentos Musicais. Ele descreve um modo padrão para os dispositivos musicais se comunicarem entre si. Se você possui um teclado eletrônico, provavelmente tem uma interface MIDI. Embora existam alguns detalhes técnicos envolvidos na implementação do MIDI, é importante lembrar que o 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 criar diferentes sons ou parâmetros de controle.

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

MIDI-Cable-Male

Mudança de Controle e Mudança de Programa

Existem dois tipos principais de mensagens MIDI: Control Change e Program Change.

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

Mensagens Program Change (PC) são mais simples que mensagens CC. As mensagens do PC consistem em um único número e são usadas para alterar a predefinição ou o patch em um dispositivo. Às vezes, as mensagens do PC são conhecidas como “alteração de 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ê precisa

  • Arduino
  • Soquete fêmea DIN de 5 pinos
  • Resistências de 2 x 220 ohm
  • Resistências de 2 x 10k ohm
  • 2 x interruptores momentâneos
  • Fios de ligação
  • Tábua de pão
  • Cabo MIDI
  • Dispositivo MIDI ou interface USB

Água e Madeira 5 Pcs DIN 5 Pin PCB Montagem Tomadas Femininas para PC Teclado Água & Madeira 5 Pcs DIN 5 Pin PCB Montagem Tomadas Femininas para PC Teclado Compre Agora No Amazon $ 4.59

Plano de construção

Este projeto será bem 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 tábua de pão Eletrônica para iniciantes: 10 habilidades que você precisa saber Eletrônica para iniciantes: 10 habilidades que você precisa conhecer Muitos de nós nunca tocaram em um ferro de solda - mas fazer coisas pode ser incrivelmente recompensador. Aqui estão dez das habilidades de eletrônica DIY mais básicas para ajudá-lo a começar. Leia mais aqui, no entanto, é possível transferi-lo para uma caixa de projeto e conectores soldados para uma solução robusta.

Conjunto 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 através de um resistor de 220 ohm
  • Pino MIDI 4 para Arduino + 5V via resistor de 220 ohm
  • Pino MIDI 2 para o terra do Arduino

Conexão de Botão

Os botões funcionam alterando a resistência que o Arduino “vê”. O pino Arduino passa pelo interruptor direto para o terra ( LOW ) 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 ( HIGH ). O Arduino pode detectar essa alteração usando o comando digitalRead (pin) . Conecte os botões aos pinos 6 e 7 na entrada / saída digital do Arduino (E / S). Ligue os dois botões:

  • Lado esquerdo do botão para + 5V
  • Lado direito do botão para o terra do Arduino através de um resistor de 10k ohm
  • Lado direito do botão para 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 com fio na placa de montagem está enviando dados, então é a saída. Seu computador está recebendo os dados, portanto, é a entrada. Este projeto usa a excelente Arduino MIDI Library v4.2 de Forty Seven Effects. Depois de instalar a biblioteca, você poderá incluí-la no seu código indo até Sketch> Include Library> MIDI .

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

  • Monitor MIDI para OS X
  • MIDI-OX para Windows
  • KMidimon para Linux

Conecte o Arduino Começando com seu Arduino Starter Kit - Instalando Drivers & Configurando o Board & Port Começando com seu Arduino Starter Kit - Instalando Drivers & Configurando o Board & Port Então, você comprou para si um kit de inicialização do Arduino, e possivelmente alguns outros componentes legais aleatórios - e agora? Como você realmente começou a programar essa coisa do Arduino? Como você configura ... Leia Mais no seu computador e faça o upload do seguinte código de teste (não se esqueça de selecionar a placa e a porta corretas nos menus Ferramentas> Placa e Ferramentas> Porta ).

#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, aguardar 1 segundo, enviar uma mensagem de PC e aguardar 1 segundo indefinidamente. Se tudo estiver funcionando corretamente, você deverá ver uma mensagem no seu monitor MIDI.

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

  • Assegure-se de que todas as conexões estejam corretas
  • Verifique se a porta MIDI está conectada corretamente - deve haver 2 pinos sobressalentes nas bordas externas
  • Verifique novamente 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 à entrada da interface USB-MIDI
  • Certifique-se de que o Arduino tenha energia
  • Instale o driver correto para sua interface USB-MIDI

Se você ainda estiver com problemas, talvez valha a pena conferir sua placa de montagem. Placas baratas às vezes podem ser muito inconsistentes e de baixa qualidade - aconteceu comigo enquanto trabalhei neste projeto.

Teste de botão

Agora é hora de testar se os botões estão funcionando corretamente. Carregue o 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, você deve ver “Button One Works!” Ou “Button Two Works!”, Dependendo do botão que você pressionou.

Há uma nota importante a ser tirada deste exemplo - o software de retorno. Este é um atraso simples de 10 milissegundos (ms) entre a verificação do botão e a verificação do botão novamente. Isso aumenta a precisão da pressão do botão e ajuda a evitar o ruído que aciona 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 poderá usar o Serial.println () com saída MIDI.
Se você quiser enviar uma mensagem de 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 cada orçamento O melhor software de DJ para cada orçamento O melhor software de DJ para cada orçamento Bom software de mixagem pode fazer toda a diferença em seu desempenho. Se você estiver usando um Mac, Windows ou Linux, todos os níveis de habilidade e orçamento são atendidos se você quiser iniciar o DJing. Leia mais). O canto superior direito mostra os medidores de áudio e o meio superior mostra as mensagens midi de entrada (via MIDI Monitor no OS X).

Você fez um controlador MIDI?

Há muitos usos práticos para um controlador MIDI personalizado. Você pode construir uma vasta unidade de controle de pé ou um controlador de estúdio elegante. Você fez um controle MIDI personalizado? Deixe-me saber nos comentários, eu adoraria vê-los!

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

In this article