Raspberry Pi OSA MIDI doska

Nastavenie Raspberry Pi pre MIDI
Táto príručka vám ukáže, ako vziať čerstvo nainštalované Raspberry Pi a nechať ho prevádzkovať ako MIDI I/O zariadenie, ktoré možno zistiť z operačného systému. Poskytne aj niektoré examppoužívanie rôznych knižníc Pythonu na získanie údajov MIDI do programovacieho prostredia a von z neho. AKTUALIZÁCIA – 11. septembra 2021.: Táto príručka bola aktualizovaná, aby sa vyriešili niektoré problémy s najnovšou verziou operačného systému Raspberry Pi, môžete si tiež stiahnuť úplný obrázok s predinštalovanými a plne nakonfigurovanými skriptmi tu.
Čo potrebujeme
- Raspberry Pi A+/B+/2/3B/3B+/4B
- MIDI doska pre Raspberry Pi
- MicroSD karta •Sada 4 nylonových skrutiek M2.5
- Sada 4 Nylonových M2.5 * 11 mm medzikusov medzi samicami a samicami
- Sada 4 Nylonových M2.5 * 5 mm medzikusov medzi samcami a samicami
Montáž
Použite nylonové skrutky a podpery na zostavenie Raspberry Pi spolu s MIDI doskou, ako je znázornené na obrázku nižšie:

Prvé nastavenie
Testovali sme všetky exampsúbory v tomto dokumente na Pi 4B s použitím operačného systému Rasperry Pi, verzia máj 2020). Prvýkrát je potrebné na nastavenie Pi up použiť obrazovku a klávesnicu. Potom použite metódu podľa vlastného výberu na prístup k OS Pi. Všetky kroky sú povinné, pokiaľ nie je uvedené inak
Inštalácia
Aktualizácia/aktualizácia
Vykonajte aktualizáciu a inováciu podľa popisu tu: https://www.raspberrypi.org/documentation/raspbian/updating.md
Konfigurácia siete (voliteľné)
Ak do Pi pripájate SSH z iného počítača, oplatí sa dať Pi pevnú IP adresu: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Je tiež dobré pridať nastavenia zabezpečenia siete do Pi, aby sa automaticky pripojil k sieti: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
Nastavte Pi Up ako miniaplikáciu USB OTG
Otvorte terminál na Pi a postupujte takto:
- Nastavte ovládač USB na dwc2
echo “dtoverlay=dwc2” | sudo tee -a /boot/config.txt - Povoľte ovládač dwc2
echo “dwc2” | sudo tee -a /etc/modules - Povoliť zložený ovládač lib
echo „lib kompozit“ | sudo tee -a /etc/modules - Povoliť modul gadget MIDI
echo „g_midi“ | sudo tee -a /etc/modules
Vytvorte konfiguračný skript:
- Vytvorte file
sudo touch /usr/bin/midi_over_usb - Spustite ho
sudo chmod +x /usr/bin/midi_over_usb - Upravte ho pomocou Nano
sudo nano /usr/bin/midi_over_usb
Vložte nasledujúce do filea podľa potreby upravte reťazce produktu a výrobcu. cd /sys/kernel/config/usb_gadget/ mkdir -p midi_over_usb cd midi_over_usb echo 0x1d6b > idVendor # Linux Foundation echo 0x0104 > idProduct # Multifunkčný kompozitný modul gadget echo 0x0100 #1.0.0 #0dBechm USB #0200 - 2dBecm #0 bc. 409x9876543210 echo “fedcba0” > strings/409x0/serialnumber echo “OSA Electronics” > strings/409x0/manufacturer echo “MIDI USB Device” > strings/409xXNUMX/product ls /sys/class/udc a save the UDC Exit file (Ctrl+X, Y, návrat). Pridajte volanie skriptu do rc.local, aby sa spustil pri každom spustení. sudo nano /etc/rc.local Pred „exit0“ pridajte nasledujúci riadok /usr/bin/midi_over_usb Ukončite Nano a uložte súbor file a reštartujte Pi. sudo reboot Zoznam dostupných MIDI portov. amidi -l Ak je MIDI nakonfigurované správne, posledný príkaz by mal vydať niečo podobné ako: Dir Názov zariadenia IO hw:0,0 f_midi IO hw:0,0 f_midi
Nainštalujte knižnice Python
Táto časť vysvetlí, ako nainštalovať naše preferované knižnice pre Python 2.x.
MIDO
Mido je ľahko použiteľná knižnica na prácu s MIDI dátami. Spolieha sa na backend rt-midi, knižnicu asound a Jack. Postupne zadajte nasledujúce príkazy: Výstup by mal zobrazovať jeden port „Midi Through“ a jeden ďalší port. Ak je to tak, všetko je v poriadku. *Poznámka: V Mido je názov portu celý reťazec uzavretý v jednoduchých úvodzovkách, ale je možné skrátiť názov na reťazec pred dvojbodkou. Na tomto stroji je reťazec: 'f_midi:f_midi 16:0'. Napríkladample, tieto dva príkazy sú ekvivalentné
PIGPIO
Na prepojenie s pinmi GPIO používame knižnicu pigpio. Zistili sme, že táto knižnica je stabilnejšia a flexibilnejšia ako štandardná metóda prepojenia s hardvérom Pi (RPi.GPIO). Ak chcete použiť inú knižnicu, upravte kód zodpovedajúcim spôsobom. Ak chcete nainštalovať knižnicu pigpio, postupujte podľa pokynov tu: http://abyz.me.uk/rpi/pigpio/download.html Pred spustením všetkých exampnižšie, mali by ste spustiť službu pigpio, ak tak neurobíte:
Python Examples
Bývalýamples tiež používa funkciu interp knižnice numpy ako jednoduchý spôsob mapovania medzi dvoma rozsahmi. Na odosielanie a prijímanie údajov sme použili Reaper. Pi je nakonfigurovaný ako hardvérový MIDI výstup v ponuke predvolieb Reaper.
Ovládajte GPIO pomocou údajov Note (naprample_1_key_press.py) Tento example ukazuje, ako:
- Vypočujte si 3 špecifické udalosti s poznámkou a poznámkou pomocou jednoduchej podmienky
- Zachyťte výnimky, ktoré vznikajú, keď sa do Pi posielajú nenotové dáta (napr. transportné dáta zo sekvencera)
- Mapujte rýchlosť tónu na PWM výstupného kolíka
Importujte príslušné knižnice, vytvorte objekt pi z knižnice pigpio a otvorte výstupný port: Blok try/catch slúži na zachytenie chýb, ktoré vznikajú pri odosielaní iných typov MIDI dát (napr. riadenie transportu atď.). while True: try: #Toto odfiltruje všetky údaje, ktoré nie sú v poznámke pre msg v port.iter_pending(): # ak existuje správa čakajúca if(msg.type == 'note_on'): # ak je správa Note On out = interp(msg.velocity, [0,127],[0,255]) # rýchlosť mierky od 0-127 do 0-255 #filtrovať údaje podľa čísla poznámky 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: # ak správa nie je Note On (napr. Note 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) okrem AttributeError ako chyba: print(“Chyba s výnimkou”) prejsť
Ovládajte GPIO pomocou koliesok Mod a Pitch Wheels (naprample_2_wheels.py)
Tento example ukazuje, ako:
- Počúvajte Pitch a Mod Data a filtrujte ich podľa typu
- Mapujte údaje na PWM výstupného kolíka
Tento example je podobný vyššie uvedenému s týmito typmi správ:
- Koliesko Pitch je typu Pitchwheel s hodnotou msg.pitch
- Mod Wheel je kontinuálny ovládač typu control_change s riadiacim parametrom msg.control = 1 (číslo CC) a hodnotou msg.value
Výstup MIDI dát z udalosti GPIO (gpio_event.py)
Tento example ukazuje, ako:
- Na zistenie stlačenia tlačidla použite prerušenie
- Pošlite MIDI dáta z Pi do iného zariadenia
Otvorte výstupný port, vytvorte dve správy a nastavte pin GPIO ako vstup. Tento example predpokladá, že ku kolíku 21 je priviazané tlačidlo, takže kolík po stlačení tlačidla prejde VYSOKÝ: Nasledujú funkcie spätného volania, ktoré sa volajú po stlačení alebo uvoľnení tlačidla. Funkcia send() výstupných portov jednoducho odošle správu z portu: Poslucháči spätných volaní bežia na pozadí a nepotrebujú ďalšiu pozornosť:
Prehrávanie MIDI File
Tento example ukazuje, ako:
- Načítať MIDI file v programovacom prostredí
- Prehrávanie file .
Tento exampLes predpokladá, že máte MIDI file s názvom midi_file.mid v rovnakom adresári ako váš python skript: import mido z mido import MidiFile from mido import MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid'), zatiaľ čo True: pre msg v MidiFile('midi_file.mid').play(): port.send(msg)
Dokumenty / zdroje
![]() |
Raspberry Pi OSA MIDI doska [pdfPoužívateľská príručka OSA MIDI, Rada |




