रास्पबेरी-पी-ओएसए-एमआयडीआय-बोर्ड-लोगो

रास्पबेरी Pi OSA MIDI बोर्ड

रास्पबेरी-पी-ओएसए-एमआयडीआय-बोर्ड-उत्पादन

MIDI साठी रास्पबेरी पाई सेट करत आहे

हे मार्गदर्शक नवीन स्थापित केलेले रास्पबेरी पाई कसे घ्यावे आणि ते OS-शोधण्यायोग्य MIDI I/O उपकरण म्हणून कसे चालवायचे ते दर्शवेल. तसेच काही माजी प्रदान करेलampप्रोग्रामिंग वातावरणात आणि बाहेर MIDI डेटा मिळविण्यासाठी विविध पायथन लायब्ररी वापरणे. अद्यतन – 11 सप्टेंबर 2021.: नवीनतम रास्पबेरी Pi OS आवृत्तीसह काही समस्यांचे निराकरण करण्यासाठी हे मार्गदर्शक अद्यतनित केले गेले आहे, तुम्ही पूर्व-स्थापित स्क्रिप्टसह संपूर्ण प्रतिमा डाउनलोड करू शकता आणि येथे पूर्णपणे कॉन्फिगर करू शकता.

आम्हाला काय हवे आहे

  • रास्पबेरी Pi A+/B+/2/3B/3B+/4B
  • रास्पबेरी पाईसाठी MIDI बोर्ड
  • एक मायक्रोएसडी कार्ड•4 नायलॉन M2.5 स्क्रूचा संच
  • 4 नायलॉन M2.5*11mm महिला ते महिला स्टँडऑफचा संच
  • 4 नायलॉन M2.5*5mm पुरुष ते महिला स्टँडऑफचा संच

विधानसभा

रास्पबेरी पाई एकत्र करण्यासाठी MIDI बोर्डसह नायलॉन स्क्रू आणि स्टँडऑफ वापरा, खालील प्रतिमेवर दर्शविल्याप्रमाणे:

रास्पबेरी-पी-ओएसए-एमआयडीआय-बोर्ड-1

प्रथमच सेटअप

आम्ही सर्व माजी चाचणी केलीamples या दस्तऐवजातील Pi 4B वर Rasperry Pi OS, आवृत्ती मे 2020 वापरून). प्रथमच, Pi सेट करण्यासाठी स्क्रीन आणि कीबोर्ड वापरणे आवश्यक आहे. त्यानंतर, Pi च्या OS मध्ये प्रवेश करण्यासाठी तुमची निवड पद्धत वापरा. अन्यथा नमूद केल्याशिवाय सर्व चरण अनिवार्य आहेत

स्थापना

अपडेट/अपग्रेड करा
येथे वर्णन केल्याप्रमाणे अपडेट आणि अपग्रेड करा: 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 अप USB OTG गॅझेट म्हणून सेट करा
Pi वर टर्मिनल उघडा आणि या प्रक्रियेचे अनुसरण करा:

  • USB ड्रायव्हर dwc2 वर सेट करा
    इको “dtoverlay=dwc2” | sudo tee -a /boot/config.txt
  • dwc2 ड्राइव्हर सक्षम करा
    इको “dwc2” | sudo tee -a /etc/modules
  • lib कंपोझिट ड्राइव्हर सक्षम करा
    इको “lib कंपोजिट” | 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 # मल्टीफंक्शन कंपोझिट गॅझेट इको 0x0100 > bcdir_1.0.0 > bcd0 > USB0200p2 0x409 > 9876543210x0 echo “fedcba409” > स्ट्रिंग्स/0x409/सीरियल नंबर इको “OSA इलेक्ट्रॉनिक्स” > स्ट्रिंग्स/0x409/निर्माता इको “MIDI USB डिव्हाइस” > स्ट्रिंग्स/XNUMXxXNUMX/उत्पादन ls /sys/class/Dcno Ex file (Ctrl+X, Y, रिटर्न). स्क्रिप्टला rc.local वर कॉल जोडा, जेणेकरून ते प्रत्येक स्टार्टअपवर कार्यान्वित होईल. sudo nano /etc/rc.local “exit0” च्या आधी खालील ओळ जोडा /usr/bin/midi_over_usb नॅनोमधून बाहेर पडा आणि सेव्ह करा file आणि Pi रीबूट करा. sudo reboot उपलब्ध MIDI पोर्ट्सची यादी करा. amidi -l जर MIDI योग्यरितीने कॉन्फिगर केले असेल, तर शेवटच्या कमांडने यासारखे काहीतरी आउटपुट केले पाहिजे: Dir डिव्हाइसचे नाव IO hw:0,0 f_midi IO hw:0,0 f_midi

पायथन लायब्ररी स्थापित करा

Python 2.x साठी आमची पसंतीची लायब्ररी कशी इन्स्टॉल करायची हे हा विभाग स्पष्ट करेल.

MIDO

MIDI डेटा हाताळण्यासाठी Mido ही वापरण्यास सोपी लायब्ररी आहे. हे rt-midi बॅकएंड, asound लायब्ररी आणि जॅकवर अवलंबून आहे. खालील आदेश अनुक्रमाने इनपुट करा: आउटपुटमध्ये एक 'मिडी थ्रू' पोर्ट आणि एक अतिरिक्त पोर्ट दिसला पाहिजे. जर असे असेल तर सर्व काही ठीक आहे. *टीप: मिडोमध्ये, पोर्टचे नाव एकल अवतरणांमध्ये बंद केलेली संपूर्ण स्ट्रिंग आहे, परंतु कोलनच्या आधी स्ट्रिंगमध्ये नाव कापून टाकणे शक्य आहे. या मशीनवर, स्ट्रिंग आहे: 'f_midi:f_midi 16:0'. उदाample, या दोन आज्ञा समतुल्य आहेत

PIGPIO

आम्ही GPIO पिन सह इंटरफेस करण्यासाठी pigpio लायब्ररी वापरतो. आम्हाला ही लायब्ररी Pi च्या हार्डवेअर (RPi.GPIO) सह इंटरफेस करण्याच्या मानक पद्धतीपेक्षा अधिक स्थिर आणि लवचिक असल्याचे आढळले आहे. तुम्हाला दुसरी लायब्ररी वापरायची असल्यास, त्यानुसार कोड संपादित करा. पिगपिओ लायब्ररी स्थापित करण्यासाठी, येथे दिलेल्या सूचनांचे अनुसरण करा: http://abyz.me.uk/rpi/pigpio/download.html आधी माजी सर्व चालूampखाली, तुम्ही पिगपिओ सेवा सुरू केली नाही तर:

पायथन उदाampलेस

माजीamples numpy library च्या interp फंक्शनचा वापर दोन श्रेणींमध्ये मॅप करण्याचा सोपा मार्ग म्हणून करते. डेटा पाठवण्यासाठी आणि प्राप्त करण्यासाठी आम्ही रीपरचा वापर केला. रीपरच्या प्राधान्य मेनूमध्ये Pi हार्डवेअर MIDI आउटपुट म्हणून कॉन्फिगर केले आहे.

नोट डेटासह GPIO नियंत्रित करा (उदाample_1_key_press.py) हे माजीampकसे करायचे ते दाखवते:

  • साधी अट वापरून 3 विशिष्ट नोट-ऑन आणि नोट-ऑफ इव्हेंटसाठी ऐका
  • नॉन-नोट डेटा Pi वर पाठवला जातो तेव्हा उद्भवणारे अपवाद पकडा (उदा. सिक्वेन्सरकडून वाहतूक डेटा)
  • आउटपुट पिनच्या PWM वर नोटचा वेग मॅप करा

संबंधित लायब्ररी आयात करा, pigpio लायब्ररीमधून pi ऑब्जेक्ट तयार करा आणि आउटपुट पोर्ट उघडा: ट्राय/कॅच ब्लॉक म्हणजे इतर प्रकारच्या MIDI डेटा पाठवल्या जाणार्‍या त्रुटी (उदा. वाहतूक नियंत्रणे इ.) पकडणे. while True: try: #हे port.iter_pending() मधील msg साठी सर्व गैर-नोट डेटा फिल्टर करते: # जर एखादा संदेश प्रलंबित असेल if(msg.type == 'note_on'): # जर तो 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. सेट_पीडब्लूएम_ड्युटीसायकल(४, ०) एट्रिब्यूट एरर व्यतिरिक्त त्रुटी म्हणून: प्रिंट ("त्रुटी वगळता") पास

Mod आणि Pitch Wheels सह GPIO नियंत्रित करा (उदाample_2_wheels.py)
या माजीampकसे करायचे ते दाखवते:

  • पिच आणि मॉड डेटा ऐका आणि त्यांना प्रकारानुसार फिल्टर करा
  • आउटपुट पिनच्या PWM वर डेटा मॅप करा

या माजीample हे वरील संदेश प्रकारांसारखेच आहे:

  • पिच व्हील हे msg.pitch चे मूल्य असलेले pitchwheel टाईप आहे
  • मॉड व्हील हे msg.control = 1 (CC क्रमांक) आणि msg.value चे मूल्य असलेले एक सतत कंट्रोलर प्रकार control_change आहे.

GPIO इव्हेंट (gpio_event.py) मधून MIDI डेटा आउटपुट करा

या माजीampकसे करायचे ते दाखवते:

  • बटण दाबा शोधण्यासाठी व्यत्यय वापरा
  • MIDI डेटा Pi वरून दुसर्‍या डिव्हाइसवर पाठवा

आउटपुट पोर्ट उघडा, दोन संदेश तयार करा आणि GPIO पिन इनपुट म्हणून सेट करा. या माजीample असे गृहीत धरते की पिन 21 ला एक बटण बांधलेले आहे, जेणेकरुन बटण दाबल्यावर पिन उंच जाईल: बटण दाबल्यावर किंवा सोडल्यावर कॉलबॅक कार्ये खालीलप्रमाणे आहेत. आउटपुट पोर्ट send() फंक्शन पोर्टच्या बाहेर फक्त संदेश पाठवते: कॉलबॅक श्रोते पार्श्वभूमीत चालतात आणि त्यांना अधिक लक्ष देण्याची आवश्यकता नाही:

MIDI प्लेबॅक File

या माजीampकसे करायचे ते दाखवते:

  • MIDI लोड करा file प्रोग्रामिंग वातावरणात
  • प्लेबॅक द file .

या माजीampतुमच्याकडे MIDI आहे असे गृहीत धरते file मिडी_ म्हणतातfile.mid तुमच्या python स्क्रिप्टच्या समान निर्देशिकेत: mido import Midi वरून mido आयात कराFile mido import MetaMessage पोर्ट वरून = mido.open_output('f_midi') mid = MidiFile('मिडी_file.mid') सत्य असताना: मिडी मधील संदेशासाठीFile('मिडी_file.mid').play(): port.send(msg)

कागदपत्रे / संसाधने

रास्पबेरी Pi OSA MIDI बोर्ड [pdf] वापरकर्ता मॅन्युअल
OSA MIDI, बोर्ड

संदर्भ

एक टिप्पणी द्या

तुमचा ईमेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित आहेत *