Raspberry Pi OSA MIDI Board

Agordi Raspberry Pi por MIDI
Ĉi tiu gvidilo montros kiel preni ĵus instalitan Raspberry Pi kaj funkciigi ĝin kiel OS-malkovrebla MIDI I/O-aparato. Ĝi ankaŭ provizos iun eksamploj de uzado de diversaj Python-bibliotekoj por ricevi MIDI-datumojn en kaj el la programa medio. ĜISDATIGO - 11-an de septembro 2021.: Ĉi tiu gvidilo estis ĝisdatigita por solvi iujn problemojn kun la plej nova versio de Raspberry Pi OS, vi ankaŭ povas elŝuti plenan bildon kun antaŭinstalitaj skriptoj kaj plene agordita ĉi tie.
Kion ni bezonas
- Raspberry Pi A+/B+/2/3B/3B+/4B
- MIDI-Estraro por Raspberry Pi
- MikroSD-Karto • Aro de 4 Nilonaj M2.5 Ŝraŭboj
- Aro de 4 Nilonaj M2.5 * 11mm Inaj al Inaj Standoffs
- Aro de 4 Nilonaj M2.5*5mm Viraj al Inaj Standoffs
Asembleo
Uzu la nilonajn ŝraŭbojn kaj standoffs por kunmeti la Raspberry Pi kune kun la MIDI-Tabulo, kiel montrite sur la suba bildo:

Unuafoje aranĝo
Ni testis ĉiujn eksamples en ĉi tiu dokumento sur Pi 4B uzante Rasperry Pi OS, versio majo 2020). La unuan fojon, necesas uzi ekranon kaj klavaron por agordi la Pi. Poste, uzu vian elektan metodon por aliri la OS de Pi. Ĉiuj paŝoj estas devigaj krom se alie dirite
Instalado
Ĝisdatigi/ĝisdatigi
Faru la ĝisdatigon kaj ĝisdatigon kiel priskribite ĉi tie: https://www.raspberrypi.org/documentation/raspbian/updating.md
Reta Agordo (Laŭvola)
Se vi estas SSH de alia maŝino en la Pi, indas doni al la Pi fiksan IP-adreson: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Ankaŭ estas bona ideo aldoni la retajn sekurecajn agordojn al la Pi, por ke ĝi aŭtomate konektiĝu al la reto: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
Agordu la Pi Up kiel USB OTG-Aparato
Malfermu terminalon sur la Pi kaj sekvu ĉi tiun proceduron:
- Agordu la USB-ŝoforon al dwc2
eĥo “dtoverlay=dwc2” | sudo tee -a /boot/config.txt - Ebligu la dwc2-ŝoforon
eĥo “dwc2” | sudo tee -a /etc/modules - Ebligu la lib-kunmetitan pelilon
eĥo "lib-komponaĵo" | sudo tee -a /etc/modules - Ebligu la MIDI-aparaton
eĥo “g_midi” | sudo tee -a /etc/modules
Kreu la agordan skripton:
- Kreu la file
sudo touch /usr/bin/midi_over_usb - Faru ĝin plenumebla
sudo chmod +x /usr/bin/midi_over_usb - Redaktu ĝin per Nano
sudo nano /usr/bin/midi_over_usb
Algluu la jenon en la file, farante redaktojn al la produkto kaj fabrikanto ĉenoj laŭbezone. 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.0dr/bcd0string # v0200/bcdUSB-2 > idProduct # Multifunction Composite Gadget echo 0x409 > bcdDevice # v9876543210/bcd0. 409x0-eĥo "fedcba409"> strings/0x409/serianumero-eĥo "OSA Electronics"> strings/XNUMXxXNUMX/manufacturer echo "MIDI USB Device"> strings/XNUMXxXNUMX/product ls /sys/class/udc> kaj konservu la UDC Exit Nano file (Ktrl+X, Y, reveno). Aldonu vokon al la skripto al rc.local, por ke ĝi ekzekutiĝu ĉe ĉiu ekfunkciigo. sudo nano /etc/rc.local Aldonu la sekvan linion antaŭ "exit0" /usr/bin/midi_over_usb Eliru Nano kaj konservu la file kaj rekomencu la Pi. sudo reboot Listigu la disponeblajn MIDI-pordojn. amidi -l Se la MIDI estas ĝuste agordita, la lasta komando devus eligi ion similan al: Dir Device Name IO hw:0,0 f_midi IO hw:0,0 f_midi
Instalu Python-Bibliotekojn
Ĉi tiu sekcio klarigos kiel instali niajn preferatajn bibliotekojn por Python 2.x.
MIDO
Mido estas facile uzebla biblioteko por pritrakti MIDI-datumojn. Ĝi dependas de la backend rt-midi, la asound-biblioteko kaj Jack. Enigu la sekvajn ordonojn en sinsekvo: La eligo devus montri unu 'Midi Through' havenon kaj unu plian havenon. Se ĉi tio estas la kazo, ĉio estas bona. *Noto: en Mido, la portnomo estas la tuta ĉeno enfermita en unuopaj citiloj, sed eblas detranĉi la nomon al la ĉeno antaŭ la dupunkto. En ĉi tiu maŝino, la ĉeno estas: 'f_midi:f_midi 16:0'. Por ekzample, ĉi tiuj du ordonoj estas ekvivalentaj
PIGPIO
Ni uzas la pigpio-bibliotekon por interfacon kun la GPIO-pingloj. Ni trovis, ke ĉi tiu biblioteko estas pli stabila kaj fleksebla ol la norma metodo de interfaco kun la aparataro de Pi (RPi.GPIO). Se vi volas uzi alian bibliotekon, redaktu la kodon laŭe. Por instali la pigpio-bibliotekon, sekvu la instrukciojn ĉi tie: http://abyz.me.uk/rpi/pigpio/download.html Antaŭ ol kurado ĉiuj el la eksamples sube, vi devus komenci la pigpio-servon se ne farite:
Python Eksamples
La eksamples ankaŭ uzas la interpfunkcion de la numpy biblioteko kiel facila maniero mapi inter du gamoj. Ni uzis Reaper por sendi kaj ricevi datumojn. La Pi estas agordita kiel Hardware MIDI-produktaĵo en la prefermenuo de Reaper.
Kontrolu GPIO per Note-Datumoj (ekzample_1_key_press.py) Ĉi tiu ekzample montras kiel:
- Aŭskultu 3 specifajn notajn kaj notajn eventojn uzante simplan kondiĉon
- Kaptu la esceptojn, kiuj aperas kiam ne-notaj datumoj estas senditaj al la Pi (ekz. transportaj datumoj de sekvencilo)
- Mapu la notrapidecon al la PWM de la eliga pinglo
Importu la koncernajn bibliotekojn, kreu la pi-objekton el la pigpio-biblioteko, kaj malfermu la eligpordon: La try/catch-bloko estas kapti la erarojn, kiuj estiĝas de aliaj specoj de MIDI-datumoj sendataj (ekz. transportkontroloj ktp.). dum Vera: provu: #Tio ĉi filtras ĉiujn ne-notajn datumojn por msg en port.iter_pending(): # if there is a message apending if(msg.type == 'note_on'): # if it is Note On message out = interp(msg.velocity, [0,127],[0,255]) # skala rapido de 0-127 ĝis 0-255 #filtri la datumojn per notnumero 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: # if the message is not Note On (ekz. Notu 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) krom AttributeError kiel eraro: print ("Eraro escepte") pasi
Kontrolu GPIO per Mod kaj Pitch Wheels (ekzample_2_wheels.py)
Ĉi tiu ekzample montras kiel:
- Aŭskultu Pitch kaj Mod Datumojn kaj filtru ilin laŭ tipo
- Mapu la datumojn al la PWM de la eliga pinglo
Ĉi tiu ekzample estas simila al ĉi-supra, kun ĉi tiuj mesaĝtipoj:
- La Pitch-rado estas tipo pitchwheel kun valoro de msg.pitch
- La Mod Rado estas Kontinua Regilo tipo control_change kun kontrolparametro de msg.control = 1 (la CC-numero) kaj valoro de msg.value
Eligu MIDI-Datumojn de GPIO-Okazaĵo (gpio_event.py)
Ĉi tiu ekzample montras kiel:
- Uzu interrompon por detekti butonpremadon
- Sendu MIDI-datumojn de la Pi al alia aparato
Malfermu la eligan havenon, kreu du mesaĝojn kaj agordu la GPIO-pinglon kiel enigaĵon. Ĉi tiu ekzampLe supozas ke estas butono ligita al pinglo 21, tiel ke tiu pinglo iĝas ALTE kiam la butono estas premita: La jenaj estas la revokfunkcioj nomitaj kiam la butono estas premita aŭ liberigita. La funkcio send() eligo de havenoj simple sendas la mesaĝon el la haveno: La revokaŭskultantoj funkcias en la fono kaj ne bezonas plian atenton:
Reproduktu MIDI File
Ĉi tiu ekzample montras kiel:
- Ŝarĝu MIDI file en la programa medio
- Reproduktu la file .
Ĉi tiu ekzamples supozas ke vi havas MIDI file nomita midi_file.mid en la sama dosierujo kiel via python-skripto: import mido from mido import MidiFile el mido import MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') dum Vera: por msg en MidiFile('midi_file.mid').play(): port.send(msg)
Dokumentoj/Rimedoj
![]() |
Raspberry Pi OSA MIDI Board [pdf] Uzanto-manlibro OSA MIDI, Estraro |




