L’interface numérique pour instruments de musique (MIDI) est un protocole standard permettant d’interconnecter des ordinateurs avec des instruments de musique, des éclairages de scène et d’autres supports temporels.
Strictement parlant, le MIDI n’est pas lié à l’audio. Mais comme le MIDI est couramment utilisé avec la musique, cet article est placé dans la section audio.
MIDI pour NDK
Android 10 facilite le portage des applications audio professionnelles utilisant le MIDI sur la plateforme Android.
AMidi
est une API NDK qui donne aux développeurs d’applications la possibilité d’envoyer et de recevoir des données MIDI avec du code C/C++.
Les applications MIDI Android utilisent généralement l’API midi
pour communiquer avec le service MIDI Android. Les applications MIDI dépendent principalement de la classe MidiManager
pour découvrir, ouvrir et fermer un ou plusieurs MidiDevice
objets, et transmettre des données vers et depuis chaque appareil via les ports d’entrée et de sortie MIDI de l’appareil.
Transports
La couche de transport physique spécifiée dans le MIDI 1.0 est une boucle de courant avec un connecteur DIN à 5 broches.
Depuis MIDI 1.0, des transports supplémentaires ont été définis, notamment le MIDI sur USBet le MIDI surBluetooth Low Energy(BLE).
MIDI pour Android
Android prend en chargeUSB On-The-Go,qui permet à un appareil Android d’agir comme un hôte USB pour piloter des périphériques USB. Les API du mode hôte USB permettent auxdéveloppeurs de mettre en œuvre le MIDI sur USB au niveau de l’application, mais jusqu’à récemment, il n’y avait pas d’API de plateforme intégrée pour le MIDI.
À partir de la version Android 6.0 (Marshmallow), les fabricants d’appareils peuvent activer le support MIDI optionnel dans la plateforme. Android prend directement en charge les transports USB, BLE et virtuels (interapp).Android prend en charge le MIDI 1.0 par le biais d’un adaptateur externe.
Pour plus de détails sur la programmation d’applications avec les API MIDI, consultez leandroid.media.midi
package.
Le reste de cet article traite de la façon dont un fabricant d’appareils Android peut activer le support MIDI dans la plateforme.
Activer les transports
L’implémentation du MIDI dépend d’ALSA pour les transports en mode hôte USB et en mode périphérique USB.ALSA n’est pas utilisé pour les transports BLE et virtuels.
Mode hôte USB
Pour activer le MIDI pour le mode hôte USB, commencez par prendre en charge le mode hôte USB en général, puis activez CONFIG_SND_RAWMIDI
et CONFIG_SND_USB_MIDI
dans votre kernelconfiguration. Voir Configuration du noyau Android.
Le transport MIDI sur USB est formellement défini par la normeUniversal Serial Bus Device Class Definition for MIDI Devices Release 1.0 Nov 1, 1999publiée par leUSB Implementers Forum, Inc.
Mode périphérique USB
Pour activer le MIDI pour le mode périphérique USB, vous devrez peut-être appliquer des patchs à votre noyau Linux pour intégrer drivers/usb/gadget/f_midi.c
dans le gadgetdriver USB. Ces correctifs sont disponibles pour le noyau Linux version3.10. Ces correctifs n’ont pas encore été mis à jour pourConfigFs(une nouvelle architecturepour les pilotes de gadgets USB), et ils ne sont pas non plus fusionnés sur upstreamkernel.org.
Les correctifs sont présentés dans l’ordre de commit pour l’arbre du noyau au projet kernel/common
branche android-3.10
:
- https://android-review.googlesource.com/#/c/127450/
- https://android-review.googlesource.com/#/c/127452/
- https://android-review.googlesource.com/#/c/143714/
Vous devez également effectuer l’une ou l’autre des opérations suivantes :
- Aller dans Paramètres > Options du développeur > Mise en réseau et cocher la case pour MIDI dans la boîte de dialogue Sélectionner la configuration USB.
- Alors que vous êtes connecté à l’hôte USB, tirez vers le bas depuis le haut de l’écran, sélectionnez l’entréeUSB pour, puis sélectionnez MIDI.
BLE
MIDI sur BLE est toujours activé, à condition que le périphérique prenne en charge BLE.
Virtuel (interapp)
Le transport virtuel (interapp) est toujours activé.
Réclamer la fonctionnalité
Les applications peuvent dépister la présence d’un support MIDI à l’aide de la fonctionnalitéandroid.software.midi
.
Pour revendiquer la prise en charge du MIDI, ajoutez cette ligne à votre device.mk
:
PRODUCT_COPY_FILES += \frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.midi.xml
Voir le document de définition de la compatibilité Android (CDD)pour des informations sur les exigences pour revendiquer la fonctionnalité.
Débogage en mode hôte
En mode hôte USB, le débogage Android Debug Bridge (adb) sur USB n’est pas disponible.Consultez la section Utilisation sans fil d’Android Debug Bridge pour une alternative.