Raspberry-Pi-OSA-MIDI-Board-LOGO

Raspberry Pi OSA MIDI بورڈ

Raspberry-Pi-OSA-MIDI-Board-PRODUCT

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
  • راسبیری پائی کے لیے MIDI بورڈ
  • ایک مائیکرو ایس ڈی کارڈ•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 کو سیٹ کرنے کے لیے اسکرین اور کی بورڈ کا استعمال کرنا ضروری ہے۔ اس کے بعد، 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 پر سیٹ کریں۔
    echo "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 فاؤنڈیشن echo 0x0104 > idProduct # ملٹی فنکشن کمپوزٹ گیجٹ echo 0x0100 > bcd1.0.0 > USB0p0200x. ایکو 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 لائبریری کے انٹرپ فنکشن کو دو رینجز کے درمیان نقشہ بنانے کے آسان طریقہ کے طور پر بھی استعمال کرتا ہے۔ ہم نے ڈیٹا بھیجنے اور وصول کرنے کے لیے ریپر کا استعمال کیا۔ Pi کو ریپر کی ترجیحات کے مینو میں ہارڈ ویئر MIDI آؤٹ پٹ کے طور پر ترتیب دیا گیا ہے۔

نوٹ ڈیٹا کے ساتھ GPIO کو کنٹرول کریں (مثال کے طور پرample_1_key_press.py) یہ سابقample دکھاتا ہے کہ کیسے:

  • ایک سادہ شرط کا استعمال کرتے ہوئے 3 مخصوص نوٹ آن اور نوٹ آف ایونٹس کو سنیں۔
  • ان مستثنیات کو پکڑیں ​​جو اس وقت پیدا ہوتے ہیں جب نان نوٹ ڈیٹا Pi کو بھیجا جاتا ہے (مثال کے طور پر سیکوینسر سے ٹرانسپورٹ ڈیٹا)
  • آؤٹ پٹ پن کے PWM پر نوٹ کی رفتار کا نقشہ بنائیں

متعلقہ لائبریریوں کو درآمد کریں، pigpio لائبریری سے pi آبجیکٹ بنائیں، اور آؤٹ پٹ پورٹ کھولیں: ٹرائی/کیچ بلاک ان غلطیوں کو پکڑنا ہے جو MIDI ڈیٹا کی دیگر اقسام (مثلاً ٹرانسپورٹ کنٹرول وغیرہ) سے پیدا ہوتی ہیں۔ جبکہ درست: کوشش کریں: # یہ port.iter_pending(): # اگر کوئی پیغام زیر التواء ہے 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۔ سیٹ_PWM_dutycycle(4، 0) ماسوائے AttributeError بطور خرابی: پرنٹ ("خرابی کو چھوڑ کر") پاس

Mod اور پچ پہیوں کے ساتھ GPIO کو کنٹرول کریں (مثال کے طور پرample_2_wheels.py)
یہ سابقample دکھاتا ہے کہ کیسے:

  • پچ اور موڈ ڈیٹا کو سنیں اور انہیں قسم کے لحاظ سے فلٹر کریں۔
  • آؤٹ پٹ پن کے PWM پر ڈیٹا کا نقشہ بنائیں

یہ سابقample مندرجہ بالا کی طرح ہے، ان پیغام کی اقسام کے ساتھ:

  • پچ وہیل قسم کا پچ وہیل ہے جس کی قیمت msg.pitch ہے۔
  • موڈ وہیل ایک مسلسل کنٹرولر قسم کا کنٹرول_چینج ہے جس کا کنٹرول پیرامیٹر msg.control = 1 (CC نمبر) اور msg.value کی قدر ہے۔

GPIO ایونٹ (gpio_event.py) سے MIDI ڈیٹا آؤٹ پٹ

یہ سابقample دکھاتا ہے کہ کیسے:

  • بٹن دبانے کا پتہ لگانے کے لیے مداخلت کا استعمال کریں۔
  • MIDI ڈیٹا کو Pi سے دوسرے آلے پر بھیجیں۔

آؤٹ پٹ پورٹ کھولیں، دو پیغامات بنائیں اور GPIO پن کو بطور ان پٹ سیٹ کریں۔ یہ سابقample فرض کرتا ہے کہ پن 21 کے ساتھ ایک بٹن بندھا ہوا ہے، تاکہ جب بٹن دبایا جائے تو پن اونچا ہوجاتا ہے: جب بٹن دبایا جاتا ہے یا جاری کیا جاتا ہے تو کال بیک کے افعال درج ذیل ہیں۔ آؤٹ پٹ پورٹ send() فنکشن آسانی سے پیغام کو بندرگاہ سے باہر بھیجتا ہے: کال بیک سننے والے پس منظر میں چلتے ہیں اور انہیں مزید توجہ کی ضرورت نہیں ہے۔

پلے بیک ایک MIDI File

یہ سابقample دکھاتا ہے کہ کیسے:

  • ایک MIDI لوڈ کریں۔ file پروگرامنگ ماحول میں
  • پلے بیک file .

یہ سابقampلیس فرض کرتا ہے کہ آپ کے پاس MIDI ہے۔ file midi_کہا جاتا ہےfile.mid اسی ڈائرکٹری میں جس میں آپ کی python اسکرپٹ ہے: mido import Mido سے mido import MidiFile mido درآمد سے MetaMessage پورٹ = mido.open_output('f_midi') mid = MidiFile('midi_file.mid') while True: Midi میں msg کے لیےFile('midi_file.mid').play(): port.send(msg)

دستاویزات / وسائل

Raspberry Pi OSA MIDI بورڈ [پی ڈی ایف] یوزر مینوئل
OSA MIDI، بورڈ

حوالہ جات

ایک تبصرہ چھوڑیں۔

آپ کا ای میل پتہ شائع نہیں کیا جائے گا۔ مطلوبہ فیلڈز نشان زد ہیں۔ *