MIDI

Instrumento musical digital de interface (MIDI, na sigla em inglês) é um protocolo padrão para interconectar computadores com instrumentos, iluminação de palco e outras mídias com foco no tempo.

No Android 13 e versões mais recentes, o suporte a MIDI 2.0 foi adicionado ao transporte USB. MIDI 2.0 é uma versão mais recente padrão definido em 2020. Esse protocolo adiciona recursos como comunicação bidirecional, e troca de propriedades. MIDI 2.0 via modo host USB fica sempre ativado quando há suporte a MIDI está ativado na plataforma.

Falando sério, MIDI não está relacionado ao áudio. Mas, como o MIDI é comumente usado música, este artigo será colocado na seção de áudio.

MIDI para NDK

O Android 10 facilita a portabilidade de apps de áudio profissionais usar MIDI para a plataforma Android.

AMidi é um A API NDK que oferece ao app aos desenvolvedores a capacidade de enviar e receber dados MIDI com código C/C++.

Os apps Android MIDI costumam usar a API midi para se comunicarem com o serviço Android MIDI. MIDI (som) Os apps dependem principalmente da classe MidiManager para descobrir, abrir e fechar um ou mais MidiDevice. objetos e transmitir dados de e para cada dispositivo por meio das portas de entrada e saída MIDI.

Transportes

O transporte físico camada especificado em MIDI 1.0 original é uma repetição atual com Conector DIN de 5 pinos.

Desde MIDI 1.0, outros transportes foram definidos, incluindo MIDI sobre USB e MIDI over Bluetooth de baixa energia (BLE).

MIDI para Android

Compatível com Android USB On-the-Go, que permite que um dispositivo Android atue como um host USB para unidade periféricos. As APIs do modo host USB permitem que os desenvolvedores implementem MIDI sobre USB no nível do aplicativo, recentemente, não há APIs de plataforma integradas para MIDI.

A partir da versão do Android 6.0 (Marshmallow), os fabricantes de dispositivos podem ativar o MIDI opcional na plataforma. O Android oferece suporte direto a transportes USB, BLE e virtuais (entre apps). O Android oferece suporte a MIDI 1.0 por meio de um adaptador externo.

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

O restante deste artigo discute como um fabricante de dispositivos Android pode ativar a compatibilidade com MIDI na plataforma.

Como ativar transportes MIDI 1.0

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

Modo host USB

Para ativar o MIDI para o modo de host USB, primeiro ofereça suporte ao modo de host USB em geral e Depois, ative CONFIG_SND_RAWMIDI e CONFIG_SND_USB_MIDI no kernel configuração do Terraform. Consulte Configuração do kernel do Android.

O transporte MIDI por USB é definido formalmente pelo Definição de classe de dispositivo de barramento serial universal para dispositivos MIDI versão 1.0, 1o de novembro de 1999 padrão publicado pelo Fórum de implementações de USB, Inc. (em inglês).

Modo USB periférico

Para ativar o MIDI para o modo USB periférico, pode ser necessário aplicar patches ao kernel do Linux para integrar drivers/usb/gadget/f_midi.c ao gadget USB motorista. Esses patches estão disponíveis para a versão do kernel do Linux 3,10 Esses patches ainda não foram atualizados para ConfigFs (link em inglês) (uma nova arquitetura para drivers de gadget USB), nem são mesclados no upstream kernel.org (links em inglês)

Os patches são mostrados em ordem de confirmação para a árvore de kernel no projeto kernel/common ramificação android-3.10:

  1. https://android-review.googlesource.com/#/c/127450/ (link em inglês)
  2. https://android-review.googlesource.com/#/c/127452/ (link em inglês)
  3. https://android-review.googlesource.com/#/c/143714/ (link em inglês)

Você também precisa seguir um destes procedimentos:

  • Acesse Configurações > Opções do desenvolvedor > rede e marcar a caixa de MIDI na caixa de diálogo Selecionar configuração de USB.
  • Enquanto estiver conectado ao host USB, puxe a tela de cima para baixo e selecione a entrada USB para e, em seguida, selecione MIDI.

BLE

O MIDI sobre BLE fica sempre ativado, desde que o dispositivo seja compatível com BLE.

Virtual (entre apps)

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

Como reivindicar o recurso

Os apps podem verificar a presença de compatibilidade com MIDI usando o android.software.midi.

Para reivindicar a compatibilidade com MIDI, adicione esta linha ao device.mk:

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

Consulte a Documento de definição de compatibilidade do Android (CDD, na sigla em inglês) para mais informações sobre os requisitos para reivindicar o recurso.

Como depurar no modo host

Nesse modo, a depuração do Android Debug Bridge (adb) por USB não está disponível. Consulte a Seção de uso sem fio do Android Debug Bridge como alternativa.