MIDI

Müzik Enstrümanı Dijital Arayüzü (MIDI); bilgisayarları müzik enstrümanları, sahne ışıklandırması ve zaman odaklı diğer medyalara 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 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 etkinleştirilir.

MIDI, teknik olarak sesle ilgili değildir. Ancak MIDI genellikle müzikle birlikte kullanıldığı için bu makale ses bölümüne yerleştirilmiştir.

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ştiricilere C/C++ kodu ile MIDI verileri gönderme ve alma olanağı sunan 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 nesnesini keşfetmek, açmak ve kapatmak ve cihazın MIDI giriş ve çıkış bağlantı noktaları üzerinden her cihazla veri aktarmak için öncelikle MidiManager sınıfından yararlanır.

Ulaşım

Orijinal MIDI 1.0'da belirtilen fiziksel aktarıcı katmanı, 5 pimli DIN konnektörüne sahip 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, Android cihazların USB çevre birimlerini çalıştırmak için USB ana makinesi gibi davranmasına olanak tanıyan USB Hareket Halinde'yi destekler. USB ana makine modu API'leri, geliştiricilerin uygulama düzeyinde USB üzerinden MIDI uygulamasını sağlar 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 (uygulama içi) 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 paketine bakın.

Bu makalenin geri kalanında, Android cihaz üreticilerinin platformda MIDI desteğini nasıl etkinleştirebileceği ele alınmaktadır.

MIDI 1.0 aktarımını etkinleştirme

MIDI 1.0 uygulaması, USB ana makine 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 modu için MIDI'yi etkinleştirmek istiyorsanız önce USB ana makine modunu genel olarak destekleyin, ardından çekirdek yapılandırmanızda CONFIG_SND_RAWMIDI ve CONFIG_SND_USB_MIDI'yi etkinleştirin. Android Çekirdek Yapılandırması başlıklı makaleyi inceleyin.

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

USB çevre birimi modu

USB çevre birimi modu için MIDI'yi etkinleştirmek istiyorsanız drivers/usb/gadget/f_midi.c'ü USB cihaz sürücüsüne entegre etmek üzere Linux çekirdeğinize yamalar uygulamanız gerekebilir. Bu yamalar, Linux çekirdeği 3.10 sürümü için kullanılabilir. Bu yamalar henüz ConfigFs (USB cihaz sürücüleri için yeni bir mimari) için güncellenmedi veya kernel.org'da birleştirilmedi.

Yamalar, kernel/common projesinin android-3.10 dalındaki ç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 de yapmanız gerekir:

  • Ayarlar > Geliştirici seçenekleri > Ağ'a gidin ve USB Yapılandırması'nı Seç iletişim kutusunda MIDI kutusunu işaretleyin.
  • USB ana makinesine takılıyken ekranın üst kısmından aşağı doğru çekin, Şunun için USB girişini ve ardından MIDI'yı seçin.

BDE

Cihaz BDE'yi destekliyorsa BDE üzerinden MIDI her zaman etkindir.

Sanal (uygulamalar arası)

Sanal (uygulamalar arası) taşıma her zaman etkindir.

Özellik için hak talebinde bulunma

Uygulamalar, android.software.midi özelliğini kullanarak MIDI desteğinin olup olmadığını kontrol edebilir.

MIDI desteği için hak talebinde bulunmak istiyorsanız device.mk dosyanıza şu satırı ekleyin:

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

Özellik için hak talebinde bulunma şartları hakkında bilgi edinmek üzere Android Uyumluluk Tanımlama Belgesi'ne (CDD) bakın.

Ana makine modundayken hata ayıklama

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