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
:
- https://android-review.googlesource.com/#/c/127450/ (link em inglês)
- https://android-review.googlesource.com/#/c/127452/ (link em inglês)
- 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.