Raspberry-Pi-OSA-MIDI-Board-LOGO

Raspberry Pi OSA MIDI doska

Raspberry-Pi-OSA-MIDI-Board-PRODUCT

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:

Raspberry-Pi-OSA-MIDI-Board-1

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

Referencie

Zanechajte komentár

Vaša emailová adresa nebude zverejnená. Povinné polia sú označené *