Musical Instrument Digital Interface (MIDI) to standardowy protokół do łączenia komputerów z instrumentami muzycznymi, oświetleniem scenicznym i innymi mediami zorientowanymi na czas.
Od Androida 13 obsługa MIDI 2.0 jest dodawana do transportu USB. MIDI 2.0 to nowszy standard MIDI zdefiniowany w 2020 roku. Ten protokół dodaje funkcje takie jak dwukierunkowa komunikacja, wyższa rozdzielczość i wymiana danych. Tryb hosta USB MIDI 2.0 jest zawsze włączony, gdy obsługa MIDI jest włączona na platformie.
Ściśle rzecz ujmując, MIDI nie ma nic wspólnego z dźwiękiem. Ponieważ jednak MIDI jest często używany w przypadku muzyki, ten artykuł znajduje się w sekcji dotyczącej dźwięku.
MIDI dla NDK
Android 10 ułatwia przenoszenie profesjonalnych aplikacji audio korzystających z MIDI na platformę Android.
AMidi
to NDK API, które umożliwia deweloperom aplikacji wysyłanie i odbieranie danych MIDI za pomocą kodu C/C++.
Aplikacje MIDI na Androida zwykle komunikują się z usługą MIDI na Androida za pomocą interfejsu API
midi
. Aplikacje MIDI zależą głównie od klasy
MidiManager
, aby wykrywać, otwierać i zamykać co najmniej 1 obiekt
MidiDevice
oraz przesyłać dane do i z każdego urządzenia przez porty wejścia i wyjścia MIDI.
Transporty
Fizyczny warstw transportu określony w oryginalnym MIDI 1.0 to pętla prądowa z 5-stykowym złączem DIN.
Od czasu wydania MIDI 1.0 zdefiniowano dodatkowe metody przesyłania, w tym MIDI przez USB i MIDI przez Bluetooth Low Energy (BLE).
MIDI na Androida
Android obsługuje USB On-The-Go, która umożliwia urządzeniu z Androidem działanie jako host USB do obsługi urządzeń peryferyjnych USB. Interfejsy API w trybie hosta USB umożliwiają deweloperom implementowanie MIDI przez USB na poziomie aplikacji, ale do niedawna nie było wbudowanych interfejsów API dla MIDI na platformie.
Począwszy od wersji Androida 6.0 (Marshmallow) producenci urządzeń mogą włączyć opcjonalne obsługiwanie MIDI na platformie. Android obsługuje bezpośrednio interfejsy USB, BLE i wirtualne (międzyaplikacyjne). Android obsługuje MIDI 1.0 za pomocą zewnętrznego adaptera.
Szczegółowe informacje o programowaniu aplikacji z użyciem interfejsów MIDI znajdziesz w pakiecie android.media.midi
.
Z dalszej części tego artykułu dowiesz się, jak producent urządzenia z Androidem może włączyć obsługę MIDI na platformie.
Włączanie transportów MIDI 1.0
Implementacja MIDI 1.0 zależy od ALSA w przypadku transportu w trybie hosta USB i w trybie urządzenia peryferyjnego USB. ALSA nie jest używana w przypadku BLE i transmisji wirtualnych.
Tryb hosta USB
Aby włączyć MIDI w trybie hosta USB, najpierw włącz ogólnie tryb hosta USB, a potem włącz CONFIG_SND_RAWMIDI
i CONFIG_SND_USB_MIDI
w konfiguracji jądra.
Przesyłanie MIDI przez USB jest formalnie zdefiniowane w standardzie Universal Serial Bus Device Class Definition for MIDI Devices Release 1.0 Nov 1, 1999 opublikowanym przez USB Implementers Forum, Inc.
Tryb urządzenia peryferyjnego USB
Aby włączyć MIDI w trybie urządzenia peryferyjnego USB, może być konieczne zastosowanie poprawek do jądra Linuksa w celu zintegrowania drivers/usb/gadget/f_midi.c
ze sterownikiem gadżetu USB. Te poprawki są dostępne dla jądra Linux w wersji 3.10. Te poprawki nie zostały jeszcze zaktualizowane w ConfigFs (nowa architektura dla sterowników gadżetów USB) ani scalone w upstreamie kernel.org.
Aktualizacje są wyświetlane w kolejności zatwierdzeń w drzewie jądra w projekcie kernel/common
na gałęzi android-3.10
:
- https://android-review.googlesource.com/#/c/127450/
- https://android-review.googlesource.com/#/c/127452/
- https://android-review.googlesource.com/#/c/143714/
Musisz też wykonać jedną z tych czynności:
- Otwórz Ustawienia > Opcje programisty > Sieć i zaznacz pole wyboru MIDI w oknie Wybieranie konfiguracji USB.
- Po podłączeniu do hosta USB przeciągnij palcem od góry ekranu w dół, wybierz pozycję USB dla, a potem wybierz MIDI.
BLE
MIDI przez BLE jest zawsze włączone, o ile urządzenie obsługuje BLE.
Wirtualne (międzyaplikacjami)
Wirtualny transport (między aplikacjami) jest zawsze włączony.
Zgłaszanie własności
Aplikacje mogą sprawdzać obsługę MIDI za pomocą funkcji android.software.midi
.
Aby włączyć obsługę MIDI, dodaj ten wiersz do pliku device.mk
:
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software. midi.xml
Więcej informacji o wymaganiach dotyczących korzystania z tej funkcji znajdziesz w dokumentacji dotyczącej zgodności z Androidem (CDD).
Debugowanie w trybie hosta
W trybie hosta USB debugowanie za pomocą Android Debug Bridge (adb) jest niedostępne. Alternatywą jest sekcja Korzystanie z połączenia bezprzewodowego w Android Debug Bridge.