Cuprins:
- Pasul 1: Lucruri de care vei avea nevoie
- Pasul 2: Rezumat
- Pasul 3: Ideea de bază
- Pasul 4: Walabot
- Pasul 5: Introducere
- Pasul 6: Configurarea Raspberry Pi - 1
- Pasul 7: Configurarea Raspberry Pi - 2
- Pasul 8: Configurarea Raspberry Pi - 3
- Pasul 9: Configurarea Raspberry Pi - 4
- Pasul 10: Python
- Pasul 11: Pentru Walabot
- Pasul 12: Pentru interfața Servo
- Pasul 13: Pentru ecranul LCD
- Pasul 14: Blynk
- Pasul 15: Configurarea aplicației Blynk
- Pasul 16: Puteți utiliza acest cod QR cu aplicația Blynk pentru a clona proiectul meu pentru a vă economisi timp
- Pasul 17: Rularea Blynk cu Raspberry Pi și utilizarea Blynk HTTPS pentru Python
- Pasul 18: Rularea automată a scriptului
- Pasul 19: Hardware-ul
- Pasul 20: Proiectarea incintei
- Pasul 21: Guts Shots
- Pasul 22: Imagini finale de asamblare
- Pasul 23: Pentru a fixa Walabot pe suport
- Pasul 24: Fișiere hardware STL pentru imprimare 3D
- Pasul 25: Scheme pentru cablarea lucrului în sus
- Pasul 26: Cod
- Pasul 27: Depozite Github de utilizat
- Pasul 28: Concluzie
Video: Walabot FX - Controlul efectului de chitară: 28 de pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:47
Controlați efectul dvs. preferat de chitară folosind altceva decât posturi minunate de chitară!
Pasul 1: Lucruri de care vei avea nevoie
Componente hardware
Walabot - Walabot
Raspberry Pi - Raspberry Pi 3 Model B
Sunfounder LCD1602
SunFounder PCA9685 16 canale PWM Servo Driver pentru Arduino și Raspberry Pi
Servo (generic) Fără legătură
Clema bateriei de 9V
Suport baterie 4xAA
Baterii AA
Sârme jumper (generice)
Comutator de picior cu acțiune DPDT
Korg SDD3000-PDL
Sisteme de operare software, aplicații și servicii online
Autodesk Fusion360 -
Blynk -
Instrumente etc
imprimantă 3d
Ciocan de lipit
Pasul 2: Rezumat
Cum ar fi să controlați expresia muzicală folosind altceva decât poziția chitarei dvs. în spațiul 3D? Ei bine, hai să protejăm ceva și să aflăm!
Pasul 3: Ideea de bază
Am vrut să pot controla parametrii cu 3 efecte în timp real, am vrut să fac asta folosind modul în care mi-am poziționat chitara. Deci, un lucru era clar, aveam să am nevoie de câteva lucruri.
- Un senzor care poate vedea spațiul 3D
- Servo pentru rotirea butoanelor
- Un ecran LCD
- Un driver Servo I2C
- Un Raspberry Pi
- Pentru a învăța Python
Pasul 4: Walabot
Vrei să vezi prin pereți? Obiecte de simț în spațiul 3D? Ai sens dacă respiri de peste cameră? Ei bine, ai noroc!
Walabot este un mod cu totul nou de a detecta spațiul din jurul tău folosind radar de mică putere.
Aceasta va fi cheia acestui proiect, aș putea să iau carteasan (X-Y-Z) coodinate de obiecte în spațiul 3D și să le mapez în poziții servo schimbând modul în care sună un efect de chitară, în timp real, fără a atinge pedala.
Victorie.
Mai multe informații despre Walabot pot fi găsite aici
Pasul 5: Introducere
Mai întâi, veți avea nevoie de un computer pentru a conduce Walabot, pentru acest proiect folosesc un Raspberry Pi 3 (aici, la care se face referire la RPi) datorită WiFi-ului încorporat și a extraordinarului
Am cumpărat un card SD de 16 GB cu NOOBS preinstalat pentru a păstra lucrurile frumoase și simple și am ales să instalez Raspian ca sistemul meu de operare Linux la alegere
(dacă nu sunteți familiarizați cu modul de instalare a Raspian, vă rugăm să luați un moment pentru a citi puțin despre aceasta)
OK, după ce Raspian rulează pe RPi, trebuie parcurși câțiva pași de configurare pentru a pregăti lucrurile pentru proiectul nostru
Pasul 6: Configurarea Raspberry Pi - 1
În primul rând, asigurați-vă că rulați cea mai recentă versiune de kernel și verificați dacă există actualizări deschizând un shell de comandă și tastând
sudo apt-get update
sudo apt-get dist-upgrade
(sudo este adăugat pentru a vă asigura că aveți privilegii administrative de ex. lucrurile vor funcționa)
Acest lucru poate dura ceva timp, așa că mergeți și luați o ceașcă frumoasă de ceai.
Pasul 7: Configurarea Raspberry Pi - 2
Trebuie să instalați Walabot SDK pentru RPi. Din browserul dvs. web RPi accesați https://www.walabot.com/gettingstarted și descărcați pachetul de instalare Raspberry Pi.
Dintr-un shell de comandă:
descărcări de CD-uri
sudo dpkg -I walabotSDK_RasbPi.deb
Pasul 8: Configurarea Raspberry Pi - 3
Trebuie să începem să configurăm RPi pentru a utiliza magistrala i2c. Dintr-un shell de comandă:
sudo apt-get install python-smbus
sudo apt-get install i2c-tools
după ce ați făcut acest lucru, trebuie să adăugați următoarele în fișierul de module
Dintr-un shell de comandă:
sudo nano / etc / modules
adăugați aceste 2 șiruri pe linii separate:
i2c-dev
i2c-bcm2708
Pasul 9: Configurarea Raspberry Pi - 4
Walabot atrage un pic de curent și vom folosi, de asemenea, GPIO-urile pentru a controla lucrurile, așa că trebuie să le configurăm
Dintr-un shell de comandă:
sudo nano /boot/config.txt
adăugați următoarele rânduri la sfârșitul fișierului:
safe_mode_gpio = 4
max_usb_current = 1
RPi este un instrument excelent pentru producători, dar este limitat în curent pe care îl poate trimite la Walabot. De aceea, adăugăm un curent maxim de 1Amp, mai degrabă decât 500mA mai standard
Pasul 10: Python
De ce Python? Ei bine, deoarece este foarte ușor de codat, este rapid să funcționeze și există o mulțime de exemple bune de python disponibile! Nu l-am mai folosit până acum și am fost în curând funcțional în cel mai scurt timp. Acum, RPi este configurat pentru ceea ce dorim, următorul pas este să configurați Python pentru a avea acces la API Walabot, interfețe LCD Servo
Pasul 11: Pentru Walabot
Dintr-un shell de comandă
Sudo pip instalează „/usr/share/walabot/python/WalabotAPI-1.0.21.zip”
Pasul 12: Pentru interfața Servo
Dintr-un shell de comandă
sudo apt-get install git build-essential python-dev
cd ~
git clone
cd Adafruit_Python_PCA9685
sudo python setup.py instalare
De ce trebuie să folosim un servo-driver? Ei bine, pentru un RPi, câteva motive.
1. Curentul tras de un servo poate fi foarte mare, iar acest număr devine mai mare cu cât aveți mai multe servo (desigur). Dacă conduceți servo directky de la un RPi, riscați să suflați sursa de alimentare
2. Timpurile PWM (Pulse Width Modulation) care controlează poziția servo sunt foarte importante. Deoarece RPi nu folosește un sistem de operare în timp real (pot exista întreruperi și altele), temporizările nu sunt exacte și pot face ca servo-urile să se zvârcolească nervos. Un driver dedicat permite un control precis, dar permite, de asemenea, adăugarea a până la 16 servo-uri, deci este excelent pentru extindere.
Pasul 13: Pentru ecranul LCD
deschideți browserul web RPi
www.sunfounder.com/learn/category/sensor-k…
Descarca
github.com/daveyclk/SunFounder_SensorKit_…
Dintr-un shell de comandă:
sudo mkdir / usr / share / sunfounder
Folosind exploratorul grafic, copiați folderul python din fișierul zip în noul dvs. folder sunfounder
Ecranul LCD este utilizat pentru a solicita utilizatorului ce anume se întâmplă. Afișarea procesului de configurare până la valorile x, y și z care sunt mapate pe fiecare servo
Pasul 14: Blynk
Blynk este un serviciu IoT genial care vă permite să creați o aplicație personalizată pentru a vă controla lucrurile. Mi s-a părut soluția perfectă pentru a-mi oferi controlul de la distanță al walabotului pentru a forma într-adevăr în setări …
O problema. Blynk nu este acceptat în prezent pe platforma Python, bugger. Dar nu vă temeți! Am reușit să găsesc un mic lucru frumos care permite controlul de la distanță și introducerea parametrilor de la distanță! este un pic ciudat
primul pas este să descărcați aplicația Blynk din magazinul dvs. de aplicații preferat
În al doilea rând, înscrieți-vă pentru un cont
Odată ce ați terminat, deschideți aplicația și începeți un nou proiect, alegând Raspberry Pi 3 ca hardware.
Aplicația vă va aloca un jeton de acces (veți avea nevoie de acesta pentru a introduce codul)
Odată ce ai făcut asta. va trebui să configurați aplicația așa cum se arată în imagini. Acesta este modul în care va interacționa cu walabotul.
Pasul 15: Configurarea aplicației Blynk
Pasul 16: Puteți utiliza acest cod QR cu aplicația Blynk pentru a clona proiectul meu pentru a vă economisi timp
OK Acum, că aplicația este configurată, putem configura Python și RPi pentru a vorbi cu ea prin internet. Magie
Pasul 17: Rularea Blynk cu Raspberry Pi și utilizarea Blynk HTTPS pentru Python
În primul rând, trebuie să instalați împachetatorul Blynk HTTPS pentru Python
Dintr-un shell de comandă:
clona sudo git
sudo pip instala blynkapi
În al doilea rând, trebuie să instalați serviciul Blynk pe RPi
Dintr-un shell de comandă:
git clone
cd blynk-library / linux
curăță totul
pentru a rula serviciul blynk
sudo./blynk --token = YourAuthToken
Pentru a vă asigura că serviciul Blynk rulează la pornire, trebuie să modificați /etc/rc.local
facand
sudo nano /etc/rc.local
adăugați acest lucru la sfârșit
./blynk-library/linux/blynk --token = tokenul meu &
(Am inclus o copie a fișierului meu /etc/rc.local în secțiunea cod pentru referință)
Pentru a testa funcționează, pur și simplu tastați
sudo /etc/rc.local start
Serviciul Blynk ar trebui să ruleze acum
Pasul 18: Rularea automată a scriptului
Acum, că totul este configurat și configurat și avem codul python gata. putem seta lucrurile să ruleze automat, astfel încât să putem renunța la tastatură și monitoare
Sunt câteva lucruri de făcut
Creați un fișier script nou pentru a rula programul Python
sudo nano guitareffect.sh
adăugați aceste rânduri
#! / bin / sh
python /home/pi/GuitarEffectCLI.py
asigurați-vă că îl salvați
În continuare, trebuie să acordăm scriptului permisiunea de a rula prin tastare
Sudo chmod + x /home/pi/guitareffect.sh
Și, în cele din urmă, trebuie să adăugăm acest script în fișierul /etc/rc.local cu care am jucat mai devreme.
Sudo nano /etc/rc.local
Adăuga
/home/pi/guitareffect.sh &
asigurați-vă că includeți „&” acest lucru permite scriptului Python să ruleze în fundal
Dreapta! Aceasta este toată configurația și software-ul sortat, apoi este timpul să conectați hardware-ul
Pasul 19: Hardware-ul
Primul prototip Breadboard
Pasul 20: Proiectarea incintei
Carcasa a fost proiectată și redată în minunatul Fusion360
Pasul 21: Guts Shots
Pasul 22: Imagini finale de asamblare
Pasul 23: Pentru a fixa Walabot pe suport
Folosiți discul metalic autoadeziv care vine cu walabot pentru a-l fixa în poziție
Pasul 24: Fișiere hardware STL pentru imprimare 3D
Pasul 25: Scheme pentru cablarea lucrului în sus
Pasul 26: Cod
Utilizați scriptul Python atașat pentru proiectul dvs.
din _future_ import print_functionde la sys import platform din sistemul de import os de la blynkapi import Blynk import WalabotAPI import timp import RPi. GPIO ca GPIO
# configurați GPIO folosind numerotarea plăcilor
GPIO.setmode (GPIO. BOARD) GPIO.setup (18, GPIO. IN, pull_up_down = GPIO. PUD_UP)
#blynk auth token
auth_token = "your_auth_token_here"
# Importați modulul PCA9685 pentru servo control.
import Adafruit_PCA9685
#import modul LCD din locație
din imp import load_source LCD1602 = load_source ('LCD1602', '/usr/share/sunfounder/Python/LCD1602.py')
# Inițializați PCA9685 folosind adresa implicită (0x40).
pwm = Adafruit_PCA9685. PCA9685 ()
# obiecte blynk
implicit = Blynk (auth_token, pin = "V9") start_button = Blynk (auth_token, pin = "V3") Rmax = Blynk (auth_token, pin = "V0") Rmin = Blynk (auth_token, pin = "V1") Rres = Blynk (auth_token, pin = "V2")
ThetaMax = Blynk (auth_token, pin = "V4")
ThetaRes = Blynk (auth_token, pin = "V5")
PhiMax = Blynk (auth_token, pin = "V6")
PhiRes = Blynk (auth_token, pin = "V7")
Prag = Blynk (auth_token, pin = "V8")
ServoMin = Blynk (auth_token, pin = "V10")
ServoMax = Blynk (auth_token, pin = "V11")
def LCDsetup ():
LCD1602.init (0x27, 1) # init (adresă sclavă, lumină de fundal)
def numMap (x, in_min, in_max, out_min, out_max): "" "utilizat pentru maparea citirilor walabot la poziția servo" "" return int ((x- in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
# folosiți acest lucru pentru rotunjirea datelor brute la valoarea alocată
def myRound (x, base = 2): return int (base * round (float (x) / base))
# extrage numărul din șirul blynk returnat
număr defExtract (val): val = str (val) return int (filtru (str.isdigit, val))
# Setați frecvența la 60 Hz, bun pentru servomotoare.
pwm.set_pwm_freq (60)
# Configurați valorile implicite ale lungimii impulsurilor min și max
SERVO_MIN = 175 # Lungimea minimă a impulsului din 4096 SERVO_MAX = 575 # Lungimea maximă a impulsului din 4096
# valori implicite walabot
R_MAX = 60 R_MIN = 20 R_RES = 5
THETA_MAX = 20
THETA_RES = 5
PHI_MAX = 20
PHI_RES = 5
PRAT = 1
# variabile pentru comutarea blynk
on = "[u'1 ']"
clasa Walabot:
def _init _ (auto):
self.wlbt = WalabotAPI self.wlbt. Init () self.wlbt. SetSettingsFolder () self.isConnected = Fals self.isTargets = Fals
def blynkConfig (auto):
load_defaults = defaults.get_val () if str (load_defaults) == on: SERVO_MAX = ServoMax.get_val () SERVO_MAX = numberExtract (SERVO_MAX) print ("Servo Max =", SERVO_MAX)
SERVO_MIN = ServoMin.get_val ()
SERVO_MIN = numberExtract (SERVO_MIN) print ("Servo MIN =", SERVO_MIN) R_MAX = Rmax.get_val () R_MAX = numberExtract (R_MAX) print ("R max =", R_MAX)
R_MIN = Rmin.get_val ()
R_MIN = numberExtract (R_MIN) print ("R Min =", R_MIN)
R_RES = Rres.get_val ()
R_RES = numberExtract (R_RES) print ("R Res =", R_RES)
THETA_MAX = ThetaMax.get_val ()
THETA_MAX = numberExtract (THETA_MAX) print ("Theta Max =", THETA_MAX) THETA_RES = ThetaRes.get_val () THETA_RES = numberExtract (THETA_RES) print ("Theta Res =", THETA_RES)
PHI_MAX = PhiMax.get_val ()
PHI_MAX = numberExtract (PHI_MAX) print ("Phi Max =", PHI_MAX) PHI_RES = PhiRes.get_val () PHI_RES = numberExtract (PHI_RES) print ("Phi Res =", PHI_RES)
THRESHOLD = Threshold.get_val ()
THRESHOLD = numberExtract (THRESHOLD) print ("Threshold =", THRESHOLD)
altfel: # dacă nu este nimic din aplicația blynk, încărcați valorile implicite SERVO_MIN = 175 # Lungimea minimă a impulsului din 4096 SERVO_MAX = 575 # Lungimea maximă a impulsului din 4096
# valori implicite walabot
R_MAX = 60 R_MIN = 20 R_RES = 5
THETA_MAX = 20
THETA_RES = 5
PHI_MAX = 20
PHI_RES = 5
PRAT = 1
def connect (self): try: self.wlbt. ConnectAny () self.isConnected = True self.wlbt. SetProfile (self.wlbt. PROF_SENSOR) # self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_MTI) self.wlbter (self.wlbt. FILTER_TYPE_NONE) # self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_DERIVATIVE) self.wlbt. SetArenaTheta (-THETA_MAX, THETA_MAX, THETA_RES) self.wlmax. SetArenaR (R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold (THRESHOLD) cu excepția self.wlbt. WalabotError ca err: if err.code! = 19: # 'WALABOT_INSTRUMENT_NOT_FOUND'
start def (auto):
self.wlbt. Start ()
calibrare def (auto):
self.wlbt. StartCalibration ()
def get_targets (self):
self.wlbt. Trigger () returnează self.wlbt. GetSensorTargets ()
oprire def (auto):
self.wlbt. Stop ()
def deconectare (auto):
self.wlbt. Disconnect ()
def main ():
flag = True check = "" LCDsetup () while flag: LCD1602.write (0, 0, 'Guitar') LCD1602.write (0, 1, 'Control efect') time.sleep (2) LCD1602.write (0, 0, „Apăsați Start pentru”) LCD1602.write (0, 1, „begin”) time.sleep (2) if (str (check) == on): flag = False else: check = start_button.get_val () # verificați dacă butonul de pornire blynk apăsați dacă (GPIO.input (18) == 0): #check footswitch flag = False
LCD1602.write (0, 0, „OK! Hai să o facem”)
LCD1602.write (0, 1, ") wlbt = Walabot () wlbt.blynkConfig () wlbt.connect () LCD1602.clear () dacă nu wlbt.isConectat: LCD1602.write (0, 0," Nu este conectat ") else: LCD1602.write (0, 0, „Conectat”) time.sleep (2) wlbt.start () wlbt.calibrate () LCD1602.write (0, 0, „Calibrating…..”) time.sleep (3)) LCD1602.write (0, 0, „Pornind Walabot”)
appcheck = start_button.app_status () flag = True # reset flag pentru prog principal
while flag: # folosit pentru a pune efectul în standby (efectiv)
if (appcheck == True): if (str (check)! = on): if (GPIO.input (18)! = 0): #check footswitch flag = False else: check = start_button.get_val () #check for butonul Start apăsați appcheck = start_button.app_status ()
altceva:
if (GPIO.input (18)! = 0): #check flag footswitch = False
xval = 0
yval = 0 zval = 0 medie = 2 delayTime = 0
ținte = wlbt.get_targets ()
dacă len (ținte)> 0:
pentru j în interval (medie):
ținte = wlbt.get_targets ()
dacă len (ținte)> 0: print (len (ținte)) ținte = ținte [0]
print (str (target.xPosCm))
xval + = int (ținte.xPosCm) yval + = int (ținte.yPosCm) zval + = int (ținte.zPosCm) time.sleep (delayTime) else: print („fără ținte”) xval = xval / medie
xval = numMap (xval, -60, 60, SERVO_MIN, SERVO_MAX)
xval = myRound (xval) if xval SERVO_MAX: xval = SERVO_MAX LCD1602.write (0, 0, 'x =' + str (xval) + '') pwm.set_pwm (0, 0, xval)
yval = yval / medie
yval = numMap (yval, -60, 60, SERVO_MIN, SERVO_MAX)
yval = myRound (yval) if yval SERVO_MAX: yval = SERVO_MAX LCD1602.write (0, 1, 'y =' + str (yval)) pwm.set_pwm (1, 0, yval)
zval = zval / medie
zval = numMap (zval, R_MIN, R_MAX, SERVO_MIN, SERVO_MAX)
zval = myRound (zval) if zval SERVO_MAX: zval = SERVO_MAX LCD1602.write (8, 1, 'z =' + str (zval)) pwm.set_pwm (2, 0, zval)
altceva:
print ("fără ținte") LCD1602.write (0, 0, "Închiderea") LCD1602.write (0, 1, 'The Walabot') time.sleep (3) wlbt.stop () wlbt.disconnect ()
dacă _name_ == '_main_':
în timp ce True: main ()
pentru guitareffect.sh
#! / bin / sh
cd / home / pi
sudo python GuitarEffectCLI.py
O copie a fișierului local RC pentru referință
#! / bin / sh -e # # rc.local # # Acest script este executat la sfârșitul fiecărui nivel de rulare multi-utilizator. # Asigurați-vă că scriptul va „ieși de la 0” la succes sau orice altă valoare # la eroare. # # Pentru a activa sau dezactiva acest script, trebuie doar să schimbați # de biți de execuție. # # În mod implicit, acest script nu face nimic.
# Imprimați adresa IP
_IP = $ (hostname -I) || adevărat dacă ["$ _IP"]; apoi printf "Adresa mea IP este% s / n" "$ _IP" fi
./blynk-library/linux/blynk --token = "simbolul tău merge aici" &
dormi 10 sudo /home/pi/guitareffect.sh & exit 0
Pasul 27: Depozite Github de utilizat
Utilizați acest lucru pentru ecranul LCD Sunfounder
github.com/daveyclk/SunFounder_SensorKit_f…
Utilizați acest lucru pentru servo-driver
github.com/daveyclk/Adafruit_Python_PCA968…
Utilizați acest lucru pentru Blynk Python HTTPS Wrapper
github.com/daveyclk/blynkapi
Pasul 28: Concluzie
Ei bine, aceasta a fost o curbă de învățare abruptă, dar a meritat atât de mult.
Luarea mea este
- A trebuit să învăț Python … rezultă că este as
- Interfață Python pe Raspberry Pi cu serviciul Blynk IoT. Acest lucru nu este acceptat oficial, deci există anumite limite ale funcțiilor sale. Totuși funcționează minunat!
- Se pare că Walabot este minunat pentru expresia muzicală. L-am folosit pe un Korg SDD3000, dar puteți utiliza orice efect doriți
Mergeți singur. Acest lucru nu se limitează la efectele de chitară, pot fi folosit cu orice instrument cu orice efect.
Locul doi în concursul Raspberry Pi 2017
Recomandat:
Chitară Chitară-amplificator: 6 pași
Chitară Chitară-amplificator: Când l-am văzut pe fratele meu pe cale să arunce o chitară veche pe care o are de câteva luni, nu m-am putut abține să nu-l opresc. Cu toții am auzit zicala: „gunoiul unui om este o altă comoară a omului.” Așa că am luat-o înainte de a atinge terenul. Acest
Conversie chitară acustică la chitară basă electrică: 5 pași
Conversie chitară acustică la chitară electrică: am primit prima mea chitară clasică ca cadou la împlinirea a 15 ani. Odată cu trecerea anilor, am avut niște chitare electrice cu buget redus și una semi-acustică. Dar nu mi-am cumpărat niciodată un bas. Așadar, acum câteva săptămâni am decis să-mi convertesc o
Investigarea efectului structurii rezonante cu fagure de hârtie: 6 pași
Investigarea efectului structurii rezonante cu fagure de hârtie: m-am gândit că celor cărora le place să se intereseze de subiecte de energie alternativă ar putea dori să încerce acest lucru. Se bazează pe descoperirea lui Viktor Grebennkov. Povestea poate fi găsită în multe locuri, dar aceasta de pe keelynet a fost cea pe care am găsit-o http://www.keelynet.com/gr
ASIGURAȚI Persistența efectului vizual al controlerului cu LED-uri: 4 pași
MAKE Controller Persistence of Vision Effect With LEDs: Bună ziua, acesta este primul meu instructable și sper să vă placă. Este un proiect simplu, folosind MAKE Controller (un controler foarte util de pe www.makezine.com), care face un efect de persistență a vederii folosind LED-uri. Când mutați rapid tabloul, puteți
Chitară PC chitară: 12 pași
Chitar PC Chitar: un chioșc care locuiește într-un magazin de muzică și se amestecă cu împrejurimile: este un computer umplut într-o chitară acustică, cu un monitor pe un suport de muzică și un mouse pad pentru tamburină! Important: nicio chitară care nu a supt a fost afectată în realizarea acestui