Digital de instrumentos musicales (MIDI) es un protocolo estándar para interconectar computadoras con música instrumentos, iluminación escénica y otros medios orientados al tiempo.
A partir de Android 13, se admite MIDI 2.0 en el transporte USB. MIDI 2.0 es un formato MIDI más reciente definido en 2020. Este protocolo agrega funciones como comunicación bidireccional, mayor la resolución y el intercambio de propiedades. MIDI 2.0 a través del modo de host USB siempre está habilitado cuando se admite MIDI esté habilitado en la plataforma.
En sentido estricto, el MIDI no está relacionado con el audio. Sin embargo, como el MIDI se usa comúnmente con música, este artículo se encuentra en la sección de audio.
MIDI para NDK
Android 10 facilita la portabilidad de apps de audio profesionales usando MIDI en la plataforma de Android.
AMidi
es un
La API de NDK que brinda la app
a los desarrolladores la capacidad de enviar y recibir datos MIDI con código C/C++.
Por lo general, las apps MIDI de Android usan la API de
midi
para comunicarse con el servicio MIDI de Android. MIDI
Las apps dependen principalmente de la clase
MidiManager
para descubrir, abrir y cerrar uno o más
MidiDevice
.
y pasar datos hacia y desde cada dispositivo a través de los puertos de entrada y salida MIDI del dispositivo.
Transporte
El transporte físico capa especificado en el MIDI original 1.0 es un bucle de corriente con conector DIN de 5 pines.
A partir de MIDI 1.0, se definieron transportes adicionales, incluido MIDI mediante USB. y MIDI en Bluetooth de bajo consumo (BLE).
MIDI para Android
Android es compatible USB Sobre la marcha, que permite que un dispositivo Android funcione como host USB para almacenar USB periféricos. Las APIs del modo de host USB desarrolladores implementarán MIDI mediante USB a nivel de la aplicación, pero hasta que hace poco no ha habido APIs de plataforma integradas para MIDI.
A partir de la versión de Android 6.0 (Marshmallow), los fabricantes de dispositivos pueden habilitar el formato MIDI opcional en la plataforma. Android admite directamente transportes USB, BLE y virtuales (interapp). Android admite MIDI 1.0 a través de un adaptador externo.
Para obtener detalles sobre la programación de aplicaciones con las APIs de MIDI, consulta la
android.media.midi
.
En el resto del artículo, se analiza cómo un fabricante de dispositivos Android puede habilitar la compatibilidad con MIDI en la plataforma.
Habilitar transportes de MIDI 1.0
La implementación de MIDI 1.0 depende de ALSA para los transportes del modo de host USB y del modo periférico USB. ALSA no se usa para BLE ni transportes virtuales.
Modo de host USB
Para habilitar MIDI para el modo de host USB, primero debes admitir el modo de host USB en general.
Luego, habilita CONFIG_SND_RAWMIDI
y CONFIG_SND_USB_MIDI
en tu kernel
configuración. Consulta Configuración del kernel de Android.
El MIDI por transporte USB se define formalmente por el Definición de clase de dispositivo de bus universal en serie para dispositivos MIDI versión 1.0 1 de noviembre de 1999 estándar publicado por el USB Implementers Forum, Inc.
Modo periférico USB
Si quieres habilitar el modo MIDI para periférico USB, es posible que debas aplicar parches
al kernel de Linux para integrar drivers/usb/gadget/f_midi.c
en el gadget USB
controlador. Estos parches están disponibles para la versión de kernel de Linux
3.10. Aún no se actualizaron estos parches para
ConfigF
(una nueva arquitectura
para controladores de gadgets USB), ni se fusionan en el flujo ascendente
kernel.org
Los parches se muestran en orden de confirmación para el árbol del kernel en el proyecto kernel/common
.
rama android-3.10
:
- https://android-review.googlesource.com/#/c/127450/
- https://android-review.googlesource.com/#/c/127452/
- https://android-review.googlesource.com/#/c/143714/
También debes realizar una de las siguientes acciones:
- Ve a Configuración > Opciones para desarrolladores > Herramientas de redes y marca la casilla para MIDI en el diálogo Select USB Configuration.
- Mientras está conectado al host USB, desliza hacia abajo desde la parte superior de la pantalla, selecciona la entrada USB para y, luego, selecciona MIDI.
BLE
MIDI por BLE siempre está habilitado, siempre que el dispositivo sea compatible con BLE.
Virtual (interapp)
El transporte virtual (interapp) siempre está habilitado.
Reclamación de la función
Las apps pueden detectar la presencia de compatibilidad con MIDI a través del
android.software.midi
.
Para reclamar compatibilidad con MIDI, agrega esta línea a tu device.mk
:
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software. midi.xml
Consulta la Documento de definición de compatibilidad de Android (CDD) para obtener información sobre los requisitos para reclamar el elemento.
Cómo depurar en el modo de host
La depuración de Android Debug Bridge (adb) a través de USB no está disponible mientras se está en el modo de host USB. Consulta el Uso inalámbrico de Android Debug Bridge para obtener una alternativa.