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 transportasi USB. MIDI 2.0 adalah standar MIDI baru yang ditetapkan pada tahun 2020. Protokol ini menambahkan fitur seperti komunikasi dua arah, resolusi lebih tinggi, dan pertukaran properti. MIDI 2.0 melalui mode host USB selalu diaktifkan ketika dukungan MIDI diaktifkan pada platform.

Sebenarnya, MIDI tidak berhubungan 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 pengembang 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. Aplikasi MIDI terutama bergantung pada kelas MidiManager untuk menemukan, membuka, dan menutup satu atau beberapa objek MidiDevice , dan meneruskan data ke dan dari setiap perangkat melalui port input dan output MIDI perangkat.

Transportasi

Lapisan transport 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 Low Energy (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 mengizinkan pengembang untuk mengimplementasikan MIDI melalui USB pada tingkat aplikasi, namun hingga saat ini belum ada API platform bawaan untuk MIDI.

Dimulai dengan rilis Android 6.0 (Marshmallow), pembuat perangkat dapat mengaktifkan dukungan MIDI opsional di platform. Android secara langsung mendukung transportasi USB, BLE, dan virtual (interapp). Android mendukung MIDI 1.0 melalui adaptor eksternal.

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

Sisa 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 transportasi virtual.

Mode host USB

Untuk mengaktifkan MIDI untuk mode host USB, pertama-tama dukung mode host USB secara umum, lalu aktifkan CONFIG_SND_RAWMIDI dan CONFIG_SND_USB_MIDI di konfigurasi kernel Anda. Lihat Konfigurasi Kernel Android.

MIDI melalui transportasi USB secara resmi ditentukan oleh Definisi Kelas Perangkat Universal Serial Bus untuk Perangkat MIDI Rilis 1.0 standar 1 Nov 1999 yang diterbitkan oleh USB Implementers Forum, Inc.

Mode periferal USB

Untuk mengaktifkan MIDI untuk mode periferal USB, Anda mungkin perlu menerapkan patch pada kernel Linux Anda 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), juga belum digabungkan di kernel.org upstream.

Tambalan ditampilkan dalam urutan penerapan untuk pohon kernel di proyek 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/

Anda juga perlu melakukan salah satu hal berikut:

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

BLE

MIDI melalui BLE selalu diaktifkan, asalkan perangkat mendukung BLE.

Virtual (interaplikasi)

Transportasi virtual (interapp) selalu diaktifkan.

Mengklaim fitur tersebut

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 informasi tentang persyaratan untuk mengklaim fitur tersebut.

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 untuk alternatifnya.