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 eklenmiştir. MIDI 2.0, 2020'de tanımlanan daha yeni bir MIDI standardıdır. Bu protokol, iki 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ım ü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 alı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 MidiDevice nesneyi keşfetmek, açmak ve kapatmak için öncelikle MidiManager sınıfına bağlıdır ve verileri cihazın MIDI giriş ve çıkış bağlantı noktaları aracılığıyla her cihaza iletir.

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 hareket etmesine olanak tanır. USB ana makine modu API'leri, geliştiricilerin USB üzerinden MIDI'yi uygulama düzeyinde 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'leriyle uygulama programlama hakkında ayrıntılı bilgi için android.media.midi paketini inceleyin.

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 seçeneklerini 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 kutusunu işaretleyin.
  • USB ana makinesine bağlıyken ekranın üst kısmından aşağı çekip USB için girişini ve ardından MIDI'yi seçin.

BLE

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 kullanmak için gereken koşullar hakkında bilgi edinmek üzere Android Uyumluluk Tanımlama Belgesi (CDD)'ne bakın.

Düzenleyen modundayken hata ayıklama

USB ana bilgisayar modundayken USB üzerinden Android Debug Bridge (adb) hata ayıklama kullanılamaz. Alternatif için Android Debug Bridge'in Kablosuz kullanım bölümüne bakın.