म्यूज़िकल इंस्ट्रुमेंट डिजिटल इंटरफ़ेस (एमआईडीआई) एक स्टैंडर्ड प्रोटोकॉल है. इसका इस्तेमाल, म्यूज़िकल इंस्ट्रुमेंट, स्टेज लाइटिंग, और समय के हिसाब से चलने वाले अन्य मीडिया को कंप्यूटर से कनेक्ट करने के लिए किया जाता है.
Android 13 से, यूएसबी ट्रांसपोर्ट में MIDI 2.0 की सुविधा जोड़ी गई है. MIDI 2.0, MIDI का नया स्टैंडर्ड है. इसे 2020 में तय किया गया था. इस प्रोटोकॉल में, दो-तरफ़ा बातचीत, ज़्यादा रिज़ॉल्यूशन, और प्रॉपर्टी एक्सचेंज जैसी सुविधाएं जोड़ी गई हैं. प्लेटफ़ॉर्म पर MIDI की सुविधा चालू होने पर, यूएसबी होस्ट मोड के ज़रिए 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
ऐप्लिकेशन, मुख्य रूप से
MidiManager क्लास पर निर्भर करते हैं. इसकी मदद से, एक या उससे ज़्यादा
MidiDevice
ऑब्जेक्ट खोजे, खोले, और बंद किए जा सकते हैं. साथ ही, डिवाइस के MIDI इनपुट और आउटपुट पोर्ट के ज़रिए, हर डिवाइस से डेटा भेजा और पाया जा सकता है.
ट्रांसपोर्ट
MIDI 1.0 में तय की गई फ़िज़िकल ट्रांसपोर्ट लेयर , पांच पिन वाले DIN कनेक्टर के साथ एक करंट लूप है.
MIDI 1.0 के बाद से, अतिरिक्त ट्रांसपोर्ट तय किए गए हैं. इनमें, यूएसबी के ज़रिए MIDI और ब्लूटूथ लो एनर्जी (BLE)के ज़रिए MIDI शामिल हैं.
Android के लिए MIDI
Android, यूएसबी ऑन-द-गो की सुविधा के साथ काम करता है. इससे, Android डिवाइस, यूएसबी पेरिफ़ेरल को चलाने के लिए, यूएसबी होस्ट के तौर पर काम कर सकता है. यूएसबी होस्ट मोड के एपीआई की मदद से, डेवलपर ऐप्लिकेशन लेवल पर, यूएसबी के ज़रिए MIDI की सुविधा लागू कर सकते हैं. हालांकि, हाल ही में MIDI के लिए, प्लैटफ़ॉर्म के बिल्ट-इन एपीआई नहीं थे.
Android 6.0 (Marshmallow) रिलीज़ होने के बाद से, डिवाइस बनाने वाली कंपनियां प्लैटफ़ॉर्म में, MIDI की सुविधा को चालू कर सकती हैं. Android, यूएसबी, BLE, और वर्चुअल (इंटरऐप्लिकेशन) ट्रांसपोर्ट के साथ सीधे काम करता है. Android, बाहरी अडैप्टर की मदद से MIDI 1.0 के साथ काम करता है.
MIDI एपीआई की मदद से, ऐप्लिकेशन प्रोग्रामिंग के बारे में ज़्यादा जानने के लिए,
android.media.midi
पैकेज देखें.
इस लेख के बाकी हिस्से में, यह बताया गया है कि Android डिवाइस बनाने वाली कंपनी, प्लैटफ़ॉर्म में MIDI की सुविधा कैसे चालू कर सकती है.
MIDI 1.0 ट्रांसपोर्ट चालू करना
MIDI 1.0 को लागू करना, यूएसबी होस्ट मोड और यूएसबी पेरिफ़ेरल मोड ट्रांसपोर्ट के लिए ALSA पर निर्भर करता है. BLE और वर्चुअल ट्रांसपोर्ट के लिए, ALSA का इस्तेमाल नहीं किया जाता.
यूएसबी होस्ट मोड
यूएसबी होस्ट मोड के लिए MIDI की सुविधा चालू करने के लिए, सबसे पहले यूएसबी होस्ट मोड की सुविधा चालू करें. इसके बाद, अपने कर्नल कॉन्फ़िगरेशन में CONFIG_SND_RAWMIDI और CONFIG_SND_USB_MIDI को चालू करें.
यूएसबी के ज़रिए MIDI ट्रांसपोर्ट को, Universal Serial Bus Device Class Definition for MIDI Devices Release 1.0 Nov 1, 1999 स्टैंडर्ड के तहत औपचारिक तौर पर तय किया गया है. इसे USB Implementers Forum, Inc. ने पब्लिश किया है.
यूएसबी पेरिफ़ेरल मोड
यूएसबी पेरिफ़ेरल मोड के लिए MIDI की सुविधा चालू करने के लिए, आपको अपने Linux कर्नल पर पैच लागू करने पड़ सकते हैं. इससे, drivers/usb/gadget/f_midi.c को यूएसबी गैजेट ड्राइवर में इंटिग्रेट किया जा सकता है. ये पैच, Linux कर्नेल वर्शन 3.10 के लिए उपलब्ध हैं. इन पैच को,
ConfigFs
(यूएसबी गैजेट ड्राइवर के लिए नया आर्किटेक्चर) के लिए अब तक अपडेट नहीं किया गया है. साथ ही, इन्हें अपस्ट्रीम
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/
इसके अलावा, आपको इनमें से कोई एक काम करना होगा:
- सेटिंग > डेवलपर के लिए सेटिंग और टूल > नेटवर्क पर जाएं. इसके बाद, यूएसबी कॉन्फ़िगरेशन चुनें डायलॉग में, MIDI के लिए बॉक्स पर सही का निशान लगाएं.
- यूएसबी होस्ट से कनेक्ट होने के दौरान, स्क्रीन के सबसे ऊपर से नीचे की ओर स्वाइप करें. इसके बाद, इसके लिए यूएसबी एंट्री को चुनें. फिर, MIDI को चुनें.
BLE
डिवाइस पर BLE की सुविधा उपलब्ध होने पर, BLE के ज़रिए MIDI की सुविधा हमेशा चालू रहती है.
वर्चुअल (इंटरऐप्लिकेशन)
वर्चुअल (इंटरऐप्लिकेशन) ट्रांसपोर्ट की सुविधा हमेशा चालू रहती है.
सुविधा का दावा करना
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 कंपैटबिलिटी डेफ़िनिशन डॉक्यूमेंट (सीडीडी) देखें.
होस्ट मोड में डीबग करना
यूएसबी होस्ट मोड में, यूएसबी के ज़रिए Android डीबग ब्रिज (adb) की मदद से डीबग करने की सुविधा उपलब्ध नहीं होती. इसके विकल्प के तौर पर, Android डीबग ब्रिज का वायरलेस इस्तेमाल सेक्शन देखें.