MIDI

樂器 (數位) 介面 (MIDI) 是一種標準通訊協定,可將電腦與音樂系統相互連結 樂器、舞台打光和其他時間導向的媒體。

自 Android 13 起,USB 傳輸加入了 MIDI 2.0 支援功能。MIDI 2.0 是較新的 MIDI 如 2020 年制定的標準此通訊協定會新增雙向通訊等功能 解決方案和物流如果支援 MIDI,一律啟用 MIDI 2.0 透過 USB 主機模式

嚴格來說,MIDI 與音訊無關。但因為 MIDI 通常會與 音樂就放在「音訊」部分中

NDK 適用的 MIDI

Android 10 讓你輕鬆攜帶專業的音訊應用程式 對 Android 平台使用 MIDI。

AMidi是 可為應用程式提供資料的 NDK API 開發人員可使用 C/C++ 程式碼傳送及接收 MIDI 資料。

Android MIDI 應用程式通常會使用 midi API 與 Android MIDI 服務通訊。MIDI 應用程式主要依附於 MidiManager 類別,才能探索、開啟及關閉一或多個 MidiDevice 物件,以及透過裝置的 MIDI 輸入和輸出通訊埠,將資料傳入及傳出每部裝置。

交通運輸

實體傳輸方式 圖層 在原始 MIDI 1.0 中指定的是目前迴圈 5-pin DIN 連接器。

自 MIDI 1.0 起已定義其他傳輸方式,包括採用 USB 的 MIDI 及 MIDI (超過) 藍牙低功耗技術 (BLE)

Android 適用的 MIDI

Android 支援 USB 行動電源 可讓 Android 裝置充當 USB 主機,藉此提高 USB 隨身碟 例如周邊裝置USB 主機模式 API 允許 開發人員是在應用程式層級透過 USB 實作 MIDI,但直到 最近還沒有適用於 MIDI 的內建平台 API。

從 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 週邊模式傳輸。 BLE 和虛擬交通方式不適用 ALSA。

USB 主機模式

如要為 USB 主機模式啟用 MIDI,一般會先支援 USB 主機模式,並 然後在核心中啟用 CONFIG_SND_RAWMIDICONFIG_SND_USB_MIDI 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定請參閱「Android 核心設定」。

透過 USB 傳輸的 MIDI 正式定義為 MIDI 裝置的通用序列匯流排裝置類別定義,1999 年 11 月 1 日 1.0 版 USB 應用廠商論壇, Inc

USB 週邊裝置模式

如要為 USB 週邊模式啟用 MIDI,你可能需要套用修補程式 至 Linux kernel,以將 drivers/usb/gadget/f_midi.c 整合至 USB 小工具 驅動程式庫。這些修補程式適用於 Linux 核心版本 3.10.這些修補程式尚未針對 ConfigF (新的架構 傳送的資料,也不會在上游進行合併 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/

您也必須執行下列其中一項操作:

  • 前往「設定」>開發人員選項 >網路與 在「選取 USB 設定」對話方塊中勾選 MIDI 方塊。
  • 將 USB 主機接上 USB 主機後,從畫面頂端往下拉並選取項目 「USB for」和「MIDI」

BLE

在裝置支援 BLE 的情況下,一律啟用 BLE 上的 MIDI。

虛擬 (應用程式內)

系統一律會啟用虛擬 (interapp) 傳輸功能。

聲明功能擁有權

應用程式可以使用 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 主機模式下,無法透過 USB 執行 Android Debug Bridge (ADB) 偵錯。 請參閱 Android Debug Bridge 的「無線使用」部分,可替代替代選項。