ميدي

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

تعد الواجهة الرقمية للآلات الموسيقية (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 خماسي السنون .

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

MIDI لنظام Android

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

بدءًا من إصدار Android 6.0 (Marshmallow) ، يمكن لصانعي الأجهزة تمكين دعم MIDI الاختياري في النظام الأساسي. يدعم Android مباشرة وسائط النقل عبر USB و BLE ووسائط النقل الافتراضية (interapp). يدعم 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 الخاص بك. راجع تكوين Android Kernel.

يتم تعريف MIDI عبر نقل USB رسميًا من خلال تعريف فئة جهاز الناقل التسلسلي العالمي لأجهزة MIDI الإصدار 1.0 1 نوفمبر 1999 الذي نشره USB Implementers Forum، Inc.

وضع USB المحيطي

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

بليه

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

الظاهري (interapp)

يتم دائمًا تمكين النقل الافتراضي (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) للحصول على معلومات حول متطلبات المطالبة بالميزة.

التصحيح أثناء وجوده في وضع المضيف

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