תוכן עניינים:
- שלב 1: דברים שתצטרך
- שלב 2: תקציר
- שלב 3: הרעיון הבסיסי
- שלב 4: Walabot
- שלב 5: תחילת העבודה
- שלב 6: הגדרת ה- Raspberry Pi - 1
- שלב 7: הגדרת ה- Raspberry Pi - 2
- שלב 8: הגדרת ה- Raspberry Pi - 3
- שלב 9: הגדרת ה- Raspberry Pi - 4
- שלב 10: פייתון
- שלב 11: עבור ה- Walabot
- שלב 12: עבור ממשק סרוו
- שלב 13: עבור ה- LCD
- שלב 14: בלינק
- שלב 15: הגדרת האפליקציה Blynk
- שלב 16: תוכל להשתמש בקוד QR זה באמצעות אפליקציית Blynk כדי לשבט את הפרויקט שלי כדי לחסוך לך זמן
- שלב 17: הפעלת Blynk עם ה- Raspberry Pi ושימוש ב- Blynk HTTPS עבור Python
- שלב 18: הפעלה אוטומטית של הסקריפט
- שלב 19: החומרה
- שלב 20: עיצוב מארז
- שלב 21: יריות מעיים
- שלב 22: יריות הרכבה אחרונות
- שלב 23: לתקן את ה- Walabot לדוכן
- שלב 24: קבצי STL חומרה להדפסה תלת -ממדית
- שלב 25: תרשימים לחיווט העניין
- שלב 26: קוד
- שלב 27: מאגרי Github לשימוש
- שלב 28: סיכום
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
שלוט באפקט הגיטרה המועדף עליך ללא תנוחות גיטרה מדהימות!
שלב 1: דברים שתצטרך
רכיבי חומרה
Walabot - Walabot
Raspberry Pi - Raspberry Pi 3 דגם B
Sunfounder LCD1602
SunFounder PCA9685 16 ערוץ 12 סיביות PWM מנהל התקן סרוו עבור Arduino ו- Raspberry Pi
סרוו (כללי) אין קישור
קליפ לסוללה 9V
מחזיק סוללות 4xAA
סוללות AA
חוטי מגשר (גנריים)
מתג רגל פעולת DPDT
Korg SDD3000-PDL
תוכנות הפעלה, יישומים ושירותים מקוונים
Autodesk Fusion360 -
בלינק -
כלים וכו '
מדפסת תלת מימד
מלחם
שלב 2: תקציר
איך זה יהיה לשלוט על הביטוי המוסיקלי ללא שימוש במיקום הגיטרה שלך במרחב התלת -ממדי? ובכן, בואו להקדים משהו ולגלות!
שלב 3: הרעיון הבסיסי
רציתי להיות מסוגל לשלוט על פרמטר 3 אפקטים בזמן אמת, רציתי לעשות זאת באמצעות האופן בו מיקמתי את הגיטרה שלי. אז דבר אחד היה ברור, אני אצטרך כמה דברים.
- חיישן המסוגל לראות מרחב תלת מימד
- סרוווס לסיבוב הכפתורים
- צג LCD
- נהג סרוו I2C
- פי פטל
- כדי ללמוד פייתון
שלב 4: Walabot
רוצים לראות מבעד לקירות? אובייקטים חושים בחלל תלת מימד? חוש אם אתה נושם מעבר לחדר? ובכן, יש לך מזל!
Walabot היא דרך חדשה לגמרי לחוש את החלל סביבך באמצעות מכ ם בעל הספק נמוך.
זה עומד להיות המפתח לפרויקט הזה, אני אוכל לקחת את הקואדינאטים של האקסקטוסים (X-Y-Z) של אובייקטים בחלל תלת-ממדי, ולמפות אותם למיקומי סרוו שמשנים את אופן ההשפעה של גיטרה בזמן אמת, מבלי לגעת בדוושה.
לנצח.
מידע נוסף אודות Walabot ניתן למצוא כאן
שלב 5: תחילת העבודה
ראשית כל, תזדקק למחשב כדי להניע את ה- Walabot, עבור הפרויקט הזה אני משתמש ב- Raspberry Pi 3 (כאן מוזכר ב- RPi) עקב ה- WiFi המובנה והתוספת הכללית הנוספת.
קניתי כרטיס SD בנפח 16 ג'יגה -בתים עם NOOBS מותקן מראש כדי לשמור על דברים פשוטים ובחרתי להתקין את Raspian כמערכת ההפעלה Linux שלי לבחירה
(אם אינך מכיר את אופן ההתקנה של Raspian, אנא הקדש רגע לקריאה קטנה בנושא)
בסדר, לאחר שהפעלת את Raspian ב- RPi שלך, יש לבצע מספר שלבי תצורה כדי להכין את הדברים לפרויקט שלנו
שלב 6: הגדרת ה- Raspberry Pi - 1
ראשית ודא שאתה מפעיל את גרסת הליבה העדכנית ביותר ובדוק אם קיימים עדכונים על ידי פתיחת מעטפת פקודה והקלדה
עדכון sudo apt-get
sudo apt-get dist-upgrade
(סודו מתווסף כדי לוודא שיש לך זכויות ניהוליות למשל. דברים יעבדו)
זה עשוי לקחת זמן עד להשלמתו, אז לכו לשתות כוס תה נחמדה.
שלב 7: הגדרת ה- Raspberry Pi - 2
עליך להתקין את SDK Walabot עבור RPi. מדפדפן האינטרנט RPi שלך עבור אל https://www.walabot.com/gettingstarted והורד את חבילת ההתקנה של Raspberry Pi.
ממעטפת פקודה:
הורדות תקליטורים
sudo dpkg -I walabotSDK_RasbPi.deb
שלב 8: הגדרת ה- Raspberry Pi - 3
עלינו להתחיל להגדיר את ה- RPi לשימוש באוטובוס i2c. ממעטפת פקודה:
sudo apt-get להתקין python-smbus
sudo apt-get להתקין i2c-tools
לאחר שתעשה זאת, עליך להוסיף את הקובץ הבא לקובץ המודולים
ממעטפת פקודה:
sudo nano /etc /modules
הוסף את 2 המחרוזות בשורות נפרדות:
i2c-dev
i2c-bcm2708
שלב 9: הגדרת ה- Raspberry Pi - 4
ה- Walabot שואב מעט זרם, ואנו נשתמש גם ב- GPIO לשליטה בדברים ולכן עלינו להגדיר אותם.
ממעטפת פקודה:
sudo nano /boot/config.txt
הוסף את השורות הבאות בסוף הקובץ:
safe_mode_gpio = 4
max_usb_current = 1
ה- RPi הוא כלי מצוין ליצרנים, אך הוא מוגבל בזרם שהוא יכול לשלוח ל- Walabot. מכאן שאנו מוסיפים זרם מקסימלי של 1 אמפר במקום 500mA הסטנדרטי יותר
שלב 10: פייתון
למה דווקא פייתון? ובכן, מכיוון שזה מאוד קל לקודד, מהר להפעלה ויש המון דוגמאות טובות לפייתון! מעולם לא השתמשתי בו עד מהרה והתחלתי לפעול תוך זמן קצר. עכשיו ה- RPi מוגדר למה שאנחנו רוצים, השלב הבא הוא הגדרת Python לגישה לממשקי ה- API של Walabot, ממשק סרוו LCD.
שלב 11: עבור ה- Walabot
ממעטפת פקודה
Sudo pip להתקין "/usr/share/walabot/python/WalabotAPI-1.0.21.zip"
שלב 12: עבור ממשק סרוו
ממעטפת פקודה
sudo apt-get install git build-essential python-dev
תקליטור ~
שיבוט git
cd Adafruit_Python_PCA9685
sudo python setup.py התקנה
מדוע עלינו להשתמש בנהג סרוו? ובכן, בגלל RPi כמה סיבות.
1. הזרם שצויר על ידי סרוו יכול להיות גבוה מאוד, ומספר זה הולך וגדל ככל שיש לך יותר סרוו (כמובן). אם אתה מניע את הסרווקי ישירות מ- RPi אתה מסתכן בפגיעה באספקת החשמל שלו
2. חשובים מאוד לתזמונים של PWM (אפנון רוחב הדופק) השולטים על מיקום הסרוווס. מכיוון שה- RPi אינו משתמש במערכת הפעלה בזמן אמת (ייתכנו הפרעות וכאלה) התזמונים אינם מדויקים ויכולים לגרום לשרווטים להתעוות בעצבנות. נהג ייעודי מאפשר שליטה מדויקת, אך גם מאפשר להוסיף עד 16 סרוו, כך שזה נהדר להרחבה.
שלב 13: עבור ה- LCD
פתח את דפדפן האינטרנט RPi שלך
www.sunfounder.com/learn/category/sensor-k…
הורד
github.com/daveyclk/SunFounder_SensorKit_…
ממעטפת פקודה:
sudo mkdir/usr/share/sunfounder
בעזרת סייר הגרפי, העתק את תיקיית הפייתון מקובץ ה- zip לתוך תיקיית Sunfounder החדשה שלך
ה- LCD משמש לבירור המשתמש מה בדיוק קורה. מציג את תהליך התצורה עד לערכי x, y ו- z הממופים על כל סרוו
שלב 14: בלינק
Blynk הוא שירות IoT מבריק המאפשר לך ליצור אפליקציה מותאמת אישית לשליטה בדברים שלך. זה נראה כמו הפתרון המושלם לתת לי שלט רחוק של walabot לחייג באמת בהגדרות …
בעיה אחת. Blynk אינו נתמך כרגע בפלטפורמת Python, באגר. אבל אל תפחד! הצלחתי למצוא עבודה קטנה ונחמדה המאפשרת שלט רחוק וקלט פרמטרים מרחוק! זה קצת פרוץ
השלב הראשון הוא הורדת אפליקציית Blynk מחנות האפליקציות האהובה עליך
שנית, הירשם לחשבון
לאחר שתעשה זאת, פתח את האפליקציה והתחל בפרויקט חדש, ובחר ב- Raspberry Pi 3 כחומרה.
האפליקציה תקצה לך אסימון גישה (תצטרך את זה כדי להכניס את הקוד שלך)
ברגע שעשית זאת. יהיה עליך להגדיר את האפליקציה כפי שמוצג בתמונות. כך זה יתממשק עם ה- walabot.
שלב 15: הגדרת האפליקציה Blynk
שלב 16: תוכל להשתמש בקוד QR זה באמצעות אפליקציית Blynk כדי לשבט את הפרויקט שלי כדי לחסוך לך זמן
אישור עכשיו כשהיישום מוגדר, אנחנו יכולים להגדיר את פייתון ואת ה- RPi לדבר איתו דרך האינטרנט. קֶסֶם
שלב 17: הפעלת Blynk עם ה- Raspberry Pi ושימוש ב- Blynk HTTPS עבור Python
ראשית, עליך להתקין את עטיפת Blynk HTTPS עבור Python
ממעטפת פקודה:
sudo git שיבוט
sudo pip להתקין blynkapi
שנית, עליך להתקין את שירות Blynk ב- RPi
ממעטפת פקודה:
שיבוט git
cd blynk-library/לינוקס
לעשות הכל נקי
להפעלת שירות בלינק
sudo./blynk --token = YourAuthToken
כדי להבטיח ששירות Blynk פועל בעת ההפעלה, עליך לשנות את /etc/rc.local
על ידי
sudo nano /etc/rc.local
הוסיפו זאת בסוף
./blynk-library/linux/blynk --token = האסימון שלי &
(כללתי תיקת קובץ /etc/rc.local שלי בסעיף הקוד לעיון)
כדי לבדוק שזה עובד פשוט הקלד
sudo /etc/rc. התחלה מקומית
שירות Blynk אמור לפעול כעת
שלב 18: הפעלה אוטומטית של הסקריפט
עכשיו כשכל זה מוגדר ומוגדר, ויש לנו את קוד הפיתון מוכן. אנו יכולים להגדיר את הדברים להפעלה אוטומטית כדי שנוכל לזרוק את המקלדת והמסכים
יש כמה דברים לעשות
צור קובץ סקריפט חדש להפעלת תוכנית Python
סודו ננו גיטרהeffect.sh
להוסיף שורות אלה
#!/bin/sh
python /home/pi/GuitarEffectCLI.py
הקפד לשמור אותו
בשלב הבא עלינו לתת הרשאה לתסריט להפעלה על ידי הקלדה
Sudo chmod +x /home/pi/guitareffect.sh
ולבסוף, עלינו להוסיף את הסקריפט הזה לקובץ /etc/rc.local שאליו התעסקנו קודם לכן.
סודו ננו /etc/rc.local
לְהוֹסִיף
/home/pi/guitareffect.sh &
הקפד לכלול את "&" זה מאפשר לסקריפט Python לפעול ברקע
ימין! זה כל התצורה והתוכנה ממוינות, ואז הגיע הזמן לחבר את החומרה
שלב 19: החומרה
אב טיפוס ראשון ללוח הלחם
שלב 20: עיצוב מארז
המתחם תוכנן והוצג ב- Fusion360 המדהים
שלב 21: יריות מעיים
שלב 22: יריות הרכבה אחרונות
שלב 23: לתקן את ה- Walabot לדוכן
השתמש בדיסק המתכת הדבק לעצמו המצורף ל- walabot כדי לתקן אותו במקומו
שלב 24: קבצי STL חומרה להדפסה תלת -ממדית
שלב 25: תרשימים לחיווט העניין
שלב 26: קוד
השתמש בסקריפט Python המצורף לפרויקט שלך
מאת _ עתיד_ יבוא print_function מפלטפורמת הייבוא של sys ממערכת הייבוא של מערכת מאת יבוא blynkapi Blynk יבוא WalabotAPI זמן יבוא RPi. GPIO כ- GPIO
#הגדר GPIO באמצעות מספור לוח
GPIO.setmode (GPIO. BOARD) GPIO.setup (18, GPIO. IN, pull_up_down = GPIO. PUD_UP)
אסימון #authentication #blynk
auth_token = "your_auth_token_here"
# ייבא את המודול PCA9685 לבקרת סרוו.
יבוא Adafruit_PCA9685
#ייבוא מודול LCD מיקום
מ imp import load_source LCD1602 = load_source ('LCD1602', '/usr/share/sunfounder/Python/LCD1602.py')
# אתחל את ה- PCA9685 באמצעות כתובת ברירת המחדל (0x40).
pwm = Adafruit_PCA9685. PCA9685 ()
# אובייקטים בלינק
ברירות מחדל = 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 = בלינק (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")
סף = Blynk (auth_token, pin = "V8")
ServoMin = Blynk (auth_token, pin = "V10")
ServoMax = Blynk (auth_token, pin = "V11")
הגדרת LCD ():
LCD1602.init (0x27, 1) # init (כתובת עבדים, אור רקע)
def numMap (x, in_min, in_max, out_min, out_max): "" "המשמש למיפוי קריאות walabot למיקום סרוו" "" החזר int ((x- in_min) * (out_max - out_min) / (in_max - in_min) + דקה מחוץ)
# השתמש בזה לצורך עיגול הנתונים הגולמיים לערך שהוקצה
def myRound (x, base = 2): return int (base * round (float (x)/base))
#מחלץ את המספר מהמחרוזת בלינק המוחזרת
def numberExtract (val): val = str (val) return int (מסנן (str.isdigit, val))
# הגדר את התדר ל 60 הרץ, טוב לסרווואים.
pwm.set_pwm_freq (60)
# הגדר את ברירות המחדל של אורך סרוו הדופק של סרוו הדופק
SERVO_MIN = 175 # אורך דופק מינימלי מתוך 4096 SERVO_MAX = 575 # אורך דופק מרבי מתוך 4096
# ערכי ברירת מחדל של walabot
R_MAX = 60 R_MIN = 20 R_RES = 5
THETA_MAX = 20
THETA_RES = 5
PHI_MAX = 20
PHI_RES = 5
סף = 1
# משתנים להחלפת blynk
on = "[u'1 ']"
כיתת וולבות:
def _init _ (עצמי):
self.wlbt = WalabotAPI self.wlbt. Init () self.wlbt. SetSettingsFolder () self.isConnected = False self.isTargets = False
def blynkConfig (עצמי):
load_defaults = defaults.get_val () אם str (load_defaults) == מופעל: SERVO_MAX = ServoMax.get_val () SERVO_MAX = numberExtract (SERVO_MAX) הדפסה ("Servo Max =", SERVO_MAX)
SERVO_MIN = ServoMin.get_val ()
SERVO_MIN = מספר תמצית (SERVO_MIN) הדפסה ("Servo MIN =", SERVO_MIN) R_MAX = Rmax.get_val () R_MAX = מספר תמצית (R_MAX) הדפסה ("R max =", R_MAX)
R_MIN = Rmin.get_val ()
הדפסה R_MIN = numberExtract (R_MIN) ("R Min =", R_MIN)
R_RES = Rres.get_val ()
הדפסת R_RES = numberExtract (R_RES) ("R Res =", R_RES)
THETA_MAX = ThetaMax.get_val ()
THETA_MAX = numberExtract (THETA_MAX) הדפסה ("Theta Max =", THETA_MAX) THETA_RES = ThetaRes.get_val () THETA_RES = numberExtract (THETA_RES) הדפסה ("Theta Res =", THETA_RES)
PHI_MAX = PhiMax.get_val ()
הדפסה PHI_MAX = numberExtract (PHI_MAX) ("Phi Max =", PHI_MAX) PHI_RES = PhiRes.get_val () PHI_RES = numberExtract (PHI_RES) הדפסה ("Phi Res =", PHI_RES)
THRESHOLD = Threshold.get_val ()
THRESHOLD = numberExtract (THRESHOLD) הדפסה ("Threshold =", THRESHOLD)
אחר: # אם כלום מאפליקציית blynk, ברירות מחדל לטעון SERVO_MIN = 175 # אורך דופק מינימלי מתוך 4096 SERVO_MAX = 575 # אורך דופק מרבי מתוך 4096
# ערכי ברירת מחדל של walabot
R_MAX = 60 R_MIN = 20 R_RES = 5
THETA_MAX = 20
THETA_RES = 5
PHI_MAX = 20
PHI_RES = 5
סף = 1
def connect (עצמי): נסה: self.wlbt. ConnectAny () self.isConnected = self.wlbt. SetProfile (self.wlbt. PROF_SENSOR) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_MTI) self.wlbt. SetDyn (self.wlbt. FILTER_TYPE_NONE) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_DERIVATIVE) self.wlbt. SetArenaTheta (-THETA_MAX, THETA_MAX, THETA_RES) self.wlbt. SA) SetArenaR (R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold (THRESHOLD) למעט self.wlbt. WalabotError כטעיה: אם err.code! = 19: # 'WALABOT_INSTRUMENT_NOT_FOUND' העלאת טעות
def start (עצמי):
self.wlbt. Start ()
def לכייל (עצמי):
self.wlbt. StartCalibration ()
def get_targets (עצמי):
self.wlbt. Trigger () החזר self.wlbt. GetSensorTargets ()
def stop (עצמי):
self.wlbt. Stop ()
ניתוק def (עצמי):
self.wlbt. נתק ()
def main ():
flag = בדיקה אמיתית = "" LCDsetup () בעת הדגל: LCD1602.write (0, 0, 'גיטרה') LCD1602.write (0, 1, 'בקרת אפקטים') time.sleep (2) LCD1602.write (0, 0, 'לחץ על התחל') LCD1602.write (0, 1, 'begin') time.sleep (2) if (str (check) == on): flag = False else: check = start_button.get_val () # בדוק אם לחצן התחל blynk לחץ אם (GPIO.input (18) == 0): #check footswitch flag = False
LCD1602.write (0, 0, "בסדר! בוא נעשה את זה")
LCD1602.write (0, 1, '') wlbt = Walabot () wlbt.blynkConfig () wlbt.connect () LCD1602.clear () אם לא wlbt.is מחובר: LCD1602.write (0, 0, 'לא מחובר') אחר: LCD1602.write (0, 0, 'מחובר') time.sleep (2) wlbt.start () wlbt.calibrate () LCD1602.write (0, 0, 'כיול …..') time.sleep (3) LCD1602.write (0, 0, 'החל מ- Walabot')
appcheck = start_button.app_status () flag = דגל אמת איפוס # אמיתי לפרוג הראשי
בעוד הדגל: # השתמשו בכדי להכניס את האפקט למצב המתנה (ביעילות)
if (appcheck == True): if (str (check)! = on): if (GPIO.input (18)! = 0): #check footswitch flag = False else: check = start_button.get_val () #check for לחצן התחל לחץ על appcheck = start_button.app_status ()
אַחֵר:
if (GPIO.input (18)! = 0): #לבדוק דגל מכשיר הרגל = שקר
xval = 0
yval = 0 zval = 0 ממוצע = 2 עיכוב זמן = 0
יעדים = wlbt.get_targets ()
אם len (מטרות)> 0:
עבור j בטווח (ממוצע):
יעדים = wlbt.get_targets ()
אם len (יעדים)> 0: הדפס (len (מטרות)) מטרות = מטרות [0]
print (str (goals.xPosCm))
xval += int (goals.xPosCm) yval += int (goals.yPosCm) zval += int (goals.zPosCm) time.sleep (delayTime) else: print ("ללא מטרות") xval = xval/ממוצע
xval = numMap (xval, -60, 60, SERVO_MIN, SERVO_MAX)
xval = myRound (xval) אם xval SERVO_MAX: xval = SERVO_MAX LCD1602.write (0, 0, 'x =' + str (xval) + '') pwm.set_pwm (0, 0, xval)
yval = yval/ממוצע
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/ממוצע
zval = numMap (zval, R_MIN, R_MAX, SERVO_MIN, SERVO_MAX)
zval = myRound (zval) אם zval SERVO_MAX: zval = SERVO_MAX LCD1602.write (8, 1, 'z =' + str (zval)) pwm.set_pwm (2, 0, zval)
אַחֵר:
הדפס ("ללא מטרות") LCD1602.write (0, 0, "כיבוי") LCD1602.write (0, 1, 'The Walabot') time.sleep (3) wlbt.stop () wlbt.disconnect ()
אם _name_ == '_ עיקר_':
בעוד נכון: main ()
עבור guitareffect.sh
#!/bin/sh
cd /home /pi
sudo python GuitarEffectCLI.py
עותק של הקובץ המקומי RC לעיון
#!/bin/sh -e # # rc.local # # סקריפט זה מבוצע בסוף כל רמה ריצה מרובת משתמשים. # וודא שהתסריט "ייצא 0" בהצלחה או כל ערך # אחר על שגיאה. # # על מנת להפעיל או להשבית תסריט זה פשוט שנה את סיביות הביצוע #. # # כברירת מחדל תסריט זה אינו עושה דבר.
# הדפס את כתובת ה- IP
_IP = $ (שם מארח -אני) || נכון אם ["$ _IP"]; ואז printf "כתובת ה- IP שלי היא %s / n" "$ _IP" fi
./blynk-library/linux/blynk --token = "אסימון הולך לכאן" &
שינה 10 sudo /home/pi/guitareffect.sh ויציאה 0
שלב 27: מאגרי Github לשימוש
השתמש בזה עבור LCD Sunfounder
github.com/daveyclk/SunFounder_SensorKit_f…
השתמש בזה עבור מנהל ההתקן של סרוו
github.com/daveyclk/Adafruit_Python_PCA968…
השתמש בזה למעטפת Blynk Python
github.com/daveyclk/blynkapi
שלב 28: סיכום
ובכן, זו הייתה עקומת למידה תלולה, אך הייתה כל כך שווה את זה.
הטיפים שלי הם
- הייתי צריך ללמוד פייתון..מתברר שזה אייס
- ממשק את ה- Python ב- Raspberry Pi עם שירות IoT Blynk. זה לא נתמך באופן רשמי ולכן יש כמה גבולות לפונקציות שלו. בכל זאת עובד מצוין!
- מסתבר שהוואלבוט מצוין לביטוי מוזיקלי. השתמשתי בו ב- SDG3000 של Korg, אבל אתה יכול להשתמש בכל אפקט שאתה אוהב
צא לעצמך. זה לא מוגבל לאפקטים של גיטרה, אני יכול לשמש עם כל כלי עם כל אפקט.
סגנית בתחרות פטל פאי 2017