Cuprins:

Keytar Hero (Utilizarea unui controler de chitară Wii ca sintetizator): 7 pași (cu imagini)
Keytar Hero (Utilizarea unui controler de chitară Wii ca sintetizator): 7 pași (cu imagini)

Video: Keytar Hero (Utilizarea unui controler de chitară Wii ca sintetizator): 7 pași (cu imagini)

Video: Keytar Hero (Utilizarea unui controler de chitară Wii ca sintetizator): 7 pași (cu imagini)
Video: Jesse Cale - Keytar Hero 2024, Iulie
Anonim
Image
Image
Pasul 1: Raspberry Pi (configurare inițială)
Pasul 1: Raspberry Pi (configurare inițială)

Jocurile Guitar Hero erau la modă acum o duzină de ani, așa că va exista o mulțime de controlere de chitară vechi care stau în jurul prafului. Au o mulțime de butoane, butoane și pârghii, așa că de ce să nu le folosim din nou? Controlerul de chitară nu scoate în mod normal niciun sunet singur, dar în acest tutorial vă voi arăta cum să convertiți un controler Wii Guitar Hero, astfel încât să poată fi redat ca sintetizator.

Provizii

  • Controler Wii Guitar Hero
  • Nunchucky breakout board (disponibil pe Adafruit aici)
  • 4ea fire jumper (de la femeie la femeie)
  • 2 conectori de sertizare (opțional)
  • Raspberry Pi (3 B + sau 4 preferate)
  • Card MicroSD de 16 GB

Pasul 1: Pasul 1: Raspberry Pi (configurare inițială)

Un Raspberry Pi este creierul și creierul acestui proiect, așa că primul lucru pe care trebuie să-l facem este să configurăm unul pentru proiectul nostru. Am încercat acest proiect atât pe un Raspberry Pi 3 B + cât și pe un 4 și ambele par să funcționeze bine.

Raspberry Pi sunt microcomputere care stochează totul pe un card microSD în loc de pe un hard disk … inclusiv sistemul de operare. Modul tipic de utilizare este descărcarea celui mai recent sistem de operare și înregistrarea unei imagini a acestuia pe un card microSD după cum urmează:

  • Pe un computer sau laptop separat, accesați
  • Descărcați cel mai recent sistem de operare Raspbian. (Buster în momentul scrierii acestui articol). Există mai multe versiuni disponibile pe pagină, care oferă software mai mult sau mai puțin inclus, în funcție de preferințe. Toate ar trebui să funcționeze bine, dar îmi place să folosesc opțiunea „Raspbian Buster cu desktop și software recomandat”, deoarece include unele IDE de programare și alte aplicații la îndemână. Cel mai simplu mod este să descărcați versiunea zip.
  • Înregistrați imaginea Raspbian pe cardul microSD. Există multe aplicații pe care le puteți folosi pentru a inscripționa imaginea Raspbian pe cardul dvs. microSD, dar am folosit programul balenaEtcher pe care îl puteți obține aici. Introduceți cardul microSD în computer și rulați balenaEtcher. Pentru imaginea discului, selectați fișierul zip pe care l-ați descărcat, apoi selectați cardul SD și apăsați flash. Instrumentul va dezarhiva fișierele de imagine de pe disc și le va arde pe cardul SD. IMPORTANT: Asigurați-vă că unitatea pe care o selectați este cardul microSD … instrumentul va suprascrie orice unitate specificați, deci asigurați-vă că ați ales-o pe cea corectă.
  • Porniți Raspberry Pi. Introduceți cardul microSD în Raspberry Pi. Conectați-vă puterea, mouse-ul, tastatura și difuzoarele. Dacă urmați instrucțiunile, este destul de auto-explicativ … setați locația / ora, setați o parolă și conectați WiFi.

Aceasta este configurarea standard pentru un Raspberry Pi, așa că, dacă aveți nevoie de mai multe detalii, le puteți găsi aici. Vom face restul pașilor noștri pe Raspberry Pi.

Pasul 2: Pasul 2: Activați I2c

Pasul 2: Activați I2c
Pasul 2: Activați I2c

Guitar Hero Controller folosește i2c pentru a comunica (i2c este un protocol destul de comun utilizat de dispozitivele electronice pentru a vorbi între ele), așa că trebuie să activăm această caracteristică pe Raspberry Pi:

  • Instalați biblioteci pentru i2c. Bibliotecile i2c par acum să facă parte din construcția standard Buster, dar în caz că vom rula programul de instalare pentru ele. Deschideți un shell (există o pictogramă pentru acesta în bara de activități din partea de sus) și tastați următoarele:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-tools
  • Activați i2c pe Raspberry Pi. În tipul dvs. de shell: sudo raspi-config. Aceasta va afișa fereastra de configurare. Săgeată în jos la InterfacingOptions-> I2C pentru a activa i2c pentru dispozitiv. Pentru a ieși din fereastră, săgeata dreapta spre Înapoi și apoi la Finalizare pentru a salva setările.
  • Reporniți. În shell, tastați: sudo reboot
  • Setați parametrii i2c personalizați. Valoarea implicită i2c baudrate (100k) pare să confunde chitara ocazional, așa că o vom încetini la 50k după cum urmează:

    • Într-un tip de shell: sudo nano /boot/config.txt
    • Aceasta vă va deschide fișierul de configurare într-un editor de text. Săgeată în jos și găsește linia care spune dtparam = i2c_arm = on. Dacă este comentat, decomentați-l. Dacă nu aveți acea linie, adăugați-o. Sub acea linie se adaugă și următoarele:

      • dtparam = i2c1 = on
      • dtparam = i2c1_baudrate = 50000
    • Apăsați Ctrl + O pentru a salva fișierul de configurare și apoi apăsați Ctrl + X pentru a ieși.
  • Reporniți. În shell, tastați: sudo reboot

Pasul 3: Pasul 3: Instalați Pure Data

Pasul 3: Instalați Pure Data
Pasul 3: Instalați Pure Data
Pasul 3: Instalați Pure Data
Pasul 3: Instalați Pure Data

Pentru sunetele sintetizatorului vom folosi un program numit Pure Data. Acesta este un instrument generativ de sunet și afișaj interactiv, care există de ceva vreme. Are câteva caracteristici care îl fac ideal pentru acest proiect … are o interfață de utilizare bazată pe noduri, care este destul de ușor de utilizat și poate primi semnale din surse externe, cum ar fi scripturile python.

  • Instalați Pure Data. Într-un tip de shell: sudo apt-get install puredata
    • Acest lucru ar trebui să instaleze software-ul pe Raspberry Pi, dar dacă se plânge în shell despre faptul că nu poate găsi toate fișierele de care are nevoie, încercați acest lucru:

      • sudo apt-get update
      • Apoi executați din nou comanda de instalare: sudo apt-get install puredata
    • În timpul instalării vă va solicita dacă doriți să creați directoare pentru extensii, puteți spune Da.
  • Lansați Pure Data. Dacă s-a instalat corect, ar trebui să vedeți programul listat în meniul Start Desktop sub Sound & Video. Rulați-l pentru a vă asigura că se lansează.
  • Configurați sunetul Pure Data. Sunetul din Pure Data nu este de obicei activat în mod implicit, așa că va trebui să îl activați.

    • Setați ieșirea audio la ALSA. Când Pure Data se lansează, ar trebui să vedeți fereastra consolei. Accesați meniul Media și selectați ALSA ca rezultat. Este posibil să vedeți mesaje de avertizare în shell-ul consolei care să spună că nu poate găsi anumite fișiere, dar puteți ignora acest lucru.
    • Activați sunetul DSP. În fereastra consolei, bifați caseta de selectare care spune DSP.
  • Testați ieșirea audio. În fereastra consolei Pure Data, accesați Media-> Test Audio & MIDI. Aceasta va deschide un fișier de test pe care îl putem folosi pentru a ne asigura că Pure Data funcționează și că putem auzi sunetul. Porniți difuzoarele, dar mențineți-le la un volum redus la început (uneori sunetul poate fi foarte puternic în mod implicit). În fișierul de testare, în partea stângă ar trebui să vedeți o secțiune numită Tonuri de testare. Faceți clic mai întâi pe caseta pe care scrie 60 și vedeți dacă auziți sunet din difuzoare. Dacă nu, încercați să faceți clic pe caseta 80 și apoi ridicați difuzoarele până când auziți sunet. Dacă auziți sunet, încercați să trageți în caseta pe care scrie Pitch în dreapta tonurilor de testare, unde puteți schimba frecvența tonurilor și puteți vedea ce se întâmplă.

Dacă puteți lansa Pure Data și auzi un sunet din patch-ul de testare, atunci sunteți gata să treceți la pasul următor. Însă Pure Data poate obține un pic înțelegător în ceea ce privește ieșirea audio prima dată, așa că, dacă tot nu primiți sunet, încercați următoarele:

  • Este posibil ca sunetul să fie direcționat prin cablul HDMI, deci pentru a-l forța să utilizeze mufa pentru căști:

    • Într-un tip de shell: sudo raspi-config
    • Accesați Opțiuni avansate-> Audio-> Forțare mufă 3,5 mm („căști”)
  • Încercați să reporniți. Uneori, acest lucru face truc.
  • Verificați difuzoarele și conexiunea la Raspberry Pi.

Pasul 4: Pasul 4: Conectarea chitarei

Pasul 4: Conectarea chitarei
Pasul 4: Conectarea chitarei
Pasul 4: Conectarea chitarei
Pasul 4: Conectarea chitarei
Pasul 4: Conectarea chitarei
Pasul 4: Conectarea chitarei

Cel mai simplu mod de a conecta controlerul de chitară la Raspberry Pi este cu o placă ieftină, cum ar fi Nunchucky *. Această placă vă permite să accesați semnalul care vine de la chitară fără a întrerupe ștecherul sau a deschide chitara. Pe o parte a plăcii sunt urme plate concepute pentru a se potrivi perfect în mufa care vine de la chitară. Există, de asemenea, două crestături mici care permit ștecherului să se fixeze în poziție, împiedicându-l astfel să se desprindă. Urmele duc la patru știfturi de antet pe partea opusă a plăcii.

Notă: Nunchucky vine cu știfturi de antet, dar nu sunt lipite, așa că va trebui să faceți acest lucru singur. Pentru al meu, am folosit în schimb știfturi de antet de 90 de grade, care îi permit să se așeze plat în proiectul final.

Veți avea nevoie de patru fire pentru a conecta Nunchucky la Raspberry Pi. Conectați firele de la pinii de antet Nunchucky la pinii GPIO ai Raspberry Pi după cum urmează:

  • 3.3v -> Pinul 1
  • Date -> Pinul 3
  • Clk -> Pinul 5
  • Gnd -> Pinul 9

În proiectul meu am folosit conectori de sertizare pentru fire, astfel încât să nu se scoată la fel de ușor. Dar dacă nu aveți conectori de sertizare, patru fire individuale jumper-to-female vor funcționa bine. Dacă folosiți conectorii de sertizare, asigurați-vă că acordați atenție ordinii firelor de pe pinii antetului și pinii GPIO. De asemenea, rețineți că pe pinii GPIO omitem pinul 7. Pentru a explica acest lucru, am folosit un conector de sertizare cu cinci fire la un capăt și am sărit un slot.

Pentru a verifica dacă Raspberry Pi poate detecta controlerul de chitară, deschideți un shell și tastați: sudo i2cdetect -y 1

Ar trebui să tipărească o grilă în coajă cu linii în mare parte duble. Dacă computerul poate detecta chitara, ar trebui să vedeți ID-ul chitarii # 52 într-unul din sloturile … pe aparatul meu a apărut în coloana 2, rândul 5 … dar nu contează care, atâta timp cât vedeți numărul 52 undeva acolo.

Dacă computerul nu îl poate detecta, iată câteva lucruri de încercat:

  • Asigurați-vă că firele sunt bine conectate.
  • Asigurați-vă că aveți totul conectat la pinii potriviți.
  • Răsuciți mufa de chitară. Nunchucky nu vă împiedică să conectați ștecherul cu capul în jos, deci ar putea fi inversat.
  • Asigurați-vă că i2c este activat pe Raspberry Pi (așa cum se arată în pasul 2)

* Dacă ștecherul controlerului de chitară pare familiar, este pentru că este același cu controlerul standard Wii Nunchuck … de aici și numele Nunchucky! Aceasta înseamnă, de asemenea, că puteți utiliza aceeași placă de breakout pentru a vă conecta și la controlere nunchuck.

Pasul 5: Pasul 5: Asamblarea tuturor

Pasul 5: Puneți totul împreună
Pasul 5: Puneți totul împreună
Pasul 5: Puneți totul împreună
Pasul 5: Puneți totul împreună

Acum, că totul este configurat pe Raspberry Pi, avem nevoie doar de un pic de cod pentru a funcționa. Puteți descărca codul și alte fișiere necesare după cum urmează:

  • Pentru a descărca codul și alte fișiere pe Raspberry Pi, deschideți un shell nou și tastați următoarea comandă (poate fi necesar să puneți „sudo” înainte de acesta): git clone
  • Aceasta va crea un director în directorul de acasă numit keytarHero (adică / home / pi / keytarHero) și va descărca fișierele în el.

Există trei fișiere principale în acest pachet:

  • WiiGHController.py: Acesta este un script python care deschide o conexiune i2c la chitară și returnează valorile diferitelor controale. În mod implicit, imprimă valorile pe care le citește pe shell, astfel încât să puteți vedea ce face.
  • keytarHero.pd: Acesta este fișierul de patch-uri Pure Data pe care l-am creat pentru a crea muzica pe care o veți auzi. Este configurat pentru a citi valorile care vin de la chitară și le direcționează către diferite noduri pentru a genera sunetele. Voi discuta detaliile patch-ului în pasul următor, dar în cele din urmă ați putea modifica acest lucru pentru a face orice doriți de aici.
  • keytarHero.py: Acesta este scriptul care dă startul întregului proces și lipeste totul împreună. Lansează Pure Data și deschide patch-ul keytarHero.pd. Deschide o conexiune la patch și transmite valorile de la chitară la patch.

Momentul adevărului! Asigurați-vă că chitara este conectată la Raspberry Pi și apoi sunteți gata de plecare. Pentru a începe, trebuie doar să rulați scriptul keytarHero.py. Pentru a face acest lucru:

  • Deschideți un shell nou și tastați: cd keytarHero
  • Apoi executați comanda: python keytarHero.py

Asta e! Dacă totul funcționează corect, Pure Data ar trebui să lanseze și să înceapă să joace patch-ul. Ar trebui să auziți o secvență de note jucate și când apăsați butoanele de pe chitară, aceasta ar trebui să răspundă la aceasta.

Depanare

Dacă nu funcționează, iată câteva lucruri de verificat:

  • Patch-ul Pure Data nu lansează sau nu primește o eroare în legătură cu faptul că nu găsești fișiere? Scriptul keytarHero.py are calea către fișierul patch-ului Pure Data codificat la „/home/pi/keytarHero/keytarHero.pd”. Dacă ați mutat folderul keytarHero sau fișierul de patch-uri în altă parte, va trebui să actualizați scriptul pentru a utiliza calea. Pentru a face acest lucru, deschideți fișierul keytarHero.py și căutați variabila numită PD_PATCH_PATH și schimbați-o pentru a indica directorul în care trăiește fișierul dvs. keytarHero.pd. Salvați scriptul și rulați-l și ar trebui să fiți bine să mergeți.
  • Chitara emite un semnal? Scriptul ar trebui să imprime semnalul pe care îl primește de la chitară la shell în mod continuu ca un șir de numere, fiecare reprezentând valoarea unui control pe chitară. Când utilizați un control pe chitară, ar trebui să provoace modificarea acestor numere. Dacă nu, verificați dacă ați făcut corect configurarea i2c și conexiunile la chitară în pașii de mai sus.
  • Este activat sunetul Pure Data? Patch-ul Pure Data furnizat în acest pachet ar trebui să activeze automat sunetul, dar verificați dacă este bifată caseta de selectare DSP din consola Pure Data. De asemenea, verificați setările audio așa cum se arată în pasul 3.
  • Pure Data primește semnalul de la chitară? În colțul din dreapta sus al patch-ului se află o grămadă de noduri responsabile de citirea semnalului de la chitară și transmiterea acestuia către restul patch-ului. Pe măsură ce apăsați butoanele de pe chitară, numerele din această secțiune ar trebui să se actualizeze și vă vor spune că recepționează semnalul în mod corespunzător.
  • Inițializarea variabilelor în patch. Datele pure pot fi puțin ciudate cu privire la valorile din patch-uri care nu sunt inițializate. Am adăugat mecanisme pentru a declanșa variabile atunci când se deschide, dar s-ar putea să merite doar să faceți clic pe unele dintre casetele de mesaje (cele care arată că au primit o mușcătură). Acest lucru îi face să inițializeze și îi poate trezi.

Pasul 6: Un tur al patch-ului Pure Data

Un tur al patch-ului Pure Data
Un tur al patch-ului Pure Data
Un tur al patch-ului Pure Data
Un tur al patch-ului Pure Data
Un tur al patch-ului Pure Data
Un tur al patch-ului Pure Data
Un tur al patch-ului Pure Data
Un tur al patch-ului Pure Data

Configurarea descrisă până acum în acest tutorial va face ca lucrurile să funcționeze pentru dvs., dar unul dintre lucrurile frumoase legate de utilizarea datelor pure pentru acest proiect este că poate fi personalizat pentru a face orice doriți. Când patch-ul este deschis dacă apăsați Ctrl + E, acesta pune patch-ul în modul Edit și puteți schimba patch-ul. Detaliile despre utilizarea datelor pure depășesc domeniul de aplicare al acestui tutorial (există o mulțime de tutoriale online pentru asta), dar poate fi amuzant să te joci cu el, așa că iată un tur general a ceea ce se întâmplă în patch-ul keytarHero.pd în cazul în care doriți să îl personalizați:

  • Comunicare la chitară: În partea dreaptă sus a patch-ului se află un copac de noduri responsabil de gestionarea semnalului de la chitară. Valorile de la chitară sunt un șir lung, astfel încât aceste noduri împart șirul în valori individuale pentru fiecare control, le convertesc în numere și apoi le trec la nodurile „trimise” (cele care încep cu un s). Nodurilor de trimitere li se atribuie un nume și emit semnalul pentru a „primi” noduri cu același nume. De exemplu, nodul 's whammy', emite valorile provenite de la bara whammy a chitarii și nodul 'r whammy' din mijlocul patch-ului primește acel semnal și folosește acel semnal pentru a opri secvențierul. Trimiterea / primirea nodurilor ajută la reducerea dezordinii liniilor de conexiune din patch. Nu recomand să vă amestecați cu această secțiune, deoarece este destul de complicat să vă îndreptați, dar puteți adăuga cu siguranță noduri suplimentare de recepție pe parcursul patch-ului, după cum este necesar, pentru a primi semnale de la ea, după cum este necesar.
  • Secțiunea secvențial: secțiunea din mijloc a patch-ului controlează secvențialul. În partea stângă este o bară cu un pătrat negru în mișcare care vă arată ce notă dintr-o secvență de 16 note redă. Tasta strum controlează dacă secvența se redă înainte sau înapoi. Butoanele plus / minus măresc / micșorează viteza. În partea dreaptă sunt cinci seturi de numere care controlează ce note joacă în fiecare pas. Fiecare secvență este alocată redării când este apăsat unul dintre cele cinci butoane de pe fret. Aceste numere sunt valori MIDI și le puteți schimba pentru a reda orice note doriți … doar dați-le valori între 0 și 127.
  • Secțiunea oscilator / FX: În partea stângă jos sunt oscilatorul și nodurile FX care emit efectiv sunetul. Oscilatorul primar este în stânga. Valorile midi din secțiunea secvențială sunt convertite în frecvențe și alimentate la oscilator. Este amestecat cu un al doilea oscilator care vine din partea dreaptă. Frecvența sa este, de asemenea, controlată de valorile midi, dar cu un offset suplimentar de frecvență acționat de axa X a joystick-ului. Acest lucru provoacă un efect detunat sau fluierat atunci când mutați joystick-ul spre stânga sau spre dreapta. În partea dreaptă jos există, de asemenea, un nod de filtru trece jos a cărui frecvență de tăiere este legată de axa Y a joystick-ului. Un filtru trece jos determină cât sunet de înaltă frecvență este eliminat din sunet. Când joystick-ul este mutat în poziția descendentă, acesta întrerupe o mare parte a frecvențelor înalte, ceea ce duce la un sunet înăbușit. Când este deplasat în poziția ascendentă, trece toate frecvențele, rezultând un sunet mai luminos.
  • Inițializare: În partea din stânga sus a patch-ului există o serie de noduri care inițializează patch-ul atunci când se lansează, cum ar fi pornirea audio și „atingerea” diferitelor noduri pentru a le trezi. Din nou, probabil că nu este nevoie să vă deranjați cu această secțiune, dar dacă există lucruri pe care doriți să le întâmplați când se lansează patch-ul, conectați-le la nodul numit „loadbang”.
  • Am încercat să documentez patch-ul cu comentarii în patch-ul în sine, așa că sperăm că vă va oferi suficiente informații pentru a explora diferite opțiuni de aici.

Bucurați-vă!

Pasul 7: Lucruri suplimentare de încercat

Rularea chitarei „fără cap”

Ar trebui să fie posibil să rulați acest proiect fără a fi conectat la un monitor / tastatură / mouse dacă ați rulat Raspberry Pi de pe o sursă de alimentare portabilă adecvată. Raspberry Pi nu se încadrează în deschiderea din spatele chitarei, dar dacă vă simțiți curajos, puteți face modificări la chitară pentru a remedia asta … sau pur și simplu montați Pi în spate cu șuruburi și lăsați-l să se lipească un pic afară. Există o mulțime de tutoriale online despre cum să rulați script-uri pe Raspberry Pi fără cap, dar practic ați dori să rulați comanda „python /home/pi/keytarHero/keytarHero.py&” când pornește. Teoretic, atunci ați avea o chitară cu un singur cablu care iese din difuzor … la fel ca o chitară electrică adevărată!

Modificări suplimentare de date pure

Am avut alte câteva idei despre modul în care chitara putea controla patch-ul Pure Data, dar nu am încercat. Acestea ar fi modificări ale patch-ului care ar putea fi amuzant de experimentat:

  • Bara whammy: în patch-ul actual bara whammy oprește pur și simplu redarea secvenței, dar cred că ar fi mai bine dacă bara whammy ar crește frecvența în același timp, la fel ca o bară whammy reală. Am încercat să-l fac să funcționeze o vreme, dar a fost mai complicat decât credeam. Cred că ar putea fi doar o chestiune de a adăuga o expresie în secțiunea oscilatorului care adaugă o frecvență puțin mai mare la oscilator pe baza valorii provenite de la bara whammy.
  • Bara Strum: În prezent, bara Strum redă secvența înainte când este apăsat în jos și înapoi când este apăsat în sus, dar ar putea fi mai bine să o parcurgeți prin diferite opțiuni de secvențiere, cum ar fi pasul aleatoriu etc.
  • Butoane plus / minus: butoanele plus / minus schimbă ritmurile pe minut, dar este puțin dezamăgitor, cu excepția cazului în care le lovești de mai multe ori. Ar putea fi bine să-l crești de fiecare dată cu o cantitate mai mare. Sau poate puneți-l pe comutatorul de secvențial între redarea de 16, 8, 4, trei, triplete.

Recomandat: