Raspberry-Pi-OSA-MIDI-Bord-LOGO

Raspberry Pi OSA MIDI Bord

Lampun-Pi-OSA-MIDI-Bord-PRODOTT

Twaqqif ta 'Raspberry Pi għal MIDI

Din il-gwida se turi kif tieħu Raspberry Pi li għadu kif ġie installat u tħaddem bħala apparat MIDI I/O li jista’ jinkixef mill-OS. Se tipprovdi wkoll xi exampl-użu ta' diversi libreriji Python biex id-dejta MIDI tidħol u toħroġ mill-ambjent tal-ipprogrammar. AĠĠORNAMENT - 11 ta 'Settembru 2021.: Din il-gwida ġiet aġġornata biex tirranġa xi kwistjonijiet bl-aħħar verżjoni tal-OS Raspberry Pi, tista' wkoll tniżżel immaġni sħiħa bi skripts installati minn qabel u kkonfigurat kompletament hawn.

Dak li għandna bżonn

  • Raspberry Pi A+/B+/2/3B/3B+/4B
  • Bord MIDI għal Raspberry Pi
  • A MicroSD Card•Sett ta '4 Viti tan-najlon M2.5
  • Sett ta '4 tan-najlon M2.5 * 11mm Female għal Female Standoffs
  • Sett ta '4 Nylon M2.5 * 5mm Standoffs maskili għal femminili

Assemblea

Uża l-viti tan-najlon u standoffs biex tgħaqqad il-Raspberry Pi flimkien mal-Bord MIDI, kif muri fuq l-immaġni hawn taħt:

Raspberry-Pi-OSA-MIDI-Board-1

Setup għall-ewwel darba

Ittestjajna l-ex kollhaamples f'dan id-dokument fuq Pi 4B bl-użu ta' Rasperry Pi OS, verżjoni ta' Mejju 2020). L-ewwel darba, huwa meħtieġ li tuża skrin u tastiera biex tissettja l-Pi up. Minn hemm 'il quddiem, uża l-metodu tal-għażla tiegħek biex taċċessa l-OS tal-Pi. Il-passi kollha huma obbligatorji sakemm ma jkunx iddikjarat mod ieħor

Installazzjoni

Aġġornament/Aġġornament
Wettaq l-aġġornament u l-aġġornament kif deskritt hawn: https://www.raspberrypi.org/documentation/raspbian/updating.md

Konfigurazzjoni tan-Netwerk (Mhux obbligatorju)
Jekk qed SSH'ing minn magna oħra fil-Pi, huwa utli li tagħti lill-Pi indirizz IP fiss: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Hija wkoll idea tajba li żżid is-settings tas-sigurtà tan-netwerk mal-Pi sabiex awtomatikament tikkonnettja man-netwerk: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Issettja l-Pi Up bħala USB OTG Gadget
Iftaħ terminal fuq il-Pi u segwi din il-proċedura:

  • Issettja s-sewwieq USB għal dwc2
    eku “dtoverlay=dwc2” | sudo tee -a /boot/config.txt
  • Ippermetti s-sewwieq dwc2
    eku “dwc2” | sudo tee -a /etc/modules
  • Ippermetti s-sewwieq kompost lib
    eku “lib kompost” | sudo tee -a /etc/modules
  • Ippermetti l-gadget MIDI 
    eku “g_midi” | sudo tee -a /etc/modules

Oħloq l-iskrittura tal-konfigurazzjoni:

  • Oħloq il- file
    sudo touch /usr/bin/midi_over_usb
  • Jagħmluha eżekutibbli
    sudo chmod +x /usr/bin/midi_over_usb
  • Editjaha b'Nano
    sudo nano /usr/bin/midi_over_usb

Paste dan li ġej fil- file, tagħmel edits għall-prodott u l-kordi tal-manifattur kif meħtieġ. 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.0bc0 kordi/ 0200x2 echo “fedcba0” > strings/409x9876543210/serialnumber echo “OSA Electronics” > strings/0x409/manufacturer echo “MIDI USB Device” > strings/0x409/product ls /sys/class/udc > UDC Exit Nano > UDC Exit Nano file (Ctrl+X, Y, ritorn). Żid sejħa għall-iskript għal rc.local, sabiex tesegwixxi fuq kull startup. sudo nano /etc/rc.local Żid il-linja li ġejja qabel “exit0” /usr/bin/midi_over_usb Ħruġ Nano u ssalva l- file u reboot il-Pi. sudo reboot Elenka l-portijiet MIDI disponibbli. amidi -l Jekk il-MIDI huwa kkonfigurat sew, l-aħħar kmand għandu joħroġ xi ħaġa simili għal: Dir Device Name IO hw:0,0 f_midi IO hw:0,0 f_midi

Installa Libreriji Python

Din it-taqsima se tispjega kif tinstalla l-libreriji preferuti tagħna għal Python 2.x.

MIDO

Mido hija librerija faċli biex tużah għall-immaniġġjar tad-dejta MIDI. Jiddependi fuq il-backend rt-midi, il-librerija asound, u Jack. Daħħal il-kmandi li ġejjin f'sekwenza: L-output għandu juri port wieħed 'Midi Through' u port ieħor. Jekk dan huwa l-każ, kollox sew. *Nota: f'Mido, l-isem tal-port huwa s-sekwenza kollha magħluqa fi kwotazzjonijiet singoli, iżda huwa possibbli li l-isem jinqata 'ma' l-istring qabel il-kolon. Fuq din il-magna, is-sekwenza hija: 'f_midi:f_midi 16:0'. Per example, dawn iż-żewġ kmandi huma ekwivalenti

PIGPIO

Aħna nużaw il-librerija tal-pigpio biex nagħmlu interface mal-pinnijiet GPIO. Sibna li din il-librerija hija aktar stabbli u flessibbli mill-metodu standard ta 'interfacing mal-ħardwer tal-Pi (RPi.GPIO). Jekk trid tuża librerija oħra, editja l-kodiċi kif xieraq. Biex tinstalla l-librerija pigpio, segwi l-istruzzjonijiet hawn: http://abyz.me.uk/rpi/pigpio/download.html Qabel tmexxija kollha ta 'l-examples hawn taħt, għandek tibda s-servizz pigpio jekk ma jsirx:

Python Eżamples

L-examples jużaw ukoll il-funzjoni tal-interp tal-librerija numpy bħala mod faċli biex timmappa bejn żewġ firxiet. Użajna Reaper biex nibagħtu u nirċievu data. Il-Pi huwa kkonfigurat bħala output MIDI tal-Hardware fil-menu tal-preferenzi ta 'Reaper.

Ikkontrolla GPIO b'Dejta tan-Nota (eżample_1_key_press.py) Dan example turi kif:

  • Isma' għal 3 avvenimenti speċifiċi ta' note-on u note-off billi tuża kundizzjoni sempliċi
  • Aqbad l-eċċezzjonijiet li jinqalgħu meta tintbagħat dejta mhux nota lill-Pi (eż. dejta tat-trasport minn sekwencer)
  • Ippjana l-veloċità tan-nota mal-PWM tal-pin tal-ħruġ

Importa l-libreriji rilevanti, oħloq l-oġġett pi mil-librerija pigpio, u tiftaħ il-port tal-ħruġ: Il-blokk try/catch huwa li taqbad l-iżbalji li jinqalgħu minn tipi oħra ta 'data MIDI li qed tintbagħat (eż. kontrolli tat-trasport eċċ.). filwaqt li Veru: ipprova: #Dan jiffiltra d-dejta kollha li mhix nota għal msg fil-port.iter_pending(): # jekk ikun hemm messaġġ pendenti if(msg.type == 'note_on'): # jekk huwa Note On message out = interp(msg.velocity, [0,127],[0,255]) # veloċità tal-iskala minn 0-127 sa 0-255 #iffiltra d-dejta bin-numru tan-nota 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) inkella: # jekk il-messaġġ mhuwiex Nota Fuq (eż. Nota Mitfi) 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) ħlief AttributeError bħala żball: print(“Żball ħlief”) jgħaddi

Ikkontrolla GPIO b'Mod u Pitch Wheels (eżample_2_wheels.py)
Dan example turi kif:

  • Isma għal Pitch u Mod Data u ffiltrahom skond it-tip
  • Map id-data mal-PWM tal-pin tal-output

Dan example hija simili għal dan ta 'hawn fuq, b'dawn it-tipi ta' messaġġi:

  • Ir-rota Pitch hija tip pitchwheel b'valur ta' msg.pitch
  • Ir-Rota Mod hija tip ta' Kontrollur Kontinwu control_change b'parametru ta' kontroll ta' msg.control = 1 (in-numru CC) u valur ta' msg.value

Oħroġ Dejta MIDI minn Avveniment GPIO (gpio_event.py)

Dan example turi kif:

  • Uża interruzzjoni biex tiskopri agħfas ta 'buttuna
  • Ibgħat dejta MIDI mill-Pi għal apparat ieħor

Iftaħ il-port tal-ħruġ, oħloq żewġ messaġġi u waqqaf il-pin GPIO bħala input. Dan example jassumi li hemm buttuna marbuta mal-pin 21, sabiex dik il-pin tmur GĦOLJA meta l-buttuna tiġi ppressata: Dawn li ġejjin huma l-funzjonijiet ta 'callback imsejħa meta l-buttuna tiġi ppressata jew rilaxxata. Il-funzjoni tal-output ports send() sempliċement tibgħat il-messaġġ barra mill-port: Is-semmiegħa tar-callback jimxu fl-isfond u m'għandhomx bżonn aktar attenzjoni:

Daqq ta' MIDI File

Dan example turi kif:

  • Tagħbija MIDI file fl-ambjent tal-ipprogrammar
  • Daqq tal- file .

Dan examples jassumi li għandek MIDI file imsejjaħ midi_file.mid fl-istess direttorju bħall-iskrittura python tiegħek: importazzjoni mido minn mido importazzjoni MidiFile minn importazzjoni mido MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') filwaqt li Veru: għal msg fil-MidiFile('midi_file.mid').play(): port.send(msg)

Dokumenti / Riżorsi

Raspberry Pi OSA MIDI Bord [pdfManwal tal-Utent
OSA MIDI, Bord

Referenzi

Ħalli kumment

L-indirizz elettroniku tiegħek mhux se jiġi ppubblikat. L-oqsma meħtieġa huma mmarkati *