Raspberry-Pi-OSA-MIDI-Board-LOGO

Raspberry Pi OSA MIDI Board

Raspberry-Pi-OSA-MIDI-Board-PRODUCT

הגדרת Raspberry Pi עבור MIDI

מדריך זה יראה כיצד לקחת Raspberry Pi שהותקן טרי ולהפעיל אותו כהתקן MIDI I/O הניתן לגילוי מערכת ההפעלה. זה גם יספק כמה אקסampמידע על שימוש בספריות Python שונות כדי להעביר נתוני MIDI לתוך והחוצה מסביבת התכנות. עדכון - 11 בספטמבר 2021.: מדריך זה עודכן כדי לתקן כמה בעיות בגרסת ה-Raspberry Pi OS העדכנית ביותר, אתה יכול גם להוריד תמונה מלאה עם סקריפטים מותקנים מראש ומוגדרים במלואם כאן.

מה שאנחנו צריכים

  • Raspberry Pi A+/B+/2/3B/3B+/4B
  • לוח MIDI עבור Raspberry Pi
  • כרטיס MicroSD•סט של 4 ברגים ניילון M2.5
  • סט של 4 ניילון M2.5*11 מ"מ נקבה לנקבה
  • סט של 4 ניילון M2.5*5 מ"מ זכר לנקבה

הַרכָּבָה

השתמש בברגי הניילון וביציבות כדי להרכיב את ה-Raspberry Pi יחד עם לוח ה-MIDI, כפי שמוצג בתמונה למטה:

Raspberry-Pi-OSA-MIDI-Board-1

הגדרה ראשונה

בדקנו את כל האקסיםampמסמכים במסמך זה על Pi 4B באמצעות מערכת ההפעלה Rasperry Pi, גרסה מאי 2020). בפעם הראשונה, יש צורך להשתמש במסך ובמקלדת כדי להגדיר את ה-Pi. לאחר מכן, השתמש בשיטת הבחירה שלך כדי לגשת למערכת ההפעלה של Pi. כל השלבים הם חובה אלא אם צוין אחרת

הַתקָנָה

עדכון/שדרוג
בצע את העדכון והשדרוג כמתואר כאן: https://www.raspberrypi.org/documentation/raspbian/updating.md

תצורת רשת (אופציונלי)
אם אתה מעביר SSH ממכונה אחרת ל-Pi, כדאי לתת ל-Pi כתובת IP קבועה: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update כמו כן, מומלץ להוסיף את הגדרות אבטחת הרשת ל-Pi כך שהוא יתחבר אוטומטית לרשת: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

הגדר את ה-Pi Up כגאדג'ט USB OTG
פתחו מסוף ב-Pi ובצעו את ההליך הבא:

  • הגדר את מנהל ההתקן של ה-USB ל-dwc2
    echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt
  • הפעל את מנהל ההתקן dwc2
    הד "dwc2" | sudo tee -a /etc/modules
  • הפעל את מנהל ההתקן של lib Composite
    echo "lib composite" | sudo tee -a /etc/modules
  • הפעל את גאדג'ט ה-MIDI 
    echo "g_midi" | sudo tee -a /etc/modules

צור את סקריפט התצורה:

  • צור את file
    sudo touch /usr/bin/midi_over_usb
  • להפוך אותו הפעלה
    sudo chmod +x /usr/bin/midi_over_usb
  • ערוך את זה עם Nano
    sudo nano /usr/bin/midi_over_usb

הדבק את הדברים הבאים ב- file, ביצוע עריכות במחרוזות המוצר והיצרן כנדרש. cd /sys/kernel/config/usb_gadget/ mkdir -p midi_over_usb cd midi_over_usb echo 0x1d6b > idVendor # Linux Foundation echo 0x0104 > idProduct # Multifunction Composite Gadget echo 0x0100 > bcd1.0.0Devicedir. 0x0200 echo "fedcba2" > strings/0x409/serialnumber echo "OSA Electronics" > strings/9876543210x0/manufacturer echo "MIDI USB Device" > strings/409x0/product ls /sys/class/udc > שמור את היציאה UDC file (Ctrl+X, Y, חזרה). הוסף קריאה לסקריפט ל-rc.local, כך שיופעל בכל הפעלה. sudo nano /etc/rc.local הוסף את השורה הבאה לפני "exit0" /usr/bin/midi_over_usb צא מ-Nano ושמור את file ואתחל מחדש את ה-Pi. sudo reboot רשום את יציאות ה-MIDI הזמינות. amidi -l אם ה-MIDI מוגדר כהלכה, הפקודה האחרונה צריכה להוציא משהו דומה ל: Dir Device Name IO hw:0,0 f_midi IO hw:0,0 f_midi

התקן את ספריות Python

סעיף זה יסביר כיצד להתקין את הספריות המועדפות עלינו עבור Python 2.x.

MIDO

Mido היא ספרייה קלה לשימוש לטיפול בנתוני MIDI. זה מסתמך על ה-rt-midi backend, ספריית asound וג'ק. הזן את הפקודות הבאות ברצף: הפלט צריך להראות יציאת 'Midi Through' אחת ויציאה אחת נוספת. אם זה המקרה, הכל בסדר. *הערה: ב-Mido, שם היציאה הוא כל המחרוזת המוקפת במירכאות בודדות, אך אפשר לקטוע את השם למחרוזת שלפני המעי הגס. במכונה זו, המחרוזת היא: 'f_midi:f_midi 16:0'. למשלample, שתי הפקודות הללו שוות ערך

PIGPIO

אנו משתמשים בספריית pigpio כדי להתממשק עם פיני GPIO. מצאנו שספרייה זו יציבה וגמישה יותר מהשיטה הסטנדרטית של התממשקות עם החומרה של ה-Pi (RPi.GPIO). אם ברצונך להשתמש בספרייה אחרת, ערוך את הקוד בהתאם. כדי להתקין את ספריית pigpio, בצע את ההוראות כאן: http://abyz.me.uk/rpi/pigpio/download.html לפני הפעלת כל האקסampלהלן, עליך להפעיל את שירות pigpio אם לא תעשה:

Python Examples

האקסיתamples גם משתמשים בפונקציית interp של ספריית numpy כדרך קלה למיפוי בין שני טווחים. השתמשנו בריפר כדי לשלוח ולקבל נתונים. ה-Pi מוגדר כפלט MIDI של חומרה בתפריט ההעדפות של ריפר.

שליטה ב-GPIO עם נתוני הערות (לדוגמהample_1_key_press.py) דוגמה זוample מראה כיצד:

  • האזן ל-3 אירועים ספציפיים של הערה והפסקה באמצעות תנאי פשוט
  • תפוס את החריגים המתעוררים כאשר נשלחים נתונים שאינם פתקים אל ה-Pi (למשל העברה של נתונים מרצף)
  • מפה את מהירות התו ל-PWM של פין הפלט

ייבא את הספריות הרלוונטיות, צור את אובייקט ה-pi מספריית pigpio ופתח את יציאת הפלט: בלוק ה-try/catch נועד לתפוס את השגיאות הנובעות מסוגים אחרים של נתוני MIDI שנשלחים (למשל בקרות תעבורה וכו'). while True: try: #זה מסנן את כל הנתונים שאינם הערות עבור msg ב-port.iter_pending(): # if there is a message pending if(msg.type == 'note_on'): # if it is Note On message out = interp(msg.velocity, [0,127],[0,255]) # מהירות סולם מ-0-127 ל-0-255 #סנן את הנתונים לפי מספר הערה if(msg.note == 53): pi1.set_PWM_dutycycle(2, out ) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, out) elif(msg.note == 57): pi1.set_PWM_dutycycle(4, out) else: # אם ההודעה אינה Note On (למשל הערה כבוי) if(msg.note == 53): pi1.set_PWM_dutycycle(2, 0) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, 0) elif(msg.note == 57): pi1. set_PWM_dutycycle(4, 0) למעט AttributeError as error: print(“Error excepted”) pass

שליטה ב-GPIO עם גלגלי Mod ו-Pitch (לדוגמהample_2_wheels.py)
האקסית הזוample מראה כיצד:

  • האזן לנתוני Pitch ו-Mod וסנן אותם לפי סוג
  • מפה את הנתונים ל-PWM של פין הפלט

האקסית הזוample דומה לאמור לעיל, עם סוגי ההודעות הבאים:

  • גלגל ה-Pitch הוא מסוג pitchwheel עם ערך של msg.pitch
  • גלגל המוד הוא בקר מתמשך מסוג control_change עם פרמטר בקרה של msg.control = 1 (מספר ה-CC) וערך של msg.value

פלט נתוני MIDI מאירוע GPIO (gpio_event.py)

האקסית הזוample מראה כיצד:

  • השתמש בפסיקה כדי לזהות לחיצה על כפתור
  • שלח נתוני MIDI מה-Pi למכשיר אחר

פתח את יציאת הפלט, צור שתי הודעות והגדר את פין GPIO כקלט. האקסית הזוampאני מניח שיש כפתור קשור לפין 21, כך שהסיכה תעלה ל-HIGH כאשר הכפתור נלחץ: להלן פונקציות ההתקשרות חזרה שנקראות כאשר הכפתור נלחץ או שחרור. פונקציית הפלט ports send() פשוט שולחת את ההודעה מהיציאה: מאזיני ההתקשרות חוזרים פועלים ברקע ואינם זקוקים לתשומת לב נוספת:

השמעת MIDI File

האקסית הזוample מראה כיצד:

  • טען MIDI file בסביבת התכנות
  • הפעל את file .

האקסית הזוamples מניח שיש לך MIDI file נקרא מידי_file.mid באותה ספרייה כמו סקריפט python שלך: ייבוא ​​mido מ-mido import MidiFile מ-mido import MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') בעוד True: עבור msg במידיFile('midi_file.mid').play(): port.send(msg)

מסמכים / משאבים

Raspberry Pi OSA MIDI Board [pdfמדריך למשתמש
OSA MIDI, לוח

הפניות

השאר תגובה

כתובת האימייל שלך לא תפורסם. שדות חובה מסומנים *