Propaganda

Como 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 por Internet das Coisas (IoT) A Internet das Coisas: 10 produtos úteis que você deve experimentar em 2016A Internet das Coisas está aumentando em 2016, mas o que isso significa exatamente? Como você se beneficia pessoalmente da Internet das Coisas? Aqui estão alguns produtos úteis para ilustrar. consulte Mais informação projetos, um simples Arduino Uno (quais são os diferentes tipos de arduino? Guia de compra do Arduino: Qual placa você deve adquirir?Existem tantos tipos diferentes de placas Arduino por aí que você seria perdoado por estar confuso. Qual você deve comprar para o seu projeto? Vamos ajudar, com este guia de compra do Arduino! consulte Mais informação ) tem energia mais que suficiente para este projeto.

Primeira vez usando um Arduino? Não se preocupe, temos um completo

Guia para iniciantes do Arduino Introdução ao Arduino: Guia para iniciantesO Arduino é uma plataforma de prototipagem eletrônica de código aberto baseada em hardware e software flexível e fácil de usar. Destina-se a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos. consulte Mais informação para ler antes de abordar este projeto.

Arduino-Midi-Controller-Breadboard

O que é MIDI?

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

MIDI suporta 16 canais. Isso significa que cada cabo pode suportar 16 dispositivos diferentes, comunicando-se independentemente. Os dispositivos são conectados usando 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 pode ser usada uma interface USB-MIDI.

MIDI-Cable-Male

Mudança de Controle e Mudança de Programa

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

As mensagens Control Change (CC) contêm um número de controlador e um valor entre 0 e 127. As mensagens CC são frequentemente usadas para alterar configurações como volume ou afinação. Os 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 Program Change (PC) são mais simples que as mensagens CC. As mensagens do PC consistem em um único número e são usadas para alterar a predefinição ou patch em um dispositivo. Às vezes, as mensagens do PC são conhecidas como "Patch Change". 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ê precisará

  • Arduino
  • Soquete fêmea DIN de 5 pinos
  • 2 resistores de 220 ohm
  • 2 x 10k ohm resistores
  • 2 x interruptores momentâneos
  • Fios de conexão
  • Breadboard
  • Cabo MIDI
  • Dispositivo MIDI ou interface USB

Plano de Construção

Este projeto será bastante simples. Obviamente, você pode adicionar mais botões ou hardware para atender às suas necessidades. Quase todo 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 sobre um tábua de pão Eletrônica para iniciantes: 10 habilidades que você precisa conhecerMuitos de nós nunca tocaram em um ferro de soldar - mas tornar as coisas incrivelmente gratificantes. Aqui estão dez das habilidades básicas em eletrônica DIY para ajudar você a começar. consulte Mais informação aqui, no entanto, é possível transferi-lo para uma caixa de projeto e conectores soldados para uma solução robusta.

Montagem do circuito

Arduino-Midi-Controlador-Circuito

Conexão MIDI

MIDI-Pinout

Conecte seu soquete MIDI da seguinte maneira:

  • Pino MIDI 5 ao Arduino Transmit (TX) 1 via um resistor de 220 ohm
  • Pino MIDI 4 ao Arduino + 5V através de um resistor de 220 ohm
  • Pino MIDI 2 no terra do 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 diretamente para o chão (BAIXO) através 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 alteração 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 no terra do Arduino através de um resistor de 10k ohm
  • Lado direito do botão no pino do 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 à placa de ensaio está enviando dados, portanto é a saída. Seu computador está recebendo os dados, portanto é a entrada. Este projeto utiliza o excelente Arduino Biblioteca MIDI v4.2 por quarenta e sete efeitos. Depois de instalar a Biblioteca, você pode incluí-la no seu código, acessando Esboço> Incluir biblioteca> 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 Introdução ao Arduino Starter Kit - Instalação de drivers e configuração da placa e da portaEntão, você comprou um kit inicial do Arduino e, possivelmente, alguns outros componentes aleatórios - e agora? Como você realmente começou a programar essa coisa do Arduino? Como você configura... consulte Mais informação para o 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 no Ferramentas> Placa e Ferramentas> Porta menus).

#incluir 
#incluir 
#incluir 
#incluir 
#incluir  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // cria um objeto MIDI chamado midiOut void setup () {Serial.begin (31250); // setup serial para MIDI. } void loop () {midiOut.sendControlChange (56,127,1); // envia um MIDI CC - 56 = nota, 127 = velocidade, 1 = atraso do canal (1000); // espera 1 segundo midiOut.sendProgramChange (12,1); // envia um PC MIDI - 12 = valor, 1 = atraso do canal (1000); // aguarde 1 segundo. }

Este código enviará uma mensagem CC, aguarde 1 segundo, envie uma mensagem para PC e aguarde 1 segundo indefinidamente. Se tudo estiver funcionando corretamente, você verá uma mensagem no seu monitor MIDI.

Se nada acontecer, não entre em pânico! Tente a solução de problemas:

  • Verifique se todas as conexões estão corretas
  • Verifique se a porta MIDI está conectada corretamente - deve haver 2 pinos extras 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 seu cabo MIDI está conectado ao entrada na sua interface USB-MIDI
  • Verifique se o Arduino tem poder
  • Instale o driver correto para sua interface USB-MIDI

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

Teste de botão

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

const int buttonOne = 6; // atribui o pino do botão à variável. const int buttonTwo = 7; // atribui o pino do botão à variável void setup () {Serial.begin (9600); // setup serial para o texto pinMode (buttonOne, INPUT); // botão de configuração como entrada pinMode (buttonTwo, INPUT); // botão de configuração como entrada. } void loop () {if (digitalRead (buttonOne) == HIGH) {// verifica o estado do botão delay (10); // re-rejeição do software if (digitalRead (buttonOne) == HIGH) {// verifica novamente o estado do botão Serial.println ("Button One Works!"); // atraso no resultado do log (250); }} if (digitalRead (buttonTwo) == HIGH) {// verifica o atraso do estado do botão (10); // retorno do software if (digitalRead (buttonTwo) == HIGH) {// verifica novamente o estado do botão Serial.println ("Button Two Works!"); // atraso no resultado do log (250); } } }

Execute esse código (mas mantenha o cabo USB conectado) e abra o Serial Monitor (Superior direito> Monitor serial). Quando você pressiona um botão, você verá "Button One Works!" ou "Button Two Works!" dependendo do botão que você pressionou.

Há uma observação importante a ser tirada deste exemplo - o software rebate. Este é um atraso simples de 10 milissegundos (ms) entre a verificação do botão e a verificação novamente. Isso aumenta a precisão do pressionamento do botão e ajuda a impedir o ruído de acionar 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.

#incluir 
#incluir 
#incluir 
#incluir 
#incluir const int buttonOne = 6; // atribui o pino do botão à variável. const int buttonTwo = 7; // atribui o pino do botão à variável MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // cria um objeto MIDI chamado midiOut void setup () {pinMode (buttonOne, INPUT); // botão de configuração como entrada pinMode (buttonTwo, INPUT); // botão de configuração como input Serial.begin (31250); // configura a saída MIDI. } void loop () {if (digitalRead (buttonOne) == HIGH) {// verifica o estado do botão delay (10); // retorno do software if (digitalRead (buttonOne) == HIGH) {// verifica novamente o estado do botão midiOut.sendControlChange (56,127,1); // envia um MIDI CC - 56 = nota, 127 = velocidade, 1 = atraso do canal (250); }} if (digitalRead (buttonTwo) == HIGH) {// verifica o atraso do estado do botão (10); // retorno do software if (digitalRead (buttonTwo) == HIGH) {// verifica novamente o estado do botão midiOut.sendControlChange (42,127,1); // envia um MIDI CC - 42 = nota, 127 = velocidade, 1 = atraso do canal (250); } } }

Nota - você não poderá 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 (valor, canal); 

Em ação

Abaixo está uma demonstração como controlador para Ableton Live (Melhor software de DJ para todos os orçamentos O melhor software de DJ para qualquer orçamentoUm bom software de mixagem pode fazer toda a diferença no seu desempenho. Independentemente de você estar usando um Mac, Windows ou Linux, todos os níveis de habilidade e orçamento são atendidos se você deseja iniciar o DJing. consulte Mais informação ). O canto superior direito mostra os medidores de áudio e o meio superior mostra as mensagens midi recebidas (via Monitor MIDI no OS X).

Você criou um controlador MIDI?

Existem muitos usos práticos para um controlador MIDI personalizado. Você pode construir uma vasta unidade com controle de pé ou um elegante controlador de estúdio. E se você estiver interessado em comprar um, aqui estão os melhores controladores MIDI USB Os 9 melhores controladores MIDI USB para músicosÀ procura de um controlador MIDI USB? Aqui estão os melhores controladores MIDI que você pode comprar agora, independentemente do orçamento. consulte Mais informação Você pode comprar.

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

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