MIDI

ממשק דיגיטלי לכלי נגינה (MIDI) הוא פרוטוקול סטנדרטי לחיבור מחשבים עם כלי נגינה, תאורת במה ומדיה אחרת מוכוונת זמן.

החל באנדרואיד 13, תמיכה ב-MIDI 2.0 מתווספת להעברת ה-USB. MIDI 2.0 הוא תקן MIDI חדש יותר שהוגדר בשנת 2020. פרוטוקול זה מוסיף תכונות כגון תקשורת דו-כיוונית, רזולוציה גבוהה יותר והחלפת נכסים. מצב מארח MIDI 2.0 דרך USB מופעל תמיד כאשר תמיכת MIDI מופעלת בפלטפורמה.

באופן קפדני, MIDI אינו קשור לאודיו. אבל מכיוון ששימוש ב-MIDI נפוץ עם מוזיקה, מאמר זה ממוקם בקטע האודיו.

MIDI עבור NDK

אנדרואיד 10 מקל על העברה של אפליקציות שמע מקצועיות באמצעות MIDI לפלטפורמת אנדרואיד.

AMidi הוא NDK API המעניק למפתחי אפליקציות את היכולת לשלוח ולקבל נתוני MIDI עם קוד C/C++.

אפליקציות MIDI של אנדרואיד משתמשות בדרך כלל ב- midi API כדי לתקשר עם שירות MIDI של אנדרואיד. אפליקציות MIDI תלויות בעיקר במחלקת MidiManager כדי לגלות, לפתוח ולסגור אובייקט אחד או יותר MidiDevice ולהעביר נתונים אל ומכל מכשיר דרך יציאות הקלט והפלט של MIDI של המכשיר.

הובלות

שכבת התחבורה הפיזית המצוינת ב-MIDI 1.0 המקורי היא לולאת זרם עם מחבר DIN 5 פינים .

מאז MIDI 1.0, הוגדרו העברות נוספות, כולל MIDI over USB ו-MIDI over Bluetooth Low Energy (BLE) .

MIDI עבור אנדרואיד

אנדרואיד תומכת ב-USB On-The-Go , המאפשר למכשיר אנדרואיד לפעול כמארח USB להנעת ציוד היקפי USB. ממשקי API של מצב מארח USB מאפשרים למפתחים ליישם MIDI על USB ברמת האפליקציה, אך עד לאחרונה לא היו ממשקי API מובנים של פלטפורמה עבור MIDI.

החל מהגרסה של אנדרואיד 6.0 (מרשמלו), יצרני מכשירים יכולים לאפשר תמיכת MIDI אופציונלית בפלטפורמה. אנדרואיד תומך ישירות ב-USB, BLE ותעבורה וירטואלית (בין-אפליקציה). אנדרואיד תומך ב-MIDI 1.0 באמצעות מתאם חיצוני.

לפרטים על תכנות יישומים עם ממשקי ה-MIDI, עיין בחבילת android.media.midi .

המשך מאמר זה דן כיצד יצרן מכשירי אנדרואיד יכול לאפשר תמיכת MIDI בפלטפורמה.

הפעלת העברות 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 גרסה 1.0 1 בנובמבר 1999 תקן שפורסם על ידי USB Implementers Forum, Inc.

מצב USB היקפי

כדי להפעיל MIDI עבור מצב USB היקפי, ייתכן שיהיה עליך להחיל תיקונים על ליבת הלינוקס שלך כדי לשלב drivers/usb/gadget/f_midi.c במנהל ההתקן של גאדג'ט USB. תיקונים אלה זמינים עבור גרסת ליבת לינוקס 3.10. התיקונים הללו עדיין לא עודכנו עבור ConfigFs (ארכיטקטורה חדשה עבור מנהלי התקנים של גאדג'טים USB), והם גם לא מוזגו ב-upstream kernel.org .

התיקונים מוצגים בסדר commit עבור עץ הליבה ב-project kernel/common branch 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 over 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) למידע על הדרישות לתבוע את התכונה.

ניפוי באגים במצב מארח

במצב מארח USB, איתור באגים של Android Debug Bridge (adb) באמצעות USB אינו זמין. עיין בסעיף השימוש האלחוטי של Android Debug Bridge עבור חלופה.