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++.

تستخدم تطبيقات Android MIDI عادةً واجهة برمجة التطبيقات midi للتواصل مع خدمة Android MIDI. تعتمد تطبيقات 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 مع معيار MIDI 1.0 من خلال محوِّل خارجي.

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

تتناول بقية هذه المقالة كيفية تفعيل ميزة MIDI في المنصة من قِبل صانعي أجهزة Android.

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

يعتمد تنفيذ MIDI 1.0 على ALSA لنقل وضع مضيف USB ووضع الجهاز الطرفي USB. لا يتم استخدام ALSA مع بروتوكول BLE ووسائل النقل الافتراضية.

وضع مضيف USB

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

يتم تحديد نقل 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 for (منفذ USB لـ)، ثم اختَر MIDI.

BLE

يتم دائمًا تفعيل بروتوكول MIDI عبر تقنية BLE، شرط أن يكون الجهاز متوافقًا مع تقنية BLE.

افتراضي (داخل التطبيق)

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

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

يمكن للتطبيقات فحص توفّر إمكانية استخدام 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 للحصول على بديل.