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.
Ogólnie rzecz biorąc, MIDI nie ma związku z dźwiękiem. Ponieważ jednak MIDI jest często używany do tworzenia 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 wykorzystują przede wszystkim klasę
MidiManager
, aby wykrywać, otwierać i zamykać obiekty
MidiDevice
oraz przekazywać dane do i z każdego urządzenia przez porty wejściowe i wyjściowe MIDI.
Transporty
Fizyczna warstwa transportu określona w pierwotnej wersji MIDI 1.0 to pętla bieżącej z 5-stykowym złączem DIN.
Od wersji 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, dzięki czemu urządzenie z Androidem może działać 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.
Począwszy od Androida 6.0 (Marshmallow) twórcy urządzeń mogą włączyć na platformie opcjonalną obsługę MIDI. 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
.
W pozostałej części tego artykułu omawiamy, jak producent urządzeń 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 protokołu ALSA w przypadku korzystania z trybu hosta USB i transportu między urządzeniami peryferyjnymi 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. Zobacz Konfigurację jądra Androida.
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
Tryb MIDI przez BLE jest zawsze włączony, o ile urządzenie obsługuje BLE.
Wirtualnie (interapp)
Wirtualny transport (między aplikacjami) jest zawsze włączony.
Roszczenie do funkcji
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 zgłoszenia tej funkcji znajdziesz w dokumentacji zdefiniowanej zgodności Androida (CDD).
Debugowanie w trybie hosta
W trybie hosta USB debugowanie Android Debug Bridge (adb) przez USB jest niedostępne. Alternatywą jest sekcja Korzystanie z łączności bezprzewodowej w Android Debug Bridge.