MIDI

Instrument muzyczny (cyfrowa) Interfejs (MIDI) to standardowy protokół służący do łączenia komputerów instrumenty, oświetlenie sceniczne i inne media o określonym czasie trwania.

W Androidzie 13 obsługa MIDI 2.0 została dodana do transportu USB. MIDI 2.0 to nowszy standard MIDI zdefiniowanych w 2020 r. Zapewnia on takie funkcje, jak komunikacja dwukierunkowa, regulaminu i wymiany nieruchomości. Tryb MIDI 2.0 przez USB jest zawsze włączony, jeśli obsługa MIDI jest włączone na platformie.

Ogólnie rzecz biorąc, MIDI nie ma związku z dźwiękiem. Ponieważ jednak MIDI jest powszechnie używana ten artykuł znajduje się w sekcji „Dźwięk”.

MIDI dla NDK

Android 10 ułatwia przenoszenie profesjonalnych aplikacji audio za pomocą MIDI.

AMidi to NDK API zapewniający aplikacji wysyłanie i odbieranie danych MIDI za pomocą kodu w C/C++.

Aplikacje MIDI na Androida zwykle komunikują się z usługą Android MIDI za pomocą interfejsu API midi. MIDI aby wykrywać, otwierać i zamykać jeden lub więcej elementów typu MidiDevice, aplikacje zależą głównie od klasy MidiManager obiektów i przekazywać dane do i z każdego urządzenia przez porty wejściowe i wyjściowe MIDI.

Transport

Fizyczny transport warstwa określone w oryginalnym MIDI 1.0 to pętla bieżącego parametru 5-stykowe złącze DIN.

Od wersji MIDI 1.0 zostały zdefiniowane dodatkowe sposoby przesyłania, w tym MIDI przez USB i MIDI ponad Bluetooth Low Energy (BLE).

MIDI na Androida

Funkcje obsługiwane przez Androida USB On-The-Go, Dzięki temu urządzenie z Androidem może działać jako host USB, urządzeń peryferyjnych. Interfejsy API w trybie hosta USB zezwalają wdrożenia MIDI przez USB na poziomie aplikacji, ale Ostatnio nie było żadnych wbudowanych interfejsów API platformowych dla MIDI.

Począwszy od Androida 6.0 (Marshmallow) producenci urządzeń mogą włączyć opcjonalne MIDI. na platformie. Android bezpośrednio obsługuje przesyłanie danych przez USB, BLE i wirtualne (interapp). Android obsługuje standard MIDI 1.0 przez zewnętrzną przejściówkę.

Szczegółowe informacje o programowaniu aplikacji za pomocą interfejsów MIDI API znajdziesz w android.media.midi pakietu SDK.

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 transportu 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. Algorytm ALSA nie jest używany w przypadku BLE ani transportu wirtualnego.

Tryb hosta USB

Aby włączyć MIDI w trybie hosta USB, najpierw włącz ogólnie tryb hosta USB. a następnie włącz CONFIG_SND_RAWMIDI i CONFIG_SND_USB_MIDI w jądrze konfiguracji. Zobacz Konfiguracja jądra Androida.

Interfejs MIDI przez USB jest formalnie definiowany przez Definicja klasy uniwersalnej magistrali szeregowej dla urządzeń MIDI w wersji 1.0 1 listopada 1999 r. standard opublikowany przez USB Implementers Forum, Inc.

Tryb urządzenia peryferyjnego USB

Aby włączyć MIDI dla trybu urządzenia peryferyjnego USB, konieczne może być zastosowanie poprawek do jądra systemu Linux w celu integracji interfejsu drivers/usb/gadget/f_midi.c z gadżetem USB. sterownika. Te poprawki są dostępne dla wersji jądra systemu Linux 3.10. Te poprawki nie zostały jeszcze zaktualizowane dla: Pliki ConfigF (nowa architektura w przypadku sterowników gadżetów USB) ani nie są scalane ze strumieniami nadrzędnymi kernel.org

Poprawki są wyświetlane w kolejności zatwierdzenia dla drzewa jądra w projekcie kernel/common gałąź android-3.10:

  1. https://android-review.googlesource.com/#/c/127450/
  2. https://android-review.googlesource.com/#/c/127452/
  3. https://android-review.googlesource.com/#/c/143714/

Musisz też wykonać jedną z tych czynności:

  • Wybierz kolejno Ustawienia > Opcje programisty > sieci oraz zaznacz pole wyboru MIDI w oknie Wybierz konfigurację USB.
  • Po podłączeniu hosta USB przesuń palcem z góry ekranu w dół i wybierz wpis USB dla, a następnie wybierz MIDI.

BLE

Tryb MIDI przez BLE jest zawsze włączony, o ile urządzenie obsługuje BLE.

Wirtualnie (interapp)

Transport wirtualny (interapp) jest zawsze włączony.

Zgłoszenie do funkcji

Aplikacje mogą sprawdzać obecność obsługi MIDI za pomocą android.software.midi funkcja.

Aby korzystać z obsługi MIDI, dodaj ten wiersz do urządzenia device.mk:

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

Zobacz Dokument z definicją zgodności z Androidem (CDD) w celu uzyskania informacji na temat wymagań, które należy spełnić, by uzyskać dostęp do tej funkcji.

Debugowanie w trybie hosta

W trybie hosta USB debugowanie Android Debug Bridge (adb) przez USB jest niedostępne. Zobacz Sekcja Wykorzystanie sieci bezprzewodowej w narzędziu Android Debug Bridge.