Innehållsförteckning:

Keytar Hero (Använda en Wii -gitarrkontroll som en syntes): 7 steg (med bilder)
Keytar Hero (Använda en Wii -gitarrkontroll som en syntes): 7 steg (med bilder)

Video: Keytar Hero (Använda en Wii -gitarrkontroll som en syntes): 7 steg (med bilder)

Video: Keytar Hero (Använda en Wii -gitarrkontroll som en syntes): 7 steg (med bilder)
Video: Jesse Cale - Keytar Hero 2024, Juli
Anonim
Image
Image
Steg 1: Raspberry Pi (första installationen)
Steg 1: Raspberry Pi (första installationen)

Guitar Hero -spelen var raseri för ett dussin år sedan, så det kommer säkert att finnas många gamla gitarrkontroller som ligger och samlar damm. De har många knappar, vred och spakar, så varför inte använda dem igen? Gitarrkontrollen gör normalt inget ljud på egen hand, men i den här självstudien visar jag hur du konverterar en Wii Guitar Hero Controller så att den kan spelas som en synthesizer.

Tillbehör

  • Guitar Hero Wii Controller
  • Nunchucky breakout board (finns på Adafruit här)
  • 4ea bygelkablar (hona till hona)
  • 2a krympkontakter (tillval)
  • Hallon Pi (3 B+ eller 4 föredras)
  • 16 GB MicroSD -kort

Steg 1: Steg 1: Raspberry Pi (första installationen)

En Raspberry Pi är hjärnan och hjärnan i det här projektet, så det första vi behöver göra är att skapa en för vårt projekt. Jag har provat detta projekt på både en Raspberry Pi 3 B+ och en 4, och de verkar båda fungera bra.

Raspberry Pi är mikrodatorer som lagrar allt på ett microSD -kort istället för en hårddisk … inklusive operativsystemet. Det vanliga sättet att använda dem är att ladda ner det senaste operativsystemet och bränna en bild av det på ett microSD -kort enligt följande:

  • Gå till https://www.raspberrypi.org/downloads/raspbian/ på en separat dator eller bärbar dator
  • Ladda ner det senaste Raspbian OS. (Buster vid tidpunkten för detta skrivande). Det finns flera versioner tillgängliga på sidan som ger mer eller mindre inkluderad programvara beroende på vad du föredrar. De borde alla fungera bra, men jag gillar att använda alternativet "Raspbian Buster med skrivbord och rekommenderad programvara" eftersom det innehåller några programmerings -IDE och andra praktiska appar. Det enklaste sättet är att ladda ner zip -versionen.
  • Bränn Raspbian -bild till microSD -kort. Det finns många applikationer du kan använda för att bränna Raspbian -bilden till ditt microSD -kort men jag använde balenaEtcher -programmet som du kan få här. Sätt i microSD -kortet i datorn och kör balenaEtcher. För diskavbildningen, välj zip -filen du laddade ner, välj sedan ditt SD -kort och tryck på flash. Verktyget kommer att packa upp skivavbildningsfilerna och bränna dem till SD -kortet. VIKTIGT: Se till att enheten du väljer är microSD -kortet … verktyget kommer att skriva över vilken enhet du anger så se till att du har valt rätt.
  • Slå på din Raspberry Pi. Sätt i microSD -kortet i din Raspberry Pi. Anslut din ström, mus, tangentbord och högtalare. Om du följer anvisningarna är det ganska självförklarande … ställ in din plats/tid, ange ett lösenord och anslut WiFi.

Detta är helt standardinställningar för en Raspberry Pi så om du behöver mer information kan du hitta dem här. Vi kommer att göra resten av våra steg på Raspberry Pi.

Steg 2: Steg 2: Aktivera I2c

Steg 2: Aktivera I2c
Steg 2: Aktivera I2c

Guitar Hero Controller använder i2c för att kommunicera (i2c är ett ganska vanligt protokoll som används av elektroniska enheter för att prata med varandra), så vi måste aktivera den här funktionen på Raspberry Pi:

  • Installera bibliotek för i2c. I2c -biblioteken verkar nu vara en del av Busters standardbyggnad, men för säkerhets skull kör vi installationsprogrammet för dem. Öppna ett skal (det finns en ikon för det i aktivitetsfältet högst upp) och skriv följande:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-verktyg
  • Aktivera i2c på Raspberry Pi. I din skaltyp: sudo raspi-config. Detta öppnar ditt konfigurationsfönster. Pil ner till InterfacingOptions-> I2C för att aktivera i2c för enheten. För att komma ut ur fönstret, högerpilen till Tillbaka och sedan till Slutför för att spara inställningarna.
  • Starta om. Skriv i ditt skal: sudo reboot
  • Ange anpassade i2c -parametrar. Standard i2c baudrate (100k) verkar förvirra gitarren ibland, så vi kommer att sakta ner den till 50k enligt följande:

    • I en skaltyp: sudo nano /boot/config.txt
    • Detta öppnar din konfigurationsfil i en textredigerare. Pil ner och hitta raden som säger dtparam = i2c_arm = på. Om det kommenteras, kommentera det. Om du inte har den raden, lägg till den. Lägg till följande under den raden:

      • dtparam = i2c1 = på
      • dtparam = i2c1_baudrate = 50000
    • Tryck Ctrl + O för att spara konfigurationsfilen och tryck sedan på Ctrl + X för att avsluta.
  • Starta om. Skriv i ditt skal: sudo reboot

Steg 3: Steg 3: Installera ren data

Steg 3: Installera ren data
Steg 3: Installera ren data
Steg 3: Installera ren data
Steg 3: Installera ren data

För synthesizer -ljud använder vi ett program som heter Pure Data. Detta är ett generativt ljud- och interaktivt displayverktyg som har funnits ett bra tag. Den har ett par funktioner som gör den idealisk för det här projektet … den har ett nodbaserat användargränssnitt som är ganska lätt att använda, och det kan ta emot signaler från externa källor som python-skript.

  • Installera ren data. I en skaltyp: sudo apt-get install puredata
    • Detta bör installera programvaran på din Raspberry Pi, men om det klagar i skalet om att det inte går att hitta alla filer det behöver, prova detta:

      • sudo apt-get uppdatering
      • Kör sedan installationskommandot igen: sudo apt-get install puredata
    • Under installationen uppmanas du om du vill skapa kataloger för tillägg, du kan säga Ja.
  • Starta Pure Data. Om det installerades korrekt bör du se programmet som listas på skrivbordets startmeny under Ljud och video. Kör den för att se till att den startar.
  • Ställ in Pure Data -ljud. Ljudet i Pure Data är vanligtvis inte på som standard så du måste aktivera det.

    • Ställ in ljudutmatning på ALSA. När Pure Data lanseras bör du se konsolfönstret. Gå till Media -menyn och välj ALSA som utgång. Du kan se varningsmeddelanden i konsolskalet som säger att det inte kan hitta vissa filer, men du kan ignorera detta.
    • Slå på DSP -ljud. Markera kryssrutan DSP i konsolfönstret.
  • Testa ljudutmatning. I fönstret Pure Data-konsol går du till Media-> Testa ljud och MIDI. Detta öppnar en testfil som vi kan använda för att se till att Pure Data fungerar och att vi kan höra ljudet. Slå på högtalarna men håll dem på en låg volym först (ibland kan ljudet vara väldigt högt som standard). I testfilen, till vänster bör du se ett avsnitt som heter Testtoner. Klicka först på rutan där det står 60 och se om du hör något ljud från dina högtalare. Om inte, försök att klicka på rutan 80 och skruva sedan upp högtalarna tills du hör ljud. Om du hör ljud, försök dra i rutan där det står Pitch till höger om testtonerna där du kan ändra frekvensen för tonerna och se vad som händer.

Om du kan starta Pure Data och höra ett ljud från testlappen är du redo att gå vidare till nästa steg. Men Pure Data kan bli lite knepig om ljudutmatningen första gången, så om du fortfarande inte får ljud kan du prova följande:

  • Det är möjligt att ljudet dirigeras genom HDMI -kabeln, så för att tvinga det att använda hörlursuttaget:

    • I en skaltyp: sudo raspi-config
    • Gå till Avancerade alternativ-> Ljud-> Tvinga 3,5 mm (hörlurar) -uttag
  • Prova att starta om. Ibland gör detta susen.
  • Kontrollera dina högtalare och anslutning till Raspberry Pi.

Steg 4: Steg 4: Anslutning av gitarr

Steg 4: Anslutning av gitarr
Steg 4: Anslutning av gitarr
Steg 4: Anslutning av gitarr
Steg 4: Anslutning av gitarr
Steg 4: Anslutning av gitarr
Steg 4: Anslutning av gitarr

Det enklaste sättet att ansluta gitarrkontrollen till Raspberry Pi är med ett billigt breakout -kort som Nunchucky*. Detta kort ger dig tillgång till signalen som kommer från gitarren utan att klippa av kontakten eller bryta upp gitarren. På ena sidan av brädet finns platta spår utformade för att passa perfekt in i kontakten som kommer från gitarren. Det finns också två små skåror som gör att pluggen kan klicka på plats och förhindrar att den lossnar. Spåren leder till fyra huvudstift på motsatt sida av brädet.

Obs: Nunchucky kommer med rubrikstift men de är inte lödda på så du måste göra detta själv. För min använde jag 90 graders headerpinnar istället vilket gör att den kan ligga platt i det slutliga projektet.

Du behöver fyra ledningar för att ansluta Nunchucky till Raspberry Pi. Anslut kablarna från Nunchucky -huvudstiften till Raspberry Pi: s GPIO -stift enligt följande:

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

I mitt projekt använde jag krympkontakter för trådarna så att de inte drog ut lika lätt. Men om du inte har krympkontakter fungerar fyra individuella hona-till-hona-trådar bra. Om du ANVÄNDER krympkontakterna, se till att du är uppmärksam på ordningen på ledningarna på toppstiften och GPIO -stiften. Observera också att på GPIO-stiften hoppar vi över stift 7. För att ta hänsyn till detta använde jag en femtrådig krympkontakt i ena änden och hoppade över en plats.

För att verifiera att din Raspberry Pi kan upptäcka gitarrkontrollen öppnar du ett skal och skriver: sudo i2cdetect -y 1

Det ska skriva ut ett rutnät i skalet med mestadels dubbla streck i. Om datorn kan upptäcka gitarren bör du se gitarrens ID# 52 i en av facken … på min maskin visades den i kolumn 2, rad 5 … men det spelar ingen roll vilken, så länge du ser nummer 52 någonstans där inne.

Om datorn inte kan upptäcka det här är några saker att prova:

  • Se till att dina ledningar är tätt anslutna.
  • Se till att allt är kopplat till rätt stift.
  • Vänd på gitarrpluggen. Nunchucky hindrar dig inte från att ansluta kontakten upp och ner, så det kan vara omvänt.
  • Se till att i2c är aktiverat på Raspberry Pi (som visas i steg 2)

*Om kontakten på gitarrkontrollen ser bekant ut är det för att den är densamma som den vanliga Wii Nunchuck -kontrollen … därav namnet Nunchucky! Detta innebär också att du kan använda samma breakout -kort för att ansluta till nunchuck -kontroller också.

Steg 5: Steg 5: Sätta ihop allt

Steg 5: Sätta ihop allt
Steg 5: Sätta ihop allt
Steg 5: Sätta ihop allt
Steg 5: Sätta ihop allt

Nu när allt är konfigurerat på Raspberry Pi behöver vi bara lite kod för att det ska fungera. Du kan ladda ner koden och andra nödvändiga filer enligt följande:

  • För att ladda ner koden och andra filer till Raspberry Pi, öppna ett nytt skal och skriv följande kommando (du kan behöva sätta 'sudo' före det): git clone
  • Detta skapar en katalog i din hemkatalog som heter keytarHero (dvs./home/pi/keytarHero) och laddar ner filerna till den.

Det finns tre huvudfiler i detta paket:

  • WiiGHController.py: Detta är ett python -skript som öppnar en i2c -anslutning till gitarren och returnerar värdena för de olika kontrollerna. Som standard skriver den också ut värdena som den läser till skalet så att du kan se vad den gör.
  • keytarHero.pd: Detta är Pure Data -patchfilen jag skapade för att skapa musiken du kommer att höra. Den är inställd för att läsa värdena som kommer in från gitarren och leder dem till olika noder för att generera ljuden. Jag kommer att diskutera detaljerna i patchen i nästa steg, men i slutändan kan du ändra detta för att göra vad du vill härifrån.
  • keytarHero.py: Detta är manuset som startar hela processen och limmar ihop allt. Det lanserar Pure Data och öppnar korrigeringsfilen keytarHero.pd. Det öppnar upp en anslutning till patchen och överför värdena från gitarr till patchen.

Sanningens ögonblick! Se till att gitarren är ansluten till Raspberry Pi och att du är redo att gå. För att starta det behöver du bara köra skriptet keytarHero.py. Att göra detta:

  • Öppna ett nytt skal och skriv: cd keytarHero
  • Kör sedan kommandot: python keytarHero.py

Det är allt! Om allt fungerar korrekt ska Pure Data starta och börja spela patchen. Du bör höra en sekvens av toner som spelas, och när du trycker på knapparna på gitarren ska den svara på den.

Felsökning

Om det inte fungerar, här är några saker att kontrollera:

  • Ren datapatch startar inte eller får ett felmeddelande om att inte hitta filer? KeytarHero.py -skriptet har sökvägen till Pure Data -korrigeringsfilen hårdkodad till '/home/pi/keytarHero/keytarHero.pd'. Om du har flyttat din keytarHero -mapp eller den korrigeringsfilen någon annanstans måste du uppdatera skriptet för att använda din sökväg istället. För att göra detta, öppna keytarHero.py -filen och leta efter variabeln PD_PATCH_PATH och ändra den för att peka på katalogen där din keytarHero.pd -fil finns. Spara skriptet och kör det igen och du borde vara bra att gå.
  • Avger gitarren en signal? Manuset ska skriva ut signalen som det kommer från gitarr till skalet kontinuerligt som en rad med siffror, var och en representerar värdet av en kontroll på gitarr. När du använder en kontroll på gitarr borde det få dessa siffror att ändras. Om inte, kontrollera att du har gjort i2c -installationen och gitarranslutningarna korrekt i stegen ovan.
  • Är Pure Data -ljud aktiverat? Pure Data -korrigeringen som ingår i detta paket ska automatiskt slå på ljudet men verifiera att DSP -kryssrutan i Pure Data -konsolen är markerad. Kontrollera också dina ljudinställningar enligt steg 3.
  • Tar Pure Data emot signalen från gitarren? I det övre högra hörnet av lappen finns ett gäng noder som ansvarar för att läsa signalen från gitarren och överföra den till resten av lappen. När du trycker på knapparna på gitarren, bör siffrorna i det här avsnittet uppdateras och berätta att den tar emot signalen korrekt.
  • Initierar variabler i patchen. Pure Data kan vara lite krångligt om värden i korrigeringen inte initialiseras. Jag har lagt till mekanismer för att utlösa variabler när den öppnas men det kan vara värt att bara klicka på några av meddelanderutorna (de som ser ut som att de har tagit en bit av dem). Detta gör att de initieras och kan väcka dem.

Steg 6: En rundtur i Pure Data Patch

En rundtur i den rena datapatchen
En rundtur i den rena datapatchen
En rundtur i den rena datapatchen
En rundtur i den rena datapatchen
En rundtur i den rena datapatchen
En rundtur i den rena datapatchen
En rundtur i den rena datapatchen
En rundtur i den rena datapatchen

Installationen som beskrivits hittills i den här handledningen kommer att få saker att fungera för dig, men en av de fina sakerna med att använda Pure Data för detta projekt är att det kan anpassas för att göra vad du vill. När plåstret är öppet om du trycker på Ctrl + E sätter det plåstret i redigeringsläge och du kan ändra plåstret. Detaljerna om att använda Pure Data ligger utanför räckvidden för denna handledning (det finns massor av självstudier online för det) men det kan vara roligt att pyssla med det, så här är en allmän rundtur om vad som händer i keytarHero.pd -lappen om du vill anpassa det:

  • Gitarrkommunikation: Överst till höger på lappen finns ett träd av noder som ansvarar för att hantera signalen från gitarren. Värdena från gitarren är en lång sträng, så dessa noder bryter upp strängen i individuella värden för varje kontroll, konverterar dem till tal och skickar dem sedan till 'skicka' noder (de som börjar med ett s). Sändnoder tilldelas ett namn och avger signalen för att "ta emot" noder med samma namn. Till exempel sänder 's whammy' noden värdena som kommer från gitarrens whammy bar och 'r whammy' noden i mitten av patchen tar emot den signalen och använder den signalen för att stoppa sequencern. Skicka/ta emot noder hjälper till att minska röran av anslutningslinjer i korrigeringen. Jag rekommenderar inte att krångla till det här avsnittet eftersom det är lite krångligt att få rätt, men du kan definitivt lägga till ytterligare mottagningsnoder i hela korrigeringen efter behov för att ta emot signaler från det efter behov.
  • Sequencer -sektion: Den mellersta delen av patchen styr sequencern. På vänster sida är en stapel med en rörlig svart fyrkant som visar vilken ton av en sekvens på 16 toner den spelar. Strumknappen styr om sekvensen spelar framåt eller bakåt. Plus/minus -knapparna ökar/minskar hastigheten. På höger sida finns fem uppsättningar nummer som styr vilka toner som spelas under varje steg. Varje sekvens tilldelas att spela när en av de fem knapparna på bandet trycks in. Dessa nummer är MIDI -värden och du kan ändra dem för att spela vilka toner du vill … ge dem värden mellan 0 och 127.
  • Oscillator/FX -sektion: I nedre vänstra är oscillatorn och FX -noder som faktiskt gör ljudet. Den primära oscillatorn är till vänster. Midi -värdena från sequencer -sektionen omvandlas till frekvenser och matas till oscillatorn. Den blandas med en andra oscillator som kommer från höger sida. Dess frekvens styrs också av midi-värdena men med en extra frekvensförskjutning som drivs av joystickens X-axel. Detta orsakar en detunerad eller visslande effekt när du flyttar joysticken till vänster eller höger. I nedre högra hör också en lågpassfilternod vars gränsfrekvens är knuten till joystickens Y-axel. Ett lågpassfilter avgör hur mycket högfrekvent ljud som tas bort från ljudet. När joysticken flyttas till det nedåtriktade läget bryter den mycket av de höga frekvenserna, vilket resulterar i ett dämpat ljud. När den flyttas till uppåtläget passerar den alla frekvenser och resulterar i ett ljusare ljud.
  • Initialisering: I den övre vänstra delen av korrigeringen finns det en serie noder som initierar korrigeringen när den startas, till exempel att slå på ljudet och "peka" på olika noder för att väcka dem. Återigen behöver du förmodligen inte röra med det här avsnittet, men om det är saker du vill att ska hända när plåstret startar, anslut dem till noden som kallas 'loadbang'.
  • Jag har försökt att dokumentera korrigeringen med kommentarer i själva lappen, så förhoppningsvis kommer det att ge dig tillräckligt med information för att utforska olika alternativ härifrån.

Njut av!

Steg 7: Ytterligare saker att prova

Kör gitarren 'huvudlös'

Det bör vara möjligt att köra detta projekt utan att vara ansluten till en bildskärm/tangentbord/mus om du körde din Raspberry Pi från en lämplig bärbar strömkälla. Raspberry Pi passar inte riktigt in i öppningen på gitarrens baksida, men om du känner dig modig kan du göra ändringar på gitarren för att fixa det … eller bara montera Pi på baksidan med skruvar och låta den fastna ut lite. Det finns gott om självstudier online om hur man kör skript på Raspberry Pi utan huvud, men i princip vill du köra kommandot 'python /home/pi/keytarHero/keytarHero.py&' när det startar upp. Teoretiskt sett skulle du ha en gitarr med bara en kabel ut ur högtalaren … precis som en riktig elgitarr!

Ytterligare modifieringar av Pure Data

Jag hade några andra idéer för hur gitarren kunde styra Pure Data -korrigeringen men fick inte prova. Dessa skulle vara förändringar i plåstret som kan vara roliga att experimentera med:

  • Whammy bar: I den aktuella patchen stoppar whammy baren helt enkelt sekvensuppspelningen, men jag tror att det skulle vara bättre om whammy bar också höjde frekvensen samtidigt precis som en riktig whammy bar skulle göra. Jag försökte få det att fungera ett tag, men det var knepigare än jag trodde. Jag tror att det bara kan vara att lägga till ett uttryck nere i oscillatorsektionen som lägger till lite högre frekvens till oscillatorn baserat på värdet som kommer från whammy bar.
  • Strumfält: För närvarande spelar strumfältet sekvensen framåt när den trycks ned och bakåt när den trycks upp, men det kan vara bättre att låta den bläddra igenom olika sekvenseringsalternativ som slumpmässigt steg, etc.
  • Plus/minus-knappar: Plus/minus-knapparna ändrar slag per minut men det är lite överväldigande om du inte träffar dem flera gånger. Det kan vara bra att den ökar med en större mängd varje gång. Eller kanske låta den växla sequencer mellan 16-takts, 8-takts, 4-takts, triplettuppspelning.

Rekommenderad: