MIDI

Digitale di strumenti musicali L'interfaccia (MIDI) è un protocollo standard per interconnettere computer con strumenti musicali, luci di palcoscenico e altri media orientati al tempo.

A partire da Android 13, al trasporto USB viene aggiunto il supporto di MIDI 2.0. MIDI 2.0 è una nuova versione definito nel 2020. Questo protocollo aggiunge funzioni come la comunicazione bidirezionale, risoluzione e scambio di proprietà. La modalità host MIDI 2.0 tramite USB è sempre abilitata quando il supporto MIDI sia abilitata sulla piattaforma.

In poche parole, il MIDI non è correlato all'audio. Ma poiché il MIDI è comunemente usato musica, questo articolo si trova nella sezione Audio.

MIDI per NDK

Android 10 semplifica il trasferimento delle app audio professionali usando MIDI sulla piattaforma Android.

AMidi è un L'API NDK che fornisce alle app agli sviluppatori la possibilità di inviare e ricevere dati MIDI con codice C/C++.

In genere le app Android MIDI utilizzano l'API midi per comunicare con il servizio Android MIDI. MIDI le app dipendono principalmente dalla classe MidiManager per rilevare, aprire e chiudere una o più MidiDevice e passano i dati a e da ogni dispositivo attraverso le porte di ingresso e uscita MIDI del dispositivo.

Trasporti

Il trasporto fisico specificato nel MIDI 1.0 originale è un loop di corrente con Connettore DIN a 5 pin.

A partire dal MIDI 1.0, sono stati definiti ulteriori trasporti, incluso MIDI over USB e MIDI over Bluetooth Low Energy (BLE).

MIDI per Android

Android supporta USB ovunque ti trovi, che consente a un dispositivo Android di fungere da host USB per unità USB periferiche. Le API in modalità host USB consentono agli sviluppatori di implementare MIDI tramite USB a livello di applicazione, ma di recente non sono state integrate API della piattaforma per MIDI.

A partire dalla release Android 6.0 (Marshmallow), i produttori di dispositivi possono attivare la funzionalità MIDI facoltativa assistenza nella piattaforma. Android supporta direttamente i trasporti USB, BLE e virtuali (interapp). Android supporta MIDI 1.0 tramite un adattatore esterno.

Per maggiori dettagli sulla programmazione delle applicazioni con le API MIDI, vedi android.media.midi pacchetto.

Nella parte restante di questo articolo viene illustrato come i produttori di dispositivi Android attivare il supporto MIDI nella piattaforma.

Abilitazione dei trasporti MIDI 1.0

L'implementazione di MIDI 1.0 dipende da ALSA per la modalità host USB e il trasporto in modalità periferica USB. ALSA non viene utilizzato per la tecnologia BLE e i trasporti virtuali.

Modalità host USB

Per abilitare la modalità MIDI per la modalità host USB, devi prima supportare la modalità host USB in generale e quindi abilita CONFIG_SND_RAWMIDI e CONFIG_SND_USB_MIDI nel kernel configurazione. Vedi Configurazione del kernel Android.

Il trasporto MIDI tramite USB è definito formalmente dal Universal Serial Bus Device Class Definition for MIDI Device Release 1.0 1 novembre 1999 standard pubblicato USB Implementers Forum, Inc.

Modalità periferica USB

Per abilitare la modalità MIDI per periferica USB, potrebbe essere necessario applicare patch al kernel Linux per integrare drivers/usb/gadget/f_midi.c nel gadget USB conducente. Queste patch sono disponibili per la versione kernel Linux 3.10. Queste patch non sono ancora state aggiornate per ConfigF (una nuova architettura per i driver per gadget USB), né vengono uniti a monte kernel.org.

Le patch vengono mostrate in ordine di commit per l'albero del kernel nel progetto 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/

Devi inoltre effettuare una delle seguenti operazioni:

  • Vai a Impostazioni > Opzioni sviluppatore > Networking e seleziona la casella per la modalità MIDI nella finestra di dialogo Seleziona configurazione USB.
  • Con il collegamento all'host USB, scorri verso il basso dalla parte superiore dello schermo, seleziona la voce USB per, quindi seleziona MIDI.

BLE

La tecnologia MIDI over BLE è sempre attiva, a condizione che il dispositivo supporti la tecnologia BLE.

Virtuale (interapp)

Il trasporto virtuale (interapp) è sempre attivato.

Rivendicare la funzionalità

Le app possono filtrare la presenza di supporto MIDI utilizzando Funzionalità android.software.midi.

Per richiedere il supporto MIDI, aggiungi questa riga a device.mk:

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

Consulta le Android Compatibility Definition Document (CDD) per informazioni sui requisiti per rivendicare la funzionalità.

Debug in modalità host

In modalità host USB, il debug di Android Debug Bridge (adb) tramite USB non è disponibile. Consulta Sezione Utilizzo wireless di Android Debug Bridge per un'alternativa.