Müzik Enstrümanı Dijital Arayüzü (MIDI), bilgisayarları müzik enstrümanları, sahne ışıklandırması ve zamana dayalı diğer medya araçlarıyla birbirine bağlamak için kullanılan standart bir protokoldür.
Android 13'ten itibaren USB aktarımına MIDI 2.0 desteği eklendi. MIDI 2.0, 2020'de tanımlanan daha yeni bir MIDI standardıdır. Bu protokol, çift yönlü iletişim, daha yüksek çözünürlük ve mülk değişimi gibi özellikler ekler. Platformda MIDI desteği etkinleştirildiğinde USB ana makine modu üzerinden MIDI 2.0 her zaman etkindir. Android 15 ve sonraki sürümlerde sanal aktarımlar üzerinden MIDI 2.0 desteklenir.
MIDI, sesle ilgili değildir. Ancak MIDI genellikle müzikle birlikte kullanıldığından bu makale, ses bölümünde yer almaktadır.
NDK için MIDI
Android 10, MIDI kullanan profesyonel ses uygulamalarının Android platformuna taşınmasını kolaylaştırır.
AMidi
, uygulama geliştiricilerin C/C++ koduyla MIDI verilerini göndermesine ve almasına olanak tanıyan bir NDK API'sidir.
Android MIDI uygulamaları, Android MIDI hizmetiyle iletişim kurmak için genellikle
midi
API'sini kullanır. MIDI uygulamaları, bir veya daha fazla
MidiManager
nesneyi keşfetmek, açmak ve kapatmak için öncelikle
MidiManager
sınıfına bağlıdır. Ayrıca, cihazın MIDI giriş ve çıkış bağlantı noktaları aracılığıyla her cihaza veri iletir ve her cihazdan veri alır.
MidiDevice
Araçlar (Transport)
Orijinal MIDI 1.0'da belirtilen fiziksel aktarım katmanı, 5 pimli DIN konnektörlü bir akım döngüsüdür.
MIDI 1.0'dan beri USB üzerinden MIDI ve Bluetooth Düşük Enerji (BLE) üzerinden MIDI dahil olmak üzere ek aktarımlar tanımlanmıştır.
Android için MIDI
Android, USB On-The-Go'yu destekler. Bu özellik, Android cihazın USB çevre birimlerini çalıştırmak için USB ana bilgisayarı olarak kullanılmasını sağlar. USB ana makine modu API'leri, geliştiricilerin uygulama düzeyinde USB üzerinden MIDI'yi uygulamasına olanak tanır ancak yakın zamana kadar MIDI için yerleşik platform API'leri yoktu.
Android 6.0 (Marshmallow) sürümünden itibaren cihaz üreticileri platformda isteğe bağlı MIDI desteğini etkinleştirebilir. Android, USB, BLE ve sanal (uygulamalar arası) aktarımları doğrudan destekler. Android, harici bir adaptör aracılığıyla MIDI 1.0'ı destekler.
MIDI API'leri ile uygulama programlama hakkında ayrıntılı bilgi için android.media.midi
paketine bakın.
Bu makalenin geri kalanında, bir Android cihaz üreticisinin platformda MIDI desteğini nasıl etkinleştirebileceği ele alınmaktadır.
MIDI 1.0 aktarımlarını etkinleştirme
MIDI 1.0 uygulaması, USB ana bilgisayar modu ve USB çevre birimi modu aktarımları için ALSA'ya bağlıdır. ALSA, BLE ve sanal aktarımlar için kullanılmaz.
USB ana makine modu
USB ana makine modunda MIDI'yi etkinleştirmek için önce genel olarak USB ana makine modunu destekleyin, ardından çekirdek yapılandırmanızda CONFIG_SND_RAWMIDI
ve CONFIG_SND_USB_MIDI
'yi etkinleştirin.
USB üzerinden MIDI aktarımı, Evrensel Seri Yol Cihaz Sınıfı Tanımı, MIDI Cihazlar için Sürüm 1.0, 1 Kasım 1999 standardı ile resmî olarak tanımlanır. Bu standart, USB Implementers Forum, Inc tarafından yayınlanmıştır.
USB çevre birimi modu
USB çevre birimi modunda MIDI'yi etkinleştirmek için drivers/usb/gadget/f_midi.c
'yı USB gadget sürücüsüne entegre etmek üzere Linux çekirdeğinize yamalar uygulamanız gerekebilir. Bu yamalar, Linux çekirdeği sürümü 3.10 için kullanılabilir. Bu yamalar henüz ConfigFs (USB gadget sürücüleri için yeni bir mimari) için güncellenmemiştir ve yukarı akış kernel.org'da birleştirilmemiştir.
Yama, proje kernel/common
dalındaki android-3.10
çekirdek ağacı için commit sırasına göre gösterilir:
- https://android-review.googlesource.com/#/c/127450/
- https://android-review.googlesource.com/#/c/127452/
- https://android-review.googlesource.com/#/c/143714/
Ayrıca aşağıdakilerden birini yapmanız gerekir:
- Ayarlar > Geliştirici seçenekleri > Ağ'a gidin ve USB Yapılandırmasını Seçin iletişim kutusunda MIDI'nin kutusunu işaretleyin.
- USB ana bilgisayara bağlıyken ekranın üst kısmından aşağı çekip USB için girişini ve ardından MIDI'yi seçin.
BDE
Cihaz BDE'yi desteklediği sürece BDE üzerinden MIDI her zaman etkindir.
Sanal (interapp)
Sanal (uygulamalar arası) aktarım her zaman etkindir.
Özelliği kullanma
Uygulamalar, android.software.midi
özelliğini kullanarak MIDI desteğinin olup olmadığını kontrol edebilir.
MIDI desteği talep etmek için device.mk
dosyasına şu satırı ekleyin:
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software. midi.xml
Özelliği kullanma koşulları hakkında bilgi edinmek için Android Uyumluluk Tanımı Belgesi'ne (CDD) bakın.
Düzenleyen modundayken hata ayıklama
USB ana makine modundayken USB üzerinden Android Debug Bridge (adb) hata ayıklama işlevi kullanılamaz. Alternatif için Android Debug Bridge'in Kablosuz kullanım bölümüne bakın.