Innholdsfortegnelse:

Keytar Hero (ved hjelp av en Wii -gitarkontroller som en synthesizer): 7 trinn (med bilder)
Keytar Hero (ved hjelp av en Wii -gitarkontroller som en synthesizer): 7 trinn (med bilder)

Video: Keytar Hero (ved hjelp av en Wii -gitarkontroller som en synthesizer): 7 trinn (med bilder)

Video: Keytar Hero (ved hjelp av en Wii -gitarkontroller som en synthesizer): 7 trinn (med bilder)
Video: Время покупать электронный велосипед 2024, Juli
Anonim
Image
Image
Trinn 1: Raspberry Pi (første oppsett)
Trinn 1: Raspberry Pi (første oppsett)

Guitar Hero -spillene var alle raseri for et dusin år siden, så det vil sikkert være mange gamle gitarkontrollere som ligger og samler støv. De har mange knapper, knapper og spaker, så hvorfor ikke bruke dem igjen? Gitarkontrolleren lager normalt ikke noen lyd alene, men i denne opplæringen viser jeg deg hvordan du konverterer en Wii Guitar Hero Controller, slik at den kan spilles av som en synthesizer.

Rekvisita

  • Guitar Hero Wii -kontroller
  • Nunchucky breakout board (tilgjengelig på Adafruit her)
  • 4ea jumper ledninger (hunn til hunn)
  • 2ea krympekontakter (valgfritt)
  • Bringebær Pi (3 B+ eller 4 foretrukket)
  • 16 GB MicroSD -kort

Trinn 1: Trinn 1: Raspberry Pi (første oppsett)

En Raspberry Pi er hjernen og hjernen til dette prosjektet, så det første vi må gjøre er å sette opp en for prosjektet vårt. Jeg har prøvd dette prosjektet på både en Raspberry Pi 3 B+ og en 4, og de ser ut til å fungere bra.

Raspberry Pi er mikrodatamaskiner som lagrer alt på et microSD -kort i stedet for en harddisk … inkludert operativsystemet. Den vanlige måten å bruke dem på er å laste ned det nyeste operativsystemet og brenne et bilde av det på et microSD -kort som følger:

  • På en egen PC eller bærbar datamaskin, gå til
  • Last ned det nyeste Raspbian OS. (Buster i skrivende stund). Det er flere versjoner tilgjengelig på siden som gir mer eller mindre inkludert programvare, avhengig av dine preferanser. De burde alle fungere bra, men jeg liker å bruke alternativet "Raspbian Buster med stasjonær og anbefalt programvare" fordi det inneholder noen programmerings -IDEer og andre praktiske apper. Den enkleste måten er å laste ned zip -versjonen.
  • Brenn Raspbian -bilde til microSD -kort. Det er mange applikasjoner du kan bruke til å brenne Raspbian -bildet til microSD -kortet ditt, men jeg brukte balenaEtcher -programmet som du kan få her. Sett inn microSD -kortet i datamaskinen og kjør balenaEtcher. For diskbildet, velg zip -filen du lastet ned, velg deretter SD -kortet og trykk på flash. Verktøyet pakker ut diskbildefilene og brenner dem til SD -kortet. VIKTIG: Kontroller at stasjonen du velger er microSD -kortet … verktøyet vil overskrive hvilken stasjon du angir, så sørg for at du har valgt riktig.
  • Slå på Raspberry Pi. Sett inn microSD -kortet i Raspberry Pi. Koble til strøm, mus, tastatur og høyttalere. Hvis du følger instruksjonene, er det ganske selvforklarende … angi posisjon/tid, angi passord og koble til WiFi.

Dette er alt standardoppsett for en Raspberry Pi, så hvis du trenger flere detaljer, kan du finne dem her. Vi skal gjøre resten av trinnene våre på Raspberry Pi.

Trinn 2: Trinn 2: Aktiver I2c

Trinn 2: Aktiver I2c
Trinn 2: Aktiver I2c

Guitar Hero Controller bruker i2c til å kommunisere (i2c er en ganske vanlig protokoll som brukes av elektroniske enheter for å snakke med hverandre), så vi må aktivere denne funksjonen på Raspberry Pi:

  • Installer biblioteker for i2c. I2c -bibliotekene ser nå ut til å være en del av Buster -standardversjonen, men for sikkerhets skyld kjører vi installasjonsprogrammet for dem. Åpne et skall (det er et ikon for det på oppgavelinjen øverst) og skriv inn følgende:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-tools
  • Aktiver i2c på Raspberry Pi. I din skalltype: sudo raspi-config. Dette vil vise konfigurasjonsvinduet. Pil ned til InterfacingOptions-> I2C for å aktivere i2c for enheten. For å komme ut av vinduet, høyrepil til Tilbake og deretter til Fullfør for å lagre innstillingene.
  • Start på nytt. Skriv inn skallet: sudo reboot
  • Angi egendefinerte i2c -parametere. Standard i2c baudrate (100k) ser ut til å forvirre gitaren av og til, så vi reduserer den til 50k som følger:

    • I en skalltype: sudo nano /boot/config.txt
    • Dette åpner konfigurasjonsfilen i et tekstredigeringsprogram. Pil ned og finn linjen som sier dtparam = i2c_arm = på. Hvis det er kommentert, ikke kommenter det. Hvis du ikke har den linjen, kan du legge den til. Under den linjen legger du også til følgende:

      • dtparam = i2c1 = på
      • dtparam = i2c1_baudrate = 50000
    • Trykk Ctrl + O for å lagre konfigurasjonsfilen, og trykk deretter Ctrl + X for å avslutte.
  • Start på nytt. Skriv inn skallet: sudo reboot

Trinn 3: Trinn 3: Installer rene data

Trinn 3: Installer Pure Data
Trinn 3: Installer Pure Data
Trinn 3: Installer Pure Data
Trinn 3: Installer Pure Data

For lydene fra synthesizeren bruker vi et program som heter Pure Data. Dette er et generativt lyd- og interaktivt visningsverktøy som har eksistert en god stund. Den har et par funksjoner som gjør den ideell for dette prosjektet … den har et nodebasert brukergrensesnitt som er ganske enkelt å bruke, og det kan motta signaler fra eksterne kilder som python-skript.

  • Installer Pure Data. I en skalltype: sudo apt-get install puredata
    • Dette bør installere programvaren på Raspberry Pi, men hvis den klager i skallet om at du ikke kan finne alle filene den trenger, kan du prøve dette:

      • sudo apt-get oppdatering
      • Kjør deretter installasjonskommandoen igjen: sudo apt-get install puredata
    • Under installasjonen vil den be deg om du vil opprette kataloger for utvidelser, du kan si Ja.
  • Start Pure Data. Hvis det er riktig installert, bør du se programmet oppført på Start -menyen på skrivebordet under Lyd og video. Kjør den for å sikre at den starter.
  • Sett opp Pure Data -lyd. Lyden i Pure Data er vanligvis ikke på som standard, så du må aktivere den.

    • Still lydutgangen til ALSA. Når Pure Data lanseres, bør du se konsollvinduet. Gå til Media -menyen og velg ALSA som utgang. Du kan se advarsler i konsollskallet som sier at den ikke finner bestemte filer, men du kan ignorere dette.
    • Slå på DSP -lyd. I konsollvinduet merker du av for DSP.
  • Test lydutgang. I vinduet Pure Data-konsoll går du til Media-> Test lyd og MIDI. Dette åpner en testfil vi kan bruke for å sikre at Pure Data fungerer og at vi kan høre lyden. Slå på høyttalerne, men hold dem på et lavt volum først (noen ganger kan lyden være veldig høy som standard). I testfilen, på venstre side, bør du se en seksjon som heter Testtoner. Klikk på boksen som sier 60 først og se om du hører lyd fra høyttalerne. Hvis ikke, kan du prøve å klikke på 80 -boksen og skru opp høyttalerne til du hører lyd. Hvis du hører lyd, kan du prøve å dra i boksen som sier Pitch til høyre for testtonene, hvor du kan endre frekvensen på tonene og se hva som skjer.

Hvis du kan starte Pure Data og høre en lyd fra testoppdateringen, er du klar til å gå videre til neste trinn. Men Pure Data kan bli litt finurlig om lydutgangen første gang, så hvis du fortsatt ikke får lyd, kan du prøve følgende:

  • Det er mulig at lyden går gjennom HDMI -kabelen, så for å tvinge den til å bruke hodetelefonkontakten:

    • I en skalltype: sudo raspi-config
    • Gå til Avanserte alternativer-> Lyd-> Force 3,5 mm ("hodetelefon") -kontakt
  • Prøv å starte på nytt. Noen ganger gjør dette susen.
  • Sjekk høyttalerne og tilkoblingen til Raspberry Pi.

Trinn 4: Trinn 4: Koble til gitaren

Trinn 4: Koble til gitaren
Trinn 4: Koble til gitaren
Trinn 4: Koble til gitaren
Trinn 4: Koble til gitaren
Trinn 4: Koble til gitaren
Trinn 4: Koble til gitaren

Den enkleste måten å koble gitarkontrolleren til Raspberry Pi er med et billig breakout -bord som Nunchucky*. Dette brettet gir deg tilgang til signalet som kommer fra gitaren uten å kutte støpselet eller bryte opp gitaren. På den ene siden av brettet er flate spor designet for å passe perfekt inn i pluggen som kommer fra gitaren. Det er også to små hakk som gjør at pluggen kan klikke på plass og dermed forhindre at den løsner. Sporene fører til fire toppnål på motsatt side av brettet.

Merk: Nunchucky kommer med toppnål, men de er ikke loddet på, så du må gjøre dette selv. For min brukte jeg i stedet 90 graders toppnål som lar den ligge flatt i det siste prosjektet.

Du trenger fire ledninger for å koble Nunchucky til Raspberry Pi. Koble ledningene fra Nunchucky -toppnålene til Raspberry Pi's GPIO -pinner som følger:

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

I prosjektet mitt brukte jeg krympekontakter for ledningene slik at de ikke trakk seg like lett ut. Men hvis du ikke har krympekontakter, vil fire individuelle hun-til-hunn-jumperledninger fungere fint. Hvis du bruker krympekontaktene, må du passe på rekkefølgen på ledningene på toppnålene og GPIO -pinnene. Vær også oppmerksom på at på GPIO-pinnene hopper vi over pinne 7. For å gjøre rede for dette brukte jeg en fem-leders krympekontakt i den ene enden og hoppet over den ene sporet.

For å bekrefte at Raspberry Pi kan oppdage gitarkontrolleren, åpner du et skall og skriver: sudo i2cdetect -y 1

Det skal skrive ut et rutenett i skallet med stort sett doble streker. Hvis datamaskinen kan oppdage gitaren, bør du se gitarens ID# 52 i et av sporene … på maskinen min viste den seg i kolonne 2, rad 5 … men det spiller ingen rolle hvilken, så lenge du ser nummer 52 et sted der inne.

Hvis datamaskinen ikke kan oppdage det, er det noen ting du kan prøve:

  • Sørg for at ledningene er tett forbundet.
  • Sørg for at alt er koblet til de riktige pinnene.
  • Vend gitarpluggen rundt. Nunchucky forhindrer deg ikke i å koble støpselet opp ned, så det kan bare være invertert.
  • Sørg for at i2c er aktivert på Raspberry Pi (som vist i trinn 2)

*Hvis pluggen på gitarkontrolleren ser kjent ut, er det fordi den er den samme som den vanlige Wii Nunchuck -kontrolleren … derav navnet Nunchucky! Dette betyr også at du kan bruke det samme breakout -kortet til å koble til nunchuck -kontrollere også.

Trinn 5: Trinn 5: Sett alt sammen

Trinn 5: Sett alt sammen
Trinn 5: Sett alt sammen
Trinn 5: Sett alt sammen
Trinn 5: Sett alt sammen

Nå som alt er satt opp på Raspberry Pi trenger vi bare en liten bit kode for å få det til å fungere. Du kan laste ned koden og andre nødvendige filer som følger:

  • For å laste ned koden og andre filer til Raspberry Pi, åpner du et nytt skall og skriver inn følgende kommando (du må kanskje sette 'sudo' før den): git clone
  • Dette vil opprette en katalog i hjemmekatalogen din kalt keytarHero (dvs./home/pi/keytarHero) og laste ned filene til den.

Det er tre hovedfiler i denne pakken:

  • WiiGHController.py: Dette er et python -skript som åpner en i2c -tilkobling til gitaren og returnerer verdiene til de forskjellige kontrollene. Som standard skriver den også ut verdiene den leser til skallet, slik at du kan se hva den gjør.
  • keytarHero.pd: Dette er Pure Data -oppdateringsfilen jeg opprettet for å lage musikken du vil høre. Den er satt opp for å lese verdiene som kommer inn fra gitaren og ruter dem til forskjellige noder for å generere lydene. Jeg vil diskutere detaljene i oppdateringen i neste trinn, men til slutt kan du endre dette for å gjøre hva du vil herfra.
  • keytarHero.py: Dette er manuset som starter hele prosessen og limer alt sammen. Den lanserer Pure Data og åpner keytarHero.pd -oppdateringen. Det åpner en forbindelse til lappen og overfører verdiene fra gitar til lappen.

Sannhetens øyeblikk! Sørg for at gitaren er koblet til Raspberry Pi og at du er klar til å gå. For å starte den, trenger du bare å kjøre keytarHero.py -skriptet. Å gjøre dette:

  • Åpne et nytt skall og skriv: cd keytarHero
  • Kjør deretter kommandoen: python keytarHero.py

Det er det! Hvis alt fungerer som det skal, skal Pure Data starte og begynne å spille oppdateringen. Du bør høre en sekvens av notater som spilles, og når du trykker på knappene på gitaren, bør den svare på den.

Feilsøking

Hvis det ikke fungerer, er det noen ting du må sjekke:

  • Ren datapatch starter ikke eller får en feilmelding om ikke å finne filer? KeytarHero.py -skriptet har banen til Pure Data -oppdateringsfilen hardkodet til '/home/pi/keytarHero/keytarHero.pd'. Hvis du har flyttet keytarHero -mappen eller den oppdaterte filen et annet sted, må du oppdatere skriptet for å bruke banen i stedet. For å gjøre dette, åpne keytarHero.py -filen og se etter variabelen PD_PATCH_PATH og endre den til å peke til katalogen der keytarHero.pd -filen bor. Lagre skriptet og kjør det på nytt, så bør du være i gang.
  • Sender gitaren et signal? Manuset skal skrive ut signalet det kommer fra gitaren til skallet kontinuerlig som en tallrekke, som hver representerer verdien av en kontroll på gitaren. Når du bruker en kontroll på gitaren, bør det føre til at disse tallene endres. Hvis ikke, må du kontrollere at du har gjort i2c -oppsettet og gitartilkoblingene riktig i trinnene ovenfor.
  • Er Pure Data -lyd slått på? Pure Data -oppdateringen i denne pakken skal automatisk slå på lyden, men bekreft at DSP -avmerkingsboksen i Pure Data -konsollen er merket av. Sjekk også lydinnstillingene som vist i trinn 3.
  • Mottar Pure Data signalet fra gitaren? I øvre høyre hjørne av lappen er en haug med noder som er ansvarlige for å lese signalet fra gitaren og overføre det til resten av lappen. Når du trykker på knappene på gitaren, bør tallene i denne delen oppdateres og fortelle deg at den mottar signalet riktig.
  • Initialiserer variabler i oppdateringen. Pure Data kan være litt vanskelig om verdier i oppdateringen ikke blir initialisert. Jeg har lagt til mekanismer for å utløse variabler når den åpnes, men det kan være verdt å bare klikke på noen av meldingsboksene (de som ser ut som om de har fått en bit ut av dem). Dette får dem til å initialisere og kan vekke dem.

Trinn 6: En omvisning i Pure Data Patch

En omvisning i Pure Data Patch
En omvisning i Pure Data Patch
En omvisning i Pure Data Patch
En omvisning i Pure Data Patch
En omvisning i Pure Data Patch
En omvisning i Pure Data Patch
En omvisning i Pure Data Patch
En omvisning i Pure Data Patch

Oppsettet beskrevet så langt i denne opplæringen vil få ting til å fungere for deg, men en av de fine tingene med å bruke Pure Data til dette prosjektet, er at det kan tilpasses til å gjøre hva du vil. Når lappen er åpen hvis du trykker på Ctrl + E, setter den oppdateringen i redigeringsmodus, og du kan endre oppdateringen. Detaljene om bruk av Pure Data ligger utenfor omfanget av denne opplæringen (det er mange opplæringsprogrammer på nettet for det), men det kan være morsomt å pusle med det, så her er en generell gjennomgang av hva som skjer i keytarHero.pd -oppdateringen i tilfelle du ønsker å tilpasse det:

  • Gitarkommunikasjon: Øverst til høyre på lappen er et tre av noder som er ansvarlig for å håndtere signalet fra gitaren. Verdiene fra gitaren er en lang streng, så disse nodene bryter opp strengen i individuelle verdier for hver kontroll, konverterer dem til tall og sender dem deretter til 'send' noder (de som starter med en s). Sendnoder tildeles et navn og sender ut signalet for å "motta" noder med samme navn. For eksempel sender 's whammy' noden verdiene som kommer fra gitarens whammy bar og 'r whammy' noden i midten av lappen mottar det signalet og bruker signalet til å stoppe sequencer. Send/motta noder bidrar til å redusere rotet av tilkoblingslinjer i oppdateringen. Jeg anbefaler ikke å rote med denne delen, da det er litt masete å få det riktig, men du kan definitivt legge til flere mottaksnoder i hele oppdateringen etter behov for å motta signaler fra den etter behov.
  • Sekvensordel: Den midtre delen av lappen styrer sekvenseren. På venstre side er en stolpe med en svart firkant i bevegelse som viser deg hvilken tone i en sekvens med 16 notater den spiller. Strum -tasten styrer om sekvensen skal spilles fremover eller bakover. Pluss/minus -knappene øker/senker hastigheten. På høyre side er fem sett med tall som styrer hvilke toner som spilles under hvert trinn. Hver sekvens blir tildelt å spille når en av de fem knappene på båndet trykkes. Disse tallene er MIDI -verdier, og du kan endre dem til å spille hvilke toner du vil … bare gi dem verdier mellom 0 og 127.
  • Oscillator/FX -seksjon: Nederst til venstre er oscillatoren og FX -nodene som faktisk lager lyden. Den primære oscillatoren er til venstre. Midi -verdiene fra sequencer -delen blir konvertert til frekvenser og matet til oscillatoren. Den blandes med en andre oscillator som kommer fra høyre side. Frekvensen styres også av midi-verdiene, men med en ekstra frekvensforskyvning drevet av X-aksen til joysticken. Dette forårsaker en detunert eller pipende effekt når du flytter joysticken til venstre eller høyre. I nedre høyre er det også en lavpassfilternode hvis cutoff-frekvens er knyttet til joystickens Y-akse. Et lavpassfilter bestemmer hvor mye høyfrekvent lyd som fjernes fra lyden. Når joysticken flyttes til nedoverposisjon, kutter den mye av de høye frekvensene, noe som resulterer i en dempet lyd. Når den flyttes til den oppadgående posisjonen, passerer den alle frekvensene, noe som resulterer i en lysere lyd.
  • Initialisering: Øverst til venstre på lappen er det en serie noder som initialiserer oppdateringen når den starter, for eksempel å slå på lyden og 'berøre' forskjellige noder for å vekke dem. Igjen trenger du sannsynligvis ikke å rote med denne delen, men hvis det er ting du vil at skal skje når oppdateringen starter, kobler du dem til noden kalt 'loadbang'.
  • Jeg har prøvd å dokumentere oppdateringen med kommentarer i selve oppdateringen, så forhåpentligvis vil det gi deg nok informasjon til å utforske forskjellige alternativer herfra.

Nyt!

Trinn 7: Flere ting du kan prøve

Å kjøre gitaren 'hodeløs'

Det bør være mulig å kjøre dette prosjektet uten å være koblet til en skjerm/tastatur/mus hvis du kjørte din Raspberry Pi fra en egnet bærbar strømkilde. Raspberry Pi passer ikke helt inn i åpningen på baksiden av gitaren, men hvis du føler deg modig, kan du gjøre endringer i gitaren for å fikse det … eller bare montere Pi på baksiden med skruer og få den til å stikke litt ut. Det er mange opplæringsprogrammer på nettet om hvordan du kjører skript på Raspberry Pi hodeløst, men i utgangspunktet vil du kjøre kommandoen 'python /home/pi/keytarHero/keytarHero.py&' når den starter opp. Teoretisk sett ville du ha en gitar med bare én kabel ut av den til høyttaleren … akkurat som en ekte elektrisk gitar!

Ytterligere Pure Data -modifikasjoner

Jeg hadde noen andre ideer for hvordan gitaren kunne kontrollere Pure Data -oppdateringen, men klarte ikke å prøve. Dette vil være endringer i oppdateringen som kan være morsomt å eksperimentere med:

  • Whammy bar: I den nåværende oppdateringen stopper whammy bar ganske enkelt sekvensavspillingen, men jeg tror det ville være bedre hvis whammy baren også satte opp frekvensen samtidig som en ekte whammy bar ville gjort. Jeg prøvde å få det til å fungere en stund, men det var vanskeligere enn jeg trodde. Jeg tror det bare kan dreie seg om å legge til et uttrykk nede i oscillatorseksjonen som gir oscillatoren litt høyere frekvens basert på verdien som kommer fra whammy -linjen.
  • Strumpelinje: Strumlinjen spiller for tiden sekvensen fremover når den trykkes ned og bakover når den trykkes opp, men det kan være bedre å bla gjennom forskjellige sekvenseringsalternativer som tilfeldig trinn, etc.
  • Pluss/minus-knapper: Pluss/minus-knappene endrer slag per minutt, men det er litt overveldende med mindre du treffer dem flere ganger. Kan være greit å få den til å øke med et større beløp hver gang. Eller kanskje bytte sequencer mellom 16-takts, 8-takts, 4-takts, triplettavspilling.

Anbefalt: