मिडी

म्यूजिकल इंस्ट्रूमेंट डिजिटल इंटरफ़ेस (MIDI) कंप्यूटर को संगीत वाद्ययंत्र, स्टेज लाइटिंग और अन्य समय-उन्मुख मीडिया के साथ इंटरकनेक्ट करने के लिए एक मानक प्रोटोकॉल है।

Android 13 से प्रारंभ होकर, USB ट्रांसपोर्ट में MIDI 2.0 समर्थन जोड़ा गया है। MIDI 2.0 2020 में परिभाषित एक नया MIDI मानक है। यह प्रोटोकॉल दो-तरफ़ा संचार, उच्च रिज़ॉल्यूशन और संपत्ति विनिमय जैसी सुविधाएँ जोड़ता है। जब प्लेटफ़ॉर्म पर MIDI समर्थन सक्षम होता है तो USB होस्ट मोड के माध्यम से MIDI 2.0 हमेशा सक्षम होता है।

सच पूछिए तो, MIDI का ऑडियो से कोई संबंध नहीं है। लेकिन चूँकि MIDI का प्रयोग आमतौर पर संगीत के साथ किया जाता है, इसलिए इस लेख को ऑडियो अनुभाग में रखा गया है।

एनडीके के लिए मिडी

एंड्रॉइड 10 MIDI का उपयोग करके पेशेवर ऑडियो ऐप्स को एंड्रॉइड प्लेटफॉर्म पर पोर्ट करना आसान बनाता है।

AMidi एक NDK API है जो ऐप डेवलपर्स को C/C++ कोड के साथ MIDI डेटा भेजने और प्राप्त करने की क्षमता देता है।

एंड्रॉइड मिडी ऐप्स आमतौर पर एंड्रॉइड मिडी सेवा के साथ संचार करने के लिए midi एपीआई का उपयोग करते हैं। MIDI ऐप्स मुख्य रूप से एक या अधिक MidiDevice ऑब्जेक्ट को खोजने, खोलने और बंद करने के लिए MidiManager क्लास पर निर्भर करते हैं, और डिवाइस के MIDI इनपुट और आउटपुट पोर्ट के माध्यम से प्रत्येक डिवाइस से डेटा पास करते हैं।

परिवहन

मूल MIDI 1.0 में निर्दिष्ट भौतिक परिवहन परत 5-पिन DIN कनेक्टर के साथ एक वर्तमान लूप है।

MIDI 1.0 के बाद से, अतिरिक्त ट्रांसपोर्ट को परिभाषित किया गया है, जिसमें USB पर MIDI और ब्लूटूथ लो एनर्जी (BLE) पर MIDI शामिल है।

एंड्रॉइड के लिए मिडी

एंड्रॉइड यूएसबी ऑन-द-गो का समर्थन करता है, जो एंड्रॉइड डिवाइस को यूएसबी बाह्य उपकरणों को चलाने के लिए यूएसबी होस्ट के रूप में कार्य करने की अनुमति देता है। USB होस्ट मोड API डेवलपर्स को एप्लिकेशन स्तर पर USB पर MIDI लागू करने की अनुमति देता है, लेकिन हाल तक MIDI के लिए कोई अंतर्निहित प्लेटफ़ॉर्म API नहीं था।

एंड्रॉइड 6.0 (मार्शमैलो) रिलीज़ के साथ शुरुआत करते हुए, डिवाइस निर्माता प्लेटफ़ॉर्म में वैकल्पिक MIDI समर्थन सक्षम कर सकते हैं। एंड्रॉइड सीधे यूएसबी, बीएलई और वर्चुअल (इंटरएप) ट्रांसपोर्ट का समर्थन करता है। एंड्रॉइड एक बाहरी एडाप्टर के माध्यम से MIDI 1.0 का समर्थन करता है।

MIDI API के साथ एप्लिकेशन प्रोग्रामिंग के विवरण के लिए, android.media.midi पैकेज देखें।

इस आलेख के शेष भाग में चर्चा की गई है कि एंड्रॉइड डिवाइस निर्माता प्लेटफ़ॉर्म में MIDI समर्थन कैसे सक्षम कर सकता है।

MIDI 1.0 ट्रांसपोर्ट सक्षम करना

MIDI 1.0 कार्यान्वयन USB होस्ट मोड और USB परिधीय मोड ट्रांसपोर्ट के लिए ALSA पर निर्भर करता है। ALSA का उपयोग BLE और वर्चुअल ट्रांसपोर्ट के लिए नहीं किया जाता है।

यूएसबी होस्ट मोड

USB होस्ट मोड के लिए MIDI को सक्षम करने के लिए, पहले सामान्य रूप से USB होस्ट मोड का समर्थन करें, और फिर अपने कर्नेल कॉन्फ़िगरेशन में CONFIG_SND_RAWMIDI और CONFIG_SND_USB_MIDI सक्षम करें। एंड्रॉइड कर्नेल कॉन्फ़िगरेशन देखें।

USB ट्रांसपोर्ट पर MIDI को औपचारिक रूप से USB इम्प्लीमेंटर्स फोरम, इंक. द्वारा प्रकाशित MIDI डिवाइसेज़ रिलीज़ 1.0 नवंबर 1, 1999 मानक के लिए यूनिवर्सल सीरियल बस डिवाइस क्लास डेफिनिशन द्वारा परिभाषित किया गया है।

यूएसबी परिधीय मोड

USB परिधीय मोड के लिए MIDI को सक्षम करने के लिए, आपको USB गैजेट ड्राइवर में drivers/usb/gadget/f_midi.c एकीकृत करने के लिए अपने लिनक्स कर्नेल पर पैच लागू करने की आवश्यकता हो सकती है। ये पैच लिनक्स कर्नेल संस्करण 3.10 के लिए उपलब्ध हैं। ये पैच अभी तक कॉन्फ़िगफ़्स (यूएसबी गैजेट ड्राइवरों के लिए एक नया आर्किटेक्चर) के लिए अपडेट नहीं किए गए हैं, न ही इन्हें अपस्ट्रीम कर्नेल.ओआरजी पर मर्ज किया गया है।

प्रोजेक्ट kernel/common शाखा android-3.10 पर कर्नेल ट्री के लिए प्रतिबद्ध क्रम में पैच दिखाए गए हैं:

  1. https://android-review.googlesource.com/#/c/127450/
  2. https://android-review.googlesource.com/#/c/127452/
  3. https://android-review.googlesource.com/#/c/143714/

आपको निम्न में से कोई एक कार्य भी करना होगा:

  • सेटिंग्स > डेवलपर विकल्प > नेटवर्किंग पर जाएं और यूएसबी कॉन्फ़िगरेशन चुनें संवाद में MIDI के लिए बॉक्स को चेक करें।
  • यूएसबी होस्ट से जुड़े रहते हुए, स्क्रीन के ऊपर से नीचे खींचें, के लिए प्रविष्टि यूएसबी का चयन करें, और फिर MIDI का चयन करें।

बीएलई

BLE पर MIDI हमेशा सक्षम होता है, बशर्ते डिवाइस BLE का समर्थन करता हो।

वर्चुअल (इंटरएप)

वर्चुअल (इंटरएप) ट्रांसपोर्ट हमेशा सक्षम रहता है।

सुविधा का दावा

ऐप्स android.software.midi सुविधा का उपयोग करके MIDI समर्थन की उपस्थिति की जांच कर सकते हैं।

MIDI समर्थन का दावा करने के लिए, इस पंक्ति को अपने device.mk में जोड़ें।mk:

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.
midi.xml

सुविधा का दावा करने के लिए आवश्यकताओं की जानकारी के लिए एंड्रॉइड संगतता परिभाषा दस्तावेज़ (सीडीडी) देखें।

होस्ट मोड में रहते हुए डिबगिंग

यूएसबी होस्ट मोड में रहते हुए, यूएसबी पर एंड्रॉइड डिबग ब्रिज (एडीबी) डिबगिंग अनुपलब्ध है। विकल्प के लिए एंड्रॉइड डीबग ब्रिज का वायरलेस उपयोग अनुभाग देखें।