Raspberry Pi OSA MIDI deska
Nastavení Raspberry Pi pro MIDI
Tato příručka ukáže, jak vzít čerstvě nainstalované Raspberry Pi a nechat jej provozovat jako MIDI I/O zařízení zjistitelné OS. Poskytne také některé examppoužívání různých knihoven Pythonu k získávání MIDI dat do az programovacího prostředí. AKTUALIZACE – 11. září 2021.: Tato příručka byla aktualizována, aby opravila některé problémy s nejnovější verzí operačního systému Raspberry Pi, můžete si také stáhnout úplný obraz s předinstalovanými skripty a plně nakonfigurovaný zde.
Co potřebujeme
- Raspberry Pi A+/B+/2/3B/3B+/4B
- MIDI deska pro Raspberry Pi
- MicroSD karta •Sada 4 nylonových šroubů M2.5
- Sada 4 nylonových stojánků M2.5*11mm mezi samicí a ženou
- Sada 4 nylonových stojánků M2.5 * 5 mm mezi muži a ženami
Shromáždění
Použijte nylonové šrouby a podpěry k sestavení Raspberry Pi společně s MIDI deskou, jak je znázorněno na obrázku níže:
První nastavení
Testovali jsme všechny exampsoubor v tomto dokumentu na Pi 4B s operačním systémem Rasperry Pi, verze květen 2020). Poprvé je nutné k nastavení Pi up použít obrazovku a klávesnici. Poté použijte svou zvolenou metodu pro přístup k operačnímu systému Pi. Všechny kroky jsou povinné, pokud není uvedeno jinak
Instalace
Aktualizovat/Upgradovat
Proveďte aktualizaci a upgrade, jak je popsáno zde: https://www.raspberrypi.org/documentation/raspbian/updating.md
Konfigurace sítě (volitelné)
Pokud do Pi posíláte SSH z jiného počítače, vyplatí se dát Pi pevnou IP adresu: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Je také dobré přidat nastavení zabezpečení sítě do Pi, aby se automaticky připojilo k síti: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
Nastavte Pi Up jako miniaplikaci USB OTG
Otevřete terminál na Pi a postupujte takto:
- Nastavte ovladač USB na dwc2
echo “dtoverlay=dwc2” | sudo tee -a /boot/config.txt - Povolte ovladač dwc2
echo „dwc2“ | sudo tee -a /etc/modules - Povolte složený ovladač lib
echo „lib kompozit“ | sudo tee -a /etc/modules - Povolte miniaplikaci MIDI
echo „g_midi“ | sudo tee -a /etc/modules
Vytvořte konfigurační skript:
- Vytvořte file
sudo touch /usr/bin/midi_over_usb - Udělat to spustitelný
sudo chmod +x /usr/bin/midi_over_usb - Upravte to pomocí Nano
sudo nano /usr/bin/midi_over_usb
Vložte následující do filea podle potřeby upravte řetězec produktu a výrobce. 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í Gadget echo 0x0100 1.0.0x0 0200xdUSo String USB #2 USB #0 409x9876543210 echo “fedcba0” > strings/409x0/serialnumber echo “OSA Electronics” > strings/409x0/manufacturer echo “MIDI USB Device” > strings/409xXNUMX/product ls /sys/class/udc > UDC Exit file (Ctrl+X, Y, návrat). Přidejte do skriptu volání rc.local, aby se spustil při každém spuštění. sudo nano /etc/rc.local Před „exit0“ přidejte následující řádek /usr/bin/midi_over_usb Ukončete Nano a uložte soubor file a restartujte Pi. sudo reboot Seznam dostupných MIDI portů. amidi -l Pokud je MIDI správně nakonfigurováno, měl by poslední příkaz vydat něco podobného jako: Dir Název zařízení IO hw:0,0 f_midi IO hw:0,0 f_midi
Nainstalujte knihovny Pythonu
Tato část vysvětlí, jak nainstalovat naše preferované knihovny pro Python 2.x.
MIDO
Mido je snadno použitelná knihovna pro práci s MIDI daty. Spoléhá na backend rt-midi, knihovnu asound a Jack. Postupně zadejte následující příkazy: Výstup by měl zobrazovat jeden port 'Midi Through' a jeden další port. Pokud je tomu tak, je vše v pořádku. *Poznámka: V Mido je název portu celý řetězec uzavřený v jednoduchých uvozovkách, ale je možné zkrátit název na řetězec před dvojtečkou. Na tomto počítači je řetězec: 'f_midi:f_midi 16:0'. Napřample, tyto dva příkazy jsou ekvivalentní
PIGPIO
K propojení s piny GPIO používáme knihovnu pigpio. Zjistili jsme, že tato knihovna je stabilnější a flexibilnější než standardní způsob propojení s hardwarem Pi (RPi.GPIO). Pokud chcete použít jinou knihovnu, upravte odpovídajícím způsobem kód. Chcete-li nainstalovat knihovnu pigpio, postupujte podle pokynů zde: http://abyz.me.uk/rpi/pigpio/download.html Před spuštěním všech exampníže, měli byste spustit službu pigpio, pokud tak neučiníte:
Python Přamples
Bývalýamples také používá funkci interp knihovny numpy jako snadný způsob mapování mezi dvěma rozsahy. K odesílání a přijímání dat jsme použili Reaper. Pi je nakonfigurován jako hardwarový MIDI výstup v nabídce předvoleb Reaperu.
Ovládejte GPIO pomocí Note Data (napřample_1_key_press.py) Tento example ukazuje, jak:
- Poslechněte si 3 konkrétní události poznámek a poznámek pomocí jednoduché podmínky
- Zachyťte výjimky, které vznikají, když jsou do Pi odeslána data bez noty (např. transportní data ze sekvenceru)
- Mapujte rychlost tónu na PWM výstupního kolíku
Importujte příslušné knihovny, vytvořte objekt pi z knihovny pigpio a otevřete výstupní port: Blok try/catch slouží k zachycení chyb, které vznikají při odesílání jiných typů MIDI dat (např. řízení transportu atd.). while True: try: #Toto odfiltruje všechna data, která nejsou poznámky pro msg v port.iter_pending(): # pokud existuje zpráva čekající na vyřízení if(msg.type == 'note_on'): # pokud je zpráva Note On out = interp(msg.velocity, [0,127],[0,255]) # rychlost stupnice od 0-127 do 0-255 #filtrovat data podle čí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: # pokud zpráva není Note On (např. 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) kromě AttributeError jako chyba: print(“Chyba s výjimkou”) projít
Ovládejte GPIO pomocí Mod a Pitch Wheels (napřample_2_wheels.py)
Tento example ukazuje, jak:
- Poslouchejte Pitch a Mod Data a filtrujte je podle typu
- Mapujte data na PWM výstupního kolíku
Tento example je podobný výše uvedenému s těmito typy zpráv:
- Pitch wheel je typu pitchwheel s hodnotou msg.pitch
- Mod Wheel je kontinuální ovladač typu control_change s řídicím parametrem msg.control = 1 (číslo CC) a hodnotou msg.value
Výstup MIDI dat z události GPIO (gpio_event.py)
Tento example ukazuje, jak:
- K detekci stisknutí tlačítka použijte přerušení
- Odešlete MIDI data z Pi do jiného zařízení
Otevřete výstupní port, vytvořte dvě zprávy a nastavte pin GPIO jako vstup. Tento example předpokládá, že ke kolíku 21 je připojeno tlačítko, takže kolík po stisknutí tlačítka přejde VYSOKÉ: Následují funkce zpětného volání, které se volají po stisknutí nebo uvolnění tlačítka. Funkce send() výstupních portů jednoduše odešle zprávu z portu: Posluchače zpětného volání běží na pozadí a nepotřebují žádnou další pozornost:
Přehrávání MIDI File
Tento example ukazuje, jak:
- Načtěte MIDI file v programovacím prostředí
- Přehrávejte file .
Tento examples předpokládá, že máte MIDI file s názvem midi_file.mid ve stejném adresáři jako váš python skript: import mido z mido import MidiFile from mido import MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid'), zatímco True: pro msg v MidiFile('midi_file.mid').play(): port.send(msg)
Dokumenty / zdroje
![]() |
Raspberry Pi OSA MIDI deska [pdfUživatelská příručka OSA MIDI, deska |