Rasipibẹri Pi OSA MIDI Board

Ṣiṣeto Rasipibẹri Pi fun MIDI
Itọsọna yii yoo fihan bi o ṣe le mu Rasipibẹri Pi ti a ṣẹṣẹ fi sori ẹrọ ati ki o jẹ ki o ṣiṣẹ bi ẹrọ MIDI I/O ti o ṣe iwari OS. O yoo tun pese diẹ ninu awọn Mofiamples ti lilo orisirisi awọn ile-ikawe Python lati gba data MIDI sinu ati jade kuro ni agbegbe siseto. Imudojuiwọn – Oṣu Kẹsan Ọjọ 11, Ọdun 2021.: Itọsọna yii ti ni imudojuiwọn lati ṣatunṣe diẹ ninu awọn ọran pẹlu ẹya tuntun Rasipibẹri Pi OS, o tun le ṣe igbasilẹ aworan ni kikun pẹlu awọn iwe afọwọkọ ti a ti fi sii tẹlẹ ati tunto ni kikun nibi.
Ohun ti a nilo
- Rasipibẹri Pi A +/B +/2/3B/3B +/4B
- MIDI Board fun rasipibẹri Pi
- Kaadi MicroSD • Eto 4 ọra M2.5 skru
- Ṣeto ti 4 Nylon M2.5 * 11mm Obirin si Awọn Obirin Standoffs
- Ṣeto ti 4 ọra M2.5 * 5mm Okunrin si Obirin Standoffs
Apejọ
Lo awọn skru ọra ati awọn iduro lati ṣe apejọ Rasipibẹri Pi papọ pẹlu Igbimọ MIDI, bi o ṣe han lori aworan ni isalẹ:

Eto igba akọkọ
A idanwo gbogbo awọn Mofiamples ninu iwe yii lori Pi 4B ni lilo Rasperry Pi OS, ẹya May 2020). Ni igba akọkọ, o jẹ dandan lati lo iboju kan ati keyboard lati ṣeto Pi soke. Lẹhinna, lo ọna yiyan rẹ lati wọle si Pi's OS. Gbogbo awọn igbesẹ jẹ dandan ayafi bibẹẹkọ ti sọ
Fifi sori ẹrọ
Imudojuiwọn / Igbesoke
Ṣe imudojuiwọn ati igbesoke bi a ti ṣalaye nibi: https://www.raspberrypi.org/documentation/raspbian/updating.md
Iṣeto Nẹtiwọọki (Aṣayan)
Ti o ba n wa SSH lati ẹrọ miiran sinu Pi, o tọ lati fun Pi ni adiresi IP ti o wa titi: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update O tun jẹ imọran ti o dara lati ṣafikun awọn eto aabo nẹtiwọọki si Pi ki o le sopọ laifọwọyi si nẹtiwọọki: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
Ṣeto Pi Up bi Ohun elo OTG USB kan
Ṣii ebute kan lori Pi ki o tẹle ilana yii:
- Ṣeto awakọ USB si dwc2
iwoyi "dtoverlay=dwc2" | sudo tee -a /boot/config.txt - Mu awakọ dwc2 ṣiṣẹ
iwoyi "dwc2" | sudo tee -a /etc/modules - Mu awakọ akojọpọ lib ṣiṣẹ
iwoyi "lib apapo" | sudo tee -a /etc/modules - Mu ohun elo MIDI ṣiṣẹ
iwoyi "g_midi" | sudo tee -a /etc/modules
Ṣẹda iwe afọwọkọ iṣeto:
- Ṣẹda awọn file
sudo ifọwọkan /usr/bin/midi_over_usb - Ṣe o ni pipa
sudo chmod +x /usr/bin/midi_over_usb - Ṣatunkọ pẹlu Nano
sudo nano /usr/bin/midi_over_usb
Lẹẹmọ awọn wọnyi sinu file, ṣiṣe awọn atunṣe si ọja ati awọn okun olupese bi o ṣe nilo. cd /sys/kernel/config/usb_gadget/ mkdir -p midi_over_usb cd midi_over_usb iwoyi 0x1d6b> idVendor # Linux Foundation iwoyi 0x0104 > idProduct # Multifunction Composite Gadget iwoyi 0x0100 > bcdDevice okùn / 1.0.0x0 iwoyi “fedcba0200”> awọn okun / 2x0 / nọmba nọmba iwoyi “OSA Electronics”> awọn okun / 409x9876543210 / olupilẹṣẹ iwoyi “Ẹrọ USB MIDI”> awọn okun / 0x409 / ọja ls / sys / kilasi / uDC ati fipamọ awọn DC file (Ctrl + X, Y, pada). Ṣafikun ipe si iwe afọwọkọ si rc.local, ki o ṣiṣẹ lori gbogbo ibẹrẹ. sudo nano /etc/rc.local Ṣafikun laini atẹle ṣaaju “jade0” /usr/bin/midi_over_usb Jade Nano ki o ṣafipamọ naa file ati atunbere Pi. sudo atunbere Akojọ awọn ebute oko oju omi MIDI to wa. amidi -l Ti a ba tunto MIDI ni deede, aṣẹ ti o kẹhin yẹ ki o jade nkan ti o jọra si: Dir Device Name IO hw:0,0 f_midi IO hw: 0,0 f_midi
Fi Python Library sori ẹrọ
Abala yii yoo ṣe alaye bi o ṣe le fi awọn ile-ikawe ayanfẹ wa sori ẹrọ fun Python 2.x.
MIDO
Mido jẹ ile-ikawe irọrun-lati-lo fun mimu data MIDI mu. O da lori ẹhin rt-midi, ile-ikawe asound, ati Jack. Tẹ awọn aṣẹ wọnyi wọle ni ọkọọkan: Ijade yẹ ki o ṣafihan ọkan 'Midi Nipasẹ' ibudo ati ibudo afikun kan. Ti eyi ba jẹ ọran, gbogbo rẹ dara. * Akiyesi: ni Mido, orukọ ibudo jẹ gbogbo okun ti a fi sinu awọn agbasọ ẹyọkan, ṣugbọn o ṣee ṣe lati ge orukọ naa si okun ṣaaju iṣọn. Lori ẹrọ yi, okun ni: 'f_midi: f_midi 16: 0'. Fun example, awọn wọnyi meji ase ni o wa deede
PIGPIO
A lo ile-ikawe pigpio lati ni wiwo pẹlu awọn pinni GPIO. A ti rii pe ile-ikawe yii jẹ iduroṣinṣin diẹ sii ati rọ ju ọna boṣewa ti ibaraenisepo pẹlu ohun elo Pi (RPi.GPIO). Ti o ba fẹ lo ile-ikawe miiran, ṣatunkọ koodu naa ni ibamu. Lati fi ile-ikawe pigpio sori ẹrọ, tẹle awọn itọnisọna nibi: http://abyz.me.uk/rpi/pigpio/download.html Ṣaaju ṣiṣe gbogbo awọn ti examples isalẹ, o yẹ ki o bẹrẹ iṣẹ pigpio ti ko ba ṣe:
Python Eksamples
Awọn examples tun lo iṣẹ interp ikawe numpy bi ọna ti o rọrun lati ṣe maapu laarin awọn sakani meji. A lo Reaper lati firanṣẹ ati gba data. Pi jẹ tunto bi iṣẹjade MIDI Hardware ni akojọ awọn ayanfẹ Reaper.
Ṣakoso GPIO pẹlu Data Akọsilẹ (fun apẹẹrẹample_1_key_press.py) Example fihan bi o ṣe le:
- Tẹtisi akiyesi 3 pato-lori ati awọn iṣẹlẹ piparẹ nipa lilo ipo ti o rọrun
- Mu awọn imukuro ti o dide nigbati data ti kii ṣe akọsilẹ ti firanṣẹ si Pi (fun apẹẹrẹ gbigbe data lati ọdọ atẹle)
- Ṣe maapu iyara akọsilẹ si PWM ti PIN ti o wu jade
Ṣe agbewọle awọn ile-ikawe ti o yẹ, ṣẹda nkan pi lati ibi ikawe pigpio, ki o ṣii ibudo iṣelọpọ: Igbiyanju/apeja bulọọki ni lati mu awọn aṣiṣe ti o dide lati awọn iru data MIDI miiran ti a firanṣẹ (fun apẹẹrẹ awọn iṣakoso gbigbe ati bẹbẹ lọ). nigba ti Otitọ: gbiyanju: #Eyi nyọ gbogbo data ti kii ṣe akọsilẹ fun msg ni port.iter_pending(): # ti ifiranṣẹ ba wa ni isunmọtosi ti (msg.type == 'akọsilẹ_lori'): # ti o ba jẹ Akọsilẹ Lori ifiranṣẹ jade = interp (msg.velocity, [0,127],[0,255]) # iyara iwọn lati 0-127 si 0-255 #fisọ data naa nipasẹ nọmba akọsilẹ ti (msg.note == 53): pi1.set_PWM_dutycycle(2, jade ) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, jade) elif(msg.note == 57): pi1.set_PWM_dutycycle(4, jade) miran: # ti ifiranṣẹ naa ko ba jẹ Akọsilẹ Lori (fun apẹẹrẹ Akọsilẹ Paa) ti (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) ayafi AttributeError bi aṣiṣe: titẹ ("Aṣiṣe ayafi") kọja
Iṣakoso GPIO pẹlu Mod ati Pitch Wili (fun apẹẹrẹample_2_wheels.py)
Eyi example fihan bi o ṣe le:
- Tẹtisi fun Pitch ati Mod Data ki o ṣe àlẹmọ wọn nipasẹ iru
- Ṣe maapu data naa si PWM ti PIN ti o wu jade
Eyi example jẹ iru si eyi ti o wa loke, pẹlu awọn iru ifiranṣẹ wọnyi:
- Kẹkẹ Pitch jẹ iru pitchwheel pẹlu iye ti msg.pitch
- Kẹkẹ Mod naa jẹ oluṣakoso Tẹsiwaju iru control_change pẹlu paramita iṣakoso ti msg.control = 1 (nọmba CC) ati iye msg.value
Ṣejade Data MIDI lati Iṣẹlẹ GPIO kan (gpio_event.py)
Eyi example fihan bi o ṣe le:
- Lo idalọwọduro lati ṣawari bọtini titẹ kan
- Fi data MIDI ranṣẹ lati Pi si ẹrọ miiran
Ṣii ibudo iṣẹjade, ṣẹda awọn ifiranṣẹ meji ki o ṣeto pin GPIO bi titẹ sii. Eyi example dawọle nibẹ ni a bọtini ti so lati pin 21, ki pin lọ ga nigbati awọn bọtini ti wa ni e: Awọn wọnyi ni awọn iṣẹ ipe pada ti a npe ni nigbati awọn bọtini ti wa ni titẹ tabi tu. Awọn ebute oko oju omi ti njade firanṣẹ () iṣẹ nfi ifiranṣẹ ranṣẹ nirọrun lati ibudo: Awọn olutẹtisi ipe ti n ṣiṣẹ ni abẹlẹ ko nilo akiyesi diẹ sii:
Sisisẹsẹhin a MIDI File
Eyi example fihan bi o ṣe le:
- Kojọpọ MIDI kan file ni ayika siseto
- Sisisẹsẹhin awọn file .
Eyi examples ro pe o ni MIDI file ti a npe ni midi_file.mid ninu ilana kanna bi iwe afọwọkọ Python rẹ: gbe agbewọle mido lati agbewọle Mido agbewọleFile lati agbewọle agbewọle mido MetaMessage = mido.open_output('f_midi') aarin = MidiFile('midi_file.mid') lakoko Otitọ: fun msg ni MidiFile('midi_file.mid').play(): port.send(msg)
Awọn iwe aṣẹ / Awọn orisun
![]() |
Rasipibẹri Pi OSA MIDI Board [pdf] Afowoyi olumulo OSA MIDI, ọkọ |




