Satura rādītājs:

Walabot FX - ģitāras efektu vadība: 28 soļi (ar attēliem)
Walabot FX - ģitāras efektu vadība: 28 soļi (ar attēliem)

Video: Walabot FX - ģitāras efektu vadība: 28 soļi (ar attēliem)

Video: Walabot FX - ģitāras efektu vadība: 28 soļi (ar attēliem)
Video: ПИШЕМ ЛЮТЫЙ UK DRILL ДЛЯ POP SMOKE (+ КОНКУРС) 2024, Jūlijs
Anonim
Walabot FX - ģitāras efektu kontrole
Walabot FX - ģitāras efektu kontrole

Kontrolējiet savu iecienītāko ģitāras efektu, izmantojot tikai lieliskas ģitāras pozas!

Solis: lietas, kas jums būs nepieciešamas

Aparatūras komponenti

Walabot - Walabot

Raspberry Pi - Raspberry Pi 3 B modelis

Sunfounder LCD1602

SunFounder PCA9685 16 kanālu 12 bitu PWM servo draiveris Arduino un Raspberry Pi

Servo (vispārīgs) Nav saites

9V akumulatora klipsis

4xAA bateriju turētājs

AA baterijas

Jumper vadi (vispārīgi)

DPDT fiksējošais darbības pēdu slēdzis

Korg SDD3000-PDL

Programmatūras OS, lietotnes un tiešsaistes pakalpojumi

Autodesk Fusion360 -

Blynk -

Instrumenti utt

3D printeris

Lodāmurs

2. solis: Kopsavilkums

Getting Started
Getting Started

Kā būtu kontrolēt muzikālo izteiksmi, izmantojot tikai ģitāras stāvokli 3D telpā? Nu, ierakstīsim kaut ko un uzzināsim!

3. solis: pamatideja

Es gribēju, lai varētu kontrolēt 3 efektu parametrus reālā laikā, es gribēju to izdarīt, izmantojot ģitāras novietojumu. Tātad viena lieta bija skaidra, man vajadzēja dažas lietas.

  • Sensors, kas spēj redzēt 3D telpu
  • Servo, lai pagrieztu pogas
  • LCD displejs
  • I2C servo vadītājs
  • Aveņu Pi
  • Lai iemācītos Python

4. solis: Walabot

Vai vēlaties redzēt caur sienām? Vai jūtat objektus 3D telpā? Saprotat, ja elpojat no visas istabas? Nu, jums ir paveicies!

Walabot ir pilnīgi jauns veids, kā uztvert apkārtējo telpu, izmantojot mazjaudas radaru.

Tas bija šī projekta atslēga, es varēšu 3D telpā uzņemt objektu karteāzāna (X-Y-Z) kodinātus un kartēt tos uz servo pozīcijām, mainot ģitāras efekta izklausīšanos reālā laikā, nepieskaroties pedāļiem.

Uzvarēt.

Plašāku informāciju par Walabot var atrast šeit

5. darbība. Darba sākšana

Pirmkārt, jums būs nepieciešams dators, lai vadītu Walabot, šim projektam es izmantoju Raspberry Pi 3 (šeit tiek saukts par RPi), pateicoties iebūvētajam WiFi un vispārējai papildu pārsūtīšanai

Es nopirku 16 GB SD karti ar iepriekš instalētu NOOBS, lai viss būtu jauki un vienkārši, un izvēlējos instalēt Raspian kā savu izvēlēto Linux OS

(ja jums nav zināms, kā instalēt Raspian, lūdzu, veltiet nedaudz laika, lai to mazliet izlasītu)

Labi, tiklīdz Raspian darbojas jūsu RPi, ir jāveic dažas konfigurācijas darbības, lai sagatavotu lietas mūsu projektam

6. darbība: Raspberry Pi iestatīšana - 1

Vispirms pārliecinieties, vai izmantojat jaunāko kodola versiju, un pārbaudiet, vai nav atjauninājumu, atverot komandu apvalku un ierakstot

sudo apt-get update

sudo apt-get dist-upgrade

(Sudo tiek pievienots, lai nodrošinātu, ka jums ir administratīvās privilēģijas, piemēram, lietas darbosies)

Tas var aizņemt kādu laiku, tāpēc ejiet un dzeriet glāzi tējas.

7. darbība: Raspberry Pi iestatīšana - 2

Jums ir jāinstalē Walabot SDK RPi. No RPi tīmekļa pārlūkprogrammas dodieties uz vietni https://www.walabot.com/gettingstarted un lejupielādējiet Raspberry Pi Installer Package.

No komandu apvalka:

cd lejupielādes

sudo dpkg -I walabotSDK_RasbPi.deb

8. darbība: Raspberry Pi iestatīšana - 3

Mums jāsāk konfigurēt RPi, lai izmantotu i2c kopni. No komandu apvalka:

sudo apt-get instalēt python-smbus

sudo apt-get install i2c-tools

kad tas ir izdarīts, moduļu failam jāpievieno sekojošais

No komandu apvalka:

sudo nano /etc /modules

pievienojiet šīs 2 virknes atsevišķās rindās:

i2c-dev

i2c-bcm2708

9. darbība: Raspberry Pi iestatīšana - 4

Walabot patērē diezgan daudz strāvas, un mēs arī izmantosim GPIO, lai kontrolētu lietas, tāpēc mums tās ir jāiestata

No komandu apvalka:

sudo nano /boot/config.txt

faila beigās pievienojiet šādas rindas:

safe_mode_gpio = 4

max_usb_current = 1

RPi ir lielisks rīks veidotājiem, taču tas ir ierobežots pašreizējā laikā, ko tas var nosūtīt Walabot. Tāpēc mēs pievienojam 1A maksimālo strāvu, nevis standarta 500 mA

10. solis: Python

Kāpēc Python? labi, jo to ir ļoti viegli kodēt, ātri sākt darboties, un ir pieejami daudz labu python piemēru! Es nekad to iepriekš neesmu izmantojis un drīz sāku darboties. Tagad RPi ir konfigurēts tam, ko mēs vēlamies, nākamais solis ir konfigurēt Python, lai tam būtu piekļuve Walabot API, LCD Servo saskarnēm

11. solis: Walabot

No komandas apvalka

Sudo pip instalēt “/usr/share/walabot/python/WalabotAPI-1.0.21.zip”

12. solis: Servo saskarnei

No komandas apvalka

sudo apt-get install git build-essential python-dev

cd ~

git klons

cd Adafruit_Python_PCA9685

sudo python setup.py instalēt

Kāpēc mums jāizmanto servo draiveris? Nu, RPi pāris iemeslu dēļ.

1. Servo ievilkta strāva var būt ļoti liela, un šis skaitlis kļūst lielāks, jo vairāk servo jums ir (protams). Ja jūs vadāt servo tiešo no RPi, jūs riskējat izpūst tā barošanas avotu

2. PWM (impulsa platuma modulācijas) laiks, kas kontrolē servo stāvokli, ir ļoti svarīgs. Tā kā RPi neizmanto reāllaika OS (var būt pārtraukumi un tamlīdzīgi), laiks nav precīzs, un tas var likt servos nervozi raustīties. Īpašs draiveris ļauj precīzi kontrolēt, bet arī ļauj pievienot līdz pat 16 servos, tāpēc tas ir lieliski piemērots paplašināšanai.

13. darbība: LCD

Blynk
Blynk

atveriet savu RPi tīmekļa pārlūkprogrammu

www.sunfounder.com/learn/category/sensor-k…

lejupielādēt

github.com/daveyclk/SunFounder_SensorKit_…

No komandu apvalka:

sudo mkdir/usr/share/sunfounder

Izmantojot grafisko pārlūku, kopējiet python mapi no zip faila savā jaunajā sunfounder mapē

LCD tiek izmantots, lai informētu lietotāju par to, kas tieši notiek. Tiek parādīts konfigurācijas process līdz x, y un z vērtībām, kas tiek kartētas uz katra servo

14. solis: Blynk

Blynk
Blynk
Blynk
Blynk

Blynk ir izcils IoT pakalpojums, kas ļauj izveidot pielāgotu lietotni, lai kontrolētu savas lietas. Tas šķita ideāls risinājums, lai dotu man walabot tālvadības pulti, lai patiešām izsauktu iestatījumus …

Viena problēma. Blynk pašlaik netiek atbalstīts Python platformā, kļūda. Bet nebaidieties! man izdevās atrast jauku mazu darbu, kas ļauj attālināti vadīt un attālināti ievadīt parametrus! tas ir nedaudz hacky

pirmais solis ir lejupielādēt lietotni Blynk no iecienītākā lietotņu veikala

Otrkārt, reģistrējieties kontam

Kad tas ir izdarīts, atveriet lietotni un sāciet jaunu projektu, kā aparatūru izvēloties Raspberry Pi 3.

Lietotne piešķirs jums piekļuves pilnvaru (jums tas būs nepieciešams, lai ievadītu kodu)

Kad esat to izdarījis. jums būs jāiestata lietotne, kā parādīts attēlos. Tādā veidā tas saskarnēs ar walabot.

15. darbība: lietotnes Blynk konfigurēšana

Lietotnes Blynk konfigurēšana
Lietotnes Blynk konfigurēšana
Lietotnes Blynk konfigurēšana
Lietotnes Blynk konfigurēšana
Lietotnes Blynk konfigurēšana
Lietotnes Blynk konfigurēšana

16. darbība. Varat izmantot šo QR kodu, izmantojot lietotni Blynk, lai klonētu manu projektu, lai ietaupītu laiku

Jūs varat izmantot šo QR kodu kopā ar lietotni Blynk, lai klonētu manu projektu, lai ietaupītu laiku
Jūs varat izmantot šo QR kodu kopā ar lietotni Blynk, lai klonētu manu projektu, lai ietaupītu laiku

Labi Tagad, kad visa lietotne ir iestatīta, mēs varam konfigurēt Python un RPi, lai ar to runātu internetā. Maģija

17. darbība. Blynk skriešana ar Raspberry Pi un Blynk HTTPS izmantošana Python

Pirmkārt, jums ir jāinstalē Blynk HTTPS iesaiņojums Python

No komandu apvalka:

sudo git klons

sudo pip instalēt blynkapi

Otrkārt, RPi jāinstalē pakalpojums Blynk

No komandu apvalka:

git klons

cd blynk-library/linux

padarīt visu tīru

lai palaistu blynk pakalpojumu

sudo./blynk --token = YourAuthToken

Lai nodrošinātu, ka pakalpojums Blynk darbojas palaišanas laikā, jums ir jāmaina /etc/rc.local

darot

sudo nano /etc/rc.local

beigās pievienojiet šo

./blynk-library/linux/blynk --token = mans marķieris &

(esmu iekļāvis sava /etc/rc.local faila koda sadaļā atsauci)

Lai pārbaudītu, vai tas darbojas, vienkārši ierakstiet

sudo /etc/rc.local start

Pakalpojumam Blynk tagad vajadzētu darboties

18. darbība: skripta automātiska palaišana

Tagad, kad tas viss ir iestatīts un konfigurēts, un mums ir gatavs pitona kods. mēs varam iestatīt lietas automātiskai darbībai, lai mēs varētu atmest tastatūru un monitorus

Ir dažas lietas, kas jādara

Izveidojiet jaunu skripta failu, lai izietu Python programma

sudo nano ģitāras efekts.sh

pievienojiet šīs rindas

#!/bin/sh

python /home/pi/GuitarEffectCLI.py

noteikti saglabājiet to

Tālāk mums ir jāpiešķir skriptam atļauja darboties, ierakstot

Sudo chmod +x /home/pi/guitareffect.sh

Visbeidzot, mums ir jāpievieno šis skripts /etc/rc.local failam, ar kuru mēs iepriekš strādājām.

Sudo nano /etc/rc.local

Pievienot

/home/pi/guitareffect.sh &

noteikti iekļaujiet "&", kas ļauj Python skriptam darboties fonā

Taisnība! Tā ir sakārtota visa konfigurācija un programmatūra, pēc tam ir pienācis laiks savienot aparatūru

19. solis: aparatūra

Image
Image
Walabot guitar effects control proto1
Walabot guitar effects control proto1

Pirmais maizes dēļa prototips

20. solis: korpusa dizains

Korpusa dizains
Korpusa dizains
Korpusa dizains
Korpusa dizains

Korpuss tika izstrādāts un atveidots satriecošajā Fusion360

21. solis: Guts Shots

Zarnu šāvieni
Zarnu šāvieni
Zarnu šāvieni
Zarnu šāvieni
Zarnu šāvieni
Zarnu šāvieni

22. solis: gala montāžas šāvieni

Noslēguma montāžas šāvieni
Noslēguma montāžas šāvieni
Noslēguma montāžas šāvieni
Noslēguma montāžas šāvieni
Noslēguma montāžas šāvieni
Noslēguma montāžas šāvieni

23. darbība. Lai piestiprinātu Walabot pie statīva

Lai piestiprinātu Walabot pie statīva
Lai piestiprinātu Walabot pie statīva

Izmantojiet pašlīmējošo metāla disku, kas nāk kopā ar walabot, lai to nofiksētu vietā

24. darbība. Aparatūras STL faili 3D drukāšanai

25. solis: Shēmas, kas paredzētas lietas pieslēgšanai

26. darbība: kods

Izmantojiet savam projektam pievienoto Python skriptu

no _future_ importēt print_function no sys importēšanas platformas no os importēšanas sistēmas no blynkapi importa Blynk importēšana WalabotAPI importa laika importa RPi. GPIO kā GPIO

#iestatiet GPIO, izmantojot dēļu numerāciju

GPIO.setmode (GPIO. BOARD) GPIO.setup (18, GPIO. IN, pull_up_down = GPIO. PUD_UP)

#blynk auth token

auth_token = "jūsu_autoh_tokens_šeit"

# Importējiet PCA9685 moduli servo vadībai.

importēt Adafruit_PCA9685

#importēt LCD moduli no atrašanās vietas

no imp import load_source LCD1602 = load_source ('LCD1602', '/usr/share/sunfounder/Python/LCD1602.py')

# Inicializējiet PCA9685, izmantojot noklusējuma adresi (0x40).

pwm = Adafruit_PCA9685. PCA9685 ()

# blynk objekti

noklusējuma = 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")

Slieksnis = Blynk (auth_token, pin = "V8")

ServoMin = Blynk (auth_token, pin = "V10")

ServoMax = Blynk (auth_token, pin = "V11")

def LCDiestatīšana ():

LCD1602.init (0x27, 1) # init (verga adrese, fona gaisma)

def numMap (x, in_min, in_max, out_min, out_max): "" "izmanto walabot rādījumu kartēšanai servo pozīcijā" "" return int ((x- in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

# izmantojiet to, lai noapaļotu neapstrādātus datus līdz piešķirtajai vērtībai

def myRound (x, bāze = 2): atgriešanās int (bāze * kārta (pludiņš (x)/bāze))

#eizņem skaitli no atgrieztās blynk virknes

def numursEkstrakts (val): val = str (val) atgriežas int (filtrs (str. cipars, val))

# Iestatiet frekvenci uz 60 Hz, tas ir piemērots servos.

pwm.set_pwm_freq (60)

# Konfigurējiet noklusējuma minimālo un maksimālo servopulsa garumu

SERVO_MIN = 175 # Minimālais impulsa garums no 4096 SERVO_MAX = 575 # Maksimālais impulsa garums no 4096

# walabot noklusējuma vērtības

R_MAX = 60 R_MIN = 20 R_RES = 5

THETA_MAX = 20

THETA_RES = 5

PHI_MAX = 20

PHI_RES = 5

TRESHOLD = 1

# mainīgie blynk pārslēgšanai

ieslēgts = "[u'1 ']"

Walabot klase:

def _init _ (sevi):

self.wlbt = WalabotAPI self.wlbt. Init () self.wlbt. SetSettingsFolder () self.isConnected = False self.isTargets = False

def blynkConfig (self):

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 = numurs

R_MIN = Rmin.get_val ()

R_MIN = numursEkstrakts (R_MIN) drukāt ("R Min =", R_MIN)

R_RES = Rres.get_val ()

R_RES = numberExtract (R_RES) drukāt ("R Res =", R_RES)

THETA_MAX = ThetaMax.get_val ()

THETA_MAX = numurs

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)

cits: # ja nekas no lietotnes blynk, ielādes noklusējuma vērtības SERVO_MIN = 175 # Minimālais impulsa garums no 4096 SERVO_MAX = 575 # Maksimālais impulsa garums no 4096

# walabot noklusējuma vērtības

R_MAX = 60 R_MIN = 20 R_RES = 5

THETA_MAX = 20

THETA_RES = 5

PHI_MAX = 20

PHI_RES = 5

TRESHOLD = 1

def connect (self): try: self.wlbt. ConnectAny () self.isConnected = Patiesa self.wlbt. SetProfile (self.wlbt. PROF_SENSOR) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_MTI) self.wlbt. FILTER_TYPE_MTI. (self.wlbt. FILTER_TYPE_NONE) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_DERIVATIVE) self.wlbt. SetArenaTheta (-THETA_MAX, THETA_MAX, THETA_RES) self.whb.html SetArenaR (R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold (THRESHOLD), izņemot self.wlbt. WalabotError as err: if err.code! = 19: # 'WALABOT_INSTRUMENT_NOT_FOUND' paaugstināt kļūdu

def start (sevi):

self.wlbt. Start ()

def kalibrēt (pats):

self.wlbt. StartCalibration ()

def get_targets (self):

self.wlbt. Trigger () atgriežas self.wlbt. GetSensorTargets ()

def stop (sevi):

self.wlbt. Stop ()

def atvienoties (sevi):

self.wlbt. Disconnect ()

def main ():

karogs = True check = "" LCDsetup (), kamēr karogs: LCD1602.write (0, 0, 'Guitar') LCD1602.write (0, 1, 'Effect Control') time.sleep (2) LCD1602.write (0, 0, 'Nospiediet Sākt') LCD1602. Rakstīt (0, 1, 'sākt') laiku. Aizmigt (2), ja (str (pārbaude) == ieslēgts): karogs = False else: check = start_button.get_val () # pārbaudiet, vai nav sākuma pogas, nospiediet, ja (GPIO.input (18) == 0): #check footswitch flag = False

LCD1602.write (0, 0, "Labi! Darīsim")

LCD1602.write (0, 1, ") wlbt = Walabot () wlbt.blynkConfig () wlbt.connect () LCD1602.clear () ja nav wlbt.isSavienots: LCD1602.write (0, 0," Nav savienots ") cits: LCD1602.write (0, 0, 'Connected') time.sleep (2) wlbt.start () wlbt.calibrate () LCD1602.write (0, 0, 'Calibrating…..') time.sleep (3) LCD1602.write (0, 0, 'Walabot palaišana')

appcheck = start_button.app_status () karogs = True # reset karodziņš galvenajam prog

kamēr karodziņš: # izmanto, lai efekts tiktu nodots gaidstāves režīmā (efektīvi)

if (appcheck == True): ja (str (pārbaudīt)! = ieslēgts): ja (GPIO.input (18)! = 0): #check footswitch flag = False else: check = start_button.get_val () #check for sākuma poga nospiediet appcheck = start_button.app_status ()

cits:

ja (GPIO.input (18)! = 0): #check footswitch flag = False

xval = 0

yval = 0 zval = 0 vidēji = 2 delayTime = 0

target = wlbt.get_targets ()

ja len (mērķi)> 0:

j diapazonā (vidēji):

target = wlbt.get_targets ()

ja len (mērķi)> 0: drukāt (len (mērķi)) mērķi = mērķi [0]

drukāt (str (target.xPosCm))

xval += int (target.xPosCm) yval += int (target.yPosCm) zval += int (target.zPosCm) time.sleep (delayTime) else: print ("nav mērķu") xval = xval/vidējais

xval = numMap (xval, -60, 60, SERVO_MIN, SERVO_MAX)

xval = myRound (xval), ja xval SERVO_MAX: xval = SERVO_MAX LCD1602.write (0, 0, 'x =' + str (xval) + '') pwm.set_pwm (0, 0, xval)

yval = yval/vidējais

yval = numMap (yval, -60, 60, SERVO_MIN, SERVO_MAX)

yval = myRound (yval), ja yval SERVO_MAX: yval = SERVO_MAX LCD1602.write (0, 1, 'y =' + str (yval)) pwm.set_pwm (1, 0, yval)

zval = zval/vidējais

zval = numMap (zval, R_MIN, R_MAX, SERVO_MIN, SERVO_MAX)

zval = myRound (zval), ja zval SERVO_MAX: zval = SERVO_MAX LCD1602.write (8, 1, 'z =' + str (zval)) pwm.set_pwm (2, 0, zval)

cits:

drukāt ("bez mērķiem") LCD1602.write (0, 0, "Shutting Down") LCD1602.write (0, 1, 'The Walabot') time.sleep (3) wlbt.stop () wlbt.disconnect ()

ja _name_ == '_main_':

kamēr taisnība: galvenais ()

par ģitāras efektu.sh

#!/bin/sh

cd /mājas /pi

sudo python GuitarEffectCLI.py

RC vietējā faila kopija atsaucei

#!/bin/sh -e # # rc.local # # Šis skripts tiek izpildīts katra daudzlietotāja darbības līmeņa beigās. # Pārliecinieties, ka skripts "iziet no 0" pēc panākumiem vai jebkuras citas # kļūdas vērtības. # # Lai iespējotu vai atspējotu šo skriptu, vienkārši mainiet izpildes # bitus. # # Pēc noklusējuma šis skripts neko nedara.

# Izdrukājiet IP adresi

_IP = $ (resursdatora nosaukums -I) || taisnība, ja ["$ _IP"]; tad printf "Mana IP adrese ir %s / n" "$ _IP" fi

./blynk-library/linux/blynk --token = "jūs žetons iet šeit" &

gulēt 10 sudo /home/pi/guitareffect.sh un izejiet no 0

27. darbība. Izmantojamās Github krātuves

Izmantojiet to Sunfounder LCD

github.com/daveyclk/SunFounder_SensorKit_f…

Izmantojiet to servo vadītājam

github.com/daveyclk/Adafruit_Python_PCA968…

Izmantojiet to Blynk Python HTTPS ietinējam

github.com/daveyclk/blynkapi

28. darbība. Secinājums

Image
Image
Walabot FX- Guitar Effect Control. Full Demo
Walabot FX- Guitar Effect Control. Full Demo
Secinājums
Secinājums
Secinājums
Secinājums

Nu tas ir bijis stāvs mācīšanās līkne, bet ir bijis tā vērts.

Manas līdzatbildes ir

  • Man bija jāmācās Python..izrādās, ka tas ir ace
  • Saslēdza Python uz Raspberry Pi ar pakalpojumu Blynk IoT. Tas nav oficiāli atbalstīts, tāpēc tā funkcijām ir daži ierobežojumi. Tomēr joprojām darbojas lieliski!
  • Izrādās, ka Walabot ir lieliski piemērots muzikālai izpausmei. Es to izmantoju Korg SDD3000, bet jūs varat izmantot jebkuru efektu, kas jums patīk

Pamēģini pats. Tas neaprobežojas tikai ar ģitāras efektiem, mani var izmantot ar jebkuru instrumentu ar jebkādu efektu.

Raspberry Pi konkurss 2017
Raspberry Pi konkurss 2017
Raspberry Pi konkurss 2017
Raspberry Pi konkurss 2017

Otrā vieta Raspberry Pi konkursā 2017

Ieteicams: