Come creare un controller MIDI con un Arduino

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.

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.
Annuncio pubblicitario

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? Ti sarò perdonato per essere stato confuso. Quale 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.

Arduino-Midi-Controller-Breadboard

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 (un'istruzione è chiamata "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 "German Institute for Standardization" 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.

MIDI-Cable-Male

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 "Cambia 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 pin
  • 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 per montaggio su PCB 5 pin DIN 5 pin per acqua e legno 5 pz DIN 5 pin per montaggio su PCB prese femmina per tastiera PC Acquista ora su Amazon $ 4, 59

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

Arduino-Midi-Controller-Circuit

Connessione MIDI

MIDI-Pinout

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 che l'Arduino "vede". Il pin Arduino passa attraverso l'interruttore direttamente a terra ( LOW ) tramite una resistenza da 10k ohm (una resistenza "pull down", assicurando che il valore rimanga basso). Quando viene premuto il pulsante, il valore visualizzato dal circuito passa a + 5v senza un resistore ( HIGH ). Arduino può rilevare questa modifica utilizzando il comando digitalRead (pin) . 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 impostarlo ... Leggi di più sul tuo computer e carica il seguente codice di test (non dimenticare di selezionare la scheda e la porta corrette da Strumenti> Schede e strumenti> Menu 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 } 

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 niente, 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 cavo MIDI sia collegato all'ingresso dell'interfaccia USB-MIDI
  • Assicurati che l'Arduino abbia il potere
  • Installa il driver corretto per la tua interfaccia USB-MIDI

Se hai ancora problemi, potrebbe valere la pena di 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; // 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); } } } 

Esegui questo codice (ma tieni collegato il cavo USB) e apri il monitor seriale (in alto a destra> Monitor seriale ). Quando premi un pulsante dovresti vedere "Button One Works!" 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 il successivo controllo 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.

 #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: non sarà possibile utilizzare 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(value, channel); 

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

In this article