MİDİ

Müzik Enstrümanı Dijital Arayüzü (MIDI), bilgisayarları müzik enstrümanları, sahne aydınlatması ve diğer zaman odaklı ortamlarla birbirine bağlamak için 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, iki yönlü iletişim, daha yüksek çözünürlük ve özellik değişimi gibi özellikler ekler. MIDI desteği platformda etkinleştirildiğinde, USB ana bilgisayar modu aracılığıyla MIDI 2.0 her zaman etkinleştirilir.

Açıkçası, MIDI'nin sesle ilgisi yoktur. Ancak MIDI yaygın olarak müzikle birlikte kullanıldığından bu yazı ses bölümüne yerleştirildi.

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ştiricilerine C/C++ koduyla MIDI verileri gönderip alma yeteneği veren bir NDK API'sidir .

Android MIDI uygulamaları genellikle Android MIDI hizmetiyle iletişim kurmak için midi API'sini kullanır. MIDI uygulamaları, bir veya daha fazla MidiDevice nesnesini keşfetmek, açmak ve kapatmak ve cihazın MIDI giriş ve çıkış bağlantı noktaları aracılığıyla her cihaza veri aktarmak için öncelikle MidiManager sınıfına bağlıdır.

Taşımalar

Orijinal MIDI 1.0'da belirtilen fiziksel taşıma katmanı, 5 pinli DIN konnektörlü bir akım döngüsüdür.

MIDI 1.0'dan bu yana, 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, bir Android cihazının USB çevre birimlerini çalıştırmak için bir USB ana bilgisayar görevi görmesine olanak tanıyan USB On-The-Go'yu destekler. USB ana bilgisayar modu API'leri, geliştiricilerin USB üzerinden MIDI'yi uygulama düzeyinde uygulamasına izin verir, 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 doğrudan USB, BLE ve sanal (uygulamalar arası) aktarımları destekler. Android, harici bir adaptör aracılığıyla MIDI 1.0'ı destekler.

MIDI API'leri ile uygulama programlamaya ilişkin ayrıntılar 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 anlatılmaktadı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 bilgisayar modu

USB ana bilgisayar modu için MIDI'yi etkinleştirmek üzere, öncelikle genel olarak USB ana bilgisayar modunu destekleyin ve ardından çekirdek yapılandırmanızda CONFIG_SND_RAWMIDI ve CONFIG_SND_USB_MIDI etkinleştirin. Bkz. Android Çekirdek Yapılandırması.

USB üzerinden MIDI aktarımı , USB Equipments Forum, Inc. tarafından yayınlanan MIDI Cihazları Sürüm 1.0 1 Kasım 1999 standardı için Evrensel Seri Veri Yolu Cihaz Sınıfı Tanımı tarafından resmi olarak tanımlanır.

USB çevre birimi modu

USB çevre birimi modu için MIDI'yi etkinleştirmek amacıyla, drivers/usb/gadget/f_midi.c USB aygıt sürücüsüne entegre etmek için Linux çekirdeğinize yamalar uygulamanız gerekebilir. Bu yamalar Linux çekirdeğinin 3.10 sürümü için mevcuttur. Bu yamalar henüz ConfigF'ler (USB gadget sürücüleri için yeni bir mimari) için güncellenmedi ve yukarı akış kernel.org'da birleştirilmedi.

Yamalar, proje kernel/common dal android-3.10 çekirdek ağacı için taahhüt 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ğ İletişimi'ne gidin ve USB Yapılandırmasını Seç iletişim kutusunda MIDI kutusunu işaretleyin.
  • USB ana bilgisayarına bağlıyken ekranın üst kısmından aşağı doğru çekin, için USB girişini seçin ve ardından MIDI öğesini seçin.

BLE

Cihazın BLE'yi desteklemesi koşuluyla, BLE üzerinden MIDI her zaman etkindir.

Sanal (uygulamalar arası)

Sanal (uygulamalar arası) aktarım her zaman etkindir.

Özelliği talep etme

Uygulamalar, android.software.midi özelliğini kullanarak MIDI desteğinin varlığını tarayabilir.

MIDI desteğini talep etmek için bu satırı device.mk ekleyin.mk:

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.
midi.xml

Özelliği talep etme gereksinimleri hakkında bilgi için Android Uyumluluk Tanımı Belgesine (CDD) bakın.

Ana bilgisayar modundayken hata ayıklama

USB ana makine modundayken, USB üzerinden Android Hata Ayıklama Köprüsü (adb) hata ayıklaması kullanılamaz. Alternatif olarak Android Debug Bridge'in Kablosuz kullanım bölümüne bakın.