Mafon-Pi-OSA-MIDI-Bwrdd-LOGO

Bwrdd MIDI Raspberry Pi OSA

Mafon-Pi-OSA-MIDI-Bwrdd-CYNNYRCH

Sefydlu Raspberry Pi ar gyfer MIDI

Bydd y canllaw hwn yn dangos sut i gymryd Raspberry Pi newydd ei osod a'i weithredu fel dyfais MIDI I/O y gellir ei darganfod gan OS. Bydd hefyd yn darparu rhai exampllai o ddefnyddio amrywiol lyfrgelloedd Python i gael data MIDI i mewn ac allan o'r amgylchedd rhaglennu. DIWEDDARIAD - Medi 11, 2021.: Mae'r canllaw hwn wedi'i ddiweddaru i ddatrys rhai problemau gyda'r fersiwn diweddaraf o Raspberry Pi OS, gallwch hefyd lawrlwytho delwedd lawn gyda sgriptiau wedi'u gosod ymlaen llaw ac wedi'u ffurfweddu'n llawn yma.

Yr hyn sydd ei angen arnom

  • Raspberry Pi A+/B+/2/3B/3B+/4B
  • Bwrdd MIDI ar gyfer Raspberry Pi
  • Cerdyn MicroSD • Set o 4 sgriw M2.5 neilon
  • Set o 4 neilon M2.5 * 11mm Standoff Benyw i Benyw
  • Set o 4 neilon M2.5 * 5mm Standoff Gwryw i Benyw

Cynulliad

Defnyddiwch y sgriwiau neilon a'r standoffs i gydosod y Raspberry Pi ynghyd â'r Bwrdd MIDI, fel y dangosir yn y ddelwedd isod:

Mafon-Pi-OSA-MIDI-Bwrdd-1

Gosodiad tro cyntaf

Profasom yr holl gynamples yn y ddogfen hon ar Pi 4B gan ddefnyddio Rasperry Pi OS, fersiwn Mai 2020). Y tro cyntaf, mae angen defnyddio sgrin a bysellfwrdd i sefydlu'r Pi. Wedi hynny, defnyddiwch eich dull o ddewis i gael mynediad i'r OS Pi. Mae pob cam yn orfodol oni nodir yn wahanol

Gosodiad

Diweddaru/Uwchraddio
Perfformiwch y diweddariad a'r uwchraddiad fel y disgrifir yma: https://www.raspberrypi.org/documentation/raspbian/updating.md

Ffurfwedd Rhwydwaith (Dewisol)
Os ydych chi'n SSH'ing o beiriant arall i'r Pi, mae'n werth rhoi cyfeiriad IP sefydlog i'r Pi: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Mae hefyd yn syniad da ychwanegu gosodiadau diogelwch y rhwydwaith i'r Pi fel y bydd yn cysylltu'n awtomatig â'r rhwydwaith: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Gosodwch y Pi Up fel Teclyn USB OTG
Agor terfynell ar y Pi a dilynwch y weithdrefn hon:

  • Gosodwch y gyrrwr USB i dwc2
    adlais “dtoverlay=dwc2” | sudo tee -a /boot/config.txt
  • Galluogi'r gyrrwr dwc2
    adlais “dwc2” | sudo tee -a /etc/modules
  • Galluogi'r gyrrwr cyfansawdd lib
    adlais “lib composite” | sudo tee -a /etc/modules
  • Galluogi'r teclyn MIDI 
    adlais “g_midi” | sudo tee -a /etc/modules

Creu'r sgript ffurfweddu:

  • Creu y file
    cyffwrdd sudo /usr/bin/midi_over_usb
  • Gwnewch yn weithredadwy
    sudo chmod +x /usr/bin/midi_over_usb
  • Ei olygu gyda Nano
    sudo nano /usr/bin/midi_over_usb

Gludwch y canlynol i mewn i'r file, gwneud golygiadau i'r cynnyrch a llinynnau'r gwneuthurwr yn ôl yr angen. cd /sys/kernel/config/usb_gadget/ mkdir -p midi_over_usb cd midi_over_usb adlais 0x1d6b > idVendor # Linux Foundation adlais 0x0104 > idProduct # Amlswyddogaeth Gadget Cyfansawdd adlais 0x0100 > bcdDevice1.0.0 # v0 - bcdDevice0200 # v2xp0 # 409x9876543210 - bcdDevice0 # v409xp Adlais 0x409 “fedcba0” > adlais llinynnau/409xXNUMX/rhif cyfresol “OSA Electronics” > llinynnau/XNUMXxXNUMX/gweithgynhyrchwr yn adleisio “Dyfais USB MIDI” > llinynnau/XNUMXxXNUMX/product ls /sys/class/udc > Gadael Nano UDC ac arbed file (Ctrl+X, Y, dychwelyd). Ychwanegu galwad i'r sgript i rc.local, fel ei fod yn gweithredu ar bob cychwyn. sudo nano /etc/rc.local Ychwanegwch y llinell ganlynol cyn “exit0” /usr/bin/midi_over_usb Gadael Nano ac arbed y file ac ailgychwyn y Pi. reboot sudo Rhestrwch y porthladdoedd MIDI sydd ar gael. amidi -l Os yw'r MIDI wedi'i ffurfweddu'n gywir, dylai'r gorchymyn olaf allbynnu rhywbeth tebyg i: Enw Dyfais Dir IO hw: 0,0 f_midi IO hw:0,0 f_midi

Gosod Llyfrgelloedd Python

Bydd yr adran hon yn esbonio sut i osod ein hoff lyfrgelloedd ar gyfer Python 2.x.

MIDO

Mae Mido yn llyfrgell hawdd ei defnyddio ar gyfer trin data MIDI. Mae'n dibynnu ar y backend rt-midi, y llyfrgell sain, a Jack. Mewnbynnu'r gorchmynion canlynol yn eu trefn: Dylai'r allbwn ddangos un porthladd 'Midi Trwy' ac un porthladd ychwanegol. Os yw hyn yn wir, mae popeth yn iawn. *Sylwer: yn Mido, enw'r porthladd yw'r llinyn cyfan sydd wedi'i amgáu mewn dyfyniadau sengl, ond mae'n bosibl blaendori'r enw i'r llinyn cyn y colon. Ar y peiriant hwn, y llinyn yw: 'f_midi:f_midi 16:0'. Am gynample, y ddau orchymyn hyn yn gyfatebol

PIGPIO

Rydym yn defnyddio'r llyfrgell pigpio i ryngwynebu â'r pinnau GPIO. Rydym wedi canfod bod y llyfrgell hon yn fwy sefydlog a hyblyg na'r dull safonol o ryngwynebu â chaledwedd y Pi (RPi.GPIO). Os ydych chi am ddefnyddio llyfrgell arall, golygwch y cod yn unol â hynny. I osod y llyfrgell pigpio, dilynwch y cyfarwyddiadau yma: http://abyz.me.uk/rpi/pigpio/download.html Cyn rhedeg pob un o'r cynamples isod, dylech ddechrau'r gwasanaeth pigpio os na chaiff ei wneud:

Python Examples

Mae'r cynampMae hefyd yn defnyddio swyddogaeth interp y llyfrgell numpy fel ffordd hawdd o fapio rhwng dwy ystod. Fe ddefnyddion ni Reaper i anfon a derbyn data. Mae'r Pi wedi'i ffurfweddu fel allbwn MIDI Caledwedd yn newislen dewisiadau Reaper.

Rheoli GPIO gyda Data Nodyn (example_1_key_press.py) Mae hyn yn exampMae le yn dangos sut i:

  • Gwrandewch am 3 digwyddiad penodol i nodi nodiadau a nodiadau gan ddefnyddio amod syml
  • Dal yr eithriadau sy'n codi pan anfonir data di-nodyn i'r Pi (ee data cludiant o ddilyniannydd)
  • Mapiwch y cyflymder nodyn i PWM y pin allbwn

Mewnforio'r llyfrgelloedd perthnasol, creu'r gwrthrych pi o'r llyfrgell pigpio, ac agor y porthladd allbwn: Y bloc ceisio / dal yw dal y gwallau sy'n deillio o fathau eraill o ddata MIDI sy'n cael eu hanfon (ee rheolyddion trafnidiaeth ac ati). tra Gwir: ceisiwch: # Mae hwn yn hidlo'r holl ddata di-nodyn ar gyfer msg yn port.iter_pending(): # os oes neges yn yr arfaeth if(msg.type == 'note_on'): # os yw'n Nodyn Ar neges allan = interp(msg.velocity, [0,127],[0,255]) # cyflymder graddfa o 0-127 i 0-255 # hidlo'r data yn ôl rhif nodyn os(msg.note == 53): pi1.set_PWM_dutycycle(2, allan ) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, allan) elif(msg.note == 57): pi1.set_PWM_dutycycle(4, allan) arall: # os nad yw'r neges yn Nodyn Ymlaen (ee Nodyn I ffwrdd) 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) ac eithrio AttributeError fel gwall: print("Gwall wedi'i eithrio”) pas

Rheoli GPIO gyda Mod a Pitch Wheels (example_2_wheels.py)
Mae'r cynampMae le yn dangos sut i:

  • Gwrandewch am Ddata Traw a Mod a'u hidlo yn ôl math
  • Mapiwch y data i PWM y pin allbwn

Mae'r cynampMae le yn debyg i'r uchod, gyda'r mathau hyn o negeseuon:

  • Mae'r olwyn traw yn olwyn traw math gyda gwerth msg.pitch
  • Mae Olwyn y Mod yn Rheolydd Parhaus Math control_change gyda pharamedr rheoli o msg.control = 1 (y rhif CC) a gwerth msg.value

Allbwn Data MIDI o Ddigwyddiad GPIO (gpio_event.py)

Mae'r cynampMae le yn dangos sut i:

  • Defnyddiwch ymyriad i ganfod gwasg botwm
  • Anfon data MIDI o'r Pi i ddyfais arall

Agorwch y porthladd allbwn, creu dwy neges a gosod y pin GPIO fel mewnbwn. Mae'r cynampMae le yn cymryd yn ganiataol bod botwm wedi'i glymu i pin 21, fel bod y pin yn mynd yn UCHEL pan fydd y botwm yn cael ei wasgu: Mae'r canlynol yn swyddogaethau galw'n ôl a elwir pan fydd y botwm yn cael ei wasgu neu ei ryddhau. Mae swyddogaeth anfon () porthladdoedd allbwn yn syml yn anfon y neges allan o'r porthladd: Mae'r gwrandawyr galwad yn ôl yn rhedeg yn y cefndir ac nid oes angen mwy o sylw arnynt:

Chwarae MIDI yn ôl File

Mae'r cynampMae le yn dangos sut i:

  • Llwythwch MIDI file yn yr amgylchedd rhaglennu
  • Chwarae yn ôl y file .

Mae'r cynampmae les yn cymryd bod gennych MIDI file gelwir midi_file.mid yn yr un cyfeiriadur â'ch sgript python: mewnforio mido o mido import MidiFile o mido mewnforio MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') tra Gwir: am msg yn MidiFile('midi_file.mid').chwarae(): port.send(msg)

Dogfennau / Adnoddau

Bwrdd MIDI Raspberry Pi OSA [pdfLlawlyfr Defnyddiwr
OSA MIDI, Bwrdd

Cyfeiriadau

Gadael sylw

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Mae meysydd gofynnol wedi'u marcio *