Musical Instrument Digital Interface (MIDI) adalah protokol standar untuk menghubungkan komputer dengan alat musik, lampu panggung, dan media berorientasi waktu lainnya.
Mulai dari Android 13, dukungan MIDI 2.0 ditambahkan ke transpor USB. MIDI 2.0 adalah standar MIDI yang lebih baru yang ditentukan pada tahun 2020. Protokol ini menambahkan fitur seperti komunikasi dua arah, resolusi yang lebih tinggi, dan pertukaran properti. MIDI 2.0 melalui mode host USB selalu diaktifkan saat dukungan MIDI diaktifkan di platform.
Sebenarnya, MIDI tidak terkait dengan audio. Namun, karena MIDI biasanya 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
midi
API 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 transpor fisik yang ditentukan dalam MIDI 1.0 asli adalah loop saat ini dengan konektor DIN 5 pin.
Sejak MIDI 1.0, transpor 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 bertindak sebagai host USB untuk menggerakkan periferal USB. API mode host USB memungkinkan developer menerapkan MIDI melalui USB di tingkat aplikasi, tetapi hingga baru-baru 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 transport USB, BLE, dan virtual (interapp). Android mendukung MIDI 1.0 melalui adaptor eksternal.
Untuk mengetahui detail tentang pemrograman aplikasi dengan MIDI API, lihat paket
android.media.midi
.
Bagian lain dari artikel ini membahas cara pembuat perangkat Android dapat mengaktifkan dukungan MIDI di platform.
Mengaktifkan transpor MIDI 1.0
Penerapan MIDI 1.0 bergantung pada ALSA untuk mode host USB dan transpor mode periferal USB. ALSA tidak digunakan untuk BLE dan transpor virtual.
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
dalam konfigurasi
kernel Anda. Lihat Konfigurasi Kernel Android.
Transpor 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
Guna mengaktifkan MIDI untuk mode periferal USB, Anda mungkin perlu menerapkan patch
ke kernel Linux untuk mengintegrasikan drivers/usb/gadget/f_midi.c
ke dalam 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 tidak digabungkan di upstream
kernel.org.
Patch ditampilkan dalam urutan commit untuk hierarki kernel di project kernel/common
cabang android-3.10
:
- https://android-review.googlesource.com/#/c/127450/
- https://android-review.googlesource.com/#/c/127452/
- https://android-review.googlesource.com/#/c/143714/
Anda juga perlu melakukan salah satu hal berikut:
- Buka Setelan > Opsi developer > Jaringan, lalu centang kotak MIDI di dialog Pilih Konfigurasi USB.
- Saat terhubung ke host USB, tarik ke bawah dari bagian atas layar, pilih entri USB for, lalu pilih MIDI.
BLE
MIDI melalui BLE selalu diaktifkan, asalkan perangkat mendukung BLE.
Virtual (antar-aplikasi)
Transpor virtual (antar-aplikasi) selalu diaktifkan.
Mengklaim fitur
Aplikasi dapat menyaring 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 Android (CDD) 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 Usage Wireless di Android Debug Bridge untuk mengetahui alternatifnya.