मिडी

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

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

NDK . के लिए मिडी

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

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

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

परिवहन

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

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

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

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

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

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

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

परिवहन सक्षम करना

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

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

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

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

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

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

प्रोजेक्ट 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/

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

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

BLE

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

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

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

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

ऐप्स 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) देखें।

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

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