MIDI

Musical Instrument Digital Interface (MIDI) adalah protokol standar untuk menghubungkan komputer dengan alat musik, pencahayaan panggung, dan media berorientasi waktu lainnya.

Mulai Android 13, dukungan MIDI 2.0 ditambahkan ke transport USB. MIDI 2.0 adalah standar MIDI baru yang ditentukan pada tahun 2020. Protokol ini menambahkan fitur seperti komunikasi dua arah, resolusi yang lebih tinggi, dan pertukaran properti. Mode host USB MIDI 2.0 selalu diaktifkan saat dukungan MIDI diaktifkan di platform. MIDI 2.0 melalui transport virtual didukung di Android 15 dan yang lebih tinggi.

Sebenarnya, MIDI tidak terkait dengan audio. Namun, karena MIDI umumnya digunakan dengan musik, artikel ini ditempatkan di bagian audio.

MIDI untuk NDK

Android 10 mempermudah porting aplikasi audio profesional menggunakan MIDI ke platform Android.

AMidi adalah NDK API yang memberi developer aplikasi kemampuan untuk mengirim dan menerima data MIDI dengan kode C/C++.

Aplikasi MIDI Android biasanya menggunakan API midi untuk berkomunikasi dengan layanan MIDI Android. Aplikasi MIDI utamanya bergantung pada class MidiManager untuk menemukan, membuka, dan menutup satu atau beberapa objek MidiDevice, serta meneruskan data ke dan dari setiap perangkat melalui port input dan output MIDI perangkat.

Transportasi

Lapisan transportasi fisik yang ditentukan dalam MIDI 1.0 asli adalah loop arus dengan konektor DIN 5 pin.

Sejak MIDI 1.0, transport tambahan telah ditentukan, termasuk MIDI melalui USB dan MIDI melalui Bluetooth Hemat Energi (BLE).

MIDI untuk Android

Android mendukung USB On-The-Go, yang memungkinkan perangkat Android berfungsi sebagai host USB untuk mengoperasikan periferal USB. API mode host USB memungkinkan developer mengimplementasikan MIDI melalui USB di tingkat aplikasi, tetapi hingga saat ini belum ada API platform bawaan untuk MIDI.

Mulai dari rilis Android 6.0 (Marshmallow), produsen perangkat dapat mengaktifkan dukungan MIDI opsional di platform. Android secara langsung mendukung transportasi USB, BLE, dan virtual (antaraplikasi). Android mendukung MIDI 1.0 melalui adaptor eksternal.

Untuk mengetahui detail tentang pemrograman aplikasi dengan MIDI API, lihat paket android.media.midi.

Bagian selanjutnya dari artikel ini membahas cara produsen perangkat Android dapat mengaktifkan dukungan MIDI di platform.

Mengaktifkan transportasi MIDI 1.0

Penerapan MIDI 1.0 bergantung pada ALSA untuk transportasi mode host USB dan mode periferal USB. ALSA tidak digunakan untuk transportasi virtual dan BLE.

Mode host USB

Untuk mengaktifkan MIDI untuk mode host USB, dukung mode host USB secara umum terlebih dahulu, lalu aktifkan CONFIG_SND_RAWMIDI dan CONFIG_SND_USB_MIDI di konfigurasi kernel Anda.

Transportasi MIDI melalui USB secara resmi ditentukan oleh standar Universal Serial Bus Device Class Definition for MIDI Devices Release 1.0 Nov 1, 1999 yang dipublikasikan oleh USB Implementers Forum, Inc.

Mode periferal USB

Untuk mengaktifkan MIDI untuk mode periferal USB, Anda mungkin perlu menerapkan patch ke kernel Linux untuk mengintegrasikan drivers/usb/gadget/f_midi.c ke driver gadget USB. Patch ini tersedia untuk kernel Linux versi 3.10. Patch ini belum diperbarui untuk ConfigFs (arsitektur baru untuk driver gadget USB), dan juga belum digabungkan di kernel.org upstream.

Patch ditampilkan dalam urutan commit untuk struktur kernel di project kernel/common cabang 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/

Anda juga perlu melakukan salah satu hal berikut:

  • Buka Setelan > Opsi developer > Jaringan dan centang kotak untuk MIDI dalam dialog Pilih Konfigurasi USB.
  • Saat terhubung ke host USB, tarik ke bawah dari bagian atas layar, pilih entri USB untuk, lalu pilih MIDI.

BLE

MIDI over BLE selalu diaktifkan, asalkan perangkat mendukung BLE.

Virtual (interapp)

Transportasi virtual (antaraplikasi) selalu diaktifkan.

Mengklaim fitur

Aplikasi dapat memeriksa keberadaan dukungan MIDI menggunakan fitur android.software.midi.

Untuk mengklaim dukungan MIDI, tambahkan baris ini ke device.mk Anda:

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.
midi.xml

Lihat Dokumen Definisi Kompatibilitas (CDD) Android untuk mengetahui informasi tentang persyaratan untuk mengklaim fitur.

Melakukan proses debug saat dalam mode host

Saat dalam mode host USB, proses debug Android Debug Bridge (adb) melalui USB tidak tersedia. Lihat bagian Penggunaan nirkabel di Android Debug Bridge untuk mengetahui alternatifnya.