Raspberry Pi OSA MIDI დაფა
Raspberry Pi-ს დაყენება MIDI-სთვის
ეს სახელმძღვანელო გაჩვენებთ, თუ როგორ უნდა აიღოთ ახლად დაინსტალირებული Raspberry Pi და იმოქმედოთ როგორც OS-ის აღმოჩენადი MIDI I/O მოწყობილობა. ის ასევე უზრუნველყოფს ზოგიერთ ყოფილსampპითონის სხვადასხვა ბიბლიოთეკების გამოყენება MIDI მონაცემების პროგრამირების გარემოში შესასვლელად და გასასვლელად. განახლება – 11 წლის 2021 სექტემბერი.: ეს სახელმძღვანელო განახლებულია Raspberry Pi OS-ის უახლესი ვერსიის ზოგიერთი პრობლემის გადასაჭრელად, ასევე შეგიძლიათ ჩამოტვირთოთ სრული სურათი წინასწარ დაინსტალირებული სკრიპტებით და სრულად კონფიგურირებული აქ.
რაც გვჭირდება
- Raspberry Pi A+/B+/2/3B/3B+/4B
- MIDI დაფა Raspberry Pi-სთვის
- MicroSD ბარათი • 4 ნეილონის M2.5 ხრახნების ნაკრები
- კომპლექტი 4 ნეილონის M2.5 * 11 მმ მდედრობითი მდედრობითი სტანდარტები
- კომპლექტი 4 ნეილონის M2.5*5 მმ მამრობითი მდედრობითი სტანდარტების
ასამბლეა
გამოიყენეთ ნეილონის ხრახნები და სამაგრები Raspberry Pi-ს MIDI დაფასთან ერთად ასაწყობად, როგორც ეს ნაჩვენებია ქვემოთ მოცემულ სურათზე:
პირველად დაყენება
ჩვენ გამოვცადეთ ყველა ყოფილიampეს არის ამ დოკუმენტში Pi 4B-ზე Rasperry Pi OS-ის გამოყენებით, ვერსია 2020 წლის მაისი). პირველად, საჭიროა ეკრანისა და კლავიატურის გამოყენება Pi up-ის დასაყენებლად. ამის შემდეგ გამოიყენეთ თქვენი არჩევანის მეთოდი Pi-ის OS-ზე წვდომისთვის. ყველა ნაბიჯი სავალდებულოა, თუ სხვა რამ არ არის მითითებული
ინსტალაცია
განახლება/განახლება
განახორციელეთ განახლება და განახლება, როგორც აღწერილია აქ: 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 composite დრაივერის ჩართვა
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 - დაარედაქტირე ნანოსთან ერთად
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 -b1.0.0 USB -0 > bcd. 0200x2 echo „fedcba0“ > strings/409x9876543210/სერიული ნომერი echo „OSA Electronics“ > strings/0x409/მწარმოებლის ექო „MIDI USB Device“ > strings/0x409/პროდუქტი ls /sys/NaDC > კლასების შენახვა 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 2.x-ისთვის.
MIDO
Mido არის ადვილად გამოსაყენებელი ბიბლიოთეკა MIDI მონაცემების დასამუშავებლად. ის ეყრდნობა rt-midi backend-ს, asound ბიბლიოთეკას და ჯეკს. შეიყვანეთ შემდეგი ბრძანებები თანმიმდევრობით: გამოსავალზე უნდა იყოს ნაჩვენები ერთი "Midi Through" პორტი და ერთი დამატებითი პორტი. თუ ეს ასეა, მაშინ ყველაფერი კარგადაა. * შენიშვნა: Mido-ში პორტის სახელი არის მთელი სტრიქონი, რომელიც ჩასმულია ერთ ბრჭყალებში, მაგრამ შესაძლებელია სახელის შეკვეცა სტრიქონზე ორწერტილამდე. ამ მანქანაზე სტრიქონი არის: 'f_midi:f_midi 16:0'. მაგample, ეს ორი ბრძანება ექვივალენტურია
PIGPIO
ჩვენ ვიყენებთ pigpio ბიბლიოთეკას GPIO პინებთან ინტერფეისისთვის. ჩვენ აღმოვაჩინეთ, რომ ეს ბიბლიოთეკა უფრო სტაბილური და მოქნილია, ვიდრე Pi-ს აპარატურასთან ურთიერთობის სტანდარტული მეთოდი (RPi.GPIO). თუ გსურთ გამოიყენოთ სხვა ბიბლიოთეკა, შეცვალეთ კოდი შესაბამისად. Pigpio ბიბლიოთეკის დასაყენებლად მიჰყევით ინსტრუქციას აქ: http://abyz.me.uk/rpi/pigpio/download.html გაშვებამდე ყველა ყოფილიampქვემოთ, თქვენ უნდა დაიწყოთ Pigpio სერვისი, თუ ეს არ დასრულებულა:
პითონი ყოფილიamples
ყოფილმაamples ასევე იყენებს numpy ბიბლიოთეკის ინტერპ ფუნქციას, როგორც მარტივ გზას ორ დიაპაზონს შორის რუკაზე გადასატანად. ჩვენ გამოვიყენეთ Reaper მონაცემების გასაგზავნად და მისაღებად. Pi კონფიგურირებულია როგორც Hardware MIDI გამომავალი Reaper-ის პრეფერენციების მენიუში.
აკონტროლეთ GPIO შენიშვნის მონაცემებით (მაგample_1_key_press.py) ეს ყოფილიampგვიჩვენებს როგორ:
- მოუსმინეთ 3 კონკრეტულ შენიშვნა-ჩამოწერის მოვლენას მარტივი პირობის გამოყენებით
- დაიჭირეთ გამონაკლისები, რომლებიც წარმოიქმნება, როდესაც არა-შენიშვნის მონაცემები იგზავნება Pi-ზე (მაგ. მონაცემების ტრანსპორტირება სეკვენსერიდან)
- შენიშვნა სიჩქარე გამომავალი პინის PWM-ზე
შემოიტანეთ შესაბამისი ბიბლიოთეკები, შექმენით pi ობიექტი pigpio ბიბლიოთეკიდან და გახსენით გამომავალი პორტი: try/catch ბლოკი არის შეცდომების დაჭერა, რომლებიც წარმოიქმნება სხვა ტიპის MIDI მონაცემების გაგზავნისგან (მაგ. ტრანსპორტის კონტროლი და ა.შ.). ხოლო True: ცდილობენ: #ეს ფილტრავს ყველა არა-შენიშვნის მონაცემს msg-ისთვის port.iter_pending(): # თუ არის შეტყობინება მომლოდინე if(msg.type == 'note_on'): # if it is note On message out = 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 როგორც შეცდომა: print ("შეცდომის გამოკლებით") pass
მართეთ GPIO Mod და Pitch Wheels-ით (მაგample_2_wheels.py)
ეს ყოფილიampგვიჩვენებს როგორ:
- მოუსმინეთ Pitch და Mod Data და გაფილტრეთ ისინი ტიპის მიხედვით
- მონაცემების რუკა გამომავალი პინის PWM-ზე
ეს ყოფილიample მსგავსია ზემოაღნიშნულის, შემდეგი ტიპის შეტყობინებებით:
- Pitch wheel არის ტიპის pitchwheel მნიშვნელობით msg.pitch
- Mod Wheel არის უწყვეტი კონტროლერის ტიპის control_change საკონტროლო პარამეტრით msg.control = 1 (CC ნომერი) და msg.value მნიშვნელობით.
MIDI მონაცემების გამოტანა GPIO ღონისძიებიდან (gpio_event.py)
ეს ყოფილიampგვიჩვენებს როგორ:
- გამოიყენეთ შეფერხება ღილაკის დაჭერის დასადგენად
- გაგზავნეთ MIDI მონაცემები Pi-დან სხვა მოწყობილობაზე
გახსენით გამომავალი პორტი, შექმენით ორი შეტყობინება და დააყენეთ GPIO პინი შეყვანის სახით. ეს ყოფილიampვარაუდობს, რომ არის ღილაკი მიბმული 21-ე ქინძისთავზე, ასე რომ, ღილაკის დაჭერისას პინი მიდის HIGH: ქვემოთ მოცემულია გამოძახების ფუნქციები, რომლებიც გამოიძახება ღილაკის დაჭერის ან გამოშვების დროს. გამომავალი პორტების send() ფუნქცია უბრალოდ აგზავნის შეტყობინებას პორტიდან: გამოძახების მსმენელები მუშაობენ ფონზე და აღარ სჭირდებათ მეტი ყურადღება:
MIDI-ის დაკვრა File
ეს ყოფილიampგვიჩვენებს როგორ:
- ჩატვირთეთ MIDI file პროგრამირების გარემოში
- დაკვრა file .
ეს ყოფილიamples ვარაუდობს, რომ თქვენ გაქვთ MIDI file სახელად midi_file.mid იმავე დირექტორიაში, როგორც თქვენი პითონის სკრიპტი: იმპორტი mido mido import Midi-დანFile mido იმპორტიდან MetaMessage პორტიდან = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') ხოლო True: msg-ისთვის Midi-შიFile('midi_file.mid').play(): port.send(msg)
დოკუმენტები / რესურსები
![]() |
Raspberry Pi OSA MIDI დაფა [pdf] მომხმარებლის სახელმძღვანელო OSA MIDI, გამგეობა |