Plošča Raspberry Pi OSA MIDI

Nastavitev Raspberry Pi za MIDI
Ta vodnik bo pokazal, kako vzeti sveže nameščen Raspberry Pi in ga upravljati kot MIDI I/O napravo, ki jo OS odkrije. Zagotovil bo tudi nekaj exampuporabe različnih knjižnic Python za pridobivanje podatkov MIDI v programsko okolje in iz njega. POSODOBITEV – 11. september 2021.: Ta vodnik je bil posodobljen, da bi odpravil nekatere težave z najnovejšo različico OS Raspberry Pi, tukaj lahko prenesete tudi celotno sliko z vnaprej nameščenimi in popolnoma konfiguriranimi skripti.
Kar potrebujemo
- Raspberry Pi A+/B+/2/3B/3B+/4B
 - Plošča MIDI za Raspberry Pi
 - Kartica MicroSD•Komplet 4 najlonskih vijakov M2.5
 - Komplet 4 najlonskih sponk M2.5*11 mm od ženske do ženske
 - Komplet 4 najlonskih nastavkov M2.5*5 mm za moške in ženske
 
Montaža
Uporabite najlonske vijake in stojala za sestavljanje Raspberry Pi skupaj s ploščo MIDI, kot je prikazano na spodnji sliki:

Prva nastavitev
Preizkusili smo vse prampv tem dokumentu na Pi 4B z uporabo Rasperry Pi OS, različica maj 2020). Prvič je treba za nastavitev Pi uporabiti zaslon in tipkovnico. Nato uporabite svojo izbrano metodo za dostop do operacijskega sistema Pi. Vsi koraki so obvezni, razen če ni navedeno drugače
Namestitev
Posodobitev/Nadgradnja
Izvedite posodobitev in nadgradnjo, kot je opisano tukaj: https://www.raspberrypi.org/documentation/raspbian/updating.md 
Konfiguracija omrežja (izbirno)
Če uporabljate SSH z drugega stroja v Pi, se splača Piju dati fiksen naslov IP: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Prav tako je dobro, da Piju dodate varnostne nastavitve omrežja, da se bo samodejno povezal z omrežjem: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
Nastavite Pi Up kot pripomoček USB OTG
Odprite terminal na Pi in sledite temu postopku:
- Nastavite gonilnik USB na dwc2
echo “dtoverlay=dwc2” | sudo tee -a /boot/config.txt - Omogoči gonilnik dwc2
odmev “dwc2” | sudo tee -a /etc/modules - Omogoči gonilnik lib composite
echo “lib composite” | sudo tee -a /etc/modules -  Omogoči pripomoček MIDI 
echo “g_midi” | sudo tee -a /etc/modules 
Ustvarite konfiguracijski skript:
- Ustvarite file
sudo touch /usr/bin/midi_over_usb - Naj bo izvršljiv
sudo chmod +x /usr/bin/midi_over_usb - Uredite ga z Nano
sudo nano /usr/bin/midi_over_usb 
Prilepite naslednje v file, po potrebi urejanje nizov izdelka in proizvajalca. 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.0 echo 0x0200 > bcd2 stringsmkUSB # - USBp 0x409 echo “fedcba9876543210” > strings/0x409/serialnumber echo “OSA Electronics” > strings/0x409/manufacturer echo “MIDI USB Device” > strings/0x409/product ls /sys/class/udc > UDC Zapustite Nano in shranite file (Ctrl+X, Y, vrnitev). Dodajte klic skriptu v rc.local, tako da se izvede ob vsakem zagonu. sudo nano /etc/rc.local Dodajte naslednjo vrstico pred “exit0” /usr/bin/midi_over_usb Zapustite Nano in shranite file in znova zaženite Pi. sudo reboot Navedite razpoložljiva vrata MIDI. amidi -l Če je MIDI pravilno konfiguriran, mora zadnji ukaz izpisati nekaj podobnega: Dir Ime naprave IO hw:0,0 f_midi IO hw:0,0 f_midi
Namestite knjižnice Python
V tem razdelku je razloženo, kako namestiti naše prednostne knjižnice za Python 2.x.
MIDO
Mido je za uporabo preprosta knjižnica za obdelavo podatkov MIDI. Zanaša se na zaledje rt-midi, knjižnico zvokov in Jacka. Zaporedoma vnesite naslednje ukaze: Izhod mora prikazati ena vrata 'Midi Through' in ena dodatna vrata. Če je temu tako, je vse v redu. *Opomba: v Midu je ime vrat celoten niz v enojnih narekovajih, vendar je mogoče ime skrajšati na niz pred dvopičjem. Na tem računalniku je niz: 'f_midi:f_midi 16:0'. Na primerample, sta ta dva ukaza enakovredna
SVAJEK
Za vmesnik z zatiči GPIO uporabljamo knjižnico pigpio. Ugotovili smo, da je ta knjižnica bolj stabilna in prilagodljiva kot standardna metoda povezovanja s strojno opremo Pi (RPi.GPIO). Če želite uporabiti drugo knjižnico, ustrezno uredite kodo. Za namestitev knjižnice pigpio sledite tem navodilom: http://abyz.me.uk/rpi/pigpio/download.html Pred zagonom vseh exampspodaj, bi morali zagnati storitev pigpio, če tega še niste storili:
Python Examples
Bivšiamples uporabljajo tudi funkcijo interp knjižnice numpy kot preprost način za preslikavo med dvema obsegoma. Za pošiljanje in prejemanje podatkov smo uporabili Reaper. Pi je konfiguriran kot strojni izhod MIDI v Reaperjevem meniju z nastavitvami.
Nadzirajte GPIO s podatki Note (nprample_1_key_press.py) Ta nprample prikazuje, kako:
- Poslušajte 3 posebne dogodke vklopa in izklopa note z uporabo preprostega pogoja
 - Ujemite izjeme, ki nastanejo, ko se podatki, ki niso note, pošljejo v Pi (npr. transportni podatki iz sekvencerja)
 - Preslikaj hitrost note na PWM izhodnega zatiča
 
Uvozite ustrezne knjižnice, ustvarite predmet pi iz knjižnice pigpio in odprite izhodna vrata: Blok poskusi/ulovi je za prestrezanje napak, ki izhajajo iz drugih vrst poslanih podatkov MIDI (npr. nadzor transporta itd.). while True: poskusi: #To izloči vse podatke, ki niso opombe, za sporočila v port.iter_pending(): # če je čakajoče sporočilo if(msg.type == 'note_on'): # če je Note On sporočilo ven = interp(msg.velocity, [0,127],[0,255]) # lestvica hitrosti od 0-127 do 0-255 #filtriraj podatke po številki note 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: # če sporočilo ni Note On (npr. Note Izklopljeno) 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) razen AttributeError kot napaka: print(»Napaka je izvzeta«) pass
Upravljajte GPIO s kolesi Mod in Pitch Wheels (nprample_2_wheels.py)
Ta bivšiample prikazuje, kako:
- Poslušajte Pitch in Mod Data ter jih filtrirajte po vrsti
 - Preslikaj podatke v PWM izhodnega zatiča
 
Ta bivšiampje podoben zgornjemu s temi vrstami sporočil:
- Kolo Pitch je tipa pitchwheel z vrednostjo msg.pitch
 - Modulatorsko kolo je neprekinjen krmilnik tipa control_change s kontrolnim parametrom msg.control = 1 (številka CC) in vrednostjo msg.value
 
Izpis podatkov MIDI iz dogodka GPIO (gpio_event.py)
Ta bivšiample prikazuje, kako:
- Uporabite prekinitev, da zaznate pritisk na gumb
 - Pošlji MIDI podatke iz Pi v drugo napravo
 
Odprite izhodna vrata, ustvarite dve sporočili in nastavite pin GPIO kot vhod. Ta bivšiample predpostavlja, da je na pin 21 vezan gumb, tako da ta pin postane VISOKO, ko je gumb pritisnjen: Naslednje so funkcije povratnega klica, ki se kličejo, ko je gumb pritisnjen ali izpuščen. Funkcija send() izhodnih vrat preprosto pošlje sporočilo iz vrat: poslušalci povratnih klicev delujejo v ozadju in ne potrebujejo več pozornosti:
Predvajanje MIDI File
Ta bivšiample prikazuje, kako:
- Naloži MIDI file v programskem okolju
 - Predvajaj file .
 
Ta bivšiamples predvideva, da imate MIDI file imenovan midi_file.mid v istem imeniku kot vaš skript python: import mido iz mido import MidiFile iz mido import MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') medtem ko je True: za sporočila v MidiFile('midi_file.mid').play(): port.send(msg)
Dokumenti / Viri
![]()  | 
						Plošča Raspberry Pi OSA MIDI [pdfUporabniški priročnik OSA MIDI, plošča  | 




