Buah prambus-Pi-OSA-MIDI-Board-LOGO

Buah prambus Pi OSA Midi Board

Buah prambus-Pi-OSA-MIDI-Board-PRODUCT

Nyetél Raspberry Pi pikeun MIDI

Pituduh ieu bakal nunjukkeun kumaha nyandak Raspberry Pi anu nembe dipasang sareng dioperasikeun salaku alat MIDI I/O anu tiasa dipanggihan ku OS. Ogé bakal nyadiakeun sababaraha examples ngagunakeun rupa-rupa perpustakaan Python pikeun meunangkeun data MIDI asup jeung kaluar lingkungan programming. UPDATE - Sep 11, 2021.: Pitunjuk ieu parantos diropéa pikeun ngalereskeun sababaraha masalah sareng versi Raspberry Pi OS pang anyarna, anjeun ogé tiasa ngaunduh gambar lengkep sareng skrip anu tos dipasang sareng dikonpigurasikeun di dieu.

Naon urang kudu

  • Buah prambus Pi A+/B+/2/3B/3B+/4B
  • MIDI Board pikeun buah prambus Pi
  • Hiji Kartu MicroSD • Nyetél 4 Nylon M2.5 Screws
  • Nyetél 4 nilon M2.5 * 11mm bikang keur Standoffs bikang
  • Nyetél 4 nilon M2.5 * 5mm jalu jeung Standoffs bikang

Majelis

Anggo screws nilon sareng standoffs pikeun ngarakit Raspberry Pi sareng Midi Board, sapertos anu dipidangkeun dina gambar di handap ieu:

Buah prambus-Pi-OSA-MIDI-Board-1

Setélan munggaran

Urang diuji sakabeh examples dina dokumén ieu dina Pi 4B nganggo Rasperry Pi OS, versi Méi 2020). Pertama kali, perlu ngagunakeun layar tur keyboard pikeun nyetél Pi up. Teras, paké metodeu pilihan anjeun pikeun ngaksés OS Pi. Sadaya léngkah anu wajib iwal disebutkeun béda

Pamasangan

Update / Ngaronjatkeun
Laksanakeun apdet sareng ningkatkeun sakumaha anu dijelaskeun di dieu: https://www.raspberrypi.org/documentation/raspbian/updating.md

Konfigurasi Jaringan (Opsional)
Lamun anjeun SSH'ing tina mesin sejen kana Pi, éta worthwhile méré Pi alamat IP tetep: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Éta ogé mangrupakeun ide nu sae pikeun nambahkeun setelan kaamanan jaringan ka Pi supados otomatis nyambung ka jaringan: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Atur Pi Up salaku USB OTG Gadget
Buka terminal dina Pi tur turutan prosedur ieu:

  • Setel panggerak USB ka dwc2
    gema "dtoverlay = dwc2" | sudo majalengka -a /boot/config.txt
  • Aktipkeun supir dwc2
    gema "dwc2" | sudo tee -a /etc/modules
  • Aktipkeun supir komposit lib
    gema "lib komposit" | sudo tee -a /etc/modules
  • Aktipkeun gadget MIDI 
    gema "g_midi" | sudo tee -a /etc/modules

Jieun skrip konfigurasi:

  • Nyiptakeun file
    sudo touch /usr/bin/midi_over_usb
  • Jantenkeun laksana
    sudo chmod +x /usr/bin/midi_over_usb
  • Édit ku Nano
    sudo nano /usr/bin/midi_over_usb

Tempelkeun di handap ieu kana file, nyieun éditan kana produk jeung pabrik string sakumaha diperlukeun. 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 # echoB >1.0.0. 0x0200 echo "fedcba2" > strings/0x409/serialnumber echo "OSA Electronics" > strings/9876543210x0/producer echo "MIDI USB Device" > strings/409x0/product ls /sys/class/udc > UDC Exit Nano jeung simpen file (Ctrl+X, Y, mulang). Nambahkeun panggero kana naskah rc.local, meh executes on unggal ngamimitian. sudo nano /etc/rc.local Tambahkeun garis di handap ieu sateuacan "exit0" /usr/bin/midi_over_usb Kaluar Nano teras simpen file sareng reboot Pi. sudo reboot Daptar palabuhan MIDI anu sayogi. amidi -l Lamun MIDI geus ngonpigurasi leres, paréntah panungtungan kedah kaluaran hal sarupa: Dir Ngaran Alat IO hw: 0,0 f_midi IO hw:0,0 f_midi

Pasang Perpustakaan Python

bagian ieu bakal ngajelaskeun kumaha carana install perpustakaan pikaresep urang pikeun Python 2.x.

MIDO

Mido mangrupikeun perpustakaan anu gampang dianggo pikeun nanganan data MIDI. Ieu ngandelkeun backend rt-Midi, perpustakaan sora, jeung Jack. Lebetkeun paréntah di handap ieu dina urutan: Kaluaran kedah nunjukkeun hiji port 'Midi Through' sareng hiji port tambahan. Upami ieu kasusna, sadayana saé. *Catetan: dina Mido, nami port nyaéta sakabéh senar anu dikurilingan ku tanda petik tunggal, tapi kamungkinan pikeun motong nami kana senar sateuacan titik dua. Dina mesin ieu, string nyaéta: 'f_midi:f_midi 16:0'. Pikeun example, dua paréntah ieu sarua

PIGPIO

Kami nganggo perpustakaan pigpio pikeun ngahubungkeun sareng pin GPIO. Kami geus kapanggih perpustakaan ieu jadi leuwih stabil sarta fléksibel ti metoda baku tina interfacing kalawan hardware Pi urang (RPi.GPIO). Upami anjeun hoyong nganggo perpustakaan anu sanés, édit kode anu sasuai. Pikeun masang perpustakaan pigpio, tuturkeun pitunjuk di dieu: http://abyz.me.uk/rpi/pigpio/download.html Samemeh ngajalankeun sakabeh examples handap, Anjeun kudu ngamimitian layanan pigpio lamun teu rengse:

Python Examples

Mantanamples ogé ngagunakeun fungsi interp perpustakaan numpy urang salaku cara gampang peta antara dua rentang. Kami nganggo Reaper pikeun ngirim sareng nampi data. Pi dikonpigurasikeun salaku kaluaran Hardware MIDI dina menu preferensi Reaper.

Kontrol GPIO nganggo Data Catetan (example_1_key_press.py) ex ieuample nunjukkeun kumaha:

  • Dangukeun 3 acara catetan-on sareng catetan-off khusus nganggo kaayaan anu sederhana
  • Nyekel pangecualian anu timbul nalika data non-catetan dikirim ka Pi (misalna angkutan data tina sequencer)
  • Peta laju catetan ka PWM tina pin kaluaran

Impor perpustakaan relevan, nyieun objek pi ti perpustakaan pigpio, tur muka port kaluaran: Blok try / nyekel nyaéta nyekel kasalahan anu timbul tina tipe séjén data MIDI dikirim (misalna kontrol angkutan jsb). bari Leres: coba: #Ieu nyaring kaluar kabeh data non-catetan pikeun msg di port.iter_pending (): # lamun aya pesen pending lamun (msg.type == 'note_on'): # lamun éta Catetan Dina pesen kaluar = interp (msg.velocity, [0,127], [0,255]) # skala laju 0-127 ka 0-255 # nyaring data ku nomer catetan lamun (msg.note == 53): pi1.set_PWM_dutycycle (2, kaluar ) elif (msg.note == 55): pi1.set_PWM_dutycycle (3, kaluar) elif (msg.note == 57): pi1.set_PWM_dutycycle (4, kaluar) sejenna: # lamun suratna teu Catetan Dina (misalna Catetan Pareum) lamun (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) iwal AttributeError salaku kasalahan: print ("Kasalahan iwal") lulus

Kontrol GPIO sareng Mod sareng Pitch Wheels (example_2_wheels.py)
Mantan ieuample nunjukkeun kumaha:

  • Dangukeun Data Pitch sareng Mod sareng saring dumasar kana jinisna
  • Peta data kana PWM tina pin kaluaran

Mantan ieuampLe sami sareng di luhur, kalayan jinis pesen ieu:

  • Pitch wheel nyaéta jenis pitchwheel kalayan nilai msg.pitch
  • Roda Emod nyaéta Continuous Controller tipe control_change kalayan parameter kontrol msg.control = 1 (nomer CC) sareng nilai msg.value

Kaluaran Data MIDI tina Acara GPIO (gpio_event.py)

Mantan ieuample nunjukkeun kumaha:

  • Anggo interupsi pikeun ngadeteksi pencét tombol
  • Kirim data MIDI ti Pi ka alat anu sanés

Buka port kaluaran, jieun dua pesen sareng setel pin GPIO salaku input. Mantan ieuample nganggap aya tombol dihijikeun ka pin 21, ku kituna pin mana HIGH nalika tombol dipencet: Di handap ieu mangrupakeun fungsi callback disebut nalika tombol dipencet atawa dileupaskeun. Port output ngirim () fungsi saukur ngirimkeun pesen kaluar tina port nu: Nu listeners callback ngajalankeun di tukang jeung teu perlu perhatian deui:

Puter deui MIDI File

Mantan ieuample nunjukkeun kumaha:

  • Muat MIDI file dina lingkungan programming
  • Playback nu file .

Mantan ieuamples nganggap anjeun gaduh MIDI file disebut midi_file.pertengahan dina diréktori sarua salaku Aksara python Anjeun: impor mido ti mido impor MidiFile ti mido import MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') bari Leres: pikeun msg di MidiFile('midi_file.mid').maén (): port.send (msg)

Dokumén / Sumberdaya

Buah prambus Pi OSA Midi Board [pdf] Manual pamaké
OSA MIDI, Déwan

Rujukan

Ninggalkeun komentar

alamat surélék anjeun moal diterbitkeun. Widang diperlukeun ditandaan *