35 Feuillet d’informations MIDI
En conjonction avec un travail sur le moteur audio, Ableton a fait l’effort supplémentaire d’analyser le timing MIDI de Live et d’y apporter des améliorations lorsque c’était nécessaire. Nous avons rédigé ce feuillet d’information pour aider les utilisateurs à comprendre les problèmes impliqués dans la création d’un environnement MIDI informatisé fiable et précis, et afin d’expliquer l’approche de Live pour résoudre ces problèmes.
Note : les problèmes de timing MIDI évoqués dans cet exposé ne s’appliquent généralement pas aux utilisateurs ayant une interface audio et MIDI de haute qualité. Si vous avez déjà investi du temps et de l’argent en vue d’optimiser ces facteurs dans votre studio et si vous ne rencontrez pas de problèmes de timing MIDI, vous n’avez probablement pas besoin de lire ces informations.
35.1 Comportement MIDI idéal
Pour comprendre comment fonctionne le MIDI dans une station de travail audio numérique (que nous appellerons dorénavant DAW de l’Anglais Digital Audio Workstation), il est utile de présenter quelques termes et concepts communs. Une DAW doit pouvoir accepter trois scénarios distincts concernant le MIDI :
- L’enregistrement se réfère à l’envoi à la DAW, pour stockage, d’informations MIDI de note et de contrôleur depuis un dispositif physique (comme un clavier MIDI). Un environnement d’enregistrement idéal capturera ces informations entrantes avec une précision de timing parfaite en relation avec le déroulement chronologique ou « timeline » du morceau — aussi précisément qu’un enregistrement audio.
- La lecture se réfère à deux scénarios liés quand on travaille avec des DAW. Le premier implique d’envoyer des informations MIDI de note et de contrôleur depuis la DAW à un dispositif physique comme un synthétiseur. Le second implique de convertir les informations MIDI stockées en données audio à l’intérieur de l’ordinateur, telles que reproduites par un plug-in comme le synthétiseur Operator. Dans les deux cases, un environnement de lecture idéal fournira une reproduction parfaite des informations stockées.
- Le renvoi implique d’envoyer à la DAW des informations MIDI de note et de contrôleur depuis un dispositif physique (comme un clavier MIDI) puis, en temps réel, de les renvoyer à un synthétiseur physique ou à un plug-in interne à la DAW. Un environnement de renvoi idéal doit « sembler » aussi précis et réactif qu’un instrument physique comme le piano.
35.2 Problèmes de timing MIDI
La réalité du MIDI sur ordinateur est complexe, et implique tant de variables que les systèmes idéaux décrits ci-dessus sont impossibles à obtenir. Il existe deux problèmes fondamentaux :
- La latence se réfère au constant retard inhérent à un système. C’est un problème propre aux DAW car l’audio numérique ne peut pas être transféré dans ou hors d’une interface audio en temps réel, il doit passer par une mémoire tampon. Mais même les instruments acoustiques présentent un certain degré de latence; dans un piano, par exemple, il existe un certain retard entre le moment auquel une touche est enfoncée et celui auquel la mécanique à marteau met réellement la corde en mouvement. Du point de vue du jeu, de petits temps de latence ne sont généralement pas un problème car les instrumentistes sont habituellement capables d’adapter le timing de leur interprétation pour compenser les retards — tant qu’ils restent constants.
- La gigue (« jitter ») se réfère au retard inconstant ou aléatoire d’un système. Dans une DAW, cela peut être un problème particulier car différentes fonctions du système (par ex., MIDI, audio et interface utilisateur) sont traitées séparément. Les informations doivent souvent passer d’un de ces processus à un autre — lors par exemple de la conversion de données MIDI en lecture par plug-in. Un timing MIDI sans gigue nécessite une conversion précise entre les diverses horloges des composants du système — l’interface MIDI, l’interface audio et la DAW elle-même. La précision de cette conversion dépend d’une variété de facteurs, dont le système d’exploitation et l’architecture du pilote utilisé. La gigue, beaucoup plus que la latence, donne la sensation que le timing MIDI est « fluctuant » ou « approximatif ».
35.3 Solutions MIDI de Live
L’approche Ableton du timing MIDI est basée sur deux principes majeurs :
- Dans tous les cas, la latence est préférable à la gigue. Comme la latence est constante et prévisible, elle peut être beaucoup plus facilement gérée à la fois par les ordinateurs et par les personnes.
- Si vous utilisez le renvoi pendant l’enregistrement, vous voulez enregistrer ce que vous entendez — même si, en raison de la latence, cela survient légèrement plus tard que ce que vous jouez.
Live gère les problèmes inhérents à l’enregistrement, à la lecture et au renvoi pour que le timing MIDI soit réactif, précis et constamment fiable. Afin d’enregistrer les événements entrants au bon endroit sur la timeline d’un Set Live, Live doit savoir exactement quand ces événements ont été reçus du clavier MIDI. Mais Live ne peut pas les recevoir directement — ils doivent d’abord être traités par les pilotes de l’interface MIDI et le système d’exploitation. Pour résoudre ce problème, les pilotes de l’interface horodatent chaque événement MIDI à sa réception et transmettent le tout à Live pour que ce dernier sache exactement à quel instant du clip les événements doivent être ajoutés.
Durant le renvoi, une DAW doit constamment gérer des événements devant être entendus dès que possible, mais qui se sont inévitablement produits plus tôt en raison de la latence et des retards inhérents au système. Il faut donc faire un choix : les événements doivent-ils être joués au moment où ils sont reçus (ce qui peut donner de la gigue si c’est à un moment où le système est occupé) ou doivent-ils être retardés (ce qui ajoute de la latence) ? Le choix d’Ableton est d’ajouter de la latence, car nous croyons qu’il est plus facile pour les utilisateurs de s’accommoder d’une latence constante que d’une gigue aléatoire.
Quand l’écoute de contrôle ou retour (monitoring) est activée durant l’enregistrement, Live ajoute un retard supplémentaire à l’horodatage de l’événement en se basant sur la taille de mémoire tampon de votre interface audio. Cette latence ajoutée permet d’enregistrer les événements dans le clip à l’endroit où vous les entendez — pas à celui où vous les jouez.
Pour la reproduction à l’aide d’appareils physiques, Live effectue aussi un horodatage qu’il essaie de communiquer aux pilotes de l’interface MIDI pour une planification des événements MIDI sortants. Les pilotes Windows MME ne peuvent toutefois pas traiter l’horodatage et pour les périphériques qui utilisent ces pilotes, Live planifie la sortie des événements en interne.
Même durant les fortes charges du système causant des décrochages audio, Live continue de recevoir les événements MIDI entrants. En cas de décrochage audio, il peut y avoir des erreurs de timing et de la distorsion audio durant le renvoi, mais Live doit toujours correctement enregistrer les événements MIDI dans les clips. Par la suite, quand le système a récupéré sa stabilité, la lecture de ces événements enregistrés doit être précise.
35.4 Variables non contrôlables par Live
En général, l’horodatage est un mécanisme extrêmement fiable pour gérer le timing des événements MIDI. Mais il ne s’applique qu’aux données propres à l’ordinateur. Les données MIDI extérieures à l’ordinateur ne peuvent pas utiliser ces informations, donc les informations de timing venant ou sortant d’un matériel externe sont traitées par celui-ci dès qu’elles arrivent, plutôt que d’être planifiées. De plus, la liaison par câbles MIDI est en série, ce qui signifie qu’une seule information peut être envoyée à la fois. En pratique, cela signifie que plusieurs notes jouées simultanément ne peuvent pas être transmises simultanément au travers de câbles MIDI, mais seront à la place envoyées l’une après l’autre. Selon la densité des événements, cela peut causer des problèmes de timing MIDI.
Un autre problème pouvant survenir, particulièrement avec des synthétiseurs physiques datant des débuts du MIDI, c’est que le temps de détection de l’appareil peut être relativement long. Le temps de détection détermine la cadence à laquelle le synthétiseur contrôle la présence d’actions sur son propre clavier. S’il le fait à intervalles trop grands, de la gigue peut être introduite.
Bien sûr, de tels problèmes de timing présents au niveau du matériel peuvent être multipliés quand des équipements supplémentaires sont ajoutés à la chaîne.
Même dans l’ordinateur, la précision de l’horodatage peut grandement varier, selon la qualité de l’interface MIDI, les erreurs dans la programmation du pilote, etc. Live doit considérer que tout horodatage associé aux événements MIDI entrants est précis, et que les événements sortants seront traités de façon appropriée par tout équipement externe. Mais il est impossible à Live de vérifier ces deux situations.
Tests et résultats
Notre procédure pour tester le timing des événements MIDI entrants est représentée dans le schéma suivant :
La sortie d’une source MIDI (un clavier ou une autre DAW jouant de longues séquences d’événements MIDI aléatoires) est envoyée à un répartiteur MIDI physique sans latence. Une sortie du répartiteur est enregistrée dans un nouveau clip MIDI dans Live. L’autre est envoyée à un convertisseur MIDI-vers-Audio. Ce dispositif convertit le signal électrique de la source MIDI en simple bruit audio. Comme il n’interprète pas les données MIDI, il effectue cette conversion sans latence. La sortie du convertisseur est alors enregistrée dans un nouveau clip audio dans Live. Dans un système idéal, chaque événement du clip MIDI devrait survenir en même temps que l’événement correspondant dans le clip audio. La différence de timing entre les événements MIDI et audio dans les deux clips peut donc être mesurée pour déterminer la précision de Live.
Pour évaluer les performances MIDI dans diverses conditions, nous avons conduit les tests avec trois interfaces audio/MIDI autonomes de catégories de prix différentes, toutes de fabricants réputés. Nous appellerons ces interfaces A, B et C. Tous les tests ont été accomplis avec une charge de processeur d’environ 50 % à la fois sous macOS et sous Windows, à 44,1 et à 96 kHz ainsi qu’avec trois tailles de mémoire tampon (« buffer ») audio différentes, soit un total de 36 configurations de test distinctes.
Windows :
- Interface A : la gigue (« jitter ») maximale a été de ±4 ms, avec la plus grande partie à ±1 ms.
- Interface B : pour la plupart des tests, la gigue maximale a été de ±3 ou 4 ms. À 96 kHz avec une mémoire tampon de 1024 échantillons, il y a eu un petit nombre d’événements ayant entre ±5 ms de gigue. À 44,1 kHz avec une mémoire tampon de 512 échantillons, des événements occasionnels avec ±6 ms sont survenus. Dans tous les cas, la plus grande partie de la gigue a été de ±1 ms.
- Interface C : pour la plupart des tests, la gigue maximale a été de ±5 ms. À 96 kHz avec une mémoire tampon de 512 échantillons, il y a eu un petit nombre d’événements ayant entre ±6 et 8 ms de gigue. À 44,1 kHz avec une mémoire tampon de 1024 échantillons, il y a eu un petit nombre d’événements ayant entre ±10 ms de gigue. Dans tous les cas, la plus grande partie de la gigue a été de ±1 ms.
macOS :
- Interface A : à 44,1 kHz avec une mémoire tampon de 1152 échantillons, la gigue s’est répartie assez régulièrement entre ±4 et 11 ms. pour tous les autres tests, la gigue maximale a été de ±5 ms. Dans tous les cas, la plus grande partie de la gigue a été de ±1 ms.
- Interface B : pour la plupart des tests, la gigue maximale a été de ±4 ou 5 ms. À 44,1 kHz avec une mémoire tampon de 1152 échantillons, la gigue s’est répartie assez régulièrement entre ±2 et 11 ms. Dans tous les cas, la plus grande partie de la gigue a été de ±1 ms.
- Interface C : dans tous les tests, la gigue maximale a été de ±1 ms, la plupart des événements se produisant sans gigue.
Nous avons aussi suivi une procédure similaire pour tester le timing des événements MIDI sortants, représentée dans le schéma suivant :
Dans tous les cas, les tests de sortie ont démontré des résultats comparables aux tests d’entrée.
35.5 Conseils pour obtenir des performances MIDI optimales
Afin d’aider les utilisateurs à obtenir des performances MIDI optimales avec Live, nous avons prévu une liste de pratiques et de réglages de programme recommandés.
- Utilisez les tailles de mémoire tampon les plus basses possibles qui soient disponibles sur votre interface audio, afin de conserver la latence au minimum. Les commandes de mémoire tampon audio se trouvent dans l’onglet Audio des préférences de Live, et varient avec le type de matériel que vous utilisez. Pour plus d’informations, voir la leçon « Réglage des E/S audio ».
- Utilisez une interface MIDI de haute qualité avec les derniers pilotes afin d’assurer que l’horodatage MIDI se fasse et soit traité aussi précisément que possible.
- N’activez pas l’écoute de retour de piste (monitoring) si vous enregistrez du MIDI en écoutant directement un instrument physique tel qu’un synthétiseur externe (par opposition à l’écoute de l’audio de l’appareil au travers de Live via le périphérique External Instrument). De même, désactivez l’écoute de retour de piste (monitoring) si vous enregistrez des données MIDI produites par un autre appareil MIDI (comme une boîte à rythmes). Quand le monitoring est activé, Live ajoute de la latence pour compenser la gigue de renvoi. Il est donc important de n’activer le monitoring que si le renvoi est nécessaire.
35.6 Résumé et conclusions
Ableton a rédigé cet exposé afin d’aider les utilisateurs à comprendre une variété de sujets y ayant trait :
- les problèmes inhérents aux systèmes MIDI basés sur ordinateur ;
- notre approche pour résoudre ces problèmes dans Live ;
- les variables supplémentaires que nous ne pouvons pas prendre en compte.
Comme mentionné précédemment, la meilleure façon de résoudre les problèmes de timing MIDI dans votre studio est d’utiliser des composants matériels de la plus haute qualité possible. Pour les utilisateurs de tels composants, tous les systèmes MIDI logiciels doivent se comporter sans problèmes notables. Pour les possesseurs de matériel moins optimisé, Live offre néanmoins un degré de précision supplémentaire en minimisant la gigue, mais en contrepartie d’une latence légèrement supérieure.
Nous vous encourageons à vous référer à cet exposé si vous avez des questions sur l’approche par Live du timing MIDI, mais nous vous encourageons aussi à nous contacter (voir https://www.ableton.com/help/){.footnote} si vous avez des questions ou problèmes supplémentaires auxquels nous n’avons pas répondu.