Цифровой интерфейс музыкальных инструментов (MIDI) — стандартный протокол для соединения компьютеров с музыкальными инструментами, сценическим освещением и другими средствами информации, работающими по времени.
Начиная с Android 13, поддержка MIDI 2.0 добавлена в USB-транспорт. MIDI 2.0 — это новый стандарт MIDI, определенный в 2020 году. Этот протокол добавляет такие функции, как двусторонняя связь, более высокое разрешение и обмен свойствами. MIDI 2.0 через режим USB-хоста всегда включен, если поддержка MIDI включена на платформе.
Строго говоря, MIDI не имеет отношения к аудио. Но поскольку MIDI обычно используется с музыкой, эта статья помещена в раздел аудио.
MIDI для NDK
Android 10 упрощает портирование профессиональных аудиоприложений, использующих MIDI, на платформу Android.
AMidi
— это API NDK , который дает разработчикам приложений возможность отправлять и получать MIDI-данные с помощью кода C/C++.
Приложения Android MIDI обычно используют API midi
для связи с сервисом Android MIDI. Приложения MIDI в первую очередь зависят от класса MidiManager
для обнаружения, открытия и закрытия одного или нескольких объектов MidiDevice
и передачи данных на каждое устройство и с него через порты ввода и вывода MIDI устройства.
Транспорты
Физический транспортный уровень , определенный в оригинальном MIDI 1.0, представляет собой токовый контур с 5-контактным разъемом DIN .
Начиная с версии MIDI 1.0, были определены дополнительные транспорты, включая MIDI через USB и MIDI через Bluetooth Low Energy (BLE) .
MIDI для Android
Android поддерживает USB On-The-Go , что позволяет устройству Android выступать в качестве USB-хоста для управления периферийными устройствами USB. API режима USB-хоста позволяют разработчикам реализовывать MIDI через USB на уровне приложений, но до недавнего времени не было встроенных API платформы для MIDI.
Начиная с версии Android 6.0 (Marshmallow) производители устройств могут включить дополнительную поддержку MIDI в платформу. Android напрямую поддерживает USB, BLE и виртуальные (interapp) транспорты. Android поддерживает MIDI 1.0 через внешний адаптер.
Подробную информацию о программировании приложений с использованием API MIDI см. в пакете android.media.midi
.
В оставшейся части статьи обсуждается, как производитель Android-устройств может включить поддержку MIDI в свою платформу.
Включение транспортов MIDI 1.0
Реализация MIDI 1.0 зависит от ALSA для режимов USB-хоста и USB-периферийного режима транспортов. ALSA не используется для BLE и виртуальных транспортов.
Режим USB-хоста
Чтобы включить MIDI для режима USB-хоста, сначала включите поддержку режима USB-хоста в целом, а затем включите CONFIG_SND_RAWMIDI
и CONFIG_SND_USB_MIDI
в конфигурации ядра.
Транспорт MIDI через USB формально определен в стандарте Universal Serial Bus Device Class Definition for MIDI Devices Release 1.0 от 1 ноября 1999 г., опубликованном USB Implementers Forum, Inc.
Режим периферийного USB-устройства
Чтобы включить MIDI для режима USB-периферии, вам может потребоваться применить патчи к ядру Linux для интеграции drivers/usb/gadget/f_midi.c
в драйвер USB-гаджета. Эти патчи доступны для ядра Linux версии 3.10. Эти патчи еще не были обновлены для ConfigFs (новая архитектура для драйверов USB-гаджетов), и они не объединены на upstream kernel.org .
Патчи показаны в порядке фиксации для дерева ядра в ветке проекта kernel/common
android-3.10
:
- https://android-review.googlesource.com/#/c/127450/
- https://android-review.googlesource.com/#/c/127452/
- https://android-review.googlesource.com/#/c/143714/
Вам также необходимо выполнить одно из следующих действий:
- Перейдите в «Настройки» > «Параметры разработчика» > «Сеть» и установите флажок «MIDI» в диалоговом окне «Выбор конфигурации USB».
- Подключившись к USB-хосту, потяните вниз верхнюю часть экрана, выберите запись USB для , а затем выберите MIDI .
БЛЕ
MIDI через BLE всегда включен, если устройство поддерживает BLE.
Виртуальный (межприкладной)
Виртуальный (межприкладной) транспорт всегда включен.
Заявление о праве на функцию
Приложения могут проверять наличие поддержки MIDI с помощью функции android.software.midi
.
Чтобы заявить о поддержке MIDI, добавьте эту строку в ваш device.mk
:
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software. midi.xml
Информацию о требованиях для использования этой функции см. в документе «Определение совместимости Android» (CDD) .
Отладка в режиме хоста
В режиме USB-хоста отладка Android Debug Bridge (adb) через USB недоступна. Альтернативу см. в разделе «Использование беспроводных сетей » Android Debug Bridge.