الواجهة الرقمية للآلات الموسيقية (MIDI) هي بروتوكول عادي لربط أجهزة الكمبيوتر بالآلات الموسيقية وأجهزة الإضاءة على المسرح وغيرها من الوسائط التي تعتمد على الوقت.
بدءًا من Android 13، تمت إضافة إمكانية استخدام MIDI 2.0 في نقل البيانات عبر USB. MIDI 2.0 هو معيار MIDI أحدث تم تحديده في عام 2020. يضيف هذا البروتوكول ميزات مثل التواصل في اتجاهين، ودقة أعلى، وتبادل الخصائص. يتم دائمًا تفعيل الإصدار 2.0 من MIDI من خلال وضع المضيف عبر USB عند تفعيل ميزة التوافق مع MIDI على النظام الأساسي. يتوفّر الإصدار 2.0 من بروتوكول MIDI عبر وسائل النقل الافتراضية في نظام التشغيل Android 15 والإصدارات الأحدث.
بشكل عام، لا يرتبط MIDI بالصوت. ولكن بما أنّ MIDI يُستخدم عادةً مع الموسيقى، تم وضع هذه المقالة في قسم الصوت.
MIDI لنظام NDK
يسهّل نظام التشغيل Android 10 نقل تطبيقات الصوت الاحترافية التي تستخدم MIDI إلى نظام Android الأساسي.
AMidi
هي
واجهة برمجة تطبيقات NDK تتيح لمطوّري التطبيقات إمكانية إرسال بيانات MIDI وتلقّيها باستخدام رمز C/C++.
تستخدم تطبيقات Android MIDI عادةً واجهة برمجة التطبيقات
midi
للتواصل مع خدمة Android MIDI. تعتمد تطبيقات MIDI بشكل أساسي على الفئة
MidiManager
لاكتشاف كائن واحد أو أكثر من كائنات
MidiDevice
وفتحها وإغلاقها، ونقل البيانات من كل جهاز وإليه من خلال منافذ إدخال وإخراج MIDI الخاصة بالجهاز.
بروتوكولات نقل البيانات
طبقة النقل المادية المحدّدة في الإصدار الأصلي 1.0 من MIDI هي حلقة تيار مزوّدة بموصل 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 في عمليات النقل عبر البلوتوث المنخفض الطاقة (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، قد تحتاج إلى تطبيق تصحيحات على نواة Linux لدمج drivers/usb/gadget/f_midi.c
في برنامج تشغيل أداة USB. تتوفّر رموز التصحيح هذه لإصدار 3.10 من نواة Linux. لم يتم بعد تعديل هذه التصحيحات لتتوافق مع
ConfigFs
(بنية جديدة
لبرامج تشغيل أجهزة USB)، كما لم يتم دمجها في
kernel.org.
يتم عرض التصحيحات بترتيب الالتزام لشجرة النواة في فرع android-3.10
من مشروع kernel/common
:
- https://android-review.googlesource.com/#/c/127450/
- https://android-review.googlesource.com/#/c/127452/
- https://android-review.googlesource.com/#/c/143714/
عليك أيضًا تنفيذ أحد الإجراءَين التاليَين:
- انتقِل إلى الإعدادات > خيارات المطوّرين > الشبكات، ثم ضَع علامة في مربّع MIDI ضمن مربّع الحوار "اختيار إعدادات USB".
- أثناء توصيل الجهاز بمضيف USB، اسحب للأسفل من أعلى الشاشة، وانقر على الإدخال USB for، ثم انقر على 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 للحصول على بديل.