MIDI

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:

  1. https://android-review.googlesource.com/#/c/127450/
  2. https://android-review.googlesource.com/#/c/127452/
  3. 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.