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 في عمليات النقل الآمن من شبكة 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.

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

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

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

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

تصحيح الأخطاء أثناء استخدام وضع المضيف

أثناء استخدام وضع مضيف USB، لا يتوفّر تصحيح الأخطاء Android Debug Bridge (adb) عبر USB. راجِع قسم الاستخدام اللاسلكي في أداة Android Debug Bridge للحصول على بديل.