মিউজিক্যাল ইনস্ট্রুমেন্ট ডিজিটাল ইন্টারফেস (MIDI) হল মিউজিক্যাল ইনস্ট্রুমেন্ট, স্টেজ লাইটিং এবং অন্যান্য সময়-ভিত্তিক মিডিয়ার সাথে কম্পিউটারকে কানেক্ট করার স্ট্যান্ডার্ড প্রোটোকল।
Android 13 থেকে শুরু করে, USB ট্রান্সপোর্টে MIDI 2.0 সহায়তা যোগ করা হয়েছে। MIDI 2.0 হল একটি নতুন MIDI স্ট্যান্ডার্ড যা ২০২০ সালে নির্ধারণ করা হয়েছে। এই প্রোটোকলটি দ্বিমুখী যোগাযোগ, আরও ভাল রেজোলিউশন এবং প্রপার্টি এক্সচেঞ্জের মতো ফিচার যোগ করে। প্ল্যাটফর্মে MIDI কাজ করে এমন হলে USB হোস্ট মোডের মাধ্যমে MIDI 2.0 সবসময় চালু থাকে। Android 15 ও তার পরবর্তী যেকোনও ভার্সনে ভার্চুয়াল ট্রান্সপোর্টের মাধ্যমে MIDI 2.0 কাজ করে।
কঠোরভাবে বলতে গেলে, MIDI অডিওর সাথে সম্পর্কিত নয়। কিন্তু MIDI সাধারণত মিউজিকের সাথে ব্যবহার করা হয় বলে এই নিবন্ধটি অডিও বিভাগে রাখা হয়েছে।
NDK-এর জন্য MIDI
Android 10, MIDI ব্যবহার করে Android প্ল্যাটফর্মে পেশাদার অডিও অ্যাপ পোর্ট করা আরও সহজ করে তোলে।
AMidi হল একটি
NDK API যা অ্যাপ
ডেভেলপারদের C/C++ কোডের মাধ্যমে MIDI ডেটা পাঠানো ও রিসিভ করার সুবিধা দেয়।
Android MIDI অ্যাপ সাধারণত Android MIDI পরিষেবার সাথে যোগাযোগ করার জন্য
midi API ব্যবহার করে। MIDI
অ্যাপগুলি মূলত এক বা একাধিক
MidiDevice
অবজেক্ট ডিসকভার, খোলা ও বন্ধ করার জন্য
MidiManager ক্লাসের উপর নির্ভর করে এবং ডিভাইসের MIDI ইনপুট ও আউটপুট পোর্টের মাধ্যমে প্রতিটি ডিভাইসে ডেটা পাস করে।
পরিবহন
আসল MIDI 1.0-এ নির্দিষ্ট করা ফিজিক্যাল ট্রান্সপোর্ট লেয়ার হল ৫-পিন DIN কানেক্টর সহ কারেন্ট লুপ।
MIDI 1.0 থেকে, অতিরিক্ত ট্রান্সপোর্ট সংজ্ঞায়িত করা হয়েছে, যার মধ্যে USB-এর মাধ্যমে MIDI এবং এর মাধ্যমে MIDI ব্লুটুথ লো এনার্জি (BLE) অন্তর্ভুক্ত।
Android-এর জন্য MIDI
Android-এ USB On-The-Go কাজ করে, যা Android ডিভাইসকে USB পেরিফেরাল চালানোর জন্য USB হোস্ট হিসেবে কাজ করার অনুমতি দেয়। USB হোস্ট মোড API, ডেভেলপারদের অ্যাপ্লিকেশন লেভেলে USB-এর মাধ্যমে MIDI প্রয়োগ করার অনুমতি দেয়, কিন্তু সম্প্রতি পর্যন্ত MIDI-এর জন্য কোনও বিল্ট-ইন প্ল্যাটফর্ম API ছিল না।
Android 6.0 (Marshmallow) রিলিজের পর থেকে, ডিভাইস প্রস্তুতকারকরা প্ল্যাটফর্মে ঐচ্ছিক MIDI সাপোর্ট চালু করতে পারবেন। Android সরাসরি USB, BLE এবং ভার্চুয়াল (ইন্টারঅ্যাপ) ট্রান্সপোর্ট সাপোর্ট করে। Android এক্সটার্নাল অ্যাডাপ্টারের মাধ্যমে MIDI 1.0-এ কাজ করে।
MIDI API-এর মাধ্যমে অ্যাপ্লিকেশন প্রোগ্রামিং সংক্রান্ত বিবরণের জন্য, android.media.midi
প্যাকেজ দেখুন।
এই নিবন্ধের বাকি অংশে আলোচনা করা হয়েছে যে কীভাবে কোনও Android ডিভাইস প্রস্তুতকারক প্ল্যাটফর্মে MIDI কাজ করার সুবিধা চালু করতে পারেন।
MIDI 1.0 ট্রান্সপোর্ট চালু করা
USB হোস্ট মোড এবং USB পেরিফেরাল মোড ট্রান্সপোর্টের জন্য MIDI 1.0 প্রয়োগ ALSA-এর উপর নির্ভর করে। BLE ও ভার্চুয়াল ট্রান্সপোর্টের জন্য ALSA ব্যবহার করা হয় না।
USB হোস্ট মোড
USB হোস্ট মোডের জন্য MIDI চালু করতে, প্রথমে সাধারণভাবে USB হোস্ট মোড কাজ করে কিনা দেখুন এবং
তারপরে আপনার কার্নেল
কনফিগারেশনে CONFIG_SND_RAWMIDI ও CONFIG_SND_USB_MIDI চালু করুন।
USB-এর মাধ্যমে MIDI ট্রান্সপোর্টকে আনুষ্ঠানিকভাবে Universal Serial Bus Device Class Definition for MIDI Devices Release 1.0 Nov 1, 1999 স্ট্যান্ডার্ডের মাধ্যমে নির্ধারণ করা হয়, যা USB Implementers Forum, Inc প্রকাশ করে।
USB পেরিফেরাল মোড
USB পেরিফেরাল মোডের জন্য MIDI চালু করতে, আপনাকে হয়ত Linux কার্নেলে প্যাচ প্রয়োগ করতে হবে
যাতে USB গ্যাজেট ড্রাইভারের সাথে drivers/usb/gadget/f_midi.c ইন্টিগ্রেট করা যায়। এইসব প্যাচ Linux kernel ভার্সন
3.10-এর জন্য উপলভ্য। এইসব প্যাচ এখনও
ConfigFs
(USB গ্যাজেট ড্রাইভারের জন্য নতুন আর্কিটেকচার
) আপডেট করা হয়নি, এমনকি সেগুলি আপস্ট্রিম
kernel.org-এ মার্জ করা হয়নি।
প্রোজেক্টের kernel/common
ব্রাঞ্চের android-3.10 কার্নেল ট্রির জন্য কমিট অর্ডারে প্যাচ দেখানো হয়:
- https://android-review.googlesource.com/#/c/127450/
- https://android-review.googlesource.com/#/c/127452/
- https://android-review.googlesource.com/#/c/143714/
এছাড়াও, আপনাকে নিম্নলিখিতগুলির মধ্যে যেকোনও একটি করতে হবে:
- সেটিংস > ডেভেলপার বিকল্প > নেটওয়ার্কিং বিকল্পে যান এবং USB কনফিগারেশন ডায়ালগে MIDI-এর জন্য বক্সে টিকচিহ্ন দিন।
- USB হোস্টে কানেক্ট করা অবস্থায়, স্ক্রিনের উপর থেকে নিচের দিকে টানুন, এন্ট্রি বেছে নিন এর জন্য USB এবং তারপর MIDI বেছে নিন।
BLE
ডিভাইসে BLE কাজ করলে, BLE-এর মাধ্যমে MIDI সবসময় চালু থাকে।
ভার্চুয়াল (interapp)
ভার্চুয়াল (ইন্টারঅ্যাপ) ট্রান্সপোর্ট সবসময় চালু থাকে।
ফিচার দাবি করা
android.software.midi ফিচার ব্যবহার করে অ্যাপ MIDI সাপোর্ট আছে কিনা তা স্ক্রিন করতে পারে।
MIDI কাজ করে বলে দাবি করতে, আপনার device.mk-এ এই লাইনটি যোগ করুন:
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software. midi.xml
ফিচার দাবি করার জন্য প্রয়োজনীয়তা সম্পর্কিত তথ্যের জন্য Android কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্ট (CDD) দেখুন।
হোস্ট মোডে থাকাকালীন ডিবাগ করা হচ্ছে
USB হোস্ট মোডে থাকাকালীন, USB-এর মাধ্যমে Android Debug Bridge (adb) ডিবাগিং উপলভ্য থাকে না। এর বিকল্প হিসেবে Android Debug Bridge-এর ওয়্যারলেস ব্যবহার বিভাগটি দেখুন।