Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

MIDI

Instrumento Musical Digital Interface (MIDI) es un protocolo estándar para la interconexión de ordenadores con instrumentos musicales, iluminación de la etapa, y otros medios de tiempo-orientado.

Estrictamente hablando, MIDI no está relacionado con el audio. Pero debido a que MIDI se usa comúnmente con música, este artículo se coloca en la sección de audio.

MIDI para NDK

Android 10 facilita la transferencia de aplicaciones de audio profesionales que utilizan MIDI a la plataforma Android.

AMidi es un API NDK que ofrece a los desarrolladores de aplicaciones la capacidad de enviar y recibir datos MIDI con el código C / C ++.

Android aplicaciones MIDI suelen utilizar el midi API para comunicarse con el servicio de Android MIDI. MIDI aplicaciones dependen principalmente de la MidiManager clase a descubrir, abrir y cerrar una o más MidiDevice objetos, y pasar datos hacia y desde cada dispositivo a través de los puertos de entrada y salida MIDI del dispositivo.

Transportes

La física capa de transporte especificada en MIDI 1.0 original es un bucle de corriente con DIN 5-pin conector.

Desde MIDI 1.0, se han definido los medios de transporte adicionales, incluyendo MIDI a través de USB y MIDI a través de Bluetooth Low Energy (BLE) .

MIDI para Android

Android soportes USB On-The-Go , que permite que un dispositivo Android para actuar como anfitrión del USB para conducir periféricos USB. Las API de modo host USB permiten a los desarrolladores implementar MIDI a través de USB a nivel de aplicación, pero hasta hace poco no había API de plataforma integradas para MIDI.

A partir de la versión de Android 6.0 (Marshmallow), los fabricantes de dispositivos pueden habilitar el soporte MIDI opcional en la plataforma. Android admite directamente los transportes USB, BLE y virtuales (entre aplicaciones). Android es compatible con MIDI 1.0 a través de un adaptador externo.

Para más detalles sobre la programación de aplicaciones con la API de MIDI, consulte la android.media.midi paquete.

El resto de este artículo analiza cómo un fabricante de dispositivos Android puede habilitar la compatibilidad con MIDI en la plataforma.

Habilitación de transportes

La implementación MIDI depende de ALSA para el modo de host USB y los transportes en modo periférico USB. ALSA no se utiliza para los transportes BLE y virtuales.

Modo de host USB

Para activar MIDI para el modo de host USB, modo host primer soporte USB en general, y luego permitir que CONFIG_SND_RAWMIDI y CONFIG_SND_USB_MIDI en la configuración del núcleo. Ver Configuración del kernel de Android.

El MIDI a través de USB de transporte se define formalmente por el bus serie universal Definición de clase de dispositivo MIDI para dispositivos de liberación 1.0 Nov 1, de 1999 norma publicada por el USB Implementers Forum, Inc .

Modo periférico USB

Para activar el modo MIDI para periféricos USB, es posible que tenga que aplicar parches a su núcleo de Linux para integrar drivers/usb/gadget/f_midi.c en el controlador de dispositivo USB. Estos parches están disponibles para la versión 3.10 del kernel de Linux. Estos parches aún no han sido actualizados para ConfigFs (una nueva arquitectura para los conductores de gadget USB), ni se fusionó cadena arriba kernel.org .

Los parches se muestran en comprometerse para que el árbol del núcleo en el proyecto de kernel/common rama 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/

También debe realizar una de las siguientes acciones:

  • Ir a Ajustes> Opciones de desarrollador> Redes y marque la casilla para MIDI en el diálogo Seleccionar Configuración USB.
  • Mientras está conectada al host USB, tire hacia abajo desde la parte superior de la pantalla, seleccione la entrada para USB, y luego seleccione MIDI.

BLE

MIDI sobre BLE siempre está habilitado, siempre que el dispositivo sea compatible con BLE.

Virtual (Interapp)

El transporte virtual (entre aplicaciones) siempre está habilitado.

Reclamando la característica

Apps puede detectar la presencia de soporte MIDI utilizando el android.software.midi función.

Para reclamar soporte MIDI, agregue esta línea a su device.mk :

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

Ver la definición de documento de compatibilidad de Android (DDC) para obtener información sobre los requisitos para reclamar la característica.

Depurar en modo host

En el modo de host USB, la depuración de Android Debug Bridge (adb) a través de USB no está disponible. Ver el uso de teléfonos celulares sección del androide Puente de depuración para una alternativa.