Myriad Blog 1.3.0 Monday, Jul 28th, 2014 at 10:34pm 

Thursday, Nov 22nd, 2007 at 05:04pm
MIDI, numérique et synchro

 
Dans nos programmes musicaux, la musique peut être entendue sur trois types de sorties.  
 
- La sortie numérique, sur laquelle la latence (intervalle de temps entre le moment où le logiciel demande à ce que la note soit jouée et le moment où elle est effectivement entendue par l'utilisateur) peut être importante.
 
- Les sorties MIDI "matérielles": un synthétiseur ou module de son matériel est connecté en USB ou en MIDI à l'ordinateur. Il n'y a, généralement, pas de latence sur ce type de sortie.  
 
- Les sorties MIDI "logicielles": des modules sonores logiciels, installés sur l'ordinateur, produisent le son. La latence peut être plus ou moins importante selon la technologie employée.
 
Cela veut dire que si, dans une partition, trois portées jouent la même note en même temps, mais que chaque portée sort sur un type de périphérique sonore différent, les trois notes risquent de ne pas sonner simultanément.
 
Pour éliminer ces problèmes, l'utilisateur peut, pour chaque sortie (numérique ou MIDI), donner la valeur de la latence en millième de seconde.  
Une fois tous ces délais ajustés, n'importe quelle combinaison de sorties peut être utilisée dans le logiciel, sans crainte d'entendre un décalage.
 
Mais voila: comment régler finement ces délais ? L'oreille humaine entend assez facilement un décalage d'1/100e de seconde. Il faut donc être très précis.
 
La latence de la sortie numérique est calculé automatiquement (Configuration > Configuration sortie numérique), mais le calcul peut être inexact, selon la carte sonore.
Il faut normalement vérifier ce calage, en s'assurant que les notes de la partition changent de couleur au moment où on les entend être jouées, puis calculer les délais des sorties MIDI en jouant la même mélodie sur deux portées différentes, l'une en numérique, l'autre en MIDI.
 
Mais si aucune sortie MIDI n'est matérielle, donc avec une latence nulle, tous les ajustements seront relatifs les uns aux autres. En effet, l'oeil étant moins précis que l'oreille, le calage initial de la sortie numérique peut ne pas être exact. Les autres latences ayant été réglées sur cette valeur peut-être erronée, elles seront correctes les unes par rapport aux autres, mais peut-être pas en absolu.
 
Nous avons cherché, sans succès, une procédure automatique permettant de régler tout cela. Puis nous avons envisagé un script permettant d'aider l'utilisateur à le faire manuellement.
En jouant simultanément une mélodie en MIDI et numérique, et en demandant à l'utilisateur de bouger un curseur vers la droite si la MIDI est en avance, vers la gauche si elle est en retard, on peut connaître  la valeur à ajouter à une valeur de latence (ou soustraire à l'autre), mais en l'absence de référenciel temporel fiable, il est difficile de savoir exactement lequel bouger. Est-ce la sortie numérique qui est en avance, ou la MIDI en retard?
 
- Utiliser un graphisme qui pulse à l'écran ? Pas assez précis
 
- L'utilisation d'une sortie MIDI matérielle ? Tous les utilisateurs n'en disposent pas
 
- Le haut-parleur intégré du PC ? Dépendant de la plate-forme, et en voie de disparition
 
- Utiliser un micro pour enregistrer ce que l'utilisateur entend ? Nécessite d'avoir ce matériel, et l'entrée numérique elle-même n'est pas exempte de latence.
 
- Une touche à appuyer sur le clavier, le bouton de la souris ou un clavier MIDI lorsqu'on entend le son ? Cela semble manquer de précision ici également, à moins qu'une technique de jeu permette d'améliorer cela. Si le nombre de "clics" est suffisamment important, peut-être que la moyenne permettrait de réduire le taux d'erreur?
 
Pour l'instant en tout cas, ce dernier système semble être le seul utilisable. A moins que quelqu'un ait une idée géniale...
by Olivier Guillion
Comments

Comment from Franck Thursday, Nov 22nd, 2007 at 06:07pm
A tout hasard...
Au lieu d'émettre deux fois le même signal, vous envoyez d'une part un bip régulier d'un incrément de 1, et d'autre part le même bip mais avec un incrément différent (ex : 1,37). Il est facile de prévoir le moment T où ils doivent se superposer lorsqu'ils partent au même instant.
Est-ce que la différence entre ce moment théorique T et le moment effectif T' où se produit la superposition ne permet pas d'approcher la valeur de la latence ?

Comment from Olivier Guillion Friday, Nov 23rd, 2007 at 09:52am
Décalages relatifs
Oui, mais à ce moment-la, on connait la différence de latence entre ces deux sorties, pas leur valeurs réelles.
 
Par exemple, s'il y a 500ms d'écart entre la sortie MIDI et numérique, est-ce que la sortie MIDI a une latence de 0 et la sortie numérique une latence de 500ms, ou la sortie MIDI une latence de 250ms et la sortie numérique une latence de 750?
 
En fait ce ne serait pas très grave s'il s'agissait uniquement de jouer, l'essentiel étant que les deux sorties soient synchronisées. Mais on a quelquefois des événements extérieurs sans latence qui doivent être synchronisés (saisie au clavier MIDI ou au clavier de l'ordinateur par exemple) qui nécessitent de connaitre les véritables valeurs de tous les délais.


Most recent first
Oldest first

Top of page
Last update:  (c) Myriad 2013