MIDI

الواجهة الرقمية للآلات الموسيقية (MIDI) هي بروتوكول عادي لربط أجهزة الكمبيوتر بالآلات الموسيقية وإضاءة المسرح وغيرها من الوسائط المستندة إلى الوقت.

اعتبارًا من Android 13، تمّت إضافة MIDI 2.0 إلى بروتوكول النقل عبر USB. MIDI 2.0 هو معيار MIDI أحدث تم تحديده في عام 2020. يضيف هذا البروتوكول ميزات مثل التواصل في الاتجاهين ودقة أعلى وتبادل المواقع. يتم دائمًا تفعيل MIDI 2.0 من خلال وضع مضيف USB عند تفعيل ميزة دعم MIDI على المنصة.

من الناحية الدقيقة، لا يرتبط MIDI بالصوت. ولكن بما أنّه يتم استخدام MIDI عادةً مع الموسيقى، تم وضع هذه المقالة في قسم الصوت.

MIDI لـ NDK

يسهّل نظام Android 10 نقل تطبيقات الصوت الاحترافية باستخدام MIDI إلى نظام Android الأساسي.

AMidi هي واجهة برمجة تطبيقات NDK تمنح مطوّري التطبيقات إمكانية إرسال بيانات MIDI وتلقّيها باستخدام رمز C/C++.

تستخدم تطبيقات MIDI على Android عادةً واجهة برمجة التطبيقات midi للتواصل مع خدمة MIDI على Android. تعتمد تطبيقات MIDI بشكل أساسي على فئة MidiManager لاكتشاف عنصر MidiDevice واحد أو أكثر وفتحه وإغلاقه، ونقل البيانات من كل جهاز وإليه من خلال منافذ إدخال وإخراج MIDI للجهاز.

وسائل النقل

إنّ طبقة النقل المحدّدة في الإصدار MIDI 1.0 الأصلي هي حلقة حالية تحتوي على موصل DIN مؤلف من 5 أطراف.

منذ إصدار MIDI 1.0، تم تحديد طرق نقل إضافية، بما في ذلك MIDI عبر USB وMIDI عبر البلوتوث منخفض الطاقة (BLE).

MIDI لأجهزة Android

يتوافق Android مع USB On-The-Go، مما يسمح لجهاز Android بالعمل كمضيف USB لتشغيل الأجهزة الطرفية USB. تسمح واجهات برمجة تطبيقات وضع مضيف USB للمطوّرين بتنفيذ MIDI عبر USB على مستوى التطبيق، ولكن لم تكن هناك واجهات برمجة تطبيقات مدمجة للنظام الأساسي لاستخدام MIDI حتى وقت قريب.

بدءًا من الإصدار Android 6.0 (Marshmallow)، يمكن لصنّاع الأجهزة تفعيل ميزة MIDI اختيارية في النظام الأساسي. يتوافق نظام Android مباشرةً مع وسائل النقل عبر USB وBLE والنقل الافتراضي (بين التطبيقات). يتوافق Android مع الإصدار 1.0 من MIDI من خلال محوّل خارجي.

لمعرفة التفاصيل حول برمجة التطبيقات باستخدام واجهات برمجة تطبيقات MIDI، يُرجى الاطّلاع على حزمة android.media.midi.

ويتناول الجزء المتبقي من هذه المقالة كيف يمكن للمطوّرين الذين يستخدمون أجهزة Android تفعيل دعم MIDI في النظام الأساسي.

تفعيل عمليات نقل MIDI 1.0

يعتمد تنفيذ MIDI 1.0 على ALSA في وضع مضيف USB وعمليات النقل في وضع الأجهزة الملحقة USB. ولا يتم استخدام ALSA في عمليات النقل الآمن من شبكة Wi-Fi ووسائل النقل الافتراضية.

وضع مضيف USB

لتفعيل MIDI في وضع مضيف USB، عليك أولاً تفعيل وضع مضيف USB بشكل عام، ثم تفعيل CONFIG_SND_RAWMIDI وCONFIG_SND_USB_MIDI في إعدادات ملف التمهيد. راجِع إعدادات نواة Android.

يتم تحديد نقل MIDI عبر USB رسميًا من خلال معيار Universal Serial Bus Device Class Definition for MIDI Devices Release 1.0 Nov 1, 1999 الذي نشرته شركة USB Implementers Forum, Inc.

وضع الأجهزة الملحقة USB

لتفعيل MIDI في وضع الجهاز الطرفي USB، قد تحتاج إلى تطبيق تصحيحات على نواة Linux لدمج drivers/usb/gadget/f_midi.c في برنامج تشغيل drivers/usb/gadget/f_midi.c. تتوفر رموز التصحيح للإصدار 3.10 من نواة Linux. لم يتم تعديل هذه الإصلاحات بعد لملف ConfigFs (بنية جديدة لبرامج تشغيل أجهزة USB)، ولم يتم دمجها في الإصدار الأحدث من الإصدار الأساسي 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/

عليك أيضًا تنفيذ أحد الإجراءات التالية:

  • انتقِل إلى الإعدادات > خيارات المطوّرين > الاتصال بالشبكة و ضَع علامة في مربّع الاختيار MIDI في مربّع الحوار "اختيار إعدادات USB".
  • أثناء توصيله بجهاز مضيف USB، اسحب للأسفل من أعلى الشاشة، واختَر الإدخال USB ل، ثم اختَر MIDI.

BLE

يتم دائمًا تفعيل MIDI عبر BLE، بشرط أن يتيح الجهاز استخدام BLE.

افتراضي (interapp)

يكون النقل الافتراضي (بين التطبيقات) مفعَّلاً دائمًا.

المطالبة بالميزة

يمكن للتطبيقات التحقّق من توفُّر دعم MIDI باستخدام ميزة android.software.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 Debug Bridge (adb) عبر USB أثناء استخدام وضع مضيف USB. راجِع قسم الاستخدام اللاسلكي في أداة Android Debug Bridge للحصول على بديل.