Digital Alat Musik Antarmuka (MIDI) adalah protokol standar untuk menghubungkan komputer dengan instrumen, pencahayaan panggung, dan media berorientasi waktu lainnya.
Mulai Android 13, dukungan MIDI 2.0 ditambahkan ke transportasi USB. MIDI 2.0 adalah MIDI yang lebih baru yang ditentukan pada tahun 2020. Protokol ini menambahkan fitur seperti komunikasi dua arah, resolusi, dan pertukaran properti. MIDI 2.0 melalui mode host USB selalu diaktifkan saat dukungan MIDI diaktifkan di platform.
Sebenarnya, MIDI tidak terkait dengan audio. Tetapi karena MIDI umum digunakan dengan musik, artikel ini ditempatkan di bagian audio.
MIDI untuk NDK
Android 10 memudahkan transfer aplikasi audio profesional menggunakan MIDI ke platform Android.
AMidi
adalah
NDK API yang memberi aplikasi
kemampuan untuk mengirim dan menerima
data MIDI dengan kode C/C++.
Aplikasi Android MIDI biasanya menggunakan
midi
API untuk berkomunikasi dengan layanan Android MIDI. MIDI
aplikasi terutama bergantung pada class
MidiManager
untuk menemukan, membuka, dan menutup satu atau beberapa
MidiDevice
serta meneruskan data ke dan dari setiap perangkat melalui port input dan output MIDI perangkat.
Transportasi
Alat transportasi fisik lapisan yang ditetapkan 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 over Bluetooth Energi Rendah (BLE) lebih lanjut.
MIDI untuk Android
Dukungan Android USB Perjalanan, yang memungkinkan perangkat Android bertindak sebagai {i>host<i} USB untuk menggerakkan USB periferal. API mode host USB mengizinkan developer untuk mengimplementasikan MIDI melalui USB di tingkat aplikasi, tetapi hingga belakangan ini tidak ada API platform bawaan untuk MIDI.
Mulai dari rilis Android 6.0 (Marshmallow), produsen perangkat dapat mengaktifkan MIDI opsional di platform ini. 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
android.media.midi
paket.
Bagian selanjutnya dari artikel ini membahas bagaimana pembuat perangkat Android dapat mengaktifkan dukungan MIDI di platform.
Mengaktifkan transport MIDI 1.0
Implementasi MIDI 1.0 bergantung pada ALSA untuk mode host USB dan transport 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 terlebih dahulu secara umum, dan
lalu aktifkan CONFIG_SND_RAWMIDI
dan CONFIG_SND_USB_MIDI
di kernel Anda
konfigurasi Anda. Lihat Konfigurasi Kernel Android.
Transportasi MIDI melalui USB secara formal didefinisikan oleh Universal Serial Bus Device Class Definition for MIDI Devices Rilis 1.0 1 Nov 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 gadget USB
{i>driver<i}. Patch ini tersedia untuk versi {i>kernel<i} Linux
3.10. {i>Patch<i} ini belum diperbarui untuk
ConfigF
(arsitektur baru
untuk driver gadget USB), dan juga 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 harus melakukan salah satu dari hal berikut:
- Buka Setelan > Opsi developer > Networking dan centang kotak MIDI di dialog Select USB Configuration.
- Saat terpasang ke {i>host<i} USB, tarik layar dari atas ke bawah, pilih entri USB for, lalu pilih MIDI.
BLE
MIDI melalui BLE selalu diaktifkan, asalkan perangkat mendukung BLE.
Virtual (interaplikasi)
Transportasi virtual (interapp) selalu diaktifkan.
Mengklaim fitur
Aplikasi dapat menyaring keberadaan dukungan MIDI menggunakan
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 Compatibility Definition Document (CDD) Android untuk informasi tentang persyaratan untuk mengklaim fitur.
Melakukan 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 sebagai alternatif.