Inhoudsopgave:

Keytar Hero (een Wii-gitaarcontroller gebruiken als synthesizer): 7 stappen (met afbeeldingen)
Keytar Hero (een Wii-gitaarcontroller gebruiken als synthesizer): 7 stappen (met afbeeldingen)

Video: Keytar Hero (een Wii-gitaarcontroller gebruiken als synthesizer): 7 stappen (met afbeeldingen)

Video: Keytar Hero (een Wii-gitaarcontroller gebruiken als synthesizer): 7 stappen (met afbeeldingen)
Video: GameOn 2016 | Joost van Dongen - The Design Philosophy of Ronimo and Awesomenauts 2024, November
Anonim
Image
Image
Stap 1: Raspberry Pi (eerste installatie)
Stap 1: Raspberry Pi (eerste installatie)

De Guitar Hero-games waren een tiental jaar geleden een rage, dus er zullen ongetwijfeld veel oude gitaarcontrollers rondslingeren die stof verzamelen. Ze hebben veel knoppen, knoppen en hendels, dus waarom zou u ze niet opnieuw gebruiken? De gitaarcontroller maakt normaal gesproken geen geluid op zichzelf, maar in deze tutorial laat ik je zien hoe je een Wii Guitar Hero Controller kunt converteren zodat deze als synthesizer kan worden bespeeld.

Benodigdheden

  • Guitar Hero Wii-controller
  • Nunchucky breakout board (hier beschikbaar op Adafruit)
  • 4ea jumperdraden (vrouw naar vrouw)
  • 2ea krimpconnectoren (optioneel)
  • Raspberry Pi (3 B+ of 4 voorkeur)
  • 16 GB MicroSD-kaart

Stap 1: Stap 1: Raspberry Pi (eerste installatie)

Een Raspberry Pi is het brein en de kracht van dit project, dus het eerste dat we moeten doen, is er een opzetten voor ons project. Ik heb dit project geprobeerd op zowel een Raspberry Pi 3 B+ als een 4, en ze lijken allebei goed te werken.

Raspberry Pi's zijn microcomputers die alles op een microSD-kaart opslaan in plaats van op een harde schijf… inclusief het besturingssysteem. De gebruikelijke manier om ze te gebruiken, is door het nieuwste besturingssysteem te downloaden en als volgt een afbeelding ervan op een microSD-kaart te branden:

  • Ga op een aparte pc of laptop naar
  • Download het nieuwste Raspbian-besturingssysteem. (Buster op het moment van schrijven). Er zijn meerdere versies beschikbaar op de pagina die meer of minder meegeleverde software geven, afhankelijk van uw voorkeur. Ze zouden allemaal goed moeten werken, maar ik gebruik graag de optie "Raspbian Buster met desktop en aanbevolen software" omdat het enkele programmeer-IDE's en andere handige apps bevat. De eenvoudigste manier is om de zip-versie te downloaden.
  • Brand Raspbian-afbeelding op microSD-kaart. Er zijn veel toepassingen die u kunt gebruiken om de Raspbian-afbeelding op uw microSD-kaart te branden, maar ik gebruikte het balenaEtcher-programma dat u hier kunt krijgen. Plaats de microSD-kaart in uw computer en voer balenaEtcher uit. Selecteer voor de schijfkopie het zipbestand dat u hebt gedownload, selecteer vervolgens uw SD-kaart en druk op flash. De tool zal de schijfkopiebestanden uitpakken en op de SD-kaart branden. BELANGRIJK: Zorg ervoor dat de schijf die u selecteert de microSD-kaart is… de tool zal elke schijf die u opgeeft overschrijven, dus zorg ervoor dat u de juiste kiest.
  • Start je Raspberry Pi op. Plaats de microSD-kaart in uw Raspberry Pi. Sluit je voeding, muis, toetsenbord en speakers aan. Als je de aanwijzingen volgt, is het vrij duidelijk … stel je locatie/tijd in, stel een wachtwoord in en verbind de wifi.

Dit is allemaal standaardconfiguratie voor een Raspberry Pi, dus als je meer details nodig hebt, kun je ze hier vinden. We doen de rest van onze stappen op de Raspberry Pi.

Stap 2: Stap 2: I2c. inschakelen

Stap 2: I2c. inschakelen
Stap 2: I2c. inschakelen

De Guitar Hero Controller gebruikt i2c om te communiceren (i2c is een vrij algemeen protocol dat door elektronische apparaten wordt gebruikt om met elkaar te praten), dus we moeten deze functie inschakelen op de Raspberry Pi:

  • Installeer bibliotheken voor i2c. De i2c-bibliotheken lijken nu deel uit te maken van de standaardversie van Buster, maar voor het geval dat we het installatieprogramma voor ze uitvoeren. Open een shell (er staat een pictogram voor op de taakbalk bovenaan) en typ het volgende:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-tools
  • Schakel i2c in op Raspberry Pi. Typ in je shell: sudo raspi-config. Dit zal uw configuratievenster openen. Pijl omlaag naar InterfacingOptions->I2C om i2c voor het apparaat in te schakelen. Om uit het venster te komen, gaat u met de pijl naar rechts naar Terug en vervolgens naar Voltooien om de instellingen op te slaan.
  • Herstart. Typ in je shell: sudo reboot
  • Stel aangepaste i2c-parameters in. De standaard i2c-baudrate (100k) lijkt de gitaar af en toe in de war te brengen, dus we zullen het als volgt vertragen tot 50k:

    • In een shell-type: sudo nano /boot/config.txt
    • Dit opent uw configuratiebestand in een teksteditor. Pijl omlaag en zoek de regel met de tekst dtparam=i2c_arm=on. Als het is becommentarieerd, verwijder dan het commentaar. Als je die regel niet hebt, voeg hem dan toe. Voeg onder die regel ook het volgende toe:

      • dtparam=i2c1=aan
      • dtparam=i2c1_baudrate=50000
    • Druk op Ctrl + O om het configuratiebestand op te slaan en druk vervolgens op Ctrl + X om af te sluiten.
  • Herstart. Typ in je shell: sudo reboot

Stap 3: Stap 3: Installeer Pure Data

Stap 3: Installeer Pure Data
Stap 3: Installeer Pure Data
Stap 3: Installeer Pure Data
Stap 3: Installeer Pure Data

Voor de synthesizergeluiden gebruiken we een programma genaamd Pure Data. Dit is een generatieve geluids- en interactieve weergavetool die al een tijdje bestaat. Het heeft een aantal functies die het ideaal maken voor dit project … het heeft een op knooppunten gebaseerde gebruikersinterface die vrij eenvoudig te gebruiken is, en het kan signalen ontvangen van externe bronnen zoals python-scripts.

  • Installeer pure gegevens. In een shell-type: sudo apt-get install puredata
    • Dit zou de software op je Raspberry Pi moeten installeren, maar als hij in de shell klaagt dat hij niet alle bestanden kan vinden die hij nodig heeft, probeer dan dit:

      • sudo apt-get update
      • Voer vervolgens de installatieopdracht opnieuw uit: sudo apt-get install puredata
    • Tijdens de installatie wordt u gevraagd of u mappen voor extensies wilt maken, u kunt Ja zeggen.
  • Start Pure Data. Als het correct is geïnstalleerd, zou u het programma moeten zien dat wordt vermeld in het startmenu van het bureaublad onder Geluid en video. Voer het uit om er zeker van te zijn dat het wordt gestart.
  • Stel Pure Data-audio in. De audio in Pure Data is meestal niet standaard ingeschakeld, dus u moet deze inschakelen.

    • Stel audio-uitgang in op ALSA. Wanneer Pure Data wordt gestart, zou u het consolevenster moeten zien. Ga naar het menu Media en selecteer ALSA als uw uitvoer. Mogelijk ziet u waarschuwingsberichten in de console-shell die zeggen dat bepaalde bestanden niet kunnen worden gevonden, maar u kunt dit negeren.
    • Schakel DSP-audio in. Vink in het consolevenster het selectievakje DSP aan.
  • Audio-uitgang testen. Ga in het Pure Data-consolevenster naar Media->Test Audio & MIDI. Hiermee wordt een testbestand geopend dat we kunnen gebruiken om te controleren of Pure Data werkt en dat we de audio kunnen horen. Zet uw luidsprekers aan, maar zet ze eerst op een laag volume (soms kan de audio standaard erg luid zijn). In het testbestand ziet u aan de linkerkant een gedeelte met de naam Testtonen. Klik op het vakje met de tekst 60 en kijk of je geluid uit je speakers hoort. Als dat niet het geval is, probeer dan op het vakje 80 te klikken en zet vervolgens uw luidsprekers hoger totdat u geluid hoort. Als je geluid hoort, probeer dan het vak met de tekst Pitch rechts van de testtonen te slepen, waar je de frequentie van de tonen kunt wijzigen en kijk wat er gebeurt.

Als je Pure Data kunt starten en een geluid hoort van de testpatch, dan ben je klaar om door te gaan naar de volgende stap. Maar Pure Data kan de eerste keer een beetje kieskeurig zijn over de audio-uitvoer, dus als je nog steeds geen audio krijgt, probeer dan het volgende:

  • Het is mogelijk dat de audio via de HDMI-kabel wordt geleid, dus om hem te dwingen de hoofdtelefoonaansluiting te gebruiken:

    • In een shell-type: sudo raspi-config
    • Ga naar Geavanceerde opties->Audio->Forceer 3,5 mm ('hoofdtelefoon') aansluiting
  • Probeer opnieuw op te starten. Soms doet dit de truc.
  • Controleer uw luidsprekers en verbinding met de Raspberry Pi.

Stap 4: Stap 4: De gitaar aansluiten

Stap 4: De gitaar aansluiten
Stap 4: De gitaar aansluiten
Stap 4: De gitaar aansluiten
Stap 4: De gitaar aansluiten
Stap 4: De gitaar aansluiten
Stap 4: De gitaar aansluiten

De eenvoudigste manier om de gitaarcontroller op de Raspberry Pi aan te sluiten, is met een goedkoop breakout-bord zoals de Nunchucky*. Met dit bord heb je toegang tot het signaal dat van de gitaar komt zonder de stekker af te snijden of de gitaar open te breken. Aan de ene kant van het bord zijn platte sporen ontworpen om perfect in de plug te passen die van de gitaar komt. Er zijn ook twee kleine inkepingen waarmee de plug op zijn plaats kan klikken, waardoor deze niet los kan raken. De sporen leiden naar vier header-pinnen aan de andere kant van het bord.

Opmerking: de Nunchucky wordt geleverd met header-pinnen, maar deze zijn niet gesoldeerd, dus u moet dit zelf doen. Voor de mijne heb ik in plaats daarvan 90 graden header-pinnen gebruikt, waardoor deze plat in het uiteindelijke project kan liggen.

Je hebt vier draden nodig om de Nunchucky op de Raspberry Pi aan te sluiten. Sluit de draden van de Nunchucky-headerpinnen als volgt aan op de GPIO-pinnen van de Raspberry Pi:

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

In mijn project heb ik krimpconnectoren voor de draden gebruikt, zodat ze er niet zo gemakkelijk uit zouden trekken. Maar als je geen krimpconnectoren hebt, werken vier individuele vrouwelijke-naar-vrouwelijke jumperdraden prima. Als u WEL de krimpconnectoren gebruikt, let dan op de volgorde van de draden op de header-pinnen en de GPIO-pinnen. Merk ook op dat we op de GPIO-pinnen pin 7 overslaan. Om dit te verklaren, heb ik aan het ene uiteinde een vijfdraads krimpconnector gebruikt en één slot overgeslagen.

Om te controleren of je Raspberry Pi de gitaarcontroller kan detecteren, open je een shell en typ je: sudo i2cdetect -y 1

Het zou een raster in de schaal moeten afdrukken met meestal dubbele streepjes erin. Als de computer de gitaar kan detecteren, zou je de ID # 52 van de gitaar in een van de slots moeten zien … op mijn machine verscheen het in kolom 2, rij 5 … maar het maakt niet uit welke, zolang je de nummer 52 ergens daarbinnen.

Als de computer het niet kan detecteren, kunt u het volgende proberen:

  • Zorg ervoor dat uw draden stevig zijn aangesloten.
  • Zorg ervoor dat alles op de juiste pinnen is aangesloten.
  • Draai de gitaarstekker om. De Nunchucky weerhoudt je er niet van om de stekker ondersteboven aan te sluiten, dus het kan maar omgekeerd.
  • Zorg ervoor dat i2c is ingeschakeld op de Raspberry Pi (zoals weergegeven in stap 2)

*Als de plug op de gitaarcontroller je bekend voorkomt, komt dat omdat hij hetzelfde is als de standaard Wii Nunchuck-controller…vandaar de naam Nunchucky! Dit betekent ook dat je hetzelfde breakout-bord ook kunt gebruiken om verbinding te maken met nunchuck-controllers.

Stap 5: Stap 5: Alles samenbrengen

Stap 5: Alles samenbrengen
Stap 5: Alles samenbrengen
Stap 5: Alles samenbrengen
Stap 5: Alles samenbrengen

Nu alles op de Raspberry Pi is ingesteld, hebben we alleen een klein beetje code nodig om het te laten werken. U kunt de code en andere benodigde bestanden als volgt downloaden:

  • Om de code en andere bestanden naar de Raspberry Pi te downloaden, opent u een nieuwe shell en typt u de volgende opdracht (mogelijk moet u 'sudo' ervoor zetten): git clone
  • Dit zal een map in je thuismap maken met de naam keytarHero (d.w.z. /home/pi/keytarHero) en de bestanden erin downloaden.

Er zijn drie hoofdbestanden in dit pakket:

  • WiiGHController.py: Dit is een python-script dat een i2c-verbinding met de gitaar opent en de waarden van de verschillende bedieningselementen retourneert. Standaard print het ook de waarden die het leest naar de shell, zodat je kunt zien wat het doet.
  • keytarHero.pd: Dit is het Pure Data-patchbestand dat ik heb gemaakt om de muziek te maken die je hoort. Het is ingesteld om de waarden die van de gitaar binnenkomen te lezen en deze naar verschillende knooppunten te leiden om de geluiden te genereren. Ik zal de details van de patch in de volgende stap bespreken, maar uiteindelijk zou je dit kunnen aanpassen om te doen wat je wilt vanaf hier.
  • keytarHero.py: Dit is het script dat het hele proces start en alles aan elkaar plakt. Het start Pure Data en opent de keytarHero.pd-patch. Het opent een verbinding met de patch en geeft de waarden door van de gitaar naar de patch.

Het moment van de waarheid! Zorg ervoor dat de gitaar is aangesloten op de Raspberry Pi en dan ben je klaar om te gaan. Om het te starten, hoeft u alleen maar het keytarHero.py-script uit te voeren. Om dit te doen:

  • Open een nieuwe shell en typ: cd keytarHero
  • Voer vervolgens de opdracht uit: python keytarHero.py

Dat is het! Als alles correct werkt, zou Pure Data moeten starten en de patch beginnen te spelen. Je zou een reeks noten moeten horen die worden gespeeld, en als je op knoppen op de gitaar drukt, zou deze erop moeten reageren.

Probleemoplossen

Als het niet werkt, zijn hier een paar dingen om te controleren:

  • Pure Data-patch start niet of krijgt een foutmelding over het niet vinden van bestanden? Het keytarHero.py-script heeft het pad naar het Pure Data-patchbestand hard gecodeerd naar '/home/pi/keytarHero/keytarHero.pd'. Als je je keytarHero-map of dat patchbestand ergens anders hebt verplaatst, moet je het script bijwerken om in plaats daarvan je pad te gebruiken. Om dit te doen, opent u het bestand keytarHero.py en zoekt u naar de variabele met de naam PD_PATCH_PATH en wijzigt u deze zodat deze verwijst naar de map waar uw keytarHero.pd-bestand zich bevindt. Sla het script op en voer het opnieuw uit en je zou goed moeten zijn om te gaan.
  • Geeft de gitaar een signaal af? Het script zou het signaal dat het van de gitaar naar de ketel krijgt continu moeten afdrukken als een reeks getallen, die elk de waarde van een regelaar op de gitaar vertegenwoordigen. Als je een regelaar op de gitaar gebruikt, zou dit ervoor moeten zorgen dat deze nummers veranderen. Als dat niet het geval is, controleer dan of je de i2c-configuratie en gitaaraansluitingen correct hebt uitgevoerd in de bovenstaande stappen.
  • Is Pure Data-audio ingeschakeld? De Pure Data-patch in dit pakket zou automatisch de audio moeten inschakelen, maar controleer of het DSP-aanvinkvakje in de Pure Data-console is aangevinkt. Controleer ook uw audio-instellingen zoals weergegeven in stap 3.
  • Ontvangt Pure Data het signaal van de gitaar? In de rechterbovenhoek van de patch bevindt zich een aantal knooppunten die verantwoordelijk zijn voor het lezen van het signaal van de gitaar en het verzenden naar de rest van de patch. Als u op de knoppen op de gitaar drukt, moeten de nummers in dit gedeelte ook worden bijgewerkt om u te vertellen dat het signaal goed wordt ontvangen.
  • Variabelen in de patch initialiseren. Pure Data kan een beetje kieskeurig zijn over waarden in de patch die niet worden geïnitialiseerd. Ik heb mechanismen toegevoegd om variabelen te activeren wanneer het wordt geopend, maar het kan de moeite waard zijn om gewoon op enkele van de berichtvensters te klikken (degene die eruitzien alsof er een hap uit is gehaald). Hierdoor worden ze geïnitialiseerd en kunnen ze wakker worden.

Stap 6: Een rondleiding door de Pure Data-patch

Een rondleiding door de pure data-patch
Een rondleiding door de pure data-patch
Een rondleiding door de pure data-patch
Een rondleiding door de pure data-patch
Een rondleiding door de pure data-patch
Een rondleiding door de pure data-patch
Een rondleiding door de pure data-patch
Een rondleiding door de pure data-patch

De setup die tot nu toe in deze tutorial is beschreven, zorgt ervoor dat alles voor je werkt, maar een van de leuke dingen van het gebruik van Pure Data voor dit project, is dat het kan worden aangepast om te doen wat je maar wilt. Als de patch open is en u op Ctrl + E drukt, wordt de patch in de bewerkingsmodus gezet en kunt u de patch wijzigen. De details van het gebruik van Pure Data vallen buiten het bestek van deze tutorial (daar zijn veel tutorials online voor), maar het kan leuk zijn om ermee te sleutelen, dus hier is een algemene rondleiding van wat er gebeurt in de keytarHero.pd-patch voor het geval je wil het aanpassen:

  • Gitaarcommunicatie: Rechtsboven in de patch bevindt zich een boom met knooppunten die verantwoordelijk zijn voor het verwerken van het signaal van de gitaar. De waarden van de gitaar zijn een lange snaar, dus deze knooppunten splitsen de snaar op in individuele waarden voor elk besturingselement, converteren ze naar getallen en geven ze vervolgens door aan 'verzend'-knooppunten (degene die beginnen met een s). Zendknooppunten krijgen een naam toegewezen en zenden het signaal uit om knooppunten met dezelfde naam te 'ontvangen'. De 's whammy' node, bijvoorbeeld, zendt de waarden uit die afkomstig zijn van de whammy bar van de gitaar en de 'r whammy' node in het midden van de patch ontvangt dat signaal en gebruikt dat signaal om de sequencer te stoppen. Zend-/ontvangstknooppunten helpen de rommel van verbindingslijnen in de patch te verminderen. Ik raad niet aan om met deze sectie te knoeien, omdat het nogal lastig is om het goed te krijgen, maar je kunt zeker extra ontvangstknooppunten toevoegen door de patch heen als dat nodig is om er indien nodig signalen van te ontvangen.
  • Sequencer-sectie: Het middelste gedeelte van de patch bestuurt de sequencer. Aan de linkerkant bevindt zich een balk met een bewegend zwart vierkant dat aangeeft welke noot van een reeks van 16 noten wordt gespeeld. De strum-toets bepaalt of de sequentie vooruit of achteruit wordt afgespeeld. De plus/min-knoppen verhogen/verlagen de snelheid. Aan de rechterkant zijn vijf reeksen cijfers die bepalen welke noten tijdens elke stap worden gespeeld. Elke sequentie wordt toegewezen om te spelen wanneer een van de vijf knoppen op de fret wordt ingedrukt. Deze nummers zijn MIDI-waarden en je kunt ze veranderen om alle noten te spelen die je wilt… geef ze gewoon waarden tussen 0 en 127.
  • Oscillator/FX-sectie: Linksonder bevinden zich de oscillator- en FX-knooppunten die het geluid daadwerkelijk maken. De primaire oscillator bevindt zich aan de linkerkant. De midi-waarden uit de sequencer-sectie worden omgezet in frequenties en naar de oscillator gevoerd. Het wordt gemengd met een tweede oscillator die van de rechterkant komt. De frequentie wordt ook geregeld door de midi-waarden, maar met een extra frequentie-offset die wordt aangedreven door de X-as van de joystick. Dit veroorzaakt een ontstemd of fluitend effect wanneer u de joystick naar links of rechts beweegt. Rechtsonder bevindt zich ook een laagdoorlaatfilterknooppunt waarvan de afsnijfrequentie is gekoppeld aan de Y-as van de joystick. Een laagdoorlaatfilter bepaalt hoeveel hoogfrequent geluid uit het geluid wordt verwijderd. Wanneer de joystick naar de neerwaartse positie wordt bewogen, worden veel van de hoge frequenties afgekapt, wat resulteert in een gedempt geluid. Wanneer het naar de opwaartse positie wordt bewogen, laat het alle frequenties door, wat resulteert in een helderder geluid.
  • Initialisatie: Linksboven in de patch bevindt zich een reeks knooppunten die de patch initialiseren wanneer deze wordt gestart, zoals het inschakelen van de audio en 'aanraken' van verschillende knooppunten om ze te wekken. Nogmaals, je hoeft waarschijnlijk niet te rotzooien met deze sectie, maar als er dingen zijn die je wilt laten gebeuren wanneer de patch wordt gelanceerd, verbind ze dan met het knooppunt genaamd 'loadbang'.
  • Ik heb geprobeerd de patch te documenteren met opmerkingen in de patch zelf, dus hopelijk geeft dat je genoeg informatie om verschillende opties vanaf hier te verkennen.

Genieten van!

Stap 7: Extra dingen om te proberen

De gitaar 'headless' laten draaien

Het zou mogelijk moeten zijn om dit project uit te voeren zonder aangesloten te zijn op een monitor/toetsenbord/muis als je je Raspberry Pi op een geschikte draagbare stroombron hebt aangesloten. De Raspberry Pi past niet helemaal in de opening aan de achterkant van de gitaar, maar als je je moedig voelt, kun je aanpassingen aan de gitaar maken om dat te repareren … of monteer de Pi gewoon aan de achterkant met schroeven en laat hem plakken een beetje uit. Er zijn tal van tutorials online over het uitvoeren van scripts op de Raspberry Pi zonder hoofd, maar eigenlijk zou je het commando 'python /home/pi/keytarHero/keytarHero.py&' willen uitvoeren wanneer het opstart. Theoretisch zou je dan een gitaar hebben waar maar één kabel uit komt naar de luidspreker… net als een echte elektrische gitaar!

Aanvullende Pure Data-aanpassingen

Ik had wat andere ideeën over hoe de gitaar de Pure Data-patch zou kunnen besturen, maar kwam er niet aan toe om het te proberen. Dit zouden veranderingen in de patch zijn die leuk kunnen zijn om mee te experimenteren:

  • Whammy-balk: in de huidige patch stopt de whammy-balk het afspelen van de reeks, maar ik denk dat het beter zou zijn als de whammy-balk tegelijkertijd de frequentie zou verhogen, net zoals een echte whammy-balk zou doen. Ik heb een tijdje geprobeerd om het te laten werken, maar het was lastiger dan ik dacht. Ik denk dat het misschien een kwestie is van het toevoegen van een uitdrukking in de oscillatorsectie die een iets hogere frequentie aan de oscillator toevoegt op basis van de waarde die uit de whammy bar komt.
  • Tokkelbalk: Momenteel speelt de strumbalk de reeks vooruit wanneer deze wordt ingedrukt en achteruit wanneer deze wordt ingedrukt, maar het is misschien beter om door verschillende reeksopties te bladeren, zoals willekeurige stappen, enz.
  • Plus/min-knoppen: De plus/min-knoppen veranderen de beats per minuut, maar het is een beetje teleurstellend, tenzij je ze meerdere keren indrukt. Het zou goed zijn om het elke keer met een groter bedrag te laten toenemen. Of laat hem de sequencer schakelen tussen 16-beat, 8-beat, 4-beat, triplet-weergave.

Aanbevolen: