Sommario:

Keytar Hero (usando un controller per chitarra Wii come sintetizzatore): 7 passaggi (con immagini)
Keytar Hero (usando un controller per chitarra Wii come sintetizzatore): 7 passaggi (con immagini)

Video: Keytar Hero (usando un controller per chitarra Wii come sintetizzatore): 7 passaggi (con immagini)

Video: Keytar Hero (usando un controller per chitarra Wii come sintetizzatore): 7 passaggi (con immagini)
Video: How to Use a Wii Guitar For Clone Hero 2024, Novembre
Anonim
Image
Image
Passaggio 1: Raspberry Pi (configurazione iniziale)
Passaggio 1: Raspberry Pi (configurazione iniziale)

I giochi di Guitar Hero erano di gran moda una dozzina di anni fa, quindi ci saranno sicuramente molti vecchi controller di chitarra in giro a raccogliere polvere. Hanno molti pulsanti, manopole e leve, quindi perché non farne di nuovo buon uso? Il controller della chitarra normalmente non emette alcun suono da solo, ma in questo tutorial ti mostrerò come convertire un controller Wii Guitar Hero in modo che possa essere riprodotto come un sintetizzatore.

Forniture

  • Controller Wii Guitar Hero
  • Nunchucky breakout board (disponibile su Adafruit qui)
  • 4 fili per ponticelli (da femmina a femmina)
  • 2 connettori a crimpare (opzionale)
  • Raspberry Pi (3 B+ o 4 preferiti)
  • Scheda MicroSD da 16 GB

Passaggio 1: Passaggio 1: Raspberry Pi (configurazione iniziale)

Un Raspberry Pi è il cervello e i muscoli di questo progetto, quindi la prima cosa che dobbiamo fare è crearne uno per il nostro progetto. Ho provato questo progetto sia su un Raspberry Pi 3 B+ che su un 4, ed entrambi sembrano funzionare bene.

I Raspberry Pi sono microcomputer che memorizzano tutto su una scheda microSD anziché su un disco rigido … incluso il sistema operativo. Il modo tipico per usarli è scaricare l'ultimo sistema operativo e masterizzarne un'immagine su una scheda microSD come segue:

  • Su un PC o laptop separato, vai su
  • Scarica l'ultimo sistema operativo Raspbian. (Buster al momento in cui scriviamo). Ci sono più versioni disponibili sulla pagina che danno più o meno software incluso a seconda delle tue preferenze. Dovrebbero funzionare tutti bene, ma mi piace usare l'opzione "Raspbian Buster con desktop e software consigliato" perché include alcuni IDE di programmazione e altre app utili. Il modo più semplice è scaricare la versione zip.
  • Masterizza l'immagine Raspbian su una scheda microSD. Ci sono molte applicazioni che puoi usare per masterizzare l'immagine Raspbian sulla tua scheda microSD, ma ho usato il programma balenaEtcher che puoi ottenere qui. Inserisci la scheda microSD nel tuo computer ed esegui balenaEtcher. Per l'immagine del disco, seleziona il file zip che hai scaricato, quindi seleziona la tua scheda SD e premi flash. Lo strumento decomprimerà i file immagine del disco e li masterizzerà sulla scheda SD. IMPORTANTE: assicurati che l'unità che stai selezionando sia la scheda microSD… lo strumento sovrascriverà qualsiasi unità specificata, quindi assicurati di aver scelto quella corretta.
  • Accendi il tuo Raspberry Pi. Inserisci la scheda microSD nel tuo Raspberry Pi. Collega alimentazione, mouse, tastiera e altoparlanti. Se segui le istruzioni, è abbastanza autoesplicativo … imposta la tua posizione / ora, imposta una password e connetti il WiFi.

Questa è tutta la configurazione standard per un Raspberry Pi, quindi se hai bisogno di maggiori dettagli, puoi trovarli qui. Faremo il resto dei nostri passaggi sul Raspberry Pi.

Passaggio 2: Passaggio 2: Abilita I2c

Passaggio 2: abilita I2c
Passaggio 2: abilita I2c

Il controller Guitar Hero utilizza i2c per comunicare (i2c è un protocollo abbastanza comune utilizzato dai dispositivi elettronici per comunicare tra loro), quindi dobbiamo abilitare questa funzione sul Raspberry Pi:

  • Installa le librerie per i2c. Le librerie i2c ora sembrano far parte della build standard di Buster, ma per ogni evenienza, eseguiremo l'installer per esse. Apri una shell (c'è un'icona sulla barra delle applicazioni in alto) e digita quanto segue:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-tools
  • Abilita i2c su Raspberry Pi. Nella tua shell digita: sudo raspi-config. Questo farà apparire la tua finestra di configurazione. Freccia in basso su Opzioni interfaccia-> I2C per abilitare i2c per il dispositivo. Per uscire dalla finestra, freccia destra su Indietro e poi su Fine per salvare le impostazioni.
  • Riavviare. Nella tua shell, digita: sudo reboot
  • Imposta parametri i2c personalizzati. Il baudrate i2c predefinito (100k) sembra confondere occasionalmente la chitarra, quindi la rallentiamo a 50k come segue:

    • In una shell digita: sudo nano /boot/config.txt
    • Questo aprirà il tuo file di configurazione in un editor di testo. Freccia verso il basso e trova la riga che dice dtparam=i2c_arm=on. Se è commentato, decommentalo. Se non hai quella linea, aggiungila. Sotto quella riga aggiungi anche quanto segue:

      • dtparam=i2c1=on
      • dtparam=i2c1_baudrate=50000
    • Premi Ctrl + O per salvare il file di configurazione, quindi premi Ctrl + X per uscire.
  • Riavviare. Nella tua shell, digita: sudo reboot

Passaggio 3: Passaggio 3: installare Pure Data

Passaggio 3: installa Pure Data
Passaggio 3: installa Pure Data
Passaggio 3: installa Pure Data
Passaggio 3: installa Pure Data

Per i suoni del sintetizzatore utilizzeremo un programma chiamato Pure Data. Questo è un suono generativo e uno strumento di visualizzazione interattivo che esiste da un po' di tempo. Ha un paio di caratteristiche che lo rendono ideale per questo progetto… ha un'interfaccia utente basata su nodi che è abbastanza facile da usare e può ricevere segnali da fonti esterne come script Python.

  • Installa dati puri. In un tipo di shell: sudo apt-get install puredata
    • Questo dovrebbe installare il software sul tuo Raspberry Pi, ma se si lamenta nella shell di non essere in grado di individuare tutti i file di cui ha bisogno, prova questo:

      • sudo apt-get update
      • Quindi esegui nuovamente il comando di installazione: sudo apt-get install puredata
    • Durante l'installazione ti verrà chiesto se desideri creare directory per le estensioni, puoi dire Sì.
  • Avvia Pure Data. Se è installato correttamente dovresti vedere il programma elencato nel menu Start del desktop sotto Audio e video. Eseguilo per assicurarti che si avvii.
  • Configura l'audio Pure Data. L'audio in Pure Data di solito non è attivo per impostazione predefinita, quindi dovrai abilitarlo.

    • Imposta l'uscita audio su ALSA. All'avvio di Pure Data dovresti vedere la finestra della console. Vai al menu Media e seleziona ALSA come output. Potresti vedere messaggi di avviso nella shell della console che dicono che non può trovare determinati file, ma puoi ignorarlo.
    • Attiva l'audio DSP. Nella finestra della console, seleziona la casella di controllo che dice DSP.
  • Prova l'uscita audio. Nella finestra della console Pure Data, vai su Media->Test Audio & MIDI. Questo aprirà un file di prova che possiamo usare per assicurarci che Pure Data funzioni e che possiamo ascoltare l'audio. Accendi gli altoparlanti ma tienili inizialmente a un volume basso (a volte l'audio può essere molto alto per impostazione predefinita). Nel file di prova, sul lato sinistro dovresti vedere una sezione chiamata Toni di prova. Fai clic sulla casella che dice prima 60 e vedi se senti alcun suono dai tuoi altoparlanti. In caso contrario, prova a fare clic sulla casella 80 e quindi alza gli altoparlanti finché non senti il suono. Se senti il suono, prova a trascinare nella casella che dice Pitch a destra dei Toni di prova dove puoi cambiare la frequenza dei toni e vedere cosa succede.

Se riesci ad avviare Pure Data e a sentire un suono dalla patch di prova, sei pronto per passare al passaggio successivo. Ma Pure Data può diventare un po' schizzinoso riguardo all'uscita audio la prima volta, quindi se ancora non ricevi l'audio prova quanto segue:

  • È possibile che l'audio passi attraverso il cavo HDMI, quindi per forzarlo a utilizzare il jack delle cuffie:

    • In un tipo di shell: sudo raspi-config
    • Vai su Opzioni avanzate->Audio->Force jack da 3,5 mm ('cuffie')
  • Prova a riavviare. A volte questo fa il trucco.
  • Controlla i tuoi altoparlanti e la connessione al Raspberry Pi.

Passaggio 4: Passaggio 4: Collegamento della chitarra

Passaggio 4: collegare la chitarra
Passaggio 4: collegare la chitarra
Passaggio 4: collegamento della chitarra
Passaggio 4: collegamento della chitarra
Passaggio 4: collegamento della chitarra
Passaggio 4: collegamento della chitarra

Il modo più semplice per collegare il controller della chitarra al Raspberry Pi è con una breakout board economica come la Nunchucky*. Questa scheda consente di accedere al segnale proveniente dalla chitarra senza tagliare la spina o aprire la chitarra. Su un lato della scheda ci sono tracce piatte progettate per adattarsi perfettamente alla spina proveniente dalla chitarra. Ci sono anche due piccole tacche che permettono alla spina di scattare in posizione evitando così che si allenti. Le tracce portano a quattro perni di intestazione sul lato opposto della scheda.

Nota: il Nunchucky viene fornito con perni di intestazione ma non sono saldati, quindi dovrai farlo da solo. Per il mio, ho invece usato perni di intestazione a 90 gradi che gli consentono di appiattirsi nel progetto finale.

Avrai bisogno di quattro fili per collegare il Nunchucky al Raspberry Pi. Collega i fili dai pin dell'intestazione del Nunchucky ai pin GPIO del Raspberry Pi come segue:

  • 3.3v -> Pin 1
  • Dati -> Pin 3
  • Clicca -> Pin 5
  • Massa -> Pin 9

Nel mio progetto ho usato connettori a crimpare per i fili in modo che non si staccassero facilmente. Ma se non si dispone di connettori a crimpare, quattro singoli cavi jumper femmina-femmina funzioneranno bene. Se usi i connettori a crimpare, assicurati di prestare attenzione all'ordine dei fili sui pin dell'intestazione e sui pin GPIO. Si noti inoltre che sui pin GPIO saltiamo il pin 7. Per tenere conto di ciò, ho usato un connettore a crimpare a cinque fili su un'estremità e ho saltato uno slot.

Per verificare che il tuo Raspberry Pi possa rilevare il controller della chitarra, apri una shell e digita: sudo i2cdetect -y 1

Dovrebbe stampare una griglia nella shell con per lo più trattini doppi. Se il computer è in grado di rilevare la chitarra, dovresti vedere l'ID # 52 della chitarra in uno degli slot… sulla mia macchina è apparso nella colonna 2, riga 5… ma non importa quale, purché tu veda il il numero 52 da qualche parte lì dentro.

Se il computer non è in grado di rilevarlo, ecco alcune cose da provare:

  • Assicurati che i fili siano ben collegati.
  • Assicurati di aver collegato tutto ai pin giusti.
  • Capovolgi la spina della chitarra. Il Nunchucky non ti impedisce di collegare la spina capovolta, quindi potrebbe essere solo invertita.
  • Assicurati che i2c sia abilitato sul Raspberry Pi (come mostrato nel passaggio 2)

*Se la presa del controller della chitarra sembra familiare, è perché è la stessa del controller Wii Nunchuck standard…da qui il nome Nunchucky! Ciò significa anche che puoi utilizzare questa stessa scheda breakout anche per connetterti ai controller nunchuck.

Passaggio 5: Passaggio 5: mettere tutto insieme

Passaggio 5: mettere tutto insieme
Passaggio 5: mettere tutto insieme
Passaggio 5: mettere tutto insieme
Passaggio 5: mettere tutto insieme

Ora che tutto è impostato sul Raspberry Pi, abbiamo solo bisogno di un po' di codice per farlo funzionare. Puoi scaricare il codice e altri file necessari come segue:

  • Per scaricare il codice e altri file sul Raspberry Pi, apri una nuova shell e digita il seguente comando (potresti dover inserire 'sudo' prima di esso): git clone
  • Questo creerà una directory nella tua home directory chiamata keytarHero (cioè /home/pi/keytarHero) e scaricherà i file al suo interno.

Ci sono tre file principali in questo pacchetto:

  • WiiGHController.py: questo è uno script python che apre una connessione i2c alla chitarra e restituisce i valori dei vari controlli. Per impostazione predefinita, stampa anche i valori che sta leggendo sulla shell in modo che tu possa vedere cosa sta facendo.
  • keytarHero.pd: Questo è il file di patch Pure Data che ho creato per creare la musica che ascolterai. È predisposto per leggere i valori in arrivo dalla chitarra e indirizzarli ai vari nodi per generare i suoni. Discuterò i dettagli della patch nel passaggio successivo, ma alla fine potresti modificarlo per fare quello che vuoi da qui.
  • keytarHero.py: Questo è lo script che dà il via all'intero processo e incolla tutto insieme. Lancia Pure Data e apre la patch keytarHero.pd. Apre una connessione alla patch e passa i valori dalla chitarra alla patch.

Il momento della verità! Assicurati che la chitarra sia collegata al Raspberry Pi e poi sei pronto per partire. Per iniziare, devi solo eseguire lo script keytarHero.py. Per fare questo:

  • Apri una nuova shell e digita: cd keytarHero
  • Quindi esegui il comando: python keytarHero.py

Questo è tutto! Se tutto funziona correttamente, Pure Data dovrebbe avviarsi e iniziare a riprodurre la patch. Dovresti sentire una sequenza di note che vengono suonate e quando premi i pulsanti sulla chitarra, dovrebbe rispondere ad essa.

Risoluzione dei problemi

Se non funziona, ecco alcune cose da controllare:

  • La patch Pure Data non si avvia o riceve un errore per non trovare i file? Lo script keytarHero.py ha il percorso del file di patch Pure Data hardcoded su '/home/pi/keytarHero/keytarHero.pd'. Se hai spostato la tua cartella keytarHero o quel file di patch da qualche altra parte, dovrai aggiornare lo script per utilizzare invece il tuo percorso. Per fare ciò, apri il file keytarHero.py e cerca la variabile chiamata PD_PATCH_PATH e cambiala in modo che punti alla directory in cui risiede il tuo file keytarHero.pd. Salva lo script e rieseguilo e dovresti essere a posto.
  • La chitarra emette un segnale? Lo script dovrebbe stampare continuamente il segnale che riceve dalla chitarra alla shell come una stringa di numeri, ognuno dei quali rappresenta il valore di un controllo sulla chitarra. Quando usi un controllo sulla chitarra, questi numeri dovrebbero cambiare. In caso contrario, controlla di aver eseguito correttamente la configurazione i2c e i collegamenti della chitarra nei passaggi precedenti.
  • L'audio Pure Data è attivato? La patch Pure Data fornita in questo pacchetto dovrebbe attivare automaticamente l'audio ma verificare che la casella di controllo DSP nella console Pure Data sia selezionata. Controlla anche le tue impostazioni audio come mostrato nel passaggio 3.
  • Pure Data sta ricevendo il segnale dalla chitarra? Nell'angolo in alto a destra della patch c'è un gruppo di nodi responsabili della lettura del segnale dalla chitarra e della trasmissione al resto della patch. Quando premi i pulsanti sulla chitarra, anche i numeri in questa sezione dovrebbero aggiornarsi indicandoti che sta ricevendo correttamente il segnale.
  • Inizializzazione delle variabili nella patch. Pure Data può essere un po' pignolo riguardo ai valori nella patch che non vengono inizializzati. Ho aggiunto meccanismi per attivare le variabili quando si apre, ma potrebbe valere la pena fare clic su alcune delle finestre di messaggio (quelle che sembrano essere state tolte un morso). Questo li fa inizializzare e può riattivarli.

Passaggio 6: un tour della patch Pure Data

Un tour della patch Pure Data
Un tour della patch Pure Data
Un tour della patch Pure Data
Un tour della patch Pure Data
Un tour della patch Pure Data
Un tour della patch Pure Data
Un tour della patch Pure Data
Un tour della patch Pure Data

La configurazione descritta finora in questo tutorial farà funzionare le cose per te, ma una delle cose belle dell'utilizzo di Pure Data per questo progetto è che può essere personalizzato per fare quello che vuoi. Quando la patch è aperta, se premi Ctrl + E mette la patch in modalità Modifica e puoi cambiare la patch. I dettagli sull'utilizzo di Pure Data vanno oltre lo scopo di questo tutorial (ci sono molti tutorial online per questo) ma può essere divertente armeggiare con esso, quindi ecco un tour generale di ciò che sta accadendo nella patch keytarHero.pd nel caso tu vuoi personalizzarlo:

  • Comunicazione con la chitarra: in alto a destra della patch c'è un albero di nodi responsabili della gestione del segnale dalla chitarra. I valori della chitarra sono una stringa lunga, quindi questi nodi suddividono la stringa in valori individuali per ogni controllo, li convertono in numeri e poi li passano ai nodi di 'invio' (quelli che iniziano con una s). Ai nodi di invio viene assegnato un nome ed emettono il segnale per "ricevere" i nodi con lo stesso nome. Ad esempio il nodo 's whammy', emette i valori provenienti dalla barra whammy della chitarra e il nodo 'r whammy' nel mezzo della patch riceve quel segnale e usa quel segnale per fermare il sequencer. I nodi di invio/ricezione aiutano a ridurre l'ingombro delle linee di connessione nella patch. Non consiglio di fare confusione con questa sezione in quanto è un po' pignolo da ottenere, ma puoi sicuramente aggiungere nodi di ricezione aggiuntivi durante la patch secondo necessità per ricevere segnali da essa secondo necessità.
  • Sezione Sequencer: La sezione centrale della patch controlla il sequencer. Sul lato sinistro c'è una barra con un quadrato nero in movimento che mostra quale nota di una sequenza di 16 note sta suonando. Il tasto Strum controlla se la sequenza viene riprodotta in avanti o all'indietro. I pulsanti più/meno aumentano/diminuiscono la velocità. Sul lato destro ci sono cinque serie di numeri che controllano quali note suonano durante ogni passaggio. Ogni sequenza è assegnata alla riproduzione quando viene premuto uno dei cinque pulsanti sul tasto. Questi numeri sono valori MIDI e puoi cambiarli per suonare qualsiasi nota tu voglia… basta dare loro valori compresi tra 0 e 127.
  • Sezione Oscillatore/FX: in basso a sinistra ci sono l'oscillatore e i nodi FX che producono effettivamente il suono. L'oscillatore primario è a sinistra. I valori midi della sezione sequencer vengono convertiti in frequenze e inviati all'oscillatore. È mescolato con un secondo oscillatore proveniente dal lato destro. Anche la sua frequenza è controllata dai valori midi ma con un offset di frequenza aggiuntivo guidato dall'asse X del joystick. Questo provoca un effetto stonato o fischio quando si sposta il joystick a sinistra oa destra. In basso a destra c'è anche un nodo filtro passa basso la cui frequenza di taglio è legata all'asse Y del joystick. Un filtro passa basso determina la quantità di suono ad alta frequenza rimossa dal suono. Quando il joystick viene spostato verso il basso, taglia gran parte delle alte frequenze, il che si traduce in un suono ovattato. Quando viene spostato nella posizione verso l'alto, passa attraverso tutte le frequenze risultando in un suono più brillante.
  • Inizializzazione: in alto a sinistra della patch ci sono una serie di nodi che inizializzano la patch quando viene lanciata, ad esempio accendono l'audio e "toccano" vari nodi per riattivarli. Anche in questo caso probabilmente non hai bisogno di pasticciare con questa sezione, ma se ci sono cose che vuoi che accadano all'avvio della patch, collegale al nodo chiamato 'loadbang'.
  • Ho provato a documentare la patch con commenti nella patch stessa, quindi spero che ti dia abbastanza informazioni per esplorare diverse opzioni da qui.

Divertiti!

Passaggio 7: altre cose da provare

Esecuzione della chitarra "senza testa"

Dovrebbe essere possibile eseguire questo progetto senza essere collegato a un monitor/tastiera/mouse se hai eseguito il tuo Raspberry Pi da una fonte di alimentazione portatile adatta. Il Raspberry Pi non si adatta perfettamente all'apertura sul retro della chitarra, ma se ti senti coraggioso, potresti apportare modifiche alla chitarra per ripararlo… o semplicemente montare il Pi sul retro con le viti e farlo attaccare fuori un po'. Ci sono molti tutorial online su come eseguire script sul Raspberry Pi headless, ma fondamentalmente dovresti eseguire il comando "python /home/pi/keytarHero/keytarHero.py&" all'avvio. In teoria, quindi, avresti una chitarra con un solo cavo che esce dall'altoparlante… proprio come una vera chitarra elettrica!

Ulteriori modifiche ai dati puri

Avevo altre idee su come la chitarra potesse controllare la patch Pure Data, ma non ho avuto il tempo di provarci. Questi sarebbero cambiamenti nella patch che potrebbero essere divertenti da sperimentare:

  • Whammy bar: nella patch corrente la whammy bar interrompe semplicemente la riproduzione della sequenza, ma penso che sarebbe meglio se anche la whammy bar aumentasse la frequenza allo stesso tempo, proprio come farebbe una vera whammy bar. Ho provato a farlo funzionare per un po', ma è stato più complicato di quanto pensassi. Penso che potrebbe essere solo questione di aggiungere un'espressione nella sezione dell'oscillatore che aggiunga una frequenza un po' più alta all'oscillatore in base al valore proveniente dalla barra del whammy.
  • Barra della pennata: attualmente la barra della pennata riproduce la sequenza in avanti quando viene premuta e all'indietro quando viene premuta verso l'alto, ma potrebbe essere meglio farla scorrere attraverso diverse opzioni di sequenza come il passo casuale, ecc.
  • Pulsanti più/meno: i pulsanti più/meno cambiano i battiti al minuto, ma è un po' deludente a meno che non li si prema più volte. Potrebbe essere utile aumentarlo di una quantità maggiore ogni volta. O forse far cambiare il sequencer tra riproduzione a 16 battute, 8 battute, 4 battute, tripletta.

Consigliato: