Indholdsfortegnelse:

Keytar Hero (Brug af en Wii Guitar Controller som en synthesizer): 7 trin (med billeder)
Keytar Hero (Brug af en Wii Guitar Controller som en synthesizer): 7 trin (med billeder)

Video: Keytar Hero (Brug af en Wii Guitar Controller som en synthesizer): 7 trin (med billeder)

Video: Keytar Hero (Brug af en Wii Guitar Controller som en synthesizer): 7 trin (med billeder)
Video: Final Assembly - A new Guitar build Part 16 2024, Juli
Anonim
Image
Image
Trin 1: Raspberry Pi (første opsætning)
Trin 1: Raspberry Pi (første opsætning)

Guitar Hero -spillene var alle raseri for en snes år siden, så der er sikkert en masse gamle guitarcontrollere, der ligger og samler støv. De har mange knapper, knapper og håndtag, så hvorfor ikke bruge dem igen? Guitarkontrolleren laver normalt ikke nogen lyd alene, men i denne vejledning viser jeg dig, hvordan du konverterer en Wii Guitar Hero Controller, så den kan afspilles som en synthesizer.

Forbrugsvarer

  • Guitar Hero Wii -controller
  • Nunchucky breakout board (tilgængelig på Adafruit her)
  • 4ea jumperwires (hun til hun)
  • 2 stk. Krympestik (valgfrit)
  • Hindbær Pi (3 B+ eller 4 foretrækkes)
  • 16 GB MicroSD -kort

Trin 1: Trin 1: Raspberry Pi (første opsætning)

En Raspberry Pi er hjernen og brawn i dette projekt, så det første vi skal gøre er at oprette en til vores projekt. Jeg har prøvet dette projekt på både en Raspberry Pi 3 B+ og en 4, og de ser begge ud til at fungere fint.

Raspberry Pi er mikrocomputere, der gemmer alt på et microSD -kort i stedet for en harddisk … inklusive operativsystemet. Den typiske måde at bruge dem på er at downloade det nyeste operativsystem og brænde et billede af det på et microSD -kort som følger:

  • Gå til https://www.raspberrypi.org/downloads/raspbian/ på en separat pc eller bærbar computer
  • Download det nyeste Raspbian OS. (Buster i skrivende stund). Der er flere versioner tilgængelige på siden, der giver mere eller mindre inkluderet software afhængigt af dine præferencer. De burde alle fungere fint, men jeg kan godt lide at bruge indstillingen "Raspbian Buster med desktop og anbefalet software", fordi den indeholder nogle programmerings -IDE'er og andre praktiske apps. Den nemmeste måde er at downloade zip -versionen.
  • Brænd Raspbian -billede til microSD -kort. Der er mange applikationer, du kan bruge til at brænde Raspbian -billedet til dit microSD -kort, men jeg brugte balenaEtcher -programmet, som du kan få her. Sæt microSD -kortet i din computer, og kør balenaEtcher. For diskbilledet skal du vælge den zip -fil, du downloadede, derefter vælge dit SD -kort og trykke på flash. Værktøjet vil pakke diskbilledfilerne ud og brænde dem til SD -kortet. VIGTIGT: Sørg for, at det drev, du vælger, er microSD -kortet … værktøjet overskriver det drev, du angiver, så sørg for, at du har valgt det korrekte.
  • Tænd din Raspberry Pi. Sæt microSD -kortet i din Raspberry Pi. Tilslut din strøm, mus, tastatur og højttalere. Hvis du følger vejledningen, er det ret selvforklarende … indstil din placering/tid, angiv en adgangskode og tilslut WiFi.

Dette er alt standardopsætning til en Raspberry Pi, så hvis du har brug for flere detaljer, kan du finde dem her. Vi gør resten af vores trin på Raspberry Pi.

Trin 2: Trin 2: Aktiver I2c

Trin 2: Aktiver I2c
Trin 2: Aktiver I2c

Guitar Hero Controller bruger i2c til at kommunikere (i2c er en ret almindelig protokol, der bruges af elektroniske enheder til at tale med hinanden), så vi skal aktivere denne funktion på Raspberry Pi:

  • Installer biblioteker til i2c. I2c -bibliotekerne ser nu ud til at være en del af Buster -standardopbygningen, men for en sikkerheds skyld kører vi installationsprogrammet til dem. Åbn en skal (der er et ikon for det på proceslinjen øverst) og skriv følgende:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-værktøjer
  • Aktiver i2c på Raspberry Pi. I din skaltype: sudo raspi-config. Dette åbner dit konfigurationsvindue. Pil ned til InterfacingOptions-> I2C for at aktivere i2c for enheden. For at komme ud af vinduet skal du højre pil til Tilbage og derefter til Afslut for at gemme indstillingerne.
  • Genstart. Skriv i din shell: sudo reboot
  • Indstil brugerdefinerede i2c -parametre. Standard i2c baudrate (100k) synes at forvirre guitaren lejlighedsvis, så vi bremser den til 50k som følger:

    • I en skaltype: sudo nano /boot/config.txt
    • Dette åbner din konfigurationsfil i et tekstredigeringsprogram. Pil ned og find den linje, der siger dtparam = i2c_arm = on. Hvis det er kommenteret, skal du kommentere det. Hvis du ikke har den linje, skal du tilføje den. Under denne linje tilføjes også følgende:

      • dtparam = i2c1 = tændt
      • dtparam = i2c1_baudrate = 50000
    • Tryk på Ctrl + O for at gemme konfigurationsfilen, og tryk derefter på Ctrl + X for at afslutte.
  • Genstart. Skriv i din shell: sudo reboot

Trin 3: Trin 3: Installer rene data

Trin 3: Installer Pure Data
Trin 3: Installer Pure Data
Trin 3: Installer Pure Data
Trin 3: Installer Pure Data

Til synthesizer -lyde bruger vi et program kaldet Pure Data. Dette er et generativt lyd- og interaktivt displayværktøj, der har eksisteret i et stykke tid. Det har et par funktioner, der gør det ideelt til dette projekt … det har et nodebaseret brugergrænseflade, som er ret let at bruge, og det kan modtage signaler fra eksterne kilder som f.eks. Python-scripts.

  • Installer Pure Data. I en skaltype: sudo apt-get install puredata
    • Dette skulle installere softwaren på din Raspberry Pi, men hvis det klager i skallen over ikke at kunne finde alle de filer, det har brug for, kan du prøve dette:

      • sudo apt-get opdatering
      • Kør derefter installeringskommandoen igen: sudo apt-get install puredata
    • Under installationen vil den bede dig om at oprette mapper til udvidelser, du kan sige Ja.
  • Start Pure Data. Hvis det er installeret korrekt, skal du se programmet på skrivebordets startmenu under Lyd og video. Kør det for at sikre, at det starter.
  • Opsæt Pure Data -lyd. Lyden i Pure Data er normalt ikke slået til som standard, så du skal aktivere den.

    • Indstil lydudgang til ALSA. Når Pure Data lanceres, skal du se konsolvinduet. Gå til menuen Medier, og vælg ALSA som dit output. Du kan muligvis se advarselsmeddelelser i konsolleskallen, der siger, at den ikke kan finde bestemte filer, men du kan ignorere dette.
    • Slå DSP -lyd til. I konsolvinduet skal du markere afkrydsningsfeltet, der siger DSP.
  • Test lydudgang. I vinduet Pure Data-konsol skal du gå til Medie-> Test lyd og MIDI. Dette åbner en testfil, vi kan bruge til at sikre, at Pure Data fungerer, og at vi kan høre lyden. Tænd for dine højttalere, men hold dem først på en lav lydstyrke (nogle gange kan lyden være meget høj som standard). I testfilen skal du i venstre side se et afsnit kaldet Testtoner. Klik først på boksen, der siger 60, og se, om du hører nogen lyd fra dine højttalere. Hvis ikke, kan du prøve at klikke på feltet 80 og derefter skrue op for dine højttalere, indtil du hører lyd. Hvis du hører lyd, kan du prøve at trække i feltet, hvor der står Pitch til højre for testtonerne, hvor du kan ændre frekvensen af tonerne og se, hvad der sker.

Hvis du er i stand til at starte Pure Data og høre en lyd fra testrettelsen, er du klar til at gå videre til det næste trin. Men Pure Data kan blive lidt finurlig om lydoutput første gang, så hvis du stadig ikke får lyd, kan du prøve følgende:

  • Det er muligt, at lyden dirigeres gennem HDMI -kablet, så for at tvinge den til at bruge hovedtelefonstikket:

    • I en skaltype: sudo raspi-config
    • Gå til Avancerede indstillinger-> Lyd-> Force 3,5 mm ('hovedtelefon') stik
  • Prøv at genstarte. Nogle gange gør dette tricket.
  • Kontroller dine højttalere og forbindelsen til Raspberry Pi.

Trin 4: Trin 4: Tilslutning af guitaren

Trin 4: Tilslutning af guitaren
Trin 4: Tilslutning af guitaren
Trin 4: Tilslutning af guitaren
Trin 4: Tilslutning af guitaren
Trin 4: Tilslutning af guitaren
Trin 4: Tilslutning af guitaren

Den nemmeste måde at forbinde guitarcontrolleren til Raspberry Pi er med et billigt breakout -bord som f.eks. Nunchucky*. Dette kort giver dig adgang til signalet fra guitaren uden at afbryde stikket eller bryde guitaren op. På den ene side af brættet er der flade spor designet til at passe perfekt ind i stikket, der kommer fra guitaren. Der er også to små hak, der gør det muligt for proppen at klikke på plads og dermed forhindre, at den løsner. Sporene fører til fire hovedstifter på den modsatte side af brættet.

Bemærk: Nunchucky leveres med header pins, men de er ikke loddet på, så du skal gøre dette selv. Til min brugte jeg i stedet 90 graders header pins, som gør det muligt at ligge fladt i det endelige projekt.

Du skal bruge fire ledninger for at forbinde Nunchucky til Raspberry Pi. Tilslut ledningerne fra Nunchucky -headerstifterne til Raspberry Pi's GPIO -ben som følger:

  • 3.3v -> Pin 1
  • Data -> Pin 3
  • Clk -> Pin 5
  • Gnd -> Pin 9

I mit projekt brugte jeg krympestik til ledningerne, så de ikke trak så let ud. Men hvis du ikke har krympestik, fungerer fire individuelle hun-til-hun-jumpertråde fint. Hvis du ALDRIG bruger krympestikkene, skal du være opmærksom på rækkefølgen af ledningerne på hovedstifterne og GPIO -benene. Bemærk også, at vi over GPIO-benene springer vi over stift 7. For at tage højde for dette brugte jeg et femtråds krympestik i den ene ende og sprang et slot over.

For at kontrollere, at din Raspberry Pi kan registrere guitarcontrolleren, skal du åbne en skal og skrive: sudo i2cdetect -y 1

Det skal udskrive et gitter i skallen med for det meste dobbelt streger i dem. Hvis computeren kan registrere guitaren, skal du se guitarens ID# 52 i en af slots … på min maskine viste den sig i kolonne 2, række 5 … men det er ligegyldigt hvilken, så længe du ser nummer 52 et sted derinde.

Hvis computeren ikke kan registrere det, er der nogle ting, du kan prøve:

  • Sørg for, at dine ledninger er tæt forbundet.
  • Sørg for, at alt er forbundet med de rigtige stifter.
  • Vend guitarstikket rundt. Nunchucky forhindrer dig ikke i at tilslutte stikket på hovedet, så det kan bare være omvendt.
  • Sørg for, at i2c er aktiveret på Raspberry Pi (som vist i trin 2)

*Hvis stikket på guitarcontrolleren ser bekendt ud, er det fordi det er det samme som standard Wii Nunchuck -controlleren … deraf navnet Nunchucky! Dette betyder også, at du også kan bruge det samme breakout -kort til at oprette forbindelse til nunchuck -controllere.

Trin 5: Trin 5: Sæt det hele sammen

Trin 5: Sæt det hele sammen
Trin 5: Sæt det hele sammen
Trin 5: Sæt det hele sammen
Trin 5: Sæt det hele sammen

Nu hvor alt er konfigureret på Raspberry Pi, har vi bare brug for en lille smule kode for at få det til at fungere. Du kan downloade koden og andre nødvendige filer som følger:

  • For at downloade koden og andre filer til Raspberry Pi skal du åbne en ny skal og indtaste følgende kommando (du skal muligvis sætte 'sudo' før den): git clone
  • Dette vil oprette en mappe i dit hjemmemappe kaldet keytarHero (dvs./home/pi/keytarHero) og downloade filerne til den.

Der er tre hovedfiler i denne pakke:

  • WiiGHController.py: Dette er et python -script åbner en i2c -forbindelse til guitaren og returnerer værdierne for de forskellige kontroller. Som standard udskriver den også de værdier, den læser til skallen, så du kan se, hvad den laver.
  • keytarHero.pd: Dette er Pure Data patch -filen, jeg oprettede for at oprette den musik, du vil høre. Den er indstillet til at læse de værdier, der kommer ind fra guitaren, og leder dem til forskellige noder for at generere lydene. Jeg vil diskutere detaljerne i patchen i det næste trin, men i sidste ende kan du ændre dette for at gøre hvad du vil herfra.
  • keytarHero.py: Dette er scriptet, der starter hele processen og limer alt sammen. Det lancerer Pure Data og åbner keytarHero.pd -patchen. Det åbner en forbindelse til patchen og overfører værdierne fra guitar til patchen.

Sandhedens øjeblik! Sørg for, at guitaren er forbundet til Raspberry Pi, og så er du klar til at gå. For at starte det, skal du bare køre keytarHero.py -scriptet. At gøre dette:

  • Åbn en ny skal og skriv: cd keytarHero
  • Kør derefter kommandoen: python keytarHero.py

Det er det! Hvis alt fungerer korrekt, skal Pure Data starte og starte afspilningen. Du skal høre en række noter, der afspilles, og når du trykker på knapperne på guitaren, skal den reagere på den.

Fejlfinding

Hvis det ikke virker, er der et par ting, du skal kontrollere:

  • Ren datapatching starter ikke eller får en fejl om ikke at finde filer? KeytarHero.py -scriptet har stien til Pure Data -patchfilen hardkodet til '/home/pi/keytarHero/keytarHero.pd'. Hvis du har flyttet din keytarHero -mappe eller denne patchfil et andet sted, skal du opdatere scriptet for at bruge din sti i stedet. For at gøre dette skal du åbne keytarHero.py -filen og kigge efter variablen kaldet PD_PATCH_PATH og ændre den til at pege på den mappe, hvor din keytarHero.pd -fil bor. Gem scriptet, og kør det igen, og du skal være god til at gå.
  • Udsender guitaren et signal? Scriptet skal udskrive det signal, det får fra guitaren til skallen kontinuerligt som en række tal, der hver repræsenterer værdien af en kontrol på guitaren. Når du bruger en kontrol på guitaren, bør det få disse tal til at ændre sig. Hvis ikke, skal du kontrollere, at du har udført i2c -opsætningen og guitarforbindelserne korrekt i ovenstående trin.
  • Er Pure Data -lyd slået til? Pure Data -patchen, der følger med i denne pakke, skal automatisk tænde for lyden, men kontrollere, at afkrydsningsfeltet DSP i Pure Data -konsollen er markeret. Kontroller også dine lydindstillinger som vist i trin 3.
  • Modtager Pure Data signalet fra guitaren? I patchens øverste højre hjørne er der en flok noder, der er ansvarlige for at læse signalet fra guitaren og overføre det til resten af patchen. Når du trykker på knapperne på guitaren, bør tallene i dette afsnit også opdateres og fortælle dig, at det modtager signalet korrekt.
  • Initialiserer variabler i patchen. Pure Data kan være lidt finurlige med hensyn til, at værdier i patchen ikke initialiseres. Jeg har tilføjet mekanismer til at udløse variabler, når den åbnes, men det kan være værd at bare klikke på nogle af meddelelsesfelterne (dem, der ser ud til at have taget en bid af dem). Dette får dem til at initialisere og kan vække dem.

Trin 6: En rundvisning i Pure Data Patch

En rundvisning i Pure Data Patch
En rundvisning i Pure Data Patch
En rundvisning i Pure Data Patch
En rundvisning i Pure Data Patch
En rundvisning i Pure Data Patch
En rundvisning i Pure Data Patch
En rundvisning i Pure Data Patch
En rundvisning i Pure Data Patch

Opsætningen, der er beskrevet hidtil i denne vejledning, får tingene til at fungere for dig, men en af de gode ting ved at bruge Pure Data til dette projekt er, at det kan tilpasses til at gøre, hvad du vil. Når plasteret er åbent, hvis du trykker på Ctrl + E, sætter det plasteret i redigeringstilstand, og du kan ændre plasteret. Detaljerne ved brug af Pure Data ligger uden for denne tutorials omfang (der er masser af tutorials online til det), men det kan være sjovt at pille ved det, så her er en generel rundvisning i, hvad der sker i keytarHero.pd -patchen, hvis du vil tilpasse det:

  • Guitarkommunikation: Øverst til højre på plasteret er et knude træ, der er ansvarligt for håndteringen af signalet fra guitaren. Værdierne fra guitaren er en lang streng, så disse noder bryder strengen op i individuelle værdier for hver kontrol, konverterer dem til tal og sender dem derefter til 'send' noder (dem der starter med en s). Send noder tildeles et navn og udsender signalet til 'modtag' noder med samme navn. For eksempel udsender 's whammy' node værdierne, der kommer fra guitarens whammy bar, og 'r whammy' node i midten af patch'en modtager dette signal og bruger dette signal til at standse sequencer. Send/modtag noder hjælper med at reducere rodet i forbindelseslinjer i patchen. Jeg anbefaler ikke at rode med dette afsnit, da det er lidt kræsen at få det rigtigt, men du kan helt sikkert tilføje yderligere modtageknuder i hele patchen efter behov for at modtage signaler fra det efter behov.
  • Sequencer -sektion: Den midterste sektion af patchen styrer sequencer. På venstre side er en bjælke med en sort firkant i bevægelse, der viser dig, hvilken note af en sekvens på 16 noter den spiller. Strum -tasten styrer, om sekvensen spiller frem eller tilbage. Plus/minus -knapperne øger/reducerer hastigheden. På højre side er fem sæt numre, der styrer, hvilke toner der spilles under hvert trin. Hver sekvens tildeles afspilning, når der trykkes på en af de fem knapper på båndet. Disse tal er MIDI -værdier, og du kan ændre dem til at spille de toner, du ønsker … bare giv dem værdier mellem 0 og 127.
  • Oscillator/FX -sektion: Nederst til venstre er oscillatoren og FX -noder, der rent faktisk laver lyden. Den primære oscillator er til venstre. Midi -værdierne fra sequencer -sektionen konverteres til frekvenser og føres til oscillatoren. Det blandes med en anden oscillator, der kommer fra højre side. Frekvensen styres også af midi-værdierne, men med en ekstra frekvensforskydning drevet af joystickets X-akse. Dette forårsager en detunet eller fløjtende effekt, når du flytter joysticket til venstre eller højre. I nederste højre er der også en lavpasfilterknude, hvis afbrydelsesfrekvens er knyttet til joystickets Y-akse. Et lavpasfilter bestemmer, hvor meget højfrekvent lyd der fjernes fra lyden. Når joysticket flyttes til den nedadgående position, afbryder det meget af de høje frekvenser, hvilket resulterer i en dæmpet lyd. Når den flyttes til den opadgående position, passerer den alle frekvenser igennem, hvilket resulterer i en lysere lyd.
  • Initialisering: Øverst til venstre på patchen er der en række noder, der initialiserer patchen, når den starter, såsom at tænde lyden og 'røre' forskellige noder for at vække dem. Igen behøver du sandsynligvis ikke at rode med dette afsnit, men hvis der er ting, du gerne vil have, når patch'en starter, skal du slutte dem til noden kaldet 'loadbang'.
  • Jeg har forsøgt at dokumentere patchen med kommentarer i selve patchen, så forhåbentlig vil det give dig nok information til at undersøge forskellige muligheder herfra.

God fornøjelse!

Trin 7: Yderligere ting at prøve

Kører guitaren 'hovedløs'

Det burde være muligt at køre dette projekt uden at være forbundet til en skærm/tastatur/mus, hvis du kørte din Raspberry Pi fra en egnet bærbar strømkilde. Raspberry Pi passer ikke helt ind i åbningen på bagsiden af guitaren, men hvis du føler dig modig, kan du foretage ændringer af guitaren for at reparere det … eller bare montere Pi på bagsiden med skruer og få den til at stikke lidt ud. Der er masser af tutorials online om, hvordan man kører scripts på Raspberry Pi uden hoved, men dybest set vil du gerne køre kommandoen 'python /home/pi/keytarHero/keytarHero.py&', når den starter op. Teoretisk set ville du have en guitar med kun et kabel ud af det til højttaleren … ligesom en rigtig elektrisk guitar!

Yderligere Pure Data modifikationer

Jeg havde nogle andre ideer til, hvordan guitaren kunne styre Pure Data -patchen, men nåede ikke at prøve. Disse ville være ændringer i programrettelsen, der kunne være sjove at eksperimentere med:

  • Whammy bar: I den aktuelle patch stopper whammy bar simpelthen sekvensafspilningen, men jeg tror, at det ville være bedre, hvis whammy bar også satte frekvensen op på samme tid ligesom en rigtig whammy bar ville. Jeg forsøgte at få det til at fungere et stykke tid, men det var vanskeligere end jeg troede. Jeg tror, det måske bare er et spørgsmål om at tilføje et udtryk nede i oscillatorsektionen, der tilføjer en lidt højere frekvens til oscillatoren baseret på værdien, der kommer fra whammy bar.
  • Strum bar: I øjeblikket spiller stum bar sekvensen fremad, når den trykkes ned og baglæns, når den trykkes op, men det kan være bedre at få den til at cykle gennem forskellige sekventeringsindstillinger, såsom tilfældigt trin osv.
  • Plus/minus-knapper: Plus/minus-knapperne ændrer slagene i minuttet, men det er lidt overvældende, medmindre du rammer dem flere gange. Det kan være godt at få det til at stige med et større beløb hver gang. Eller måske få den til at skifte sequencer mellem 16-takts, 8-takts, 4-takts, tredobbelt afspilning.

Anbefalede: