Sommario:
- Questa istruzione è stata originariamente pubblicata sul mio blog il 28 giugno 2020
- Passaggio 1: lampeggiamento del LED integrato
- Passaggio 2: lampeggio del LED sull'ingresso manuale
- Passaggio 3: installazione della libreria MIDIUSB
- Passaggio 4: inviare un messaggio MIDI
- Passaggio 5: invio di un messaggio MIDI da ciascun pulsante
- Passaggio 6: configurazione di canali o banchi (opzionale)
- Passaggio 7: il caso
- Fase 8: L'Assemblea
- Passaggio 9: utilizzo del controller MIDI
Video: Costruire un controller MIDI Arduino: 9 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
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:
- Apri l'IDE e fai clic sul menu "Schizzo", quindi su "Includi libreria", quindi su "Gestisci librerie".
- Cerca MIDIUSB e fai clic su Installa.
- Una volta terminato, dovrebbe apparire un tag Installed accanto alla libreria MIDIUSB.
- 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:
- Tieni premuto il pulsante di ripristino arrotondato sulla scheda Arduino.
- Fare clic su Carica nell'IDE di Arduino.
- Rilasciare il pulsante di ripristino.
- Il codice aggiornato verrà caricato nella bacheca.
Passaggio 5: 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)
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
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
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
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:
Come costruire un cubo LED 8x8x8 e controllarlo con un Arduino: 7 passaggi (con immagini)
Come costruire un cubo LED 8x8x8 e controllarlo con un Arduino: modifica gennaio 2020: lo lascio nel caso in cui qualcuno voglia usarlo per generare idee, ma non ha più senso costruire un cubo basato su queste istruzioni. I circuiti integrati del driver LED non sono più realizzati ed entrambi gli schizzi sono stati scritti nella vecchia versione
Costruire un inseguitore solare automatico con Arduino Nano V2: 17 passaggi (con immagini)
Costruire un inseguitore solare automatico con Arduino Nano V2: Ciao! Questo Instructable vuole essere la seconda parte del mio progetto Solar Tracker. Per una spiegazione su come funzionano gli inseguitori solari e su come ho progettato il mio primo inseguitore, usa il link qui sotto. Ciò offrirà un contesto per questo progetto. https://www.instructables.co
Come costruire un robot cingolato con braccio di presa controllato tramite Arduino Nrf24l01: 3 passaggi (con immagini)
Come costruire un robot cingolato con braccio di presa controllato tramite Arduino Nrf24l01: l'istruzione "Come costruire un robot cingolato con braccio di presa controllato tramite Arduino Nrf24l01" spiegherà come costruire un braccio di presa a tre gradi di libertà installato su un veicolo cingolato azionato da un modulo L298N a doppia motorizzazione utilizzando MEG
Costruire un Home Studio con un Mega Budget: 8 Passaggi (con Immagini)
Costruire un home studio con un budget enorme: con l'era digitale che continua a mostrarci come la tecnologia abbia ridotto la necessità di servizi professionali, sta diventando più facile ottenere buoni risultati su forme d'arte come la registrazione audio. Il mio obiettivo è dimostrare il modo più conveniente di
Controller per strisce LED MIDI 5V per Spielatron o altro sintetizzatore MIDI: 7 passaggi (con immagini)
Controller di strisce LED MIDI 5V per Spielatron o altro sintetizzatore MIDI: questo controller lampeggia luci a strisce LED tricolore per 50 mS per nota. Blu per G5 a D # 6, rosso per E6 a B6 e verde per C7 a G7. Il controller è un dispositivo MIDI ALSA, quindi il software MIDI può inviare l'output ai LED contemporaneamente a un dispositivo synth MIDI