Taula de continguts:

Keytar Hero (utilitzant un controlador de guitarra Wii com a sintetitzador): 7 passos (amb imatges)
Keytar Hero (utilitzant un controlador de guitarra Wii com a sintetitzador): 7 passos (amb imatges)

Vídeo: Keytar Hero (utilitzant un controlador de guitarra Wii com a sintetitzador): 7 passos (amb imatges)

Vídeo: Keytar Hero (utilitzant un controlador de guitarra Wii com a sintetitzador): 7 passos (amb imatges)
Vídeo: Jesse Cale - Keytar Hero 2024, Juliol
Anonim
Image
Image
Pas 1: Raspberry Pi (configuració inicial)
Pas 1: Raspberry Pi (configuració inicial)

Els jocs de Guitar Hero eren de moda fa una dotzena d’anys, de manera que segur que hi haurà molts controladors de guitarra antics que recol·lecten pols. Tenen molts botons, poms i palanques, per què no els tornareu a fer un bon ús? Normalment, el controlador de guitarra no emet cap so, però en aquest tutorial us mostraré com convertir un controlador Wii Guitar Hero perquè es pugui reproduir com a sintetitzador.

Subministraments

  • Controlador Wii de Guitar Hero
  • Tauler informatiu Nunchucky (disponible a Adafruit aquí)
  • 4ea cables de pont (femella a femella)
  • Connectors de crimp 2a (opcional)
  • Raspberry Pi (3 B + o 4 preferits)
  • Targeta MicroSD de 16 GB

Pas 1: Pas 1: Raspberry Pi (configuració inicial)

Un Raspberry Pi és el cervell i el cervell d’aquest projecte, de manera que el primer que haurem de fer és configurar-ne un per al nostre projecte. He provat aquest projecte tant amb un Raspberry Pi 3 B + com amb un 4, i sembla que tots dos funcionen bé.

Els Raspberry Pi són microordinadors que emmagatzemen tot en una targeta microSD en lloc d’un disc dur … inclòs el sistema operatiu. La forma típica d’utilitzar-los és descarregar el sistema operatiu més recent i gravar-ne una imatge en una targeta microSD de la següent manera:

  • En un ordinador o portàtil a part, aneu a
  • Descarregueu el darrer sistema operatiu Raspbian. (Buster en el moment d’aquest escrit). Hi ha diverses versions disponibles a la pàgina que ofereixen programari més o menys inclòs en funció de les vostres preferències. Tots haurien de funcionar bé, però m'agrada utilitzar l'opció "Raspbian Buster amb ordinador i programari recomanat" perquè inclou alguns IDE de programació i altres aplicacions útils. La forma més senzilla és descarregar la versió zip.
  • Grava la imatge Raspbian a la targeta microSD. Hi ha moltes aplicacions que podeu utilitzar per gravar la imatge Raspbian a la vostra targeta microSD, però he utilitzat el programa balenaEtcher que podeu obtenir aquí. Introduïu la targeta microSD a l'ordinador i executeu balenaEtcher. Per a la imatge del disc, seleccioneu el fitxer zip que heu descarregat i, a continuació, seleccioneu la vostra targeta SD i premeu Flash. L'eina descomprimirà els fitxers d'imatge del disc i els gravarà a la targeta SD. IMPORTANT: assegureu-vos que la unitat que seleccioneu sigui la targeta microSD … l'eina sobreescriurà qualsevol unitat que especifiqueu, així que assegureu-vos que heu triat la correcta.
  • Enceneu el vostre Raspberry Pi. Introduïu la targeta microSD al vostre Raspberry Pi. Connecteu el poder, el ratolí, el teclat i els altaveus. Si seguiu les indicacions, s’explica per si mateix … configureu la vostra ubicació / hora, configureu una contrasenya i connecteu el WiFi.

Tot això és una configuració estàndard per a un Raspberry Pi, de manera que si necessiteu més detalls, els podreu trobar aquí. Farem la resta de passos al Raspberry Pi.

Pas 2: Pas 2: activeu I2c

Pas 2: activeu I2c
Pas 2: activeu I2c

El Guitar Hero Controller utilitza i2c per comunicar-se (i2c és un protocol bastant comú que fan servir els dispositius electrònics per parlar entre ells), de manera que hem d’habilitar aquesta funció al Raspberry Pi:

  • Instal·leu biblioteques per a i2c. Les biblioteques i2c ara semblen formar part de la compilació estàndard de Buster, però per si de cas, executarem l'instal·lador per a elles. Obriu un intèrpret d’ordres (hi ha una icona a la barra de tasques a la part superior) i escriviu el següent:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-tools
  • Activeu i2c a Raspberry Pi. Al vostre tipus d’intèrpret d’ordres: sudo raspi-config. Això mostrarà la finestra de configuració. Fletgeu cap avall a InterfacingOptions-> I2C per habilitar i2c per al dispositiu. Per sortir de la finestra, fletxa dreta a Enrere i després a Finalitzar per desar la configuració.
  • Reinicieu. Al vostre intèrpret d’ordres, escriviu: sudo reboot
  • Definiu paràmetres i2c personalitzats. La velocitat de transmissió i2c per defecte (100k) sembla confondre la guitarra de tant en tant, de manera que l’alentirem fins a 50k de la següent manera:

    • En un tipus de shell: sudo nano /boot/config.txt
    • Això obrirà el fitxer de configuració en un editor de text. Fletxa cap avall i cerqueu la línia que diu dtparam = i2c_arm = on. Si es comenta, descomenteu-lo. Si no teniu aquesta línia, afegiu-la. A sota d’aquesta línia també afegiu el següent:

      • dtparam = i2c1 = activat
      • dtparam = i2c1_baudrate = 50000
    • Feu clic a Ctrl + O per desar el fitxer de configuració i premeu Ctrl + X per sortir.
  • Reinicieu. Al vostre intèrpret d’ordres, escriviu: sudo reboot

Pas 3: Pas 3: instal·leu Pure Data

Pas 3: instal·leu Pure Data
Pas 3: instal·leu Pure Data
Pas 3: instal·leu Pure Data
Pas 3: instal·leu Pure Data

Per als sons del sintetitzador utilitzarem un programa anomenat Pure Data. Es tracta d’una eina generadora de so i visualització interactiva que existeix des de fa força temps. Té un parell de funcions que el fan ideal per a aquest projecte … té una interfície d’usuari basada en nodes que és bastant fàcil d’utilitzar i pot rebre senyals de fonts externes com ara scripts Python.

  • Instal·leu Pure Data. En un tipus de shell: sudo apt-get install puredata
    • Això hauria d’instal·lar el programari al vostre Raspberry Pi, però si es queixa a l’intèrpret d’ordres de no poder localitzar tots els fitxers que necessita, proveu-ho:

      • sudo apt-get update
      • A continuació, torneu a executar l'ordre install: sudo apt-get install puredata
    • Durant la instal·lació, se us demanarà si voleu crear directoris per a extensions. Podeu dir Sí.
  • Inicieu Pure Data. Si s’instal·la correctament, hauríeu de veure el programa al menú d’inici de l’escriptori a So i vídeo. Executeu-lo per assegurar-vos que es llanci.
  • Configureu l'àudio Pure Data. Normalment, l'àudio de Pure Data no està activat de manera predeterminada, de manera que l'haureu d'activar.

    • Estableix la sortida d'àudio a ALSA. Quan es llanci Pure Data, hauríeu de veure la finestra de la consola. Aneu al menú Multimèdia i seleccioneu ALSA com a sortida. És possible que vegeu missatges d'advertència a l'intèrpret d'ordres de la consola que indiquen que no pot trobar determinats fitxers, però podeu ignorar-ho.
    • Activeu l'àudio DSP. A la finestra de la consola, marqueu la casella de selecció DSP.
  • Prova de sortida d'àudio. A la finestra de la consola Pure Data, aneu a Mitjans-> Prova d’àudio i MIDI. Això obrirà un fitxer de prova que podem utilitzar per assegurar-nos que Pure Data funciona i que podem escoltar l'àudio. Enceneu els altaveus, però manteniu-los a un volum baix al principi (de vegades l’àudio pot ser molt fort per defecte). Al fitxer de prova, a la part esquerra hauríeu de veure una secció anomenada Tons de prova. Feu clic al quadre que diu 60 primer i veureu si sentiu cap so dels altaveus. Si no és així, proveu de fer clic al quadre 80 i, a continuació, apagueu els altaveus fins que sentiu so. Si sentiu so, intenteu arrossegar al quadre que diu Pitch a la dreta dels tons de prova, on podeu canviar la freqüència dels tons i veure què passa.

Si podeu llançar Pure Data i escoltar un so des del patch de prova, esteu a punt per passar al següent pas. Però Pure Data pot obtenir una mica complicat sobre la sortida d'àudio la primera vegada, de manera que si encara no obteniu àudio proveu el següent:

  • És possible que l’àudio s’encamini a través del cable HDMI, per tant, per forçar-lo a utilitzar el connector dels auriculars:

    • En un tipus de shell: sudo raspi-config
    • Aneu a Opcions avançades-> Àudio-> Força el connector de 3,5 mm ('auriculars')
  • Proveu a reiniciar. De vegades això fa el truc.
  • Comproveu els altaveus i la connexió amb el Raspberry Pi.

Pas 4: Pas 4: Connexió de la guitarra

Pas 4: connectar la guitarra
Pas 4: connectar la guitarra
Pas 4: connectar la guitarra
Pas 4: connectar la guitarra
Pas 4: connectar la guitarra
Pas 4: connectar la guitarra

La forma més senzilla de connectar el controlador de guitarra al Raspberry Pi és amb una placa de sortida econòmica com el Nunchucky *. Aquesta placa us permet accedir al senyal que prové de la guitarra sense tallar l’endoll ni trencar la guitarra. A un costat del tauler hi ha traces planes dissenyades per adaptar-se perfectament a l’endoll provinent de la guitarra. També hi ha dues petites osques que permeten que el tap cliqueixi al seu lloc evitant així que es deixi anar. Les traces condueixen a quatre passadors de capçalera al costat oposat del tauler.

Nota: el Nunchucky ve amb passadors de capçalera però no estan soldats, de manera que haureu de fer-ho vosaltres mateixos. En el meu cas, he utilitzat clavilles de capçalera de 90 graus, cosa que li permet quedar pla al projecte final.

Necessitareu quatre cables per connectar el Nunchucky al Raspberry Pi. Connecteu els cables dels pins de capçalera Nunchucky als pins GPIO de Raspberry Pi de la següent manera:

  • 3,3 v -> Pin 1
  • Dades -> Pin 3
  • Clk -> Pin 5
  • Gnd -> Pin 9

Al meu projecte vaig utilitzar connectors de crimpat per als cables de manera que no es desprenguessin tan fàcilment. Però si no disposeu de connectors encreuats, funcionaran bé quatre cables de pont de femella a dona. Si feu servir els connectors de crimp, assegureu-vos de prestar atenció a l’ordre dels cables dels pins de capçalera i dels pins GPIO. Tingueu en compte també que als pins GPIO saltem el pin 7. Per explicar-ho, he utilitzat un connector de crimp de cinc fils en un extrem i he saltat una ranura.

Per verificar que el vostre Raspberry Pi pugui detectar el controlador de la guitarra, obriu un intèrpret d'ordres i escriviu: sudo i2cdetect -y 1

Hauria d’imprimir una quadrícula a l’intèrpret d’ordres amb, sobretot, guions dobles. Si l’ordinador pot detectar la guitarra, hauríeu de veure l’identificació # 52 de la guitarra en una de les ranures … a la meva màquina apareixia a la columna 2, fila 5 … però no importa quina, sempre que vegeu el número 52 en algun lloc d’aquí.

Si l’ordinador no el pot detectar, aquí teniu algunes coses a provar:

  • Assegureu-vos que els cables estiguin ben connectats.
  • Assegureu-vos que teniu tot connectat als pins correctes.
  • Gireu el tap de la guitarra. El Nunchucky no impedeix connectar l’endoll cap per avall, de manera que pot ser que s’inverti.
  • Assegureu-vos que l’i2c estigui habilitat al Raspberry Pi (com es mostra al pas 2)

* Si el connector del controlador de guitarra sembla familiar, és perquè és el mateix que el controlador estàndard de Wii Nunchuck … d’aquí el nom de Nunchucky. Això també significa que podeu utilitzar aquesta mateixa placa de connexió per connectar-vos també als controladors nunchuck.

Pas 5: Pas 5: ajuntar-ho tot

Pas 5: ajuntar-ho tot
Pas 5: ajuntar-ho tot
Pas 5: ajuntar-ho tot
Pas 5: ajuntar-ho tot

Ara que tot està configurat al Raspberry Pi, només necessitem una mica de codi perquè funcioni. Podeu descarregar el codi i altres fitxers necessaris de la següent manera:

  • Per descarregar el codi i altres fitxers al Raspberry Pi, obriu un intèrpret d’ordres nou i escriviu l’ordre següent (és possible que hàgiu de posar “sudo” abans): git clone
  • Això crearà un directori al vostre directori inicial anomenat keytarHero (és a dir, / home / pi / keytarHero) i es descarregaran els fitxers.

Hi ha tres fitxers principals en aquest paquet:

  • WiiGHController.py: es tracta d'un script Python que obre una connexió i2c a la guitarra i retorna els valors dels diferents controls. Per defecte, també imprimeix els valors que llegeix a l'intèrpret d'ordres perquè pugueu veure què fa.
  • keytarHero.pd: Aquest és el fitxer de pegat de Pure Data que he creat per crear la música que escoltarà. Està configurat per llegir els valors que provenen de la guitarra i els encamina a diversos nodes per generar els sons. Discutiré els detalls del pegat al següent pas, però, en última instància, podeu modificar-ho per fer el que vulgueu des d’aquí.
  • keytarHero.py: aquest és el guió que inicia tot el procés i enganxa tot. Llança Pure Data i obre el pegat keytarHero.pd. Obre una connexió al patch i passa els valors de la guitarra al patch.

El moment de la veritat! Assegureu-vos que la guitarra estigui connectada al Raspberry Pi i després estigueu a punt. Per iniciar-lo, només cal que executeu l'script keytarHero.py. Fer això:

  • Obriu un intèrpret d’ordres nou i escriviu: cd keytarHero
  • A continuació, executeu l'ordre: python keytarHero.py

Això és! Si tot funciona correctament, Pure Data hauria de llançar-se i començar a reproduir el pegat. Hauríeu d’escoltar una seqüència de notes i, en prémer els botons de la guitarra, hauria de respondre-hi.

Resolució de problemes

Si no funciona, aquí teniu algunes coses que cal comprovar:

  • El pedaç Pure Data no s'inicia o no obté cap error en no trobar fitxers? L'escriptori keytarHero.py té el camí d'accés al fitxer de pedaç Pure Data codificat a "/home/pi/keytarHero/keytarHero.pd". Si heu mogut la carpeta keytarHero o aquest fitxer de pegat a un altre lloc, haureu d'actualitzar l'script per utilitzar el vostre camí. Per fer-ho, obriu el fitxer keytarHero.py i cerqueu la variable anomenada PD_PATCH_PATH i canvieu-la per apuntar al directori on viu el fitxer keytarHero.pd. Deseu l'script i torneu-lo a executar i hauríeu d'anar bé.
  • La guitarra emet senyal? El guió hauria d’imprimir el senyal que rep de la guitarra a l’intèrpret d’ordres contínuament com una cadena de números, cadascun representant el valor d’un control de la guitarra. Quan utilitzeu un control a la guitarra, hauria de fer que aquests números canviessin. Si no, comproveu que heu fet correctament la configuració i2c i les connexions de guitarra en els passos anteriors.
  • L'àudio Pure Data està activat? El pegat Pure Data proporcionat en aquest paquet hauria d'activar l'àudio automàticament, però comproveu que la casella de selecció DSP de la consola Pure Data estigui activada. Comproveu també la configuració d’àudio tal com es mostra al pas 3.
  • Pure Data rep el senyal de la guitarra? A l'extrem superior dret del patch hi ha un munt de nodes encarregats de llegir el senyal de la guitarra i transmetre'l a la resta del patch. En prémer els botons de la guitarra, els números d’aquesta secció s’han d’actualitzar i us indiquen que rep el senyal correctament.
  • Inicialització de variables al pegat. Pure Data pot ser una mica complicat perquè els valors del pegat no s’inicialitzin. He afegit mecanismes per activar variables quan s’obre, però potser val la pena fer clic en alguns dels quadres de missatges (els que semblen que se’ls ha fet una mossegada). Això fa que s’inicialitzin i els puguin despertar.

Pas 6: un recorregut pel Patch de dades pures

Un recorregut pel pedaç de dades pures
Un recorregut pel pedaç de dades pures
Un recorregut pel pedaç Pure Data
Un recorregut pel pedaç Pure Data
Un recorregut pel pedaç Pure Data
Un recorregut pel pedaç Pure Data
Un recorregut pel pedaç Pure Data
Un recorregut pel pedaç Pure Data

La configuració descrita fins ara en aquest tutorial us farà funcionar, però una de les coses bones d’utilitzar Pure Data per a aquest projecte és que es pot personalitzar per fer el que vulgueu. Quan el pedaç està obert si premeu Ctrl + E, posa el pedaç al mode Edició i podeu canviar-lo. Els detalls sobre l’ús de Pure Data estan fora de l’abast d’aquest tutorial (hi ha molts tutorials en línia), però pot ser divertit jugar-hi, així que aquí teniu un recorregut general del que està passant al pedaç keytarHero.pd per si vull personalitzar-lo:

  • Comunicació per guitarra: a la part superior dreta del pegat hi ha un arbre de nodes encarregat de manejar el senyal de la guitarra. Els valors de la guitarra són una corda llarga, de manera que aquests nodes divideixen la corda en valors individuals per a cada control, els converteixen en números i després els passen a nodes "enviats" (els que comencen amb una s). Als nodes d’enviament se’ls assigna un nom i emeten el senyal per "rebre" nodes del mateix nom. Per exemple, el node 's whammy', emet els valors provinents de la barra whammy de la guitarra i el node 'r whammy' al mig del pegat rep aquest senyal i utilitza aquest senyal per aturar el seqüenciador. Els nodes d’enviament i recepció ajuden a reduir el desordre de les línies de connexió al pegat. No recomano ficar-se en aquesta secció, ja que és una mica complicat encertar-se, però definitivament podeu afegir nodes de recepció addicionals a tot el pegat segons calgui per rebre-hi els senyals que calgui.
  • Secció de seqüenciador: la secció central del pegat controla el seqüenciador. Al costat esquerre hi ha una barra amb un quadrat negre en moviment que us mostra la nota d’una seqüència de 16 notes que toca. La tecla Strum controla si la seqüència es reprodueix cap endavant o cap enrere. Els botons més / menys augmenten / disminueixen la velocitat. Al costat dret hi ha cinc conjunts de números que controlen quines notes es reprodueixen durant cada pas. Cada seqüència s’assigna a tocar quan es prem un dels cinc botons del trast. Aquests números són valors MIDI i els podeu canviar per reproduir les notes que vulgueu … simplement doneu-los valors entre 0 i 127.
  • Secció Oscil·lador / FX: a la part inferior esquerra hi ha l’oscil·lador i els nodes FX que realment emeten el so. L'oscil·lador principal es troba a l'esquerra. Els valors midi de la secció del seqüenciador es converteixen en freqüències i s’alimenten a l’oscil·lador. Es barreja amb un segon oscil·lador que ve del costat dret. La seva freqüència també està controlada pels valors midi, però amb una compensació de freqüència addicional impulsada per l'eix X del joystick. Això provoca un efecte de desafinació o xiulet quan es mou el joystick cap a l'esquerra o la dreta. A la part inferior dreta també hi ha un node de filtre de pas baix la freqüència de tall del qual està lligat a l'eix Y del joystick. Un filtre de pas baix determina la quantitat de so d'alta freqüència que s'elimina del so. Quan el joystick es mou cap a la posició cap avall, talla gran part de les freqüències altes, cosa que provoca un so apagat. Quan es mou a la posició ascendent, passa totes les freqüències donant lloc a un so més brillant.
  • Inicialització: a la part superior esquerra del patch hi ha una sèrie de nodes que inicialitzen el patch quan es llança, com ara activar l'àudio i "tocar" diversos nodes per despertar-los. Una vegada més, probablement no cal que us enganxeu amb aquesta secció, però si hi ha coses que voleu que passin quan es llanci el pegat, connecteu-les al node anomenat 'loadbang'.
  • He intentat documentar el pedaç amb comentaris al propi pedaç, així que espero que us doni prou informació per explorar diferents opcions des d’aquí.

Gaudeix-ne!

Pas 7: coses addicionals per provar

Fent funcionar la guitarra "sense cap"

Hauria de ser possible executar aquest projecte sense estar connectat a un monitor / teclat / ratolí si heu executat el Raspberry Pi des d’una font d’energia portàtil adequada. El Raspberry Pi no s’acaba d’adaptar a l’obertura de la part posterior de la guitarra, però si us sentiu valent, podeu fer modificacions a la guitarra per solucionar-ho … o simplement muntar el Pi a la part posterior amb cargols i deixar-lo enganxar fora una mica. Hi ha molts tutorials en línia sobre com executar scripts al Raspberry Pi sense cap, però bàsicament voldríeu executar l'ordre 'python /home/pi/keytarHero/keytarHero.py&' quan arrenci. Teòricament, doncs, tindríeu una guitarra amb només un cable que en sortís a l'altaveu … igual que una guitarra elèctrica real!

Modificacions addicionals de Pure Data

Tenia algunes altres idees sobre com la guitarra podia controlar el pegat Pure Data, però no vaig intentar-ho. Aquests serien canvis en el pegat que podrien ser divertits experimentar:

  • Barra Whammy: en el patch actual, la barra Whammy simplement atura la reproducció de seqüència, però crec que seria millor que la barra Whammy també augmenti la freqüència al mateix temps, com ho faria una barra Whammy real. Vaig intentar que funcionés durant un temps, però va ser més complicat del que pensava. Crec que només es podria tractar d'afegir una expressió a la secció de l'oscil·lador que afegeixi una freqüència una mica més alta a l'oscil·lador en funció del valor que prové de la barra whammy.
  • Barra Strum: actualment la barra Strum reprodueix la seqüència cap endavant quan es prem cap avall i cap enrere quan es prem cap amunt, però potser seria millor fer-la recórrer diferents opcions de seqüenciació, com ara passos aleatoris, etc.
  • Botons més / menys: els botons més / menys canvien els pulsacions per minut, però és una mica decebedor a menys que els premeu diverses vegades. Pot ser bo que cada vegada augmenti una quantitat més gran. O potser feu canviar el seqüenciador entre la reproducció de triplets de 16, 8, 4 i 4 temps.

Recomanat: