O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

MIDI

Musical Instrument Digital Interface (MIDI) é um protocolo padrão para interligar computadores com instrumentos musicais, iluminação de palco, e outros meios de comunicação orientada para o tempo.

Estritamente falando, o MIDI não está relacionado ao áudio. Mas como o MIDI é comumente usado com música, este artigo foi colocado na seção de áudio.

MIDI para NDK

O Android 10 torna mais fácil portar aplicativos de áudio profissionais usando MIDI para a plataforma Android.

AMidi é uma API NDK que dá aos desenvolvedores de aplicativos a capacidade de enviar e receber dados MIDI com código C / C ++.

MIDI apps Android costumo usar o midi API para se comunicar com o serviço MIDI Android. MIDI aplicações dependerá principalmente da MidiManager classe de descobrir, aberta, e fechar uma ou mais MidiDevice objetos, e transmitir dados para e a partir de cada dispositivo através de portas de entrada e de saída MIDI do dispositivo.

Transportes

A física da camada de transporte especificado no original MIDI 1.0 é um circuito de corrente com DIN 5 pinos do conector.

Desde MIDI 1.0, transportes adicionais foram definidos, incluindo MIDI via USB e MIDI sobre Bluetooth Low Energy (BLE) .

MIDI para Android

Android suporta USB On-The-Go , que permite que um dispositivo Android para atuar como um host USB para conduzir periféricos USB. As APIs do modo host USB permitem que os desenvolvedores implementem MIDI sobre USB no nível do aplicativo, mas até recentemente não havia APIs de plataforma integradas para MIDI.

A partir do lançamento do Android 6.0 (Marshmallow), os fabricantes de dispositivos podem habilitar o suporte MIDI opcional na plataforma. O Android oferece suporte direto para transportes USB, BLE e virtuais (entre aplicativos). O Android oferece suporte a MIDI 1.0 por meio de um adaptador externo.

Para mais detalhes sobre programação de aplicativos com as APIs de MIDI, consulte o android.media.midi pacote.

O restante deste artigo discute como um fabricante de dispositivo Android pode habilitar o suporte a MIDI na plataforma.

Habilitando transportes

A implementação de MIDI depende do ALSA para modos de host USB e transportes de modo periférico USB. ALSA não é usado para BLE e transportes virtuais.

Modo host USB

Para habilitar MIDI para o modo de host USB, modo de host primeiro suporte USB em geral, e, em seguida, permitir que CONFIG_SND_RAWMIDI e CONFIG_SND_USB_MIDI na sua configuração do kernel. Veja Configuração do Kernel Android.

O MIDI via USB transporte é formalmente definido pela Universal Serial Bus Classe de Dispositivo Definição para MIDI Devices Release 1.0 01 novembro de 1999 padrão publicado pelo USB Implementers Forum, Inc .

Modo periférico USB

Para habilitar MIDI para o modo periférico USB, você pode precisar aplicar patches para o kernel Linux para integrar drivers/usb/gadget/f_midi.c no driver dispositivo USB. Esses patches estão disponíveis para o kernel Linux versão 3.10. Essas manchas ainda não foram atualizados para ConfigFs (uma nova arquitetura para os motoristas gadgets USB), nem eles são mesclados no montante kernel.org .

Os patches são mostrados em cometer para que a árvore do kernel no projeto kernel/common ramo 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/

Você também precisa fazer o seguinte:

  • Vá para Configurações> Opções do desenvolvedor> Rede e marque a caixa para MIDI no diálogo Selecionar Configuração USB.
  • Enquanto anexado ao host USB, puxe para baixo a partir do topo da tela, selecione o USB entrada para, em seguida, selecione MIDI.

BLE

MIDI sobre BLE está sempre ativado, desde que o dispositivo suporte BLE.

Virtual (interapp)

O transporte virtual (entre aplicativos) está sempre ativado.

Reivindicando o recurso

Aplicativos podem rastrear a presença de suporte MIDI usando o android.software.midi recurso.

Para reivindicar suporte MIDI, adicione esta linha ao seu device.mk :

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

Veja o documento Definição de Compatibilidade Android (CDD) para obter informações sobre os requisitos para reivindicar o recurso.

Depuração no modo host

Enquanto estiver no modo de host USB, a depuração do Android Debug Bridge (adb) por USB não estará disponível. Veja o uso sem fio seção de Android Debug Bridge por uma alternativa.