MIDI

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

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

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

‫MIDI لـ NDK

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

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

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

بروتوكولات نقل البيانات

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

منذ 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 حزمة.

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

تفعيل بروتوكولات نقل البيانات في MIDI 1.0

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

وضع مضيف USB

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

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

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

لتفعيل MIDI لوضع جهاز USB المُلحق، قد تحتاج إلى تطبيق تصحيحات على kernel في Linux لدمج drivers/usb/gadget/f_midi.c في برنامج تشغيل جهاز USB المُلحق. تتوفّر هذه التصحيحات لإصدار 3.10 من kernel في Linux. لم يتم تعديل هذه التصحيحات بعد لـ ConfigFs (بنية جديدة لبرامج تشغيل أجهزة USB المُلحقة)، كما لم يتم دمجها في kernel.org.

تظهر التصحيحات بترتيب الالتزام في شجرة kernel في فرع android-3.10 ضمن مشروع kernel/common:

  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

يُرجى الاطّلاع على مستند تعريف معايير التوافق (CDD) لنظام التشغيل Android للحصول على معلومات حول متطلبات المطالبة بالميزة.

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

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