MIDI

ממשק דיגיטלי לכלי נגינה (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 תלויה ב-ALSA עבור מצב מארח USB והעברת מצב USB היקפי. ALSA אינו משמש עבור BLE ותעבורה וירטואלית.

מצב מארח USB

כדי להפעיל MIDI עבור מצב מארח USB, תחילה תמכו במצב מארח USB באופן כללי, ולאחר מכן הפעל את CONFIG_SND_RAWMIDI ו- CONFIG_SND_USB_MIDI בתצורת הליבה שלך. ראה תצורת ליבת אנדרואיד.

תעבורת ה-MIDI על גבי USB מוגדרת רשמית על ידי הגדרת ה- Universal Serial Bus Device Class 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 עבור חלופה.