Franbwaz-Pi-OSA-MIDI-Board-LOGO

Franbwaz Pi OSA MIDI Komisyon Konsèy

Franbwaz-Pi-OSA-MIDI-Tablo-pwodwi

Mete kanpe Franbwaz Pi pou MIDI

Gid sa a pral montre kijan pou w pran yon Raspberry Pi ki fèk enstale epi fè li fonksyone kòm yon aparèy MIDI I/O ki kapab dekouvri OS. Li pral tou bay kèk ansyenamplè l sèvi avèk divès bibliyotèk Python pou jwenn done MIDI antre ak soti nan anviwònman pwogramasyon an. MIZAJOU - 11 septanm 2021 .: Gid sa a te mete ajou pou rezoud kèk pwoblèm ak dènye vèsyon an Franbwaz Pi OS, ou ka telechaje tou yon imaj konplè ak scripts pre-enstale ak konplètman configuré isit la.

Sa nou bezwen

  • Franbwaz Pi A+/B+/2/3B/3B+/4B
  • Komisyon Konsèy MIDI pou Franbwaz Pi
  • Yon MicroSD Card•Set 4 Nylon M2.5 Vis
  • Ansanm 4 Nylon M2.5 * 11mm Fi pou Fi Standoffs
  • Ansanm 4 Nylon M2.5 * 5mm gason ak fi Standoffs

Asanble

Sèvi ak vis nilon yo ak konpa yo pou asanble Franbwaz Pi a ansanm ak Komisyon Konsèy MIDI a, jan yo montre nan imaj ki anba a:

Franbwaz-Pi-OSA-MIDI-Board-1

Premye konfigirasyon fwa

Nou teste tout ansyen yoamples nan dokiman sa a sou yon Pi 4B lè l sèvi avèk Rasperry Pi OS, vèsyon me 2020). Premye fwa a, li nesesè yo sèvi ak yon ekran ak klavye yo mete Pi a moute. Apre sa, sèvi ak metòd ou chwazi pou jwenn aksè nan OS Pi a. Tout etap yo obligatwa sof si yo di otreman

Enstalasyon

Mizajou / Mizajou
Fè aktyalizasyon a ak ajou jan sa dekri isit la: https://www.raspberrypi.org/documentation/raspbian/updating.md

Konfigirasyon Rezo (Si ou vle)
Si w ap SSH soti nan yon lòt machin nan Pi a, li entérésan bay Pi a yon adrès IP fiks: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Li se tou yon bon lide yo ajoute anviwònman sekirite rezo a nan Pi a pou ke li pral otomatikman konekte nan rezo a: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Mete Pi moute a kòm yon Gadget USB OTG
Louvri yon tèminal sou Pi a epi swiv pwosedi sa a:

  • Mete chofè USB a sou dwc2
    eko "dtoverlay=dwc2" | sudo tee -a /boot/config.txt
  • Pèmèt chofè dwc2 la
    eko "dwc2" | sudo tee -a /etc/modules
  • Pèmèt chofè konpoze lib la
    eko "lib konpoze" | sudo tee -a /etc/modules
  • Pèmèt gadjèt MIDI a 
    eko "g_midi" | sudo tee -a /etc/modules

Kreye script konfigirasyon an:

  • Kreye a file
    sudo touche /usr/bin/midi_over_usb
  • Fè li ègzèkutabl
    sudo chmod +x /usr/bin/midi_over_usb
  • Edit li ak Nano
    sudo nano /usr/bin/midi_over_usb

Kole sa ki annapre yo nan file, fè modifikasyon nan pwodwi a ak fisèl manifakti yo jan sa nesesè. 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 > bcdDevice # v1.0.0B0. 0200x2 eko "fedcba0" > strings/409x9876543210/serialnumber eko "OSA Elektwonik" > strings/0x409/manifaktè eko "MIDI USB Device" > strings/0x409/product ls /sys/class/udc > epi sove UDC Exit Nano file (Ctrl+X, Y, retounen). Ajoute yon apèl nan script la nan rc.local, pou ke li egzekite sou chak demaraj. sudo nano /etc/rc.local Ajoute liy sa a anvan "exit0" /usr/bin/midi_over_usb Sòti Nano epi sove a. file ak rdemare Pi a. sudo reboot Lis pò MIDI ki disponib yo. amidi -l Si MIDI a konfigirasyon kòrèkteman, dènye kòmandman an ta dwe bay yon bagay ki sanble ak: Dir Non Aparèy IO hw:0,0 f_midi IO hw:0,0 f_midi

Enstale Bibliyotèk Python

Seksyon sa a pral eksplike kijan pou enstale bibliyotèk pi pito nou an pou Python 2.x.

MIDO

Mido se yon bibliyotèk fasil-a-itilize pou manyen done MIDI. Li depann sou backend rt-midi, bibliyotèk asound la ak Jack. Antre kòmandman sa yo nan sekans: Pwodiksyon an ta dwe montre yon pò 'Midi Through' ak yon pò anplis. Si sa a se ka a, tout se byen. *Remak: nan Mido, non pò a se tout fisèl ki mete nan yon sèl guillemets, men li posib pou tronpe non an nan fisèl la anvan kolon an. Sou machin sa a, fisèl la se: 'f_midi:f_midi 16:0'. Pou egzanpample, de kòmandman sa yo ekivalan

PIGPIO

Nou itilize bibliyotèk pigpio pou koòdone ak broch GPIO yo. Nou jwenn bibliyotèk sa a pi estab ak fleksib pase metòd estanda pou entèfas ak pyès ki nan konpitè Pi a (RPi.GPIO). Si ou vle sèvi ak yon lòt bibliyotèk, modifye kòd la kòmsadwa. Pou enstale bibliyotèk pigpio, swiv enstriksyon yo isit la: http://abyz.me.uk/rpi/pigpio/download.html Anvan kouri tout ansyen anamples anba a, ou ta dwe kòmanse sèvis pigpio a si ou pa fè:

Piton Examples

Ansyen anamples tou sèvi ak fonksyon entèp nan bibliyotèk numpy la kòm yon fason fasil pou kat ant de chenn. Nou itilize Reaper pou voye ak resevwa done. Pi a se configuré kòm yon pwodiksyon MIDI Materyèl nan meni preferans Reaper a.

Kontwole GPIO ak Done Remak (egzanpample_1_key_press.py) ansyen sa aampli montre kijan pou:

  • Koute 3 evènman espesifik note-on ak nòt-off lè l sèvi avèk yon kondisyon senp
  • Trape eksepsyon ki parèt lè yo voye done ki pa nòt nan Pi a (egzanp done transpò ki soti nan yon sekans)
  • Map vitès nòt nan PWM nan peny pwodiksyon an

Enpòte bibliyotèk ki enpòtan yo, kreye objè pi a soti nan bibliyotèk pigpio a, epi louvri pò pwodiksyon an: Blòk eseye/trape a se trape erè ki rive nan lòt kalite done MIDI yo voye (egzanp kontwòl transpò elatriye). pandan ke se vre: eseye: #Sa a filtre tout done ki pa nòt pou msg nan port.iter_pending(): # si gen yon mesaj annatant if(msg.type == 'note_on'): # si se Note sou mesaj soti. = interp(msg.velocity, [0,127],[0,255]) # echèl vitès soti nan 0-127 a 0-255 #filtre done yo pa nimewo nòt 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: # si mesaj la pa Note sou (egzanp Remak Off) 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) eksepte AttributeError kòm erè: print ("Erè eksepte") pase

Kontwole GPIO ak Mod ak Pitch Wheels (egzanpample_2_wheels.py)
Ansyen sa aampli montre kijan pou:

  • Koute Done Pitch ak Mod epi filtre yo pa kalite
  • Map done yo nan PWM nan peny pwodiksyon an

Ansyen sa aample se menm jan ak pi wo a, ak kalite mesaj sa yo:

  • Pitch wou a se kalite pitchwheel ak yon valè msg.pitch
  • Mod Wheel se yon Kontwolè kontinyèl tip control_change ak yon paramèt kontwòl msg.control = 1 (nimewo CC) ak yon valè msg.value.

Sòti done MIDI ki soti nan yon evènman GPIO (gpio_event.py)

Ansyen sa aampli montre kijan pou:

  • Sèvi ak yon entèwonp pou detekte yon peze bouton
  • Voye done MIDI ki soti nan Pi a nan yon lòt aparèy

Louvri pò pwodiksyon an, kreye de mesaj ak konfigirasyon PIN GPIO la kòm yon opinyon. Ansyen sa aample sipoze gen yon bouton mare nan zepeng 21, se konsa ke PIN ale HIGH lè bouton an peze: Sa ki annapre yo se fonksyon rappel yo rele lè bouton an peze oswa lage. Fonksyon pò pwodiksyon send() yo tou senpleman voye mesaj la soti nan pò a: oditè yo callback kouri nan background nan epi yo pa bezwen plis atansyon:

Lekti yon MIDI File

Ansyen sa aampli montre kijan pou:

  • Chaje yon MIDI file nan anviwònman pwogramasyon an
  • Lektur la file .

Ansyen sa aamples sipoze ou gen yon MIDI file rele midi_file.mid nan menm anyè ak script python ou a: enpòte mido soti nan mido enpòte MidiFile soti nan mido enpòte MetaMessage pò = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') pandan ke se vre: pou mesaj nan MidiFile('midi_file.mid').play(): port.send(msg)

Dokiman / Resous

Franbwaz Pi OSA MIDI Komisyon Konsèy [pdfManyèl Itilizatè
OSA MIDI, Board

Referans

Kite yon kòmantè

Adrès imel ou p ap pibliye. Jaden obligatwa yo make *