Raspberry Pi OSA MIDI одбор

Поставување Raspberry Pi за MIDI
Овој водич ќе покаже како да земете свежо инсталиран Raspberry Pi и да го поставите како MIDI I/O уред што може да се открие со ОС. Исто така, ќе обезбеди некои ексampЛесно користење на различни библиотеки на Python за внесување на MIDI податоци во и надвор од програмската средина. АЖУРИРАЊЕ – 11 септември 2021 година.: Овој водич е ажуриран за да се поправат некои проблеми со најновата верзија на оперативниот систем Raspberry Pi, исто така можете да преземете целосна слика со претходно инсталирани скрипти и целосно конфигурирана овде.
Што ни треба
- Raspberry Pi A+/B+/2/3B/3B+/4B
- MIDI табла за Raspberry Pi
- MicroSD картичка• Сет од 4 најлонски завртки M2.5
- Сет од 4 најлони M2.5*11mm Женски до Женски
- Сет од 4 најлони M2.5*5mm Машко до женско стегање
Собрание
Користете ги најлонските завртки и шрафовите за да го склопите Raspberry Pi заедно со плочата MIDI, како што е прикажано на сликата подолу:

Поставување за прв пат
Ги тестиравме сите ексampво овој документ на Pi 4B со користење на Rasperry Pi OS, верзија мај 2020 година). Првиот пат, потребно е да користите екран и тастатура за да го поставите Pi up. Потоа, користете го вашиот метод на избор за да пристапите до ОС на Pi. Сите чекори се задолжителни освен ако не е поинаку наведено
Инсталација
Ажурирање/Надградба
Направете ажурирање и надградба како што е опишано овде: https://www.raspberrypi.org/documentation/raspbian/updating.md
Мрежна конфигурација (опционално)
Ако внесувате SSH од друга машина во Pi, вреди да му дадете на Pi фиксна IP адреса: https://www.modmypi.com/blog/how-to-give-your-raspberry-pi-a-static-ip-address-update Исто така, добра идеја е да ги додадете поставките за мрежната безбедност на Pi, така што тој автоматски ќе се поврзе на мрежата: https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
Поставете го Pi Up како USB OTG гаџет
Отворете терминал на Pi и следете ја оваа постапка:
- Поставете го двигателот за USB на dwc2
ехо „dtoverlay=dwc2“ | sudo tee -a /boot/config.txt - Овозможете го двигателот dwc2
ехо „dwc2“ | sudo tee -a /etc/modules - Овозможете го композитниот двигател lib
ехо „lib composite“ | sudo tee -a /etc/modules - Овозможете го гаџетот MIDI
ехо „g_midi“ | sudo tee -a /etc/modules
Направете ја скриптата за конфигурација:
- Создадете го file
sudo touch /usr/bin/midi_over_usb - Направете го извршна
sudo chmod +x /usr/bin/midi_over_usb - Уредете го со Нано
sudo nano /usr/bin/midi_over_usb
Залепете го следново во file, правејќи уредувања на жиците на производот и производителот по потреба. 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 USB echo 1.0.0 mkdir -p жици/ 0x0200 echo „fedcba2“ > стрингови/0x409/сериски број ехо „OSA Electronics“ > жици/9876543210x0/производителско ехо „MIDI USB Device“ > стрингови/409x0/производ ls /sys/noDC >зачувај го USA/class/ file (Ctrl+X, Y, враќање). Додајте повик до скриптата до rc.local, за да се извршува при секое стартување. sudo nano /etc/rc.local Додадете ја следнава линија пред „exit0“ /usr/bin/midi_over_usb Излезете од Nano и зачувајте го file и рестартирајте го Pi. sudo reboot Наведете ги достапните MIDI порти. amidi -l Ако MIDI е правилно конфигуриран, последната команда треба да даде нешто слично на: Dir Device Name IO hw:0,0 f_midi IO hw:0,0 f_midi
Инсталирајте ги библиотеките на Python
Овој дел ќе објасни како да ги инсталирате нашите претпочитани библиотеки за Python 2.x.
МИДО
Mido е библиотека лесна за употреба за ракување со MIDI податоци. Се потпира на rt-midi заднината, библиотеката на звук и Џек. Внесете ги следните команди во низа: На излезот треба да се прикаже една порта „Midi Through“ и една дополнителна порта. Ако е така, се е во ред. *Забелешка: во Mido, името на портата е целата низа затворена во единечни наводници, но можно е да се скрати името на низата пред две точки. На оваа машина, низата е: 'f_midi:f_midi 16:0'. За прample, овие две команди се еквивалентни
ПИГПИО
Ја користиме библиотеката pigpio за интерфејс со GPIO пиновите. Откривме дека оваа библиотека е постабилна и пофлексибилна од стандардниот метод за поврзување со хардверот на Pi (RPi.GPIO). Ако сакате да користите друга библиотека, уредете го кодот соодветно. За да ја инсталирате библиотеката Pigpio, следете ги упатствата овде: http://abyz.me.uk/rpi/pigpio/download.html Пред водење на сите на ексampкако подолу, треба да ја започнете услугата Pigpio ако не е завршена:
Пајтон прampлес
ПоранешниотampИсто така, ја користат интерп функцијата на numpy библиотеката како лесен начин за мапирање помеѓу два опсези. Го користевме Reaper за испраќање и примање податоци. Pi е конфигуриран како хардверски MIDI излез во менито за преференци на Reaper.
Контролирајте го GPIO со податоци за белешки (прample_1_key_press.py) Овој прampле покажува како да:
- Слушајте 3 специфични настани за белешка и забелешка користејќи едноставна состојба
- Фатете ги исклучоците што се појавуваат кога податоците без белешки се испраќаат до Pi (на пр. транспортни податоци од секвенционер)
- Мапирајте ја брзината на нотата на PWM на излезната игла
Увезете ги релевантните библиотеки, креирајте го објектот pi од библиотеката pigpio и отворете ја излезната порта: Блокот try/catch е да ги фати грешките што произлегуваат од другите типови MIDI податоци што се испраќаат (на пр. контроли за транспорт итн.). додека Вистина: обидете се: #Ова ги филтрира сите податоци што не се забелешки за пораката во port.iter_pending(): # ако има порака на чекање if(msg.type == 'note_on'): # if it is Note On порака излезе = interp(msg.velocity, [0,127],[0,255]) # брзина на скала од 0-127 до 0-255 #филтрирај ги податоците по број на белешка 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: # ако пораката не е Забелешка вклучена (на пр. Забелешка Исклучено) 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) освен AttributeError as error: print („Грешка исклучена“) помине
Контролирајте го GPIO со Mod и Pitch Wheels (прample_2_wheels.py)
Овој ексampле покажува како да:
- Слушајте ги податоците за Pitch и Mod и филтрирајте ги по тип
- Мапирајте ги податоците на PWM на излезниот пин
Овој ексample е сличен на горенаведеното, со овие типови пораки:
- Тркалото Pitch е тип pitchwheel со вредност msg.pitch
- Mod Wheel е Континуиран контролер од типот control_change со контролен параметар msg.control = 1 (бројот CC) и вредност msg.value
Изнеси MIDI податоци од настан GPIO (gpio_event.py)
Овој ексampле покажува како да:
- Користете прекин за да откриете притискање на копче
- Испратете MIDI податоци од Pi на друг уред
Отворете ја излезната порта, креирајте две пораки и поставете го GPIO пинот како влез. Овој ексampПретпоставува дека има копче врзано за пинот 21, така што иглата оди ВИСОКО кога ќе се притисне копчето: Следниве се функциите за повратен повик што се повикуваат кога копчето е притиснато или отпуштено. Функцијата за излезни порти send() едноставно ја испраќа пораката надвор од портата: Слушателите за повратен повик работат во позадина и не им треба повеќе внимание:
Репродукција на MIDI File
Овој ексampле покажува како да:
- Вчитајте MIDI file во програмската средина
- Репродукција на file .
Овој ексamples претпоставува дека имате MIDI file наречен midi_file.mid во истиот директориум како и вашата python скрипта: увезете mido од mido import MidiFile од увоз на мидо МетаПорака порта = mido.open_output ('f_midi') mid = MidiFile('midi_file.mid') додека True: за пораки во MidiFile('midi_file.mid').play(): port.send(msg)
Документи / ресурси
![]() |
Raspberry Pi OSA MIDI одбор [pdf] Упатство за користење OSA MIDI, одбор |




