MIDI

Instrument de musique (numérique) Interface (MIDI) est un protocole standard d'interconnexion d'ordinateurs avec des contenus musicaux d'instruments, d'éclairage de scène et d'autres supports temporels.

À partir d'Android 13, la compatibilité MIDI 2.0 est ajoutée au transport USB. MIDI 2.0 est un modèle MIDI 2.0 plus récent définie en 2020. Ce protocole ajoute des fonctionnalités telles que la communication bidirectionnelle, plus élevée la résolution et l'échange de propriétés. MIDI 2.0 via le mode hôte USB est toujours activé en cas de compatibilité MIDI 2.0 est activé sur la plate-forme.

À proprement parler, le MIDI n'est pas lié à l'audio. Mais comme MIDI est couramment utilisé avec musique, cet article est placé dans la section audio.

MIDI pour NDK

Android 10 facilite le portage des applications audio professionnelles l'utilisation de MIDI à la plateforme Android.

AMidi est un L'API NDK qui fournit à l'application aux développeurs la possibilité d'envoyer et de recevoir des données MIDI avec du code C/C++.

Les applications Android MIDI utilisent généralement l'API midi pour communiquer avec le service Android MIDI. MIDI les applications dépendent principalement de la classe MidiManager pour découvrir, ouvrir et fermer un ou plusieurs MidiDevice. objets, et de transmettre des données depuis et vers chaque appareil via ses ports d'entrée et de sortie MIDI.

Transports

Le transport physique couche spécifié dans MIDI 1.0 d'origine est une boucle de courant avec Connecteur DIN à 5 broches.

Depuis MIDI 1.0, des transports supplémentaires ont été définis, y compris MIDI via USB. et MIDI via Bluetooth à basse consommation (BLE).

MIDI pour Android

Compatible avec Android USB On-The-Go, qui permet à un appareil Android d'agir en tant qu'hôte USB pour transférer des fichiers périphériques. Les API du mode hôte USB permettent développeurs d'implémenter MIDI via USB au niveau de l'application, mais jusqu'à ce que il n'y a eu récemment aucune API de plate-forme intégrée pour MIDI.

À partir de la version Android 6.0 (Marshmallow), les fabricants d'appareils peuvent activer l'option MIDI facultative sur la plate-forme. Android prend directement en charge les transports USB, BLE et virtuels (interapp). Android est compatible avec MIDI 1.0 via un adaptateur externe.

Pour en savoir plus sur la programmation d'applications avec les API MIDI, consultez les android.media.midi d'un package.

Le reste de cet article explique comment les fabricants d'appareils Android peuvent activer la prise en charge MIDI sur la plateforme.

Activer les transports MIDI 1.0

L'implémentation de MIDI 1.0 dépend d'ALSA pour le mode hôte USB et les transports en mode périphérique USB. ALSA n’est pas utilisé pour les transports BLE et virtuels.

Mode hôte USB

Pour activer MIDI pour le mode hôte USB, assurez-vous d'abord de prendre en charge le mode hôte USB en général, puis Activez ensuite CONFIG_SND_RAWMIDI et CONFIG_SND_USB_MIDI dans votre noyau configuration. Consultez la page Configuration du noyau Android.

Le transport MIDI via USB est officiellement défini par le <ph type="x-smartling-placeholder"></ph> Définition de classe de classe d'appareil de bus série universelle pour les appareils MIDI version 1.0 1er novembre 1999 standard publiée par USB Implementers Forum, Inc.

Mode périphérique USB

Pour activer MIDI pour le mode périphérique USB, vous devrez peut-être appliquer des correctifs à votre noyau Linux pour intégrer drivers/usb/gadget/f_midi.c dans le gadget USB pilote. Ces correctifs sont disponibles pour les versions de noyau Linux 3.10. Ces correctifs n'ont pas encore été mis à jour pour Configurations (une nouvelle architecture pour les pilotes de gadgets USB), et ne sont pas fusionnées en amont. kernel.org

Les correctifs sont affichés dans l'ordre de commit pour l'arborescence du noyau dans le projet kernel/common branche 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/.

Vous devez également effectuer l'une des opérations suivantes:

  • Accédez à Paramètres > Options pour les développeurs > la mise en réseau et cochez la case MIDI dans la boîte de dialogue "Select USB Configuration" (Sélectionner une configuration USB).
  • Une fois connecté à l'hôte USB, faites glisser votre doigt de haut en bas sur l'écran, puis sélectionnez l'entrée USB pour, puis sélectionnez MIDI.

BLE

MIDI via BLE est toujours activé, à condition que l'appareil soit compatible BLE.

Virtuel (interapplis)

Le transport virtuel (interappli) est toujours activé.

Revendiquer la fonctionnalité

Les applications peuvent rechercher la prise en charge des appareils MIDI à l'aide du android.software.midi.

Pour demander la prise en charge 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

Consultez le Document de définition de compatibilité (CDD) Android pour plus d'informations sur les conditions requises pour revendiquer la fonctionnalité.

Débogage en mode hôte

En mode hôte USB, le débogage adb (Android Debug Bridge) via USB n'est pas disponible. Consultez les "Wireless usage" (Utilisation du réseau sans fil) d'Android Debug Bridge.