Come creare un controller MIDI con un Arduino

Come creare un controller MIDI con un Arduino / Fai da te

Come un musicista che ha accumulato una collezione di strumenti musicali e noise box, l'umile Arduino è lo strumento perfetto per creare un controller MIDI personalizzato. Mentre il Raspberry Pi potrebbe aver preso il titolo di Internet of Things (IoT) Internet of Things: 10 prodotti utili da provare nel 2016 Internet of Things: 10 prodotti utili da provare nel 2016 L'Internet of Things sta crescendo 2016, ma cosa significa esattamente? Come trarrai beneficio dall'Internet of Things? Ecco alcuni prodotti utili da illustrare. Leggi altri progetti, un semplice Arduino Uno (quali sono i diversi tipi di Arduino? Arduino Guida all'acquisto: quale scheda dovresti acquistare? Guida all'acquisto di Arduino: quale scheda dovresti acquistare? Ci sono così tanti diversi tipi di schede Arduino là fuori, tu? essere perdonato per essere stato confuso, che dovresti comprare per il tuo progetto? Aiutaci, con questa guida all'acquisto di Arduino! Leggi di più) ha più che abbastanza potere per questo progetto.

La prima volta che usi un Arduino? Nessun problema, abbiamo una guida completa per principianti Arduino Guida introduttiva ad Arduino: Guida per principianti Guida introduttiva ad Arduino: Guida per principianti Arduino è una piattaforma di prototipazione elettronica open source basata su hardware e software flessibili e facili da usare. È pensato per artisti, designer, hobbisti e chiunque sia interessato a creare oggetti o ambienti interattivi. Leggi altro da leggere prima di affrontare questo progetto.

Cos'è il MIDI?

MIDI è l'acronimo di Musical Instrument Digital Interface. Delinea un modo standard per i dispositivi musicali di comunicare tra loro. Se possiedi una tastiera elettronica probabilmente hai un'interfaccia MIDI. Mentre ci sono alcuni dettagli tecnici coinvolti nell'implementazione del MIDI, è importante ricordare che il MIDI non è audio! I dati MIDI sono una semplice serie di istruzioni (una istruzione è chiamata a “Messaggio”) che un altro dispositivo può implementare per produrre suoni o parametri di controllo diversi.

Il MIDI supporta 16 canali. Ciò significa che ogni cavo può supportare 16 dispositivi diversi che comunicano indipendentemente tra loro. I dispositivi sono collegati tramite un cavo DIN a 5 pin. DIN sta per “Istituto tedesco per la standardizzazione”, ed è semplicemente un cavo con cinque pin all'interno del connettore. L'USB viene spesso utilizzato al posto di DIN a 5 pin oppure è possibile utilizzare un'interfaccia USB-MIDI.

Control Change e Program Change

Esistono due tipi principali di messaggi MIDI: Control Change e Program Change.

I messaggi Control Change (CC) contengono un numero di controller e un valore compreso tra 0 e 127. I messaggi CC vengono spesso usati per modificare impostazioni quali volume o intonazione. I dispositivi che accettano il MIDI dovrebbero venire con un manuale che spiega quali canali e messaggi sono configurati di default e come cambiarli (noto come mappatura MIDI).

I messaggi di cambio programma (PC) sono più semplici dei messaggi CC. I messaggi PC consistono in un singolo numero e sono usati per cambiare il preset o la patch su un dispositivo. I messaggi PC sono talvolta noti come “Cambio di patch”. Analogamente ai messaggi CC, i produttori dovrebbero fornire un documento che illustri quali impostazioni sono state modificate da un particolare messaggio.

Di cosa avrai bisogno

  • Arduino
  • Presa DIN DIN a 5 poli
  • 2 resistenze da 220 ohm
  • 2 resistenze da 10k ohm
  • 2 x interruttori momentanei
  • Cavi di collegamento
  • breadboard
  • Cavo MIDI
  • Dispositivo MIDI o interfaccia USB

5 prese DIN 5 pin per montaggio su PCB e acqua 5 prese per PC con tastiera e acqua 5 prese DIN 5 pin per montaggio su PCB prese femmina per PC Acquista ora su Amazon $ 2,79

Piano di costruzione

Questo progetto sarà abbastanza semplice. Ovviamente è possibile aggiungere più pulsanti o hardware in base alle proprie esigenze. Quasi tutti gli Arduino saranno adatti - solo tre pin sono necessari per questo esempio. Questo progetto consiste di due pulsanti per controllare il programma, una porta MIDI per inviare i dati e un dispositivo per ricevere i messaggi. Questo circuito è stato costruito su una breadboard Elettronica per principianti: 10 competenze da conoscere L'elettronica per principianti: 10 competenze da conoscere Molti di noi non hanno mai nemmeno toccato un saldatore, ma rendere le cose incredibilmente gratificanti. Ecco dieci delle più elementari competenze elettroniche fai-da-te per aiutarti a iniziare. Leggi di più qui, tuttavia è possibile trasferirlo in una scatola di progetto e connettori saldati per una soluzione robusta.

Circuit Assembly

Connessione MIDI

Collega il tuo connettore MIDI come segue:

  • MIDI pin 5 a Arduino Transmit (TX) 1 tramite un resistore da 220 ohm
  • MIDI pin 4 ad Arduino + 5V tramite un resistore da 220 ohm
  • MIDI pin 2 a terra Arduino

Connessione a pulsante

I pulsanti funzionano cambiando la resistenza di Arduino “vede”. Il pin Arduino passa attraverso l'interruttore direttamente a terra (BASSO) tramite un resistore da 10k ohm (a “abbattere” resistenza, assicurando che il valore rimanga basso). Quando viene premuto il pulsante, il valore visualizzato dal circuito passa a + 5v senza un resistore (ALTA). L'Arduino può rilevare questo cambiamento usando il digitalRead (pin) comando. Collegare i pulsanti ai pin 6 e 7 sull'ingresso / uscita digitale Arduino (I / O). Collega entrambi i pulsanti:

  • Lato sinistro del pulsante a + 5V
  • Lato destro del pulsante su Arduino Ground tramite un resistore da 10k ohm
  • Lato destro del pulsante per il pin Arduino (6 o 7)

Test MIDI

Ora che tutto l'hardware è finito, è ora di provarlo. Avrai bisogno di un'interfaccia USB-MIDI (molte interfacce audio possono farlo) e un cavo MIDI. La porta MIDI cablata sulla breadboard sta inviando dati, quindi è l'output. Il tuo computer sta ricevendo i dati, quindi è l'input. Questo progetto utilizza l'eccellente libreria MIDI Arduino v4.2 di Forty Seven Effects. Una volta installata la libreria, puoi includerla nel tuo codice andando a Schizzo> Includi libreria> MIDI.

Avrai anche bisogno di un programma per monitorare i dati MIDI in arrivo:

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

Connessione di Arduino Guida introduttiva a Arduino Starter Kit - Installazione dei driver e configurazione della scheda e della porta Guida introduttiva di Arduino Starter Kit - Installazione dei driver e configurazione della scheda e della porta Quindi, hai acquistato un kit di avvio Arduino e forse alcuni altri componenti casuali - ora cosa? In che modo inizi a programmare questa cosa di Arduino? Come si imposta ... Leggi di più sul tuo computer e carica il seguente codice di test (non dimenticare di selezionare la scheda e la porta corrette dal Strumenti> Scheda e Strumenti> Porta menu).

#includere  #includere  #includere  #includere  #includere  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // crea un oggetto MIDI chiamato midiOut void setup () Serial.begin (31250); // imposta seriale per MIDI void loop () midiOut.sendControlChange (56,127,1); // invia un MIDI CC - 56 = nota, 127 = velocity, 1 = delay del canale (1000); // aspetta 1 secondo midiOut.sendProgramChange (12,1); // invia un MIDI PC - 12 = valore, 1 = ritardo del canale (1000); // aspetta 1 secondo

Questo codice invierà un messaggio CC, attenderà 1 secondo, invierà un messaggio PC quindi attenderà 1 secondo indefinitamente. Se tutto funziona correttamente dovresti vedere un messaggio apparire sul tuo monitor MIDI.

Se non succede nulla, non farti prendere dal panico! Prova a risolvere i problemi:

  • Assicurarsi che tutte le connessioni siano corrette
  • Controlla che la porta MIDI sia cablata correttamente - ci dovrebbero essere 2 pin di ricambio sui bordi esterni
  • Controlla che il circuito sia corretto
  • Verificare che il circuito sia collegato a un'interfaccia USB-MIDI con un cavo MIDI
  • Controlla che il tuo cavo MIDI sia collegato al ingresso sulla tua interfaccia USB-MIDI
  • Assicurati che l'Arduino abbia il potere
  • Installa il driver corretto per la tua interfaccia USB-MIDI

Se sei ancora avendo problemi potrebbe valerne la pena controllare la tua breadboard. Le schede economiche a volte possono essere molto incoerenti e di bassa qualità - è successo a me mentre lavoravo a questo progetto.

Test dei pulsanti

Ora è il momento di verificare che i pulsanti funzionino correttamente. Carica il seguente codice di test. Il MIDI non ha bisogno di essere collegato per testare questa parte.

const int buttonOne = 6; // assegna il pin del pulsante alla variabile const int buttonTwo = 7; // assegna il pin del pulsante alla variabile void setup () Serial.begin (9600); // imposta seriale per testo pinMode (buttonOne, INPUT); // pulsante di impostazione come input pinMode (buttonTwo, INPUT); // pulsante di installazione come input void loop () if (digitalRead (buttonOne) == HIGH) // controlla il ritardo dello stato del pulsante (10); // software de-bounce if (digitalRead (buttonOne) == HIGH) // controlla nuovamente lo stato del pulsante Serial.println ("Button One Works!"); // log result delay (250);  if (digitalRead (buttonTwo) == HIGH) // verifica il ritardo dello stato del pulsante (10); // software de-bounce if (digitalRead (buttonTwo) == HIGH) // controlla nuovamente lo stato del pulsante Serial.println ("Button Two Works!"); // log result delay (250);  

Esegui questo codice (ma tieni collegato il cavo USB) e apri Serial Monitor (In alto a destra> Monitor seriale). Quando premi un pulsante dovresti vedere “Button One funziona!” o “Button Two Works!” a seconda del pulsante premuto.

C'è una nota importante da togliere da questo esempio: il software rimbalza. Questo è un semplice ritardo di 10 millisecondi (ms) tra il controllo del pulsante e la successiva verifica del pulsante. Ciò aumenta la precisione della pressione del pulsante e aiuta a prevenire il rumore che causa l'arduino. Non devi farlo, sebbene sia raccomandato.

Creazione del controller

Ora che tutto è cablato e funzionante, è il momento di assemblare il controller completo.

Questo esempio invierà un messaggio CC diverso per ogni pulsante premuto. Lo sto usando per controllare Ableton Live 9.6 su OS X. Il codice è simile a entrambi i test precedenti.

#includere  #includere  #includere  #includere  #includere  const int buttonOne = 6; // assegna il pin del pulsante alla variabile const int buttonTwo = 7; // assegna il pin del pulsante alla variabile MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // crea un oggetto MIDI chiamato midiOut void setup () pinMode (buttonOne, INPUT); // pulsante di impostazione come input pinMode (buttonTwo, INPUT); // pulsante di impostazione come input Serial.begin (31250); // imposta l'output MIDI void loop () if (digitalRead (buttonOne) == HIGH) // controlla il ritardo dello stato del pulsante (10); // software de-bounce if (digitalRead (buttonOne) == HIGH) // controlla nuovamente lo stato del pulsante midiOut.sendControlChange (56,127,1); // invia un MIDI CC - 56 = nota, 127 = velocity, 1 = delay del canale (250);  if (digitalRead (buttonTwo) == HIGH) // verifica il ritardo dello stato del pulsante (10); // software de-bounce if (digitalRead (buttonTwo) == HIGH) // controlla nuovamente lo stato del pulsante midiOut.sendControlChange (42,127,1); // invia un MIDI CC - 42 = nota, 127 = velocity, 1 = delay del canale (250);  

Nota: non sarai in grado di usarlo Serial.println () con uscita MIDI.
Se si desidera inviare un messaggio PC anziché un CC, è sufficiente sostituire:

midiOut.sendControlChange (42,127,1);

Con:

midiOut.sendProgramChange (valore, canale); 

In azione

Di seguito una dimostrazione come controller per Ableton Live (il miglior software per DJ per ogni budget Il miglior software per DJ per ogni budget Il miglior software per DJ per ogni budget Un buon software di mixaggio può fare la differenza nelle tue prestazioni. , Windows o Linux, ogni livello di abilità e budget è disponibile se si desidera avviare DJing. La parte in alto a destra mostra i contatori audio e la parte centrale in alto mostra i messaggi midi in arrivo (tramite MIDI Monitor su OS X).

Hai creato un controller MIDI?

Ci sono molti usi pratici per un controller MIDI personalizzato. Potresti costruire una vasta unità a pedali o un elegante controller da studio. Hai creato un controller MIDI personalizzato? Fatemi sapere nei commenti, mi piacerebbe vederli!

Credito d'immagine: Keith Gentry tramite Shutterstock.com

Scopri di più su: Arduino, software per DJ, elettronica, MIDI.