एमआईडीआई

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

Android 13 की शुरुआत में, यूएसबी ट्रांसपोर्ट में MIDI 2.0 की सुविधा जोड़ दी गई है. MIDI 2.0 नया एमआईडीआई है 2020 में तय किए गए स्टैंडर्ड के मुताबिक होगा. यह प्रोटोकॉल दो-तरफ़ा कम्यूनिकेशन, बेहतर बनाने, और अन्य सुविधाओं को जोड़ता है समाधान और प्रॉपर्टी एक्सचेंज. जब एमआईडीआई की सुविधा काम करता है, तो यूएसबी होस्ट मोड के ज़रिए एमआईडीआई 2.0 मोड हमेशा चालू रहता है प्लैटफ़ॉर्म पर चालू हो.

साफ़ तौर पर कहा जाए, तो एमआईडीआई का ऑडियो से कोई लेना-देना नहीं है. लेकिन क्योंकि एमआईडीआई का इस्तेमाल आम तौर पर संगीत के लिए, यह लेख ऑडियो सेक्शन में रखा गया है.

NDK के लिए एमआईडीआई

Android 10 की मदद से, पेशेवर ऑडियो ऐप्लिकेशन को पोर्ट करना आसान हो जाता है एमआईडीआई का इस्तेमाल करके Android प्लैटफ़ॉर्म पर आता है.

AMidi NDK API, जो ऐप्लिकेशन को यह डेवलपर, C/C++ कोड के साथ एमआईडीआई डेटा को भेजने और पाने की सुविधा देता है.

Android MIDI ऐप्लिकेशन, आम तौर पर Android एमआईडीआई सेवा से संपर्क करने के लिए, midi एपीआई का इस्तेमाल करते हैं. एमआईडीआई ऐप्लिकेशन मुख्य रूप से एक या ज़्यादा MidiDevice को खोजने, खोलने, और बंद करने के लिए MidiManager क्लास पर निर्भर करते हैं ऑब्जेक्ट सबमिट करता है और डिवाइस के एमआईडीआई इनपुट और आउटपुट पोर्ट के ज़रिए हर डिवाइस में और उससे डेटा पास करता है.

परिवहन

फ़िज़िकल ट्रांसपोर्ट लेयर मूल MIDI 1.0 में बताया गया एक ऐसा मौजूदा लूप है, जिसमें 5 पिन वाला डीआईएन कनेक्टर.

एमआईडीआई 1.0 के बाद से, अतिरिक्त ट्रांसपोर्ट तय किए गए हैं. इनमें यूएसबी के ऊपर एमआईडीआई शामिल है और एमआईडीआई ओवर ब्लूटूथ कम ऊर्जा का इस्तेमाल (BLE).

Android के लिए MIDI

Android पर काम करती है यूएसबी ऑन-द-गो, इससे, Android डिवाइस को यूएसबी ड्राइव करने के लिए, यूएसबी होस्ट की तरह काम करने की अनुमति मिलती है सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह). यूएसबी होस्ट मोड एपीआई की अनुमति है डेवलपर को ऐप्लिकेशन स्तर पर USB पर MIDI लागू करने की ज़रूरत होती है, लेकिन जब तक हाल ही में, एमआईडीआई के लिए पहले से कोई प्लैटफ़ॉर्म एपीआई उपलब्ध नहीं है.

Android 6.0 (Marshmallow) रिलीज़ के साथ डिवाइस बनाने वाली कंपनियां, वैकल्पिक एमआईडीआई को चालू कर सकती हैं में सहायता मिलती है. Android, यूएसबी, BLE, और वर्चुअल (इंटरऐप्लिकेशन) ट्रांसपोर्ट के साथ काम करता है. Android, बाहरी अडैप्टर की मदद से MIDI 1.0 के साथ काम करता है.

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

इस लेख के बाकी हिस्से में यह बताया गया है कि Android डिवाइस बनाने वाली कंपनी प्लैटफ़ॉर्म में एमआईडीआई की सुविधा चालू करता है.

MIDI 1.0 ट्रांसपोर्ट चालू करना

एमआईडीआई 1.0 को लागू करना, यूएसबी होस्ट मोड और यूएसबी सहायक मोड ट्रांसपोर्ट के लिए ALSA पर निर्भर करता है. ALSA का इस्तेमाल, BLE और वर्चुअल ट्रांसपोर्ट के लिए नहीं किया जाता.

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

अगर आपको यूएसबी होस्ट मोड के लिए एमआईडीआई की सुविधा चालू करनी है, तो पहले यूएसबी होस्ट मोड का इस्तेमाल करें और इसके बाद, अपने कर्नेल में CONFIG_SND_RAWMIDI और CONFIG_SND_USB_MIDI चालू करें कॉन्फ़िगरेशन. Android Kernel कॉन्फ़िगरेशन देखें.

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

यूएसबी सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह) मोड

यूएसबी सहायक डिवाइस (जैसे, कीबोर्ड, माउस, मॉनिटर, वेबकैम वगैरह) के लिए एमआईडीआई की सुविधा चालू करने के लिए, आपको पैच इस्तेमाल करने पड़ सकते हैं drivers/usb/gadget/f_midi.c को यूएसबी गैजेट में इंटिग्रेट करने के लिए, अपने Linux कर्नेल में ड्राइवर. ये पैच, Linux के कर्नेल वर्शन के लिए उपलब्ध हैं 3.10. इन पैच को अब तक के लिए अपडेट नहीं किया गया है ConfigF (एक नया आर्किटेक्चर का इस्तेमाल करता है) और न ही उन्हें अपस्ट्रीम पर मर्ज किया जाता है. 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/

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

  • Settings > पर जाएं डेवलपर के लिए सेटिंग और टूल > नेटवर्किंग और 'यूएसबी कॉन्फ़िगरेशन चुनें' डायलॉग में एमआईडीआई के लिए बॉक्स पर सही का निशान लगाएं.
  • यूएसबी होस्ट से अटैच करके, स्क्रीन के ऊपर से नीचे की ओर खींचें और एंट्री चुनें इसके लिए यूएसबी और फिर एमआईडीआई को चुनें.

BLE

अगर डिवाइस पर BLE काम करता है, तो BLE पर एमआईडीआई हमेशा चालू रहती है.

वर्चुअल (इंटरऐप्लिकेशन)

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

सुविधा पर दावा करना

ऐप्लिकेशन, एमआईडीआई की सुविधा की मौजूदगी की जांच करने के लिए इनका इस्तेमाल कर सकते हैं: android.software.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 डीबग ब्रिज का वायरलेस तरीके से इस्तेमाल करने की जानकारी देने वाला सेक्शन.