Come creare un controller MIDI con un Arduino

Come creare un controller MIDI con un Arduino

Come 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 la corona per i progetti Internet of Things (IoT), un semplice Arduino Uno (quali sono i diversi tipi di Arduino?) ha una potenza più che sufficiente per questo progetto.





È la prima volta che usi un Arduino? Nessun problema, abbiamo un completo Guida per principianti di Arduino leggere prima di affrontare questo progetto.





Che cos'è il MIDI?

MIDI è l'acronimo di Musical Instrument Digital Interface. Descrive un modo standard per i dispositivi musicali di comunicare tra loro. Se possiedi una tastiera elettronica probabilmente hai un'interfaccia MIDI. Sebbene ci siano alcuni dettagli tecnici coinvolti nell'implementazione del MIDI, è importante ricordare che il MIDI non è audio! I dati MIDI sono un semplice insieme di istruzioni (un'istruzione è chiamata 'messaggio') che un altro dispositivo può implementare per creare suoni diversi o controllare parametri.





MIDI supporta 16 canali. Ciò significa che ogni cavo può supportare 16 diversi dispositivi che comunicano in modo indipendente 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 del DIN a 5 pin oppure è possibile utilizzare un'interfaccia USB-MIDI.

MIDI-Cavo-Maschio



Control Change e Program Change

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

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





I messaggi Program Change (PC) sono più semplici dei messaggi CC. I messaggi del PC sono costituiti da un singolo numero e vengono utilizzati per modificare il preset o la patch su un dispositivo. I messaggi del PC sono talvolta noti come 'Patch Change'. Analogamente ai messaggi CC, i produttori dovrebbero fornire un documento che illustri quali impostazioni predefinite vengono modificate da un particolare messaggio.

Cosa ti servirà

  • Arduino
  • Presa DIN femmina a 5 pin
  • 2 resistenze da 220 ohm
  • 2 resistenze da 10k ohm
  • 2 x interruttori momentanei
  • Cavi di collegamento
  • tagliere
  • Cavo MIDI
  • Dispositivo MIDI o interfaccia USB
Acqua e legno 5 prese DIN 5 pin per montaggio su PCB femmina per tastiera PC ACQUISTA ORA SU AMAZON

Piano di costruzione

Questo progetto sarà abbastanza semplice. Ovviamente puoi aggiungere più pulsanti o hardware per soddisfare le tue esigenze. Quasi tutti gli Arduino saranno adatti: per questo esempio sono necessari solo tre pin. Questo progetto è composto da 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 qui, tuttavia è possibile trasferirlo su una scatola di progetto e connettori saldati per una soluzione robusta.





Assemblaggio del circuito

Arduino-Midi-Controller-Circuit

Connessione MIDI

Pinout MIDI

Collega la tua presa MIDI come segue:

  • MIDI pin 5 ad 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 massa Arduino

Connessione pulsante

I pulsanti funzionano modificando la resistenza che Arduino 'vede'. Il pin Arduino passa attraverso l'interruttore direttamente a massa ( BASSO ) tramite un resistore da 10k ohm (un resistore 'pull down', assicurando che il valore rimanga basso). Alla pressione del pulsante il valore visto dal circuito passa a +5v senza resistenza ( ALTO ). L'Arduino può rilevare questo cambiamento usando il digitalRead(pin) comando. Collega i pulsanti ai pin 6 e 7 dell'ingresso/uscita digitale (I/O) di Arduino. Collega entrambi i pulsanti:

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

Test MIDI

Ora che tutto l'hardware è finito, è il momento di testarlo. Avrai bisogno di un'interfaccia USB-MIDI (molte interfacce audio possono farlo) e un cavo MIDI. La porta MIDI collegata alla breadboard sta inviando dati, quindi è l'output. Il tuo computer sta ricevendo i dati, quindi è l'input. Questo progetto utilizza l'ottimo Arduino Libreria MIDI v4.2 di Quarantasette effetti. Una volta installata la Libreria, puoi includerla nel tuo codice andando su Schizzo > Includi libreria > MIDI .

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

Collega l'Arduino al tuo computer e carica il seguente codice di test (non dimenticare di selezionare la scheda e la porta corrette dal Strumenti > Tavola e Strumenti > Porta menù).

#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 al PC quindi attenderà 1 secondo indefinitamente. Se tutto funziona correttamente dovresti vedere un messaggio apparire nel tuo monitor MIDI.

Se non succede nulla, niente panico! Prova la risoluzione dei problemi:

  • Assicurarsi che tutti i collegamenti siano corretti
  • Controlla che la porta MIDI sia cablata correttamente - dovrebbero esserci 2 pin di riserva sui bordi esterni
  • Ricontrolla che il circuito sia corretto
  • Verificare che il circuito sia collegato a un'interfaccia USB-MIDI con un cavo MIDI
  • Verifica che il cavo MIDI sia collegato al ingresso sulla tua interfaccia USB-MIDI
  • Assicurati che Arduino sia alimentato
  • Installa il driver corretto per la tua interfaccia USB-MIDI

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

Test dei pulsanti

Ora è il momento di verificare che i pulsanti funzionino correttamente. Carica il seguente codice di prova. Non è necessario collegare il MIDI 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 Serial Monitor ( In alto a destra > Monitor seriale ). Quando premi un pulsante dovresti vedere 'Button One Works!' o 'Pulsante due funziona!' a seconda del pulsante premuto.

C'è una nota importante da togliere da questo esempio: il software antirimbalzo. Si tratta di 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 attiva l'Arduino. Non è necessario farlo, anche se è consigliato.

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 gli esempi di test sopra.

#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 sarai in grado di utilizzare Serial.println() con uscita MIDI.

Se desideri inviare un messaggio PC invece di un CC, sostituisci semplicemente:

midiOut.sendControlChange(42,127,1);

Insieme a:

midiOut.sendProgramChange(value, channel);

In azione

Di seguito è riportata una dimostrazione come controller per Ableton Live ( Il miglior software per DJ per ogni budget ). In alto a destra mostra i misuratori audio e in alto al centro mostra i messaggi midi in arrivo (tramite Monitor MIDI su OSX).

come fare una gif come sfondo

Hai realizzato un controller MIDI?

Ci sono molti usi pratici per un controller MIDI personalizzato. Potresti costruire una vasta unità a pedale o un elegante controller da studio. E se sei interessato ad acquistarne uno, ecco i migliori controller USB MIDI che puoi acquistare.

Credito immagine: Keith Gentry tramite Shutterstock.com

Ci auguriamo che gli articoli che consigliamo e discutiamo vi piacciano! MUO ha partnership affiliate e sponsorizzate, quindi riceviamo una quota delle entrate da alcuni dei tuoi acquisti. Ciò non influirà sul prezzo che paghi e ci aiuta a offrire i migliori consigli sui prodotti.

Condividere Condividere Tweet E-mail Vale la pena eseguire l'aggiornamento a Windows 11?

Windows è stato ridisegnato. Ma è abbastanza per convincerti a passare da Windows 10 a Windows 11?

Leggi Avanti
Argomenti correlati
  • Fai da te
  • Software per DJ
  • Arduino
  • Elettronica
  • MEZZOGIORNO
Circa l'autore Joe Coburn(136 articoli pubblicati)

Joe si è laureato in Informatica presso l'Università di Lincoln, nel Regno Unito. È uno sviluppatore di software professionista e, quando non pilota droni o scrive musica, lo si trova spesso a scattare foto o produrre video.

Altro da Joe Coburn

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti