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. Enquanto o Raspberry Pi pode ter tomado a coroa para Internet of Things (Internet das coisas)

projetos, um simples Arduino Uno (quais são os diferentes tipos de Arduino?) Tem potência mais do que suficiente para este projeto.A Internet das coisas: 10 produtos úteis Você deve tentar em 2016A Internet das coisas: 10 produtos úteis Você deve tentar em 2016A Internet das Coisas está aumentando em 2016, mas o que isso significa exatamente? Como você pessoalmente se beneficiar da Internet das Coisas? Aqui estão alguns produtos úteis para ilustrar.consulte Mais informação

Primeira vez usando um Arduino? Não se preocupe, nós temos uma completa guia de principiante Arduino para ler antes de enfrentar este projeto.

Arduino-Midi-Controller-Breadboard

O que é MIDI?

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

MIDI suporta 16 canais. Isto significa que cada cabo 16 pode suportar dispositivos diferentes comunicar de forma independente entre si. Os dispositivos são ligados através de um cabo DIN 5-pino. DIN significa “Instituto Alemão de Normalização”, e é simplesmente um cabo com cinco pinos dentro do conector. USB é muitas vezes usado no lugar de DIN 5 pinos, ou uma interface USB-MIDI pode ser usado.

MIDI-cabo-Male

Mudança de controle e mudança de programa

Existem dois principais tipos de mensagens MIDI: Mudança de controle e alteração do programa.

Controle de Mudança (CC) mensagens contêm um número controlador e um valor entre 0 e 127. mensagens CC são frequentemente usados ​​para alterar as configurações como volume ou arremesso. Dispositivos que aceitam MIDI deve vir com um manual explicando o que canais e mensagens são configurados por padrão, e como alterá-las (conhecido como mapeamento MIDI).

Program Change (PC) mensagens são mais simples do que as mensagens CC. mensagens de PC consistem em um único número, e são usados ​​para alterar a predefinição ou patch em um dispositivo. mensagens de PC são, por vezes conhecido como “Patch Change”. Semelhante às mensagens CC, os fabricantes devem fornecer um documento descrevendo o que predefinições são alteradas por uma mensagem particular.

Video: Fazendo música com Arduino: Construindo um Controlador MIDI - Aula 1

O Que Você Precisa

  • Arduino
  • 5 pinos DIN tomada fêmea
  • 2 x 220 ohm resistores
  • 2 x 10k resistores ohm
  • 2 x interruptores momentâneas
  • fios de gancho-se
  • placa de ensaio
  • cabo MIDI
  • dispositivo MIDI ou interface USB
agua & Madeira 5 Pcs DIN 5 Pin PCB montagem Sockets fêmeas para PC Keyboardagua & Madeira 5 Pcs DIN 5 Pin PCB montagem Sockets fêmeas para PC Keyboard5 Pcs DIN 5 Pin PCB montagem Sockets fêmeas para PC Keyboard Compre Agora No Amazon $ 2,94

Plano de construir

Este projecto vai ser bastante simples. Pode, claro, adicionar mais botões ou hardware para atender às suas necessidades. Quase todo o 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 um placa de ensaio aqui, no entanto, é possível transferi-lo para uma caixa de projeto e conectores soldadas para uma solução robusta.

Assembléia de circuito

Arduino-Midi-Controller-Circuito

Conexão MIDI

MIDI-Pinout

Fio até sua tomada MIDI como segue:

  • MIDI pino 5 a Arduino de transmissão (TX) 1 através de um resistor de 220 ohm
  • pino MIDI 4 a Arduino + 5V através de um resistor de 220 ohm
  • pin MIDI 2 a terra Arduino

botão Connection

Os botões funcionam alterando a resistência do Arduino “vê”. O pino Arduino passa pelo interruptor direto para o solo (BAIXO) Através de uma 10k ohm resistor (a “puxar para baixo” resistor, garantindo o valor permanece baixo). Quando o botão é pressionado, o valor visto pelas mudanças circuito para + 5V sem um resistor (ALTO). O Arduino pode detectar essa alteração usando o digitalRead (pinos) comando. Ligar os botões para os pinos 6 e 7 sobre o Arduino entrada digital / saída (I / O). Ligue ambos os botões:

  • Lado esquerdo do botão para + 5V
  • lado direito do botão para Arduino terra através de um 10k ohm resistor
  • lado direito do botão para Arduino pin (6 ou 7)

Teste MIDI

Agora que todo o hardware está acabado, é hora de testá-lo. Você vai precisar de uma interface USB-MIDI (muitas interfaces de áudio pode fazer isso) e um cabo MIDI. A porta MIDI ligado em cima da placa de ensaio é o envio de dados, por isso é a saída. Seu computador está a receber os dados, portanto, é a entrada. Este projeto utiliza o excelente v4.2 Arduino Biblioteca MIDI por quarenta e sete Effects. Depois de instalar a biblioteca, você pode incluí-lo em seu código, indo para Esboço gt; incluem Biblioteca gt; MIDI.

Video: Sintetizador(zinho) na Protoboard - Arduino Tutorial

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

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

Ligue o Arduino para o computador e carregar o seguinte código de teste (não se esqueça de selecionar a placa correta e a porta do Ferramentas gt; Borda e Ferramentas gt; Porta menus).Primeiros passos com o Arduino Starter Kit - Instalação de drivers & Configurando O Conselho & PortaPrimeiros passos com o Arduino Starter Kit - Instalação de drivers & Configurando O Conselho & PortaEntão, você comprou-se um starter kit Arduino, e possivelmente alguns outros componentes legais aleatórios - e agora? Como você realmente começar com programação esta coisa Arduino? Como você configurá-lo ...consulte Mais informação



#incluir #incluir #incluir #incluir #incluir MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiout)- // cria um objeto MIDI chamado midioutvazio configuração() {Serial.início(31250)- // série de configuração para MIDI}vazio laço() {midiout.sendControlChange(56,127,1)- // enviar um MIDI CC - 56 = nota, 127 = velocidade, um canal =demora(1000)- // espera um segundomidiout.sendProgramChange(12,1)- // enviar um PC MIDI - 12 = valor, 1 = canaldemora(1000)- // espera um segundo}

Este código irá enviar uma mensagem CC, espere um segundo, enviar uma mensagem PC e depois esperar um segundo indefinidamente. Se tudo estiver funcionando corretamente, você deve ver uma mensagem aparecer no monitor MIDI.

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

  • Assegurar que todas as ligações estão correctas
  • Verifique a porta MIDI está conectado corretamente - não deve haver 2 pinos peças nas bordas externas
  • Verifique o circuito está correto
  • Verifique se o circuito está conectado a uma interface USB-MIDI com um cabo MIDI
  • Verifique o cabo MIDI está ligado à entrada em 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 verificar a sua placa de ensaio. placas baratos às vezes pode ser muito inconsistente e de baixa qualidade - isso aconteceu comigo enquanto trabalhando neste projeto.

Teste de botão

Agora é hora de testar os botões estão funcionando corretamente. Carregar o seguinte código de teste. O MIDI não precisa ser conectado a testar esta parte.

const int buttonOne = 6- // atribuir pin botão para variávelconst int buttonTwo = 7- // atribuir pin botão para variávelvazio configuração() {Serial.início(9600)- // série de configuração para textopinMode(buttonOne,ENTRADA)- // botão de configuração como entradapinMode(buttonTwo,ENTRADA)- // botão de configuração como entrada}vazio laço() {E se(digitalRead(buttonOne) == ALTO) { // verifica estado do botãodemora(10)- // software de-saltoE se(digitalRead(buttonOne) == ALTO) { // verifica estado botão novamenteSerial.println("Botão Um Works!")- // resultado logdemora(250)-}}E se(digitalRead(buttonTwo) == ALTO) { // verifica estado do botãodemora(10)- // software de-saltoE se(digitalRead(buttonTwo) == ALTO) { // verifica estado botão novamenteSerial.println("Botão duas obras!")- // resultado logdemora(250)-}}}

Executar este código (mas mantenha o cabo USB ligado) e abrir o Monitor de série (Canto superior direito gt; Serial monitor). Quando você pressiona um botão, você deve ver “Botão Um Works!” Ou “Botão dois trabalhos!”, Dependendo do botão pressionado.

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

Criando o controlador

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

Este exemplo irá enviar uma mensagem CC diferente para cada botão que é pressionado. Estou usando este para controlar o Ableton Live 9.6 no Mac OS X. O código é semelhante a ambas as amostras de teste acima.

#incluir #incluir #incluir #incluir #incluir const int buttonOne = 6- // atribuir pin botão para variávelconst int buttonTwo = 7- // atribuir pin botão para variávelMIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiout)- // cria um objeto MIDI chamado midioutvazio configuração() {pinMode(buttonOne,ENTRADA)- // botão de configuração como entradapinMode(buttonTwo,ENTRADA)- // botão de configuração como entradaSerial.início(31250)- // saída MIDI configuração}vazio laço() {E se(digitalRead(buttonOne) == ALTO) { // verifica estado do botãodemora(10)- // software de-saltoE se(digitalRead(buttonOne) == ALTO) { // verifica estado botão novamentemidiout.sendControlChange(56,127,1)- // enviar um MIDI CC - 56 = nota, 127 = velocidade, um canal =demora(250)-}}E se(digitalRead(buttonTwo) == ALTO) { // verifica estado do botãodemora(10)- // software de-saltoE se(digitalRead(buttonTwo) == ALTO) { // verifica estado botão novamentemidiout.sendControlChange(42,127,1)- // enviar um CC MIDI - 42 = nota, 127 = velocidade, 1 = canaldemora(250)-}}}

Nota - você não vai ser capaz de usar Serial.println () com saída MIDI.
Se você quiser enviar uma mensagem PC em vez de um CC simplesmente substituir:

midiout.sendControlChange(42,127,1)-

Com:

midiout.sendProgramChange(valor, canal)-

em Ação

Abaixo é uma demonstração como um controlador para Ableton Live (Melhor software de DJ para cada orçamento). O canto superior direito mostra os medidores de áudio, e no meio de cima mostra as mensagens MIDI de entrada (via Monitor de MIDI no Mac OS X).O Melhor Software DJ para cada orçamentoO Melhor Software DJ para cada orçamentoUm bom software de mistura pode fazer toda a diferença no seu desempenho. Se você estiver usando um Mac, Windows ou Linux, todos os níveis de habilidade e orçamento são servidos se você quer começar DJing.consulte Mais informação

você fez um controlador MIDI?

Há uma série de usos práticos para um controlador MIDI personalizado. Você poderia construir uma grande unidade controlada pés, ou um controlador de estúdio elegante. você fez um controlador MIDI personalizado? Deixe-me saber nos comentários, eu adoraria vê-los!


Artigos relacionados