MIDI

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

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

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

MIDI ל-NDK

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

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

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

תחבורה

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

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

MIDI ל-Android

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

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

לקבלת פרטים על תכנות אפליקציות עם ממשקי MIDI API, אפשר לעיין ב 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.

ה-MIDI באמצעות העברת USB מוגדר באופן רשמי על ידי הגדרת סיווג של מכשיר אפיק טורי אוניברסלי עבור מכשירי MIDI מהדורה 1.0 בנובמבר 1999 פורסם על ידי USB Implementers Forum, Inc.

מצב ציוד היקפי בחיבור USB

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

התיקונים מוצגים לפי סדר ההתחייבות לעץ הליבה (kernel) בפרויקט 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/

צריך גם לבצע אחת מהפעולות הבאות:

  • עוברים אל הגדרות > אפשרויות למפתחים > Networking (רשתות) לסמן את התיבה MIDI בתיבת הדו-שיח 'בחירת תצורת USB'.
  • בזמן שהמכשיר מחובר למארח ה-USB, מושכים למטה מהחלק העליון של המסך ובוחרים את הרשומה USB for, ואז בוחרים באפשרות 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

לצפייה מסמך הגדרת תאימות ל-Android (CDD) לקבלת מידע בדרישות לתביעת בעלות על התכונה.

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

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