I-Raspberry-Pi-OSA-MIDI-Ibhodi-LOGO

Raspberry Pi OSA MIDI Board

I-Raspberry-Pi-OSA-MIDI-Board-PRODUCT

Isetha i-Raspberry Pi ye-MIDI

Lo mhlahlandlela uzokhombisa ukuthi ungayithatha kanjani i-Raspberry Pi esanda kufakwa futhi isebenze njengedivayisi ye-MIDI I/O etholakala nge-OS. Izophinde inikeze ama-exampngokusebenzisa imitapo yolwazi ehlukahlukene yePython ukuze uthole idatha ye-MIDI ingene futhi iphume endaweni yokuhlela. IZIQINISEKISO - Sep 11, 2021.: Lo mhlahlandlela ubuyekeziwe ukuze kulungiswe ezinye izinkinga ngenguqulo yakamuva ye-Raspberry Pi OS, ungadawuniloda isithombe esigcwele esinemibhalo efakwe kuqala futhi simiswe ngokugcwele lapha.

Esikudingayo

  • I-Raspberry Pi A+/B+/2/3B/3B+/4B
  • Ibhodi le-MIDI le-Raspberry Pi
  • Ikhadi le-MicroSD•Isethi yezikulufi zenayiloni ezi-4 ze-M2.5
  • Isethi engu-4 Inayiloni M2.5*11mm Ukuma Kwabesifazane Kuya Kwabesifazane
  • Isethi engu-4 Inayiloni M2.5*5mm Ukuma Kwesilisa Kuya Kwabesifazane

Umhlangano

Sebenzisa izikulufu zenayiloni nama-standoffs ukuze uhlanganise i-Raspberry Pi kanye nebhodi le-MIDI, njengoba kukhonjisiwe esithombeni esingezansi:

I-Raspberry-Pi-OSA-MIDI-Ibhodi-1

Ukusetha kokuqala

Sihlole wonke ama-exampLes kulo mbhalo ku-Pi 4B usebenzisa i-Rasperry Pi OS, inguqulo kaMeyi 2020). Okokuqala, kuyadingeka ukusebenzisa isikrini nekhibhodi ukusetha i-Pi up. Ngemuva kwalokho, sebenzisa indlela oyikhethayo ukuze ufinyelele i-OS ye-Pi. Zonke izinyathelo ziyisibopho ngaphandle uma kushiwo ngenye indlela

Ukufakwa

Buyekeza/Thuthukisa
Yenza isibuyekezo futhi uthuthukise njengoba kuchazwe lapha: https://www.raspberrypi.org/documentation/raspbian/updating.md

Ukucushwa Kwenethiwekhi (Ongakukhetha)
Uma u-SSH'ing usuka komunye umshini uye ku-Pi, kuyafaneleka ukunikeza i-Pi ikheli le-IP elingashintshi: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Kungumqondo omuhle futhi ukwengeza izilungiselelo zokuphepha kwenethiwekhi ku-Pi ukuze izoxhumeka ngokuzenzakalelayo kunethiwekhi: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Setha i-Pi Up njengegajethi ye-USB OTG
Vula itheminali ku-Pi bese ulandela le nqubo:

  • Setha umshayeli we-USB ku-dwc2
    echo “dtoverlay=dwc2” | I-sudo tee -a /boot/config.txt
  • Nika amandla umshayeli we-dwc2
    echo "dwc2" | sudo tee -a /etc/modules
  • Nika amandla i-lib composite driver
    echo “lib composite” | sudo tee -a /etc/modules
  • Nika amandla igajethi ye-MIDI 
    echo “g_midi” | sudo tee -a /etc/modules

Dala iskripthi sokumisa:

  • Dala i- file
    sudo touch /usr/bin/midi_over_usb
  • Yenze iphumelele
    I-sudo chmod +x /usr/bin/midi_over_usb
  • Ihlele nge-Nano
    sudo nano /usr/bin/midi_over_usb

Namathisela okulandelayo ku- file, ukwenza ukuhlela kumkhiqizo neyunithi yezinhlamvu zomkhiqizi njengoba kudingeka. 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 -echo 1.0.0x0 # bcd0200 USB 2x0 bcd 409 USB 9876543210x0 bcd 409 USB 0x409 bcd 0 USB . 409xXNUMX echo “fedcbaXNUMX” > izintambo/XNUMXxXNUMX/serialnumber echo “OSA Electronics” > amayunithi ezinhlamvu/XNUMXxXNUMX/umkhiqizi echo “Idivayisi ye-MIDI USB” > izintambo/XNUMXxXNUMX/product ls /sys/class/it Nas file (Ctrl+X, Y, buyisela). Engeza ikholi kusikripthi ku-rc.local, ukuze siqalise kukho konke ukuqalisa. sudo nano /etc/rc.local Faka umugqa olandelayo ngaphambi kokuthi "phuma0" /usr/bin/midi_over_usb Phuma ku-Nano bese ulondoloza file bese uqala kabusha i-Pi. sudo qala kabusha Faka ohlwini lwamachweba we-MIDI atholakalayo. amidi -l Uma i-MIDI icushwe kahle, umyalo wokugcina kufanele ukhiphe into efana nalena: Dir Device Name IO hw:0,0 f_midi IO hw:0,0 f_midi

Faka i-Python Libraries

Lesi sigaba sizochaza indlela yokufaka imitapo yolwazi esiyithandayo ye-Python 2.x.

MIDO

I-Mido ilabhulali okulula ukuyisebenzisela ukuphatha idatha ye-MIDI. Incike ku-rt-midi backend, umtapo wolwazi ozwakalayo, kanye noJack. Faka imiyalo elandelayo ngokulandelana: Okukhiphayo kufanele kubonise imbobo eyodwa ethi 'Midi Through' kanye nembobo eyodwa eyengeziwe. Uma kunjalo, konke kuhamba kahle. *Qaphela: ku-Mido, igama lembobo yilo lonke iyunithi yezinhlamvu efakwe kungcaphuno eyodwa, kodwa kungenzeka ukunciphisa igama kuyunithi yezinhlamvu ngaphambi kwekholoni. Kulo mshini, iyunithi yezinhlamvu ithi: 'f_midi:f_midi 16:0'. Okwesiboneloample, le miyalo emibili iyalingana

I-PIGPIO

Sisebenzisa umtapo wezincwadi we-pigpio ukuze sixhumane nezikhonkwane ze-GPIO. Sithole ukuthi lo mtapo uzinzile futhi uvumelana nezimo kunendlela evamile yokusebenzelana nezingxenyekazi zekhompuyutha ze-Pi (RPi.GPIO). Uma ufuna ukusebenzisa omunye umtapo wolwazi, hlela ikhodi ngokufanele. Ukuze ufake ilabhulali ye-pigpio, landela imiyalo lapha: http://abyz.me.uk/rpi/pigpio/download.html Ngaphambi kokusebenzisa yonke i-exampngaphansi, kufanele uqale isevisi ye-pigpio uma ingenziwanga:

IPython ExampLes

I-exampi-les iphinde isebenzise umsebenzi we-interp we-numpy library njengendlela elula yokwenza imephu phakathi kobubanzi obubili. Sisebenzise i-Reaper ukuze sithumele futhi samukele idatha. I-Pi ilungiselelwe njengokuphuma kwe-Hardware MIDI kumenyu yezintandokazi ze-Reaper.

Lawula i-GPIO nge-Note Data (isbample_1_key_press.py) Lesi siboneloample ikhombisa ukuthi:

  • Lalela imicimbi emi-3 ethize yokuvula neyokuvala usebenzisa isimo esilula
  • Bamba okuhlukile okuvela lapho idatha engeyona inothi ithunyelwa ku-Pi (isb. idatha yokuthutha isuka kusilandeleli)
  • Mepha isivinini senothi ku-PWM yephinikhodi yokukhipha

Ngenisa imitapo yolwazi efanele, dala into engu-pi kumtapo wezincwadi we-pigpio, bese uvule imbobo yokuphumayo: I-try/block block iwukubamba amaphutha avela kwezinye izinhlobo zedatha ye-MIDI ethunyelwayo (isb. izilawuli zokuthutha njll.). kuyilapho kuyiqiniso: zama: #Lokhu kuhlunga yonke idatha engeyona inothi yomlayezo ku-port.iter_pending(): # uma kukhona umlayezo osalindile if(msg.type == 'note_on'): # uma kungumlayezo othi Inothi uphumile = interp(msg.velocity, [0,127],[0,255]) # isivinini sesikali ukusuka ku-0-127 kuya ku-0-255 #hlunga idatha ngenombolo yenothi uma(msg.note == 53): pi1.set_PWM_dutycycle(2, ngaphandle ) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, out) elif(msg.note == 57): pi1.set_PWM_dutycycle(4, out) enye: # uma umlayezo ungekho Qaphela (isb. Qaphela Cishiwe) uma(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) ngaphandle kwe-AttributeError njengephutha: phrinta(“Iphutha alikho”) dlula

Lawula i-GPIO ngamasondo e-Mod nama-Pitch (isibample_2_wheels.py)
Lesi example ikhombisa ukuthi:

  • Lalela i-Pitch ne-Mod Data futhi uzihlunge ngohlobo
  • Imephu idatha ku-PWM yephinikhodi yokukhipha

Lesi exampi-le ifana nokungenhla, ngalezi zinhlobo zemilayezo:

  • Isondo le-Pitch wuhlobo lwe-pitchwheel enenani elingu-msg.pitch
  • Isondo le-Mod liwuhlobo lwesilawuli esiqhubekayo control_change esinepharamitha yokulawula ye-msg.control = 1 (inombolo ye-CC) kanye nenani le-msg.value

Okukhipha Idatha ye-MIDI evela kumcimbi we-GPIO (gpio_event.py)

Lesi example ikhombisa ukuthi:

  • Sebenzisa ukuphazamisa ukuze uthole ukucindezelwa kwenkinobho
  • Thumela idatha ye-MIDI ukusuka ku-Pi uye kwenye idivayisi

Vula imbobo yokukhipha, dala imilayezo emibili bese usetha iphinikhodi ye-GPIO njengokufaka. Lesi example ithatha ukuthi kukhona inkinobho eboshelwe ku-pin 21, ukuze iphinikhodi iye PHEZULU uma inkinobho icindezelwa: Okulandelayo yimisebenzi yokushayela emuva ebizwa lapho inkinobho icindezelwa noma ikhululwa. Umsebenzi we-output ports send() uvele uthumele umlayezo ngaphandle kwe-port: Abalaleli be-callback bagijima ngemuva futhi abadingi ukunakwa okwengeziwe:

Dlala kabusha i-MIDI File

Lesi example ikhombisa ukuthi:

  • Layisha i-MIDI file endaweni yokuhlela
  • Dlala kabusha i file .

Lesi exampLes icabanga ukuthi une-MIDI file ebizwa nge-midi_file.mid kumkhombandlela ofanayo nesikripthi sakho se-python: ngenisa i-mido kusuka ku-mido import MidiFile kusuka ku-mido ngenisa i-MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') kuyilapho Iqiniso: ngomlayezo ku-MidiFile('midi_file.mid').dlala(): port.send(msg)

Amadokhumenti / Izinsiza

Raspberry Pi OSA MIDI Board [pdf] Imaniwali yosebenzisayo
I-OSA MIDI, Ibhodi

Izithenjwa

Shiya amazwana

Ikheli lakho le-imeyili ngeke lishicilelwe. Izinkambu ezidingekayo zimakiwe *