Sommario:

Costruire un controller MIDI Arduino: 9 passaggi (con immagini)
Costruire un controller MIDI Arduino: 9 passaggi (con immagini)

Video: Costruire un controller MIDI Arduino: 9 passaggi (con immagini)

Video: Costruire un controller MIDI Arduino: 9 passaggi (con immagini)
Video: Arduino midi Controller 2024, Novembre
Anonim

Questa istruzione è stata originariamente pubblicata sul mio blog il 28 giugno 2020

Mi piace costruire cose che includono l'elettronica e ho sempre voluto costruire qualcosa usando Arduino.

Una delle build più comuni per i principianti che ho trovato era un controller MIDI. Un controller MIDI è un qualsiasi hardware che invia dati MIDI (Musical Instrument Digital Interface) a un dispositivo per attivare suoni e creare musica.

Ho scoperto che molte implementazioni sono complicate, anche quelle per principianti. È stato molto frustrante scoprire che dovevo usare centinaia di righe di codice illeggibile. O che ho bisogno di saldare un resistore in alcuni casi, tra gli altri esempi.

Il progetto

Costruendo il mio controller MIDI Arduino, la mia intenzione era quella di realizzare un progetto divertente, mantenendo il rumore al minimo. Qualcosa che qualsiasi principiante potrebbe seguire. Per farlo, ho usato il MIDI Fighter 3D come ispirazione di base e ho rimosso ogni caratteristica non essenziale.

Il costo totale del mio progetto era inferiore a $ 30 e l'elenco dei materiali era davvero breve (link di affiliazione):

  • Arduino Leonardo (o clone): tra $ 10 e $ 20.
  • 16 pulsanti Sanwa da 24 mm (o clone): tra $ 1 e $ 2,50 per pulsante.
  • Saldatore
  • Cavo elettrico 22 AWG

La scheda Arduino

Quando ho iniziato questo progetto ho scoperto che ci sono un sacco di nuovi modelli Arduino (escluse le centinaia di schede compatibili). E tutti offrono capacità leggermente diverse.

Avevo bisogno di inviare segnali MIDI a un computer e il modo più semplice per farlo è tramite USB. Qualsiasi scheda Arduino basata sul microcontrollore ATmega32u4 ha una comunicazione USB integrata.

Le schede Arduino ufficiali con supporto USB nativo sono Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Queste schede hanno il supporto USB integrato, il che significa che possono fungere da dispositivo MIDI USB.

Ho deciso di andare con un clone di Arduino Leonardo. Ha abbastanza ingressi per questo progetto e include anche intestazioni, il che rende più facile collegare/scollegare i cavi.

Primi passi

Anche se ti spiegherò passo passo come ho implementato il codice per questo progetto, puoi scaricare la versione finale.

Per caricare il codice sulla scheda è necessario utilizzare l'IDE di Arduino. Hanno anche un editor Web che è molto utile ma hanno una quota limitata di volte al giorno in cui puoi compilare il codice.

Passaggio 1: lampeggiamento del LED integrato

È divertente come il "Hello World" nel mondo dell'hardware lampeggi un LED.

È stata una bella sorpresa per me scoprire che Arduino Leonardo ha un LED integrato che puoi lampeggiare per testare il tuo codice. In questo modo non è necessario costruire un circuito esterno su una breadboard con un LED e un resistore.

Codice:

Passaggio 2: lampeggio del LED sull'ingresso manuale

Il passo logico successivo è stato quello di far lampeggiare lo stesso LED ogni volta che invio un segnale. Ho rimosso la copertura di plastica di un'estremità dei 2 cavi Dupont e ho collegato l'altra estremità alla scheda:

  • Pin numero 2: Uno degli ingressi digitali (positivo). Potrebbe essere qualsiasi pin digitale.
  • Pin GND: qualsiasi pin di massa (negativo).

Ora, ogni volta che unisco le estremità scoperte dei fili, chiudo il circuito e quindi posso eseguire il codice di conseguenza

Ciascuno dei 20 pin digitali del Leonardo ha una resistenza interna (scollegata di default) che può essere abilitata tramite INPUT_PULLUP. Tieni presente che un input pull-up significa che lo stato del pulsante è invertito:

  • ALTO quando il circuito è aperto (pulsante NON premuto).
  • LOW quando il circuito è chiuso (pulsante premuto).

Codice:

Passaggio 3: installazione della libreria MIDIUSB

Questa libreria consente a una scheda Arduino con funzionalità USB di agire come uno strumento MIDI tramite USB. Controlla la documentazione ufficiale per maggiori informazioni.

Utilizzando l'IDE Arduino, puoi installare librerie Arduino aggiuntive utilizzando il Gestore librerie:

  1. Apri l'IDE e fai clic sul menu "Schizzo", quindi su "Includi libreria", quindi su "Gestisci librerie".
  2. Cerca MIDIUSB e fai clic su Installa.
  3. Una volta terminato, dovrebbe apparire un tag Installed accanto alla libreria MIDIUSB.
  4. Chiudi il Gestore della libreria.

Ora il Leonardo può inviare messaggi MIDI tramite USB! Ma prima, sono necessarie alcune informazioni su come funziona il MIDI.

Come funziona il MIDI

"MIDI (Musical Instrument Digital Interface) è un protocollo di comunicazione standard che collega strumenti musicali elettronici, computer e relativi dispositivi audio per la riproduzione di musica." - Wikipedia

Gestisce i messaggi di evento con i dati dell'altezza e della velocità della nota suonata, tra le altre istruzioni

In questo progetto specifico, l'input dai 16 pulsanti invia messaggi diversi tramite USB. Questi messaggi possono essere convertiti in suoni su un computer utilizzando qualsiasi software adatto come GarageBand o Ableton Live.

Anatomia di un messaggio MIDI

Per inviare un messaggio MIDI, ho utilizzato il metodo sendMIDI() dalla libreria MIDIUSB che ho installato al punto 3.

Questo metodo può ricevere 4 parametri:

  • Tipo di evento: può essere 0x09 per note On (riproduci nota) o 0x08 per note Off (interrompe la riproduzione della nota).
  • Note On/Off: il tipo di evento combinato con il canale MIDI (1-16). Uso solo il canale 1, quindi è 0x90 per note On o 0x80 per note Off.
  • Numero nota: ogni nota ha un'altezza numerica associata (scala di frequenza).
  • Velocità: Da 0 (nessuna velocità) a 127 (più veloce).

Passaggio 4: inviare un messaggio MIDI

Ho incluso la libreria MIDIUSB e invece di far lampeggiare il LED integrato, ho inviato una nota.

Codice:

⚠ Importante: da questo passaggio in poi Arduino si trasforma in un controller MIDI USB e smette di ricevere codice tramite USB.

Quando rimani bloccato in una posizione in cui Arduino non può più essere programmato, segui questi passaggi:

  1. Tieni premuto il pulsante di ripristino arrotondato sulla scheda Arduino.
  2. Fare clic su Carica nell'IDE di Arduino.
  3. Rilasciare il pulsante di ripristino.
  4. Il codice aggiornato verrà caricato nella bacheca.

Passaggio 5: invio di un messaggio MIDI da ciascun pulsante

Invio di un messaggio MIDI da ciascun pulsante
Invio di un messaggio MIDI da ciascun pulsante

Il passaggio finale è stato mappare ogni passo su un pulsante. Per i 16 bottoni ho definito una scala da C2 a E3b, che sono le altezze da 36 a 51 in sequenza dal basso verso l'alto e da sinistra verso destra. Dai un'occhiata a questo file da Arduino Tutorials per vedere quale tono corrisponde a ciascuna nota.

Ho usato pin digitali da 2 a 12 e pin analogici (usandoli come digitali) da A0 a A4.

Ed ecco come appare il codice finale

Passaggio 6: configurazione di canali o banchi (opzionale)

Configurazione di canali o banchi (opzionale)
Configurazione di canali o banchi (opzionale)

Nel caso in cui desideri aggiungere più pulsanti con la possibilità di cambiare canale o banco, come nel MIDI Fighter 3D (vedi immagine), Arduino Leonardo ha altri quattro pin che puoi utilizzare. L'Arduino Leonardo ha 20 pin di input/output digitali, di cui solo 16 sono in uso per suonare le note.

Puoi usare quei pulsanti extra per aggiornare una variabile nel codice e inviare il suo valore come parametro al metodo MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Passaggio 7: il caso

Il caso
Il caso
Il caso
Il caso

Per mantenere questo progetto semplice, sono stato estremamente esigente nella scelta delle funzionalità da includere.

  • Solo pulsanti: 16 pulsanti arcade in stile Sanwa, in una griglia 4x4. Nessuna manopola, nessun cursore, nessun fader o qualsiasi altro ingresso analogico.
  • Custodia Unibody: non utilizzare viti, dadi, bulloni o colla per la custodia o per tenere la scheda Arduino.
  • Strumenti di tutti i giorni: ad esempio, ho saldato i fili invece di acquistare un tagliafili specifico per i pulsanti arcade.

Design unibody

Una delle sfide che ho dovuto affrontare è stata la progettazione di una custodia abbastanza semplice da non richiedere assemblaggio e da poter essere stampata in 3D in un'unica operazione.

Per evitare l'uso di viti o colla, avevo bisogno di progettare un involucro che fornisse il minimo accesso all'elettronica. La mia più grande ispirazione per la custodia è stato il Mac Mini, che ha un foro a forma di cerchio nella parte inferiore. Volevo anche progettare un coperchio avvitabile per quello, ma ho deciso di lasciarlo aperto per esporre l'elettronica.

Scarica la custodia stampabile in 3D (322 KB). Impostazioni consigliate: PLA, strati di 0,15 mm, riempimento del 20%, supporti di rinforzo almeno per il foro inferiore arrotondato, i supporti Arduino e la micro USB.

Tenere un Arduino senza viti

Il Leonardo ha 4 fori per avvitare la scheda in qualsiasi custodia adatta, ma la mia idea era di semplificare l'aggiunta e la rimozione della scheda dalla custodia.

Trovare un supporto per clip per Arduino su Thingiverse è stato facile e mi ci sono volute 5 iterazioni per integrare quel supporto nel design unibody. La parte più difficile è stata fare le gambe per evitare i fori per i pulsanti e per fare in modo che la micro USB fosse allineata al centro della custodia.

Fase 8: L'Assemblea

L'assemblea
L'assemblea
L'assemblea
L'assemblea
L'assemblea
L'assemblea

Dopo aver inserito tutti i pulsanti in posizione, ho saldato dei fili neri corti unendo tra loro tutte le gambe negative dei pulsanti.

Quindi ho saldato lunghi fili rossi da ciascuna gamba positiva per collegarli direttamente alla scheda.

Per collegare i fili all'Arduino, ho tagliato e saldato alcune estremità Dupont e le ho coperte con del tubo termoretraibile.

Ho collegato i fili alla scheda seguendo lo stesso ordine del MIDI Fighter. Dal basso verso l'alto e da sinistra verso destra

Passaggio 9: utilizzo del controller MIDI

Utilizzo del controller MIDI
Utilizzo del controller MIDI

Qualsiasi software musicale (o hardware adatto) può essere utilizzato per ricevere MIDI e creare musica. I più consigliati sono Garage Band, Ableton Live e so che ci sono un sacco di app da installare su un telefono.

Tutti questi strumenti sono utili per caricare suoni predefiniti per il finger drumming, ma sono stati creati per scopi più grandi. Questi strumenti possono essere difficili da configurare per i principianti.

MIDI nel browser Web

Per fare qualcosa di più in linea con questo progetto e la sua semplicità, ho costruito uno strumento Web completamente focalizzato sui controller MIDI.

Punchy: implementazione WebMIDI e WebAudio per controller MIDI.

Può leggere i messaggi MIDI su qualsiasi browser che supporti l'API JavaScript WebMIDI. Quindi riproduce i suoni in un sintetizzatore (utilizzando l'API WebAudio) o in un campionatore, caricando suoni personalizzati da qualsiasi pacchetto di suoni.

Configura Ableton Live

Per far funzionare il controller MIDI con Ableton Live, segui questi semplici passaggi dalla loro documentazione ufficiale.

Vai su Preferenze → Collega MIDI e assicurati che "Input" abbia "Track" e "Remote" ON e che l'output abbia "Remote" ON così come menzionato nella guida:

Consigliato: