Raspberry Pi OSA MIDI тақтасы

MIDI үшін Raspberry Pi орнату
Бұл нұсқаулықта жаңадан орнатылған Raspberry Pi құрылғысын алу және оны операциялық жүйеде табылған MIDI енгізу/шығару құрылғысы ретінде пайдалану жолы көрсетіледі. Ол сондай-ақ кейбір бұрынғы мүмкіндіктерді бередіampБағдарламалау ортасына MIDI деректерін алу үшін әртүрлі Python кітапханаларын пайдалану. ЖАҢАРТУ – 11 жылдың 2021 қыркүйегі.: Бұл нұсқаулық Raspberry Pi операциялық жүйесінің соңғы нұсқасына қатысты кейбір мәселелерді шешу үшін жаңартылды, сонымен қатар алдын ала орнатылған сценарийлері бар толық кескінді жүктеп алуға және осы жерден толық конфигурациялауға болады.
Бізге не керек
- Raspberry Pi A+/B+/2/3B/3B+/4B
- Raspberry Pi үшін MIDI тақтасы
- MicroSD картасы•4 нейлон M2.5 бұрандалар жинағы
- 4 нейлоннан тұратын M2.5*11 мм әйелден әйелге арналған тіректердің жиынтығы
- 4 нейлоннан тұратын M2.5*5мм еркек пен әйелге арналған тіректердің жиынтығы
Ассамблея
Төмендегі суретте көрсетілгендей Raspberry Pi-ді MIDI тақтасымен бірге жинау үшін нейлон бұрандалары мен тіректерді пайдаланыңыз:

Бірінші рет орнату
Біз барлық бұрынғыларды сынадықampRasperry Pi OS пайдаланатын Pi 4B құрылғысында, 2020 жылғы мамырдағы нұсқасы). Бірінші рет Pi орнату үшін экран мен пернетақтаны пайдалану қажет. Содан кейін Pi операциялық жүйесіне қол жеткізу үшін таңдау әдісін пайдаланыңыз. Егер басқаша көрсетілмесе, барлық қадамдар міндетті болып табылады
Орнату
Жаңарту/Жаңарту
Мұнда сипатталғандай жаңартуды және жаңартуды орындаңыз: https://www.raspberrypi.org/documentation/raspbian/updating.md
Желі конфигурациясы (қосымша)
Егер сіз басқа құрылғыдан Pi-ге SSH қоссаңыз, 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 күйіне орнатыңыз
echo “dtoverlay=dwc2” | sudo tee -a /boot/config.txt - dwc2 драйверін қосыңыз
echo “dwc2” | sudo tee -a /etc/modules - lib композиттік драйверін қосыңыз
echo “lib composite” | sudo tee -a /etc/modules - MIDI гаджетін қосыңыз
echo “g_midi” | sudo tee -a /etc/modules
Конфигурация сценарийін жасаңыз:
- жасау file
sudo touch /usr/bin/midi_over_usb - Оны орындалатын етіп жасаңыз
sudo chmod +x /usr/bin/midi_over_usb - Оны Nano көмегімен өңдеңіз
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 # Көпфункциялы композиттік гаджет echo 0x0100 > bcd.k1.0.0Device echo 0x0200 > bcd.2Bs0 # bcd.409Bsd9876543210 > bcd.0Bsd409 0x409 echo “fedcba0” > strings/409xXNUMX/serialnumber echo “OSA Electronics” > strings/XNUMXxXNUMX/manufacturer echo “MIDI USB Device” > strings/XNUMXxXNUMX/product ls /sys/class/UDC және Exo сақтау > 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
Mido – MIDI деректерін өңдеуге арналған пайдалану оңай кітапхана. Ол rt-midi серверіне, дыбыс кітапханасына және Джекке негізделген. Келесі пәрмендерді ретімен енгізіңіз: шығыс бір «Midi Through» портын және бір қосымша портты көрсетуі керек. Егер солай болса, бәрі жақсы. *Ескертпе: Mido тілінде порт атауы жалғыз тырнақшаға алынған бүкіл жол болып табылады, бірақ атауды қос нүктенің алдындағы жолға дейін қысқартуға болады. Бұл құрылғыда жол: 'f_midi:f_midi 16:0'. Мысалыample, бұл екі команда эквивалентті
PIGPIO
Біз GPIO түйреуіштерімен интерфейс жасау үшін pigpio кітапханасын қолданамыз. Біз бұл кітапхананы Pi аппараттық құралымен (RPi.GPIO) интерфейстің стандартты әдісіне қарағанда тұрақтырақ және икемді деп таптық. Басқа кітапхананы пайдаланғыңыз келсе, кодты сәйкесінше өңдеңіз. Pigpio кітапханасын орнату үшін мына жердегі нұсқауларды орындаңыз: http://abyz.me.uk/rpi/pigpio/download.html Бұрынғылардың барлығын іске қосқанға дейінampЕгер орындалмаса, пигпио қызметін бастау керек:
Python Examples
бұрынғыamples сонымен қатар numpy кітапханасының интерп функциясын екі ауқым арасында салыстырудың оңай жолы ретінде пайдаланады. Біз деректерді жіберу және алу үшін Reaper қолданбасын пайдаландық. Pi Reaper теңшелімдер мәзірінде Аппараттық MIDI шығысы ретінде конфигурацияланған.
Ескертпе деректерімен GPIO басқару (мысалыample_1_key_press.py) Бұл бұрынғыample мынаны көрсетеді:
- Қарапайым шартты пайдаланып, 3 нақты жазба және ескертпе оқиғасын тыңдаңыз
- Жазба емес деректер Pi-ге жіберілген кезде пайда болатын ерекшеліктерді ұстаңыз (мысалы, секвенсерден тасымалдау деректері)
- Нотаның жылдамдығын шығыс түйреуіштің PWM мәніне салыңыз
Тиісті кітапханаларды импорттаңыз, pigpio кітапханасынан pi нысанын жасаңыз және шығыс портын ашыңыз: try/catch блогы жіберілетін MIDI деректерінің басқа түрлерінен (мысалы, тасымалдауды басқару элементтері, т.б.) туындайтын қателерді ұстауға арналған. while True: try: #Бұл порт.iter_pending(): # бұл хабар күтуде болса, if(msg.type == 'note_on'): # егер ол Ескертпе хабарламасы шығарылған болса. = interp(msg.velocity, [0,127],[0,255]) # шкала жылдамдығы 0-127 мен 0-255 #егер (msg.note == 53): pi1.set_PWM_dutycycle(2, шығыс) ескертпе нөмірі бойынша деректерді сүзіңіз ) elif(msg.note == 55): pi1.set_PWM_dutycycle(3, out) elif(msg.note == 57): pi1.set_PWM_dutycycle(4, out) басқа: # егер хабар Ескертпе қосулы болмаса (мысалы, Ескертпе). Өшірулі) 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: басып шығару («Қате жойылды») өту
GPIO модулін мод және қадамдық дөңгелектермен басқарыңыз (мысалыample_2_wheels.py)
Бұл бұрынғыample мынаны көрсетеді:
- Pitch және Mod деректерін тыңдаңыз және оларды түрі бойынша сүзіңіз
- Деректерді шығыс істікшелі PWM-ге салыңыз
Бұл бұрынғыample келесі хабар түрлерімен жоғарыдағыға ұқсас:
- Қадам дөңгелегі msg.pitch мәні бар қадамдық дөңгелек түрі болып табылады
- Мод дөңгелегі - msg.control = 1 басқару параметрі (CC нөмірі) және msg.value мәні бар control_change түріндегі үздіксіз контроллер.
GPIO оқиғасынан MIDI деректерін шығару (gpio_event.py)
Бұл бұрынғыample мынаны көрсетеді:
- Түймені басуды анықтау үшін үзуді пайдаланыңыз
- MIDI деректерін Pi құрылғысынан басқа құрылғыға жіберіңіз
Шығыс портын ашыңыз, екі хабарлама жасаңыз және GPIO істікшесін кіріс ретінде орнатыңыз. Бұл бұрынғыample 21 түйреуішке байланған түйме бар деп болжайды, осылайша түйме басылғанда пин ЖОҒАРЫ болады: Төменде түйме басылғанда немесе босатылғанда шақырылатын кері шақыру функциялары берілген. Шығыс порттарының send() функциясы хабарламаны порттан жай ғана жібереді: Кері қоңырауларды тыңдаушылар фондық режимде жұмыс істейді және басқа назар аударуды қажет етпейді:
MIDI ойнату File
Бұл бұрынғыample мынаны көрсетеді:
- MIDI жүктеңіз file бағдарламалау ортасында
- ойнату file .
Бұл бұрынғыampСізде MIDI бар деп болжайды file midi_ деп аталадыfile.mid сіздің питон сценарийіңізбен бірдей каталогта: mido импорттау Midi ішінен mido импорттауFile mido импортынан MetaMessage порты = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') кезінде True: Midi тіліндегі хабар үшінFile('midi_file.mid').play(): port.send(хабарлама)
Құжаттар / Ресурстар
![]() |
Raspberry Pi OSA MIDI тақтасы [pdf] Пайдаланушы нұсқаулығы OSA MIDI, тақта |




