Raspberry-Pi-OSA-MIDI-بورڊ-لوگو

Raspberry Pi OSA MIDI بورڊ

Raspberry-Pi-OSA-MIDI-Board-PRODUCT

MIDI لاءِ Raspberry Pi ترتيب ڏيڻ

هي گائيڊ ڏيکاريندو ته ڪيئن هڪ تازو نصب ٿيل Raspberry Pi ڪيئن ورتو وڃي ۽ ان کي هڪ OS-discoverable MIDI I/O ڊيوائس طور ڪم ڪيو آهي. اهو به ڪجهه اڳواٽ مهيا ڪندوampپروگرامنگ ماحول ۾ ۽ ٻاهر MIDI ڊيٽا حاصل ڪرڻ لاءِ مختلف پٿون لائبريريون استعمال ڪرڻ جا طريقا. تازه ڪاري - سيپٽمبر 11، 2021.: هي گائيڊ اپڊيٽ ڪيو ويو آهي ڪجهه مسئلن کي حل ڪرڻ لاءِ جديد Raspberry Pi OS ورزن سان، توهان پڻ ڊائون لوڊ ڪري سگهو ٿا مڪمل تصوير اڳ ۾ نصب ٿيل اسڪرپٽس سان ۽ مڪمل طور تي ترتيب ڏنل هتي.

اسان کي ڇا گهرجي

  • Raspberry Pi A+/B+/2/3B/3B+/4B
  • MIDI بورڊ Raspberry Pi لاءِ
  • هڪ مائڪرو ايس ڊي ڪارڊ • 4 نائلون M2.5 اسڪرو جو سيٽ
  • 4 نائلون M2.5*11mm عورت کان عورت اسٽينڊ آف جو سيٽ
  • 4 نائلون M2.5*5mm مرد کان عورت جي اسٽينڊ آف جو سيٽ

اسيمبلي

Raspberry Pi کي MIDI بورڊ سان گڏ ڪرڻ لاءِ نائلون اسڪرو ۽ اسٽينڊ آف استعمال ڪريو، جيئن هيٺ ڏنل تصوير تي ڏيکاريل آهي:

Raspberry-Pi-OSA-MIDI-Board-1

پهريون ڀيرو سيٽ اپ

اسان سڀني اڳوڻن کي جانچيوamples هن دستاويز ۾ هڪ Pi 4B تي Rasperry Pi OS استعمال ڪندي، نسخو مئي 2020). پهريون ڀيرو، Pi کي سيٽ ڪرڻ لاء اسڪرين ۽ ڪيبورڊ استعمال ڪرڻ ضروري آهي. ان کان پوء، پي جي او ايس تائين رسائي حاصل ڪرڻ لاء پنهنجي پسند جو طريقو استعمال ڪريو. سڀئي مرحلا لازمي آهن جيستائين ٻي صورت ۾ بيان نه ڪيو وڃي

تنصيب

تازه ڪاري / اپ گريڊ
اپڊيٽ ڪريو ۽ اپڊيٽ ڪريو جيئن هتي بيان ڪيو ويو آهي: https://www.raspberrypi.org/documentation/raspbian/updating.md

نيٽ ورڪ ترتيب (اختياري)
جيڪڏهن توهان هڪ ٻي مشين مان SSH'ing ڪري رهيا آهيو 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 جامع" | 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
  • نانو سان ان کي تبديل ڪريو
    سودو نانو /usr/bin/midi_over_usb

ھيٺ ڏنل پيسٽ ڪريو ۾ file, پراڊڪٽ ۽ ٺاهيندڙ تارن ۾ تبديليون ڪرڻ جي ضرورت مطابق. cd /sys/kernel/config/usb_gadget/ mkdir -p midi_over_usb cd midi_over_usb echo 0x1d6b > idVendor # لينڪس فائونڊيشن ايڪو 0x0104 > idProduct # ملٽي فنڪشن جامع گيجٽ ايڪو 0x0100 > bcd1.0.0 > USB0p0200x. 2x0 گونج “fedcba409” > strings/9876543210x0/serialnumber echo “OSA Electronics” > strings/409x0/manufacturer echo “MIDI USB Device” > strings/409x0/product ls /sys/class ۽ UDC محفوظ نه ڪريو 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 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'. مثال طورampلي، اهي ٻئي حڪم برابر آهن

PIGPIO

اسان GPIO پنن سان انٽرفيس ڪرڻ لاءِ pigpio لائبريري استعمال ڪندا آهيون. اسان هن لائبريري کي Pi جي هارڊويئر (RPi.GPIO) سان مداخلت ڪرڻ جي معياري طريقي کان وڌيڪ مستحڪم ۽ لچڪدار محسوس ڪيو آهي. جيڪڏھن توھان ٻي لائبريري استعمال ڪرڻ چاھيو ٿا، ان مطابق ڪوڊ ايڊٽ ڪريو. pigpio لائبريري کي انسٽال ڪرڻ لاءِ هتي ڏنل هدايتن تي عمل ڪريو: http://abyz.me.uk/rpi/pigpio/download.html سڀ کان اڳ هلائڻ کان اڳampهيٺ ڏنل، توهان کي pigpio سروس شروع ڪرڻ گهرجي جيڪڏهن نه ڪيو ويو آهي:

پٿر سابقamples

سابقamples پڻ استعمال ڪريو numpy لائبريري جي interp فنڪشن کي ٻن حدن جي وچ ۾ نقشو ڪرڻ جو آسان طريقو. اسان ڊيٽا موڪلڻ ۽ وصول ڪرڻ لاءِ ريپر استعمال ڪيو. Pi هڪ هارڊويئر MIDI آئوٽ جي طور تي ترتيب ڏنل آهي ريپر جي ترجيحات مينيو ۾.

نوٽ ڊيٽا سان GPIO ڪنٽرول ڪريو (مثال طورample_1_key_press.py) هي exampلي ڏيکاري ٿو ته ڪيئن:

  • هڪ سادي شرط استعمال ڪندي 3 مخصوص نوٽ-آن ۽ نوٽ-آف واقعن لاءِ ٻڌو
  • انهن استثنان کي پڪڙيو جيڪي پيدا ٿين ٿا جڏهن غير نوٽ ڊيٽا پي ڏانهن موڪليو وڃي ٿو (مثال طور ٽرانسپورٽ ڊيٽا هڪ تسلسل کان)
  • نوٽ جي رفتار کي ماپ ڪريو PWM جي آئوٽ پن پن جي

لاڳاپيل لائبريرين کي درآمد ڪريو، pigpio لائبريري مان pi شئي ٺاھيو، ۽ ٻاھرين پورٽ کوليو: ڪوشش/ڪيچ بلاڪ انھن غلطين کي پڪڙڻ لاءِ آھي جيڪي MIDI ڊيٽا جي موڪليل ٻين قسمن مان پيدا ٿين ٿيون (مثال طور ٽرانسپورٽ ڪنٽرول وغيره). جڏهن ته صحيح: ڪوشش ڪريو: # هي port.iter_pending ۾ msg لاءِ سڀني غير نوٽ ڊيٽا کي فلٽر ڪري ٿو: # جيڪڏهن ڪو پيغام التوا ۾ آهي if(msg.type == 'note_on'): # جيڪڏهن اهو آهي نوٽ تي پيغام ٻاهر = interp(msg.velocity, [0,127],[0,255]) # اسڪيل جي رفتار 0-127 کان 0-255 تائين # ڊيٽا کي فلٽر ڪريو نوٽ نمبر ذريعي جيڪڏھن(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 جي غلطي جي طور تي: پرنٽ ("غلطي کان سواءِ") پاس

ڪنٽرول GPIO موڊ ۽ پچ ويلز سان (مثال طورample_2_wheels.py)
هن اڳوڻيampلي ڏيکاري ٿو ته ڪيئن:

  • پچ ۽ موڊ ڊيٽا لاءِ ٻڌو ۽ انهن کي قسم جي ذريعي فلٽر ڪريو
  • ڊيٽا کي ماپ ڪريو PWM جي آئوٽ پن پن جي

هن اڳوڻيample مٿي ڏنل آهي، انهن پيغام جي قسمن سان:

  • Pitch wheel قسم pitchwheel آهي جنهن جي قيمت msg.pitch آهي
  • Mod ويل هڪ مسلسل ڪنٽرولر قسم آهي control_change جو ڪنٽرول پيٽرولر msg.control = 1 (CC نمبر) ۽ msg.value جي قيمت سان.

GPIO ايونٽ (gpio_event.py) مان MIDI ڊيٽا ڪڍيو

هن اڳوڻيampلي ڏيکاري ٿو ته ڪيئن:

  • بٽڻ دٻائڻ لاءِ مداخلت استعمال ڪريو
  • MIDI ڊيٽا موڪليو Pi کان ٻئي ڊوائيس ڏانهن

ٻاھرين پورٽ کوليو، ٻه پيغام ٺاھيو ۽ GPIO پن کي ان پٽ طور سيٽ اپ ڪريو. هن اڳوڻيample فرض ڪري ٿو ته پن 21 سان هڪ بٽڻ جڙيل آهي، تنهن ڪري جڏهن بٽڻ کي دٻايو ويندو آهي ته پن تيز ٿي ويندو آهي: هيٺ ڏنل ڪال بڪ افعال کي سڏيو ويندو آهي جڏهن بٽڻ کي دٻايو يا جاري ڪيو ويندو آهي. ٻاھرين بندرگاھن send() فنڪشن صرف پيغام کي بندرگاھ کان ٻاھر موڪلي ٿو: ڪال بڪ ٻڌندڙ پس منظر ۾ ھلندا آھن ۽ وڌيڪ ڌيان جي ضرورت نه آھي:

پلے بیک هڪ MIDI File

هن اڳوڻيampلي ڏيکاري ٿو ته ڪيئن:

  • هڪ MIDI لوڊ ڪريو file پروگرامنگ ماحول ۾
  • پلے بیک file .

هن اڳوڻيampفرض ڪيو ته توهان وٽ هڪ MIDI آهي file midi_ سڏيوfile.mid ساڳئي ڊاريڪٽري ۾ توهان جي python اسڪرپٽ جي طور تي: mido درآمد ڪريو mido مان mido درآمد ڪريوFile mido کان درآمد MetaMessage port = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') جڏهن ته صحيح: ميڊي ۾ msg لاءِFile('midi_file.mid').play(): port.send(msg)

دستاويز / وسيلا

Raspberry Pi OSA MIDI بورڊ [pdf] استعمال ڪندڙ دستياب
OSA MIDI، بورڊ

حوالو

تبصرو ڇڏي ڏيو

توهان جو اي ميل پتو شايع نه ڪيو ويندو. گهربل فيلڊ نشان لڳل آهن *