Bwrdd MIDI Raspberry Pi OSA

Sefydlu Raspberry Pi ar gyfer MIDI
Bydd y canllaw hwn yn dangos sut i gymryd Raspberry Pi newydd ei osod a'i weithredu fel dyfais MIDI I/O y gellir ei darganfod gan OS. Bydd hefyd yn darparu rhai exampllai o ddefnyddio amrywiol lyfrgelloedd Python i gael data MIDI i mewn ac allan o'r amgylchedd rhaglennu. DIWEDDARIAD - Medi 11, 2021.: Mae'r canllaw hwn wedi'i ddiweddaru i ddatrys rhai problemau gyda'r fersiwn diweddaraf o Raspberry Pi OS, gallwch hefyd lawrlwytho delwedd lawn gyda sgriptiau wedi'u gosod ymlaen llaw ac wedi'u ffurfweddu'n llawn yma.
Yr hyn sydd ei angen arnom
- Raspberry Pi A+/B+/2/3B/3B+/4B
- Bwrdd MIDI ar gyfer Raspberry Pi
- Cerdyn MicroSD • Set o 4 sgriw M2.5 neilon
- Set o 4 neilon M2.5 * 11mm Standoff Benyw i Benyw
- Set o 4 neilon M2.5 * 5mm Standoff Gwryw i Benyw
Cynulliad
Defnyddiwch y sgriwiau neilon a'r standoffs i gydosod y Raspberry Pi ynghyd â'r Bwrdd MIDI, fel y dangosir yn y ddelwedd isod:

Gosodiad tro cyntaf
Profasom yr holl gynamples yn y ddogfen hon ar Pi 4B gan ddefnyddio Rasperry Pi OS, fersiwn Mai 2020). Y tro cyntaf, mae angen defnyddio sgrin a bysellfwrdd i sefydlu'r Pi. Wedi hynny, defnyddiwch eich dull o ddewis i gael mynediad i'r OS Pi. Mae pob cam yn orfodol oni nodir yn wahanol
Gosodiad
Diweddaru/Uwchraddio
Perfformiwch y diweddariad a'r uwchraddiad fel y disgrifir yma: https://www.raspberrypi.org/documentation/raspbian/updating.md
Ffurfwedd Rhwydwaith (Dewisol)
Os ydych chi'n SSH'ing o beiriant arall i'r Pi, mae'n werth rhoi cyfeiriad IP sefydlog i'r Pi: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Mae hefyd yn syniad da ychwanegu gosodiadau diogelwch y rhwydwaith i'r Pi fel y bydd yn cysylltu'n awtomatig â'r rhwydwaith: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
Gosodwch y Pi Up fel Teclyn USB OTG
Agor terfynell ar y Pi a dilynwch y weithdrefn hon:
- Gosodwch y gyrrwr USB i dwc2
adlais “dtoverlay=dwc2” | sudo tee -a /boot/config.txt - Galluogi'r gyrrwr dwc2
adlais “dwc2” | sudo tee -a /etc/modules - Galluogi'r gyrrwr cyfansawdd lib
adlais “lib composite” | sudo tee -a /etc/modules - Galluogi'r teclyn MIDI
adlais “g_midi” | sudo tee -a /etc/modules
Creu'r sgript ffurfweddu:
- Creu y file
cyffwrdd sudo /usr/bin/midi_over_usb - Gwnewch yn weithredadwy
sudo chmod +x /usr/bin/midi_over_usb - Ei olygu gyda Nano
sudo nano /usr/bin/midi_over_usb
Gludwch y canlynol i mewn i'r file, gwneud golygiadau i'r cynnyrch a llinynnau'r gwneuthurwr yn ôl yr angen. cd /sys/kernel/config/usb_gadget/ mkdir -p midi_over_usb cd midi_over_usb adlais 0x1d6b > idVendor # Linux Foundation adlais 0x0104 > idProduct # Amlswyddogaeth Gadget Cyfansawdd adlais 0x0100 > bcdDevice1.0.0 # v0 - bcdDevice0200 # v2xp0 # 409x9876543210 - bcdDevice0 # v409xp Adlais 0x409 “fedcba0” > adlais llinynnau/409xXNUMX/rhif cyfresol “OSA Electronics” > llinynnau/XNUMXxXNUMX/gweithgynhyrchwr yn adleisio “Dyfais USB MIDI” > llinynnau/XNUMXxXNUMX/product ls /sys/class/udc > Gadael Nano UDC ac arbed file (Ctrl+X, Y, dychwelyd). Ychwanegu galwad i'r sgript i rc.local, fel ei fod yn gweithredu ar bob cychwyn. sudo nano /etc/rc.local Ychwanegwch y llinell ganlynol cyn “exit0” /usr/bin/midi_over_usb Gadael Nano ac arbed y file ac ailgychwyn y Pi. reboot sudo Rhestrwch y porthladdoedd MIDI sydd ar gael. amidi -l Os yw'r MIDI wedi'i ffurfweddu'n gywir, dylai'r gorchymyn olaf allbynnu rhywbeth tebyg i: Enw Dyfais Dir IO hw: 0,0 f_midi IO hw:0,0 f_midi
Gosod Llyfrgelloedd Python
Bydd yr adran hon yn esbonio sut i osod ein hoff lyfrgelloedd ar gyfer Python 2.x.
MIDO
Mae Mido yn llyfrgell hawdd ei defnyddio ar gyfer trin data MIDI. Mae'n dibynnu ar y backend rt-midi, y llyfrgell sain, a Jack. Mewnbynnu'r gorchmynion canlynol yn eu trefn: Dylai'r allbwn ddangos un porthladd 'Midi Trwy' ac un porthladd ychwanegol. Os yw hyn yn wir, mae popeth yn iawn. *Sylwer: yn Mido, enw'r porthladd yw'r llinyn cyfan sydd wedi'i amgáu mewn dyfyniadau sengl, ond mae'n bosibl blaendori'r enw i'r llinyn cyn y colon. Ar y peiriant hwn, y llinyn yw: 'f_midi:f_midi 16:0'. Am gynample, y ddau orchymyn hyn yn gyfatebol
PIGPIO
Rydym yn defnyddio'r llyfrgell pigpio i ryngwynebu â'r pinnau GPIO. Rydym wedi canfod bod y llyfrgell hon yn fwy sefydlog a hyblyg na'r dull safonol o ryngwynebu â chaledwedd y Pi (RPi.GPIO). Os ydych chi am ddefnyddio llyfrgell arall, golygwch y cod yn unol â hynny. I osod y llyfrgell pigpio, dilynwch y cyfarwyddiadau yma: http://abyz.me.uk/rpi/pigpio/download.html Cyn rhedeg pob un o'r cynamples isod, dylech ddechrau'r gwasanaeth pigpio os na chaiff ei wneud:
Python Examples
Mae'r cynampMae hefyd yn defnyddio swyddogaeth interp y llyfrgell numpy fel ffordd hawdd o fapio rhwng dwy ystod. Fe ddefnyddion ni Reaper i anfon a derbyn data. Mae'r Pi wedi'i ffurfweddu fel allbwn MIDI Caledwedd yn newislen dewisiadau Reaper.
Rheoli GPIO gyda Data Nodyn (example_1_key_press.py) Mae hyn yn exampMae le yn dangos sut i:
- Gwrandewch am 3 digwyddiad penodol i nodi nodiadau a nodiadau gan ddefnyddio amod syml
- Dal yr eithriadau sy'n codi pan anfonir data di-nodyn i'r Pi (ee data cludiant o ddilyniannydd)
- Mapiwch y cyflymder nodyn i PWM y pin allbwn
Mewnforio'r llyfrgelloedd perthnasol, creu'r gwrthrych pi o'r llyfrgell pigpio, ac agor y porthladd allbwn: Y bloc ceisio / dal yw dal y gwallau sy'n deillio o fathau eraill o ddata MIDI sy'n cael eu hanfon (ee rheolyddion trafnidiaeth ac ati). tra Gwir: ceisiwch: # Mae hwn yn hidlo'r holl ddata di-nodyn ar gyfer msg yn port.iter_pending(): # os oes neges yn yr arfaeth if(msg.type == 'note_on'): # os yw'n Nodyn Ar neges allan = interp(msg.velocity, [0,127],[0,255]) # cyflymder graddfa o 0-127 i 0-255 # hidlo'r data yn ôl rhif nodyn os(msg.note == 53): pi1.set_PWM_dutycycle(2, allan ) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, allan) elif(msg.note == 57): pi1.set_PWM_dutycycle(4, allan) arall: # os nad yw'r neges yn Nodyn Ymlaen (ee Nodyn I ffwrdd) 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) ac eithrio AttributeError fel gwall: print("Gwall wedi'i eithrio”) pas
Rheoli GPIO gyda Mod a Pitch Wheels (example_2_wheels.py)
Mae'r cynampMae le yn dangos sut i:
- Gwrandewch am Ddata Traw a Mod a'u hidlo yn ôl math
- Mapiwch y data i PWM y pin allbwn
Mae'r cynampMae le yn debyg i'r uchod, gyda'r mathau hyn o negeseuon:
- Mae'r olwyn traw yn olwyn traw math gyda gwerth msg.pitch
- Mae Olwyn y Mod yn Rheolydd Parhaus Math control_change gyda pharamedr rheoli o msg.control = 1 (y rhif CC) a gwerth msg.value
Allbwn Data MIDI o Ddigwyddiad GPIO (gpio_event.py)
Mae'r cynampMae le yn dangos sut i:
- Defnyddiwch ymyriad i ganfod gwasg botwm
- Anfon data MIDI o'r Pi i ddyfais arall
Agorwch y porthladd allbwn, creu dwy neges a gosod y pin GPIO fel mewnbwn. Mae'r cynampMae le yn cymryd yn ganiataol bod botwm wedi'i glymu i pin 21, fel bod y pin yn mynd yn UCHEL pan fydd y botwm yn cael ei wasgu: Mae'r canlynol yn swyddogaethau galw'n ôl a elwir pan fydd y botwm yn cael ei wasgu neu ei ryddhau. Mae swyddogaeth anfon () porthladdoedd allbwn yn syml yn anfon y neges allan o'r porthladd: Mae'r gwrandawyr galwad yn ôl yn rhedeg yn y cefndir ac nid oes angen mwy o sylw arnynt:
Chwarae MIDI yn ôl File
Mae'r cynampMae le yn dangos sut i:
- Llwythwch MIDI file yn yr amgylchedd rhaglennu
- Chwarae yn ôl y file .
Mae'r cynampmae les yn cymryd bod gennych MIDI file gelwir midi_file.mid yn yr un cyfeiriadur â'ch sgript python: mewnforio mido o mido import MidiFile o mido mewnforio MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') tra Gwir: am msg yn MidiFile('midi_file.mid').chwarae(): port.send(msg)
Dogfennau / Adnoddau
![]() |
Bwrdd MIDI Raspberry Pi OSA [pdfLlawlyfr Defnyddiwr OSA MIDI, Bwrdd |




