Raspberry Pi OSA MIDI පුවරුව

MIDI සඳහා Raspberry Pi පිහිටුවීම
මෙම මාර්ගෝපදේශය මඟින් අලුතින් ස්ථාපනය කර ඇති Raspberry Pi එකක් ගන්නා ආකාරය සහ එය OS-සොයාගත හැකි MIDI I/O උපාංගයක් ලෙස ක්රියාත්මක කරන ආකාරය පෙන්වනු ඇත. එය ද සමහර හිටපු ලබා දෙනු ඇතampක්රමලේඛන පරිසරයට සහ ඉන් පිටතට MIDI දත්ත ලබා ගැනීමට විවිධ Python පුස්තකාල භාවිතා කිරීම අඩුයි. යාවත්කාලීන කිරීම – සැප්තැම්බර් 11, 2021.: නවතම Raspberry Pi OS අනුවාදය සමඟ ඇති සමහර ගැටලු විසඳීමට මෙම මාර්ගෝපදේශය යාවත්කාලීන කර ඇත, ඔබට පෙර-ස්ථාපිත ස්ක්රිප්ට් සහ සම්පූර්ණයෙන්ම වින්යාස කර ඇති සම්පූර්ණ රූපයක් බාගත කළ හැකිය.
අපට අවශ්ය දේ
- Raspberry Pi A+/B+/2/3B/3B+/4B
- Raspberry Pi සඳහා MIDI පුවරුව
- MicroSD කාඩ්පතක්•Nylon M4 ඉස්කුරුප්පු 2.5ක කට්ටලයක්
- 4 නයිලෝන් M2.5*11mm ගැහැණු සිට කාන්තා ස්ථාවරය
- 4 නයිලෝන් M2.5*5 මි.මී. පිරිමි සිට කාන්තා ස්ථාවරය
එකලස් කිරීම
පහත රූපයේ දැක්වෙන පරිදි, MIDI පුවරුව සමඟ Raspberry Pi එකලස් කිරීමට නයිලෝන් ඉස්කුරුප්පු සහ ස්ථාවරයන් භාවිතා කරන්න:

පළමු වරට පිහිටුවීම
අපි හිටපු ඔක්කොම ටෙස්ට් කළාampRasperry Pi OS භාවිතා කරමින් Pi 4B මත මෙම ලේඛනයේ les, 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 Up එක USB OTG ගැජටයක් ලෙස සකසන්න
Pi මත පර්යන්තයක් විවෘත කර මෙම ක්රියා පටිපාටිය අනුගමනය කරන්න:
- USB ධාවකය dwc2 ලෙස සකසන්න
දෝංකාරය “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 - එය නැනෝ සමඟ සංස්කරණය කරන්න
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 Compposite Gadget 0x0100 echo “fedcba1.0.0”> තන්තු/0x0200/serialnumber echo “OSA Electronics”> strings/2x0/manufacturer echo “MIDI USB Device”> තන්තු/409x9876543210/නිෂ්පාදන Nas/sids/නිෂ්පාදන සුරැකීම file (Ctrl+X, Y, return). rc.local වෙත ස්ක්රිප්ටයට ඇමතුමක් එක් කරන්න, එවිට එය සෑම ආරම්භයකම ක්රියාත්මක වේ. sudo nano /etc/rc.local "exit0" /usr/bin/midi_over_usb නැනෝ පිටවීමට පෙර පහත පේළිය එකතු කර සුරකින්න file සහ Pi නැවත ආරම්භ කරන්න. sudo reboot පවතින MIDI ports ලැයිස්තුගත කරන්න. 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 පසුබිම, asound පුස්තකාලය සහ ජැක් මත රඳා පවතී. පහත දැක්වෙන විධානයන් අනුපිළිවෙලින් ඇතුළත් කරන්න: ප්රතිදානය එක් 'මිඩි ත්රෝ' වරායක් සහ එක් අමතර තොටක් පෙන්විය යුතුය. මෙය එසේ නම්, සියල්ල හොඳයි. *සටහන: Mido හි, තොටේ නම යනු තනි උද්ධෘත වලින් කොටු කර ඇති සම්පූර්ණ තන්තුවයි, නමුත් එය මහා බඩවැලට පෙර තන්තුවට නම කපා හැරිය හැක. මෙම යන්ත්රයේ, තන්තුව වන්නේ: 'f_midi:f_midi 16:0'. උදාහරණයක් ලෙසample, මෙම විධාන දෙක සමාන වේ
පිග්පියෝ
GPIO පින් සමඟ අතුරු මුහුණත් කිරීමට අපි pigpio පුස්තකාලය භාවිතා කරමු. මෙම පුස්තකාලය Pi හි දෘඪාංග (RPi.GPIO) සමඟ සම්බන්ධ වීමේ සම්මත ක්රමයට වඩා ස්ථායී සහ නම්යශීලී බව අපට පෙනී ගොස් ඇත. ඔබට වෙනත් පුස්තකාලයක් භාවිතා කිරීමට අවශ්ය නම්, ඒ අනුව කේතය සංස්කරණය කරන්න. Pigpio පුස්තකාලය ස්ථාපනය කිරීමට, මෙහි ඇති උපදෙස් අනුගමනය කරන්න: http://abyz.me.uk/rpi/pigpio/download.html හිටපු සියල්ල ධාවනය කිරීමට පෙරampපහත දක්වා ඇති පරිදි, ඔබ විසින් සිදු නොකළහොත් pigpio සේවාව ආරම්භ කළ යුතුය:
පයිතන් එක්ස්amples
හිටපුampපරාස දෙකක් අතර සිතියම් ගත කිරීමට පහසු ක්රමයක් ලෙස les numpy library හි interp ශ්රිතය ද භාවිතා කරයි. දත්ත යැවීමට සහ ලබා ගැනීමට අපි රීපර් භාවිතා කළෙමු. රීපර්ගේ මනාප මෙනුවේ දෘඪාංග MIDI ප්රතිදානයක් ලෙස Pi වින්යාස කර ඇත.
සටහන් දත්ත සමඟ GPIO පාලනය කරන්න (උදාample_1_key_press.py) මෙය උදාample පෙන්වන්නේ කෙසේද:
- සරල කොන්දේසියක් භාවිතා කරමින් විශේෂිත සටහන් සහ සටහන්-ඕෆ් සිදුවීම් 3කට සවන් දෙන්න
- සටහන් නොවන දත්ත Pi වෙත යවන විට පැන නගින ව්යතිරේක අල්ලා ගන්න (උදා: අනුක්රමණයකින් දත්ත ප්රවාහනය කරන්න)
- ප්රතිදාන පින් එකේ PWM වෙත සටහන් ප්රවේගය සිතියම්ගත කරන්න
අදාළ පුස්තකාල ආයාත කරන්න, pigpio පුස්තකාලයෙන් pi වස්තුව සාදන්න, සහ ප්රතිදාන පෝට් එක විවෘත කරන්න: උත්සාහය/අල්ලා ගැනීම අවහිර කිරීම යනු යවන වෙනත් වර්ගවල MIDI දත්ත (උදා: ප්රවාහන පාලන ආදිය) මඟින් පැන නගින දෝෂ අල්ලා ගැනීමයි. සත්ය වන විට: උත්සාහ කරන්න: #මෙය port.iter_pending(): # පණිවිඩයක් පොරොත්තුවෙන් ඇත්නම් (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: # පණිවිඩය Note On නැතිනම් (උදා. සටහන Off) 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 හැර දෝෂයක් ලෙස: මුද්රණය (“දෝෂය හැර”) සමත්
Mod සහ Pitch Wheels සමඟ GPIO පාලනය කරන්න (උදාample_2_wheels.py)
මෙම හිටපුample පෙන්වන්නේ කෙසේද:
- Pitch සහ Mod දත්ත සඳහා සවන් දී ඒවා වර්ගය අනුව පෙරහන් කරන්න
- ප්රතිදාන පින් එකේ PWM වෙත දත්ත සිතියම්ගත කරන්න
මෙම හිටපුampමෙම පණිවිඩ වර්ග සමඟ, le ඉහත ඒවාට සමාන වේ:
- Pitch wheel යනු msg.pitch අගයක් සහිත pitchwheel වර්ගයකි
- Mod Wheel යනු msg.control = 1 (CC අංකය) හි පාලන පරාමිතියක් සහ msg.value අගයක් සහිත අඛණ්ඩ පාලක ආකාරයේ control_change වේ.
GPIO සිදුවීමකින් MIDI දත්ත ප්රතිදානය කරන්න (gpio_event.py)
මෙම හිටපුample පෙන්වන්නේ කෙසේද:
- බොත්තම එබීම හඳුනා ගැනීමට බාධාවක් භාවිතා කරන්න
- MIDI දත්ත Pi වෙතින් වෙනත් උපාංගයකට යවන්න
ප්රතිදාන තොට විවෘත කර පණිවිඩ දෙකක් සාදා GPIO පින් එක ආදානයක් ලෙස සකසන්න. මෙම හිටපුample උපකල්පනය කරන්නේ pin 21 ට බොත්තමක් බැඳ ඇති අතර, එම නිසා බොත්තම එබූ විට pin ඉහළට යයි: පහත දැක්වෙන්නේ බොත්තම එබූ විට හෝ මුදා හරින විට හැඳින්වෙන නැවත ඇමතුම් ශ්රිත වේ. ප්රතිදාන ports send() ශ්රිතය මඟින් පණිවිඩය වරායෙන් පිටතට යවයි: ආපසු ඇමතුම් සවන්දෙන්නන් පසුබිමේ ධාවනය වන අතර වැඩි අවධානයක් අවශ්ය නොවේ:
MIDI නැවත ධාවනය කරන්න File
මෙම හිටපුample පෙන්වන්නේ කෙසේද:
- MIDI එකක් පූරණය කරන්න file වැඩසටහන් පරිසරය තුළ
- ප්ලේබැක් ද file .
මෙම හිටපුampඔබ MIDI එකක් ඇතැයි උපකල්පනය කරයි file මිඩි_ ලෙස හැඳින්වේfile.ඔබේ පයිතන් ස්ක්රිප්ට් එක ඇති ඩිරෙක්ටරියේම මැද: මිඩෝ ආයාත මිඩි වෙතින් මිඩෝ ආයාත කරන්නFile මිඩෝ ආයාතයෙන් MetaMessage port = mido.open_output('f_midi') mid = MidiFile('මිඩි_file.mid') while True: Midi හි පණිවිඩ සඳහාFile('මිඩි_file.mid').play(): port.send(msg)
ලේඛන / සම්පත්
![]() |
Raspberry Pi OSA MIDI පුවරුව [pdf] පරිශීලක අත්පොත OSA MIDI, මණ්ඩලය |




