Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

Analyse du jitter MIDI

  • 32 réponses
  • 8 participants
  • 3 034 vues
  • 10 followers
Sujet de la discussion Analyse du jitter MIDI
Comme le sujet du jitter MIDI, en particulier en USB, déchaîne les passions ces jours-ci (entre le thread sur l'interface Alyseum et le sondage sur les interfaces), je me suis dit qu'il était temps d'avoir des faits et pas seulement des on-dit ou des idées préconçues.

J'utilise pour ces tests le MIDI Latency Analyser
https://expressiveelectronicsformusicians.com/our-products/midi-latency-analyser
Deux versions sont possible : l'une avec un câble spécial qui envoie le 5V du MIDI directement dans l'entrée audio permet d'analyser la latence directe du signal MIDI ; l'autre en envoyant le signal MIDI dans un synthé, puis analyse du fichier son obtenu pour évaluer la régularité du pattern. N'ayant pas le câble spécial, c'est cette version que j'ai utilisée. J'ai créé un fichier MIDI, tempo 120, notes à la croche, que je joue dans différents synthés. Si vous voulez faire tourner le test, astuce : le fichier audio doit être mono et obligatoirement en 96k. Ce n'est que du post-processing d'un fichier audio, rien ne tourne en temps-réel, ça tourne très bien dans wine pour les linuxiens (dont je fait partie).

Tous mes tests ont été réalisés sur mon vénérable Core i7 920, sous Debian sid, avec les paquets audio kxstudio, noyau Linux 4.6, séquenceur qtractor 0.7.8. J'utilise pour ce test une interface Miditech Midiface 4x4, qui tourne en USB 1.1 à 12Mb/s connectée à un Nordlead 2, un Moog Minitaur connecté en USB (un synthé qui inclut une connection USB-MIDI, c'est aussi une interface MIDI après tout), et un DSI Prophet 12 en USB. J'ai refait chaque mesure 3 fois pour vérifier la reproductibilité de la chose.

Je n'ai pas encore fait de capture d'écran des graphes de distribution, je donne juste le jitter moyen tel que mesuré par MLA :
-- interface USB Miditech Midiface 4x4, vers le Nordlead 2 : 0.546ms.
-- Prophet 12 USB : 0.901ms
-- Moog Minitaur : 0.608ms
Ces résultats, bien que pas parfaits, semblent quand même plutôt bon par rapport à ce qu'on trouve comme résultats publiés. On remarque également que l'interface MIDI-USB intégrée aux synthés n'est pas meilleure qu'une interface USB-MIDI d'entrée de gamme.
Pour comparaison, j'ai aussi soumis à MLA un enregistrement réalisé avec l'arpégiateur interne des synthés (sans synchro MIDI, entièrement standalone), pour avoir une base de comparaison :
-- arpégiateur du Nordlead 2 : 1.148ms
-- arpégiateur du Prophet 12 : 0.294ms
On remarque que les liaisons USB-MIDI, bien qu'imparfaites, ont un meilleur jitter que l'arpégiateur interne du Nordlead 2. C'est donc plutôt bon. Du coup, je me suis dit que le jitter mesuré pour la Miditech+NL2 venait peut-être plus du NL2 que de l'interface Miditech. Pour la blague, je soumet à l'épreuve mon vieil arrangeur Roland E16 :
-- interface USB Miditech Midiface 4x4, vers Roland E16 : 0.035ms
Non, ce n'est pas une faute de frappe. On est bien un ordre de grandeur meilleur que le meilleur des résultats précédent.
Comme le trafic sur l'interface MIDI est susceptible d'aggraver le jitter, je fais un test en bourrinant l'interface en même temps que je fais la mesure (des accords à 5 notes sur les autres ports en même temps que je réalise la mesure), et là on est à 0.594ms (toujours sur le E16), ce qui reste très très honorable.

Bilan : la Miditech s'en sort excellemment bien. L'USB-MIDI a globalement un jitter meilleur ou du même ordre de grandeur que le jitter du synthé lui-même (par son arpégiateur interne, par exemple). Dans la chaîne, le point faible pour le jitter n'est pas forcément l'USB mais ça peut-être le synthé lui-même (cas du Nordlead).

Je n'ai pas encore eu le temps de tout finir. Ce que je peux encore mesurer : le Streichfett (sur son port USB-MIDI), le Blofeld (USB-MIDI encore), en interface MIDI j'ai encore ma vieille SB Live (oui oui, celle de 1999) qui est débranchée mais encore dans mon PC, il faut juste que je trouve le courage de plonger derrière le rack pour la rebrancher. Ça ferait une bonne référence d'interface MIDI "à l'ancienne" sans USB.

N'hésitez pas à réaliser le test et à poster vos résultats.
2
Merci pour ce post alex.d car effectivement cela semble être un sujet assez sensible.
La première interrogation serait de savoir à partir de quelle valeur le jitter peut poser des soucis musicalement parlant. La plupart des bars hardwares ont une résolution interne à 96ppqn ( Analog rytm, tempest, spectralis ) cela nous fait pour un bpm à 170 un intervalle de 3,67ms entre chaque tick. Je suppose que la quantisation se fait au tick supérieur, du coup cela nous ferait un jitter max de 3,67ms pour une bar hardware avec un bpm à 170 ? j'ai bon ou pas ?
Pour avoir une référence, l'atari avait quelle valeur de jitter en midi ?


3
Pour l'Atari, je ne sais pas. J'ai démarré dans le monde merveilleux du MIDI avec la SoundBlaster Pro en 1991 (je suis un jeunot par rapport à certains ici). Je pense que ce qu'on obtient avec la SB Live doit être assez similaire ; je fais la mesure dès que possible.

Le MIDI sur prise DIN à 31250Hz prend 0.32ms par octet (8 bits de données, un bit de start, un bit de stop), soit 0.64ms pour envoyer une note (deux octets de données en supposant un running status). En clair, si on envoie un accord de trois notes, on a déjà un écart de 1.28ms entre la première et la dernière en supposant qu'interface et synthé sont parfaits.

Sachant cela, la mesure obtenue à 0.035ms semble assez optimale. Elle correspond grosso modo au temps de transmission pour un bit. En d'autres termes, si l'interface MIDI a son horloge en free running, on a au maximum un bit (même pas un octet, un bit) de décalage entre le timestamp de la note et le moment où elle est réellement envoyée sur le fil. Difficile de faire mieux.

À la vitesse du son, c'est 1cm. Pour 1ms, c'est 30cm. Le headbanger aura plus de jitter du fait de son mouvement que par l'interface MIDI.

Je n'ai pas de boîte à rythme hardware, mais la TR808 qui a été abondamment étudiée (qui aurait soi-disant un "groove" qui lui serait propre) aurait un jitter de l'ordre de 2ms.

[ Dernière édition du message le 04/10/2016 à 11:02:04 ]

4
Flag. :coucou:

Pour info, le MidiGAL - petit périphérique clone du MIDIPal - permet entre autre de tester la stabilité d'une horloge MIDI (précision et gigue) et le cas échéant de la corriger.
https://midisizer.com/midigal/

Il y a quelques résultats intéressants sur le forum de Mutable Instruments, dont les miens :
https://mutable-instruments.net/forum/discussion/6759/midigal-yet-another-midipal-inspired-project/p1

A mettre en relation avec ce qu'on trouve chez InnerClockSystems, bien que je trouve leur nouveau protocole moins lisible que le précédent :
http://innerclocksystems.com/New%20ICS%20Litmus.html

Evidemment, on parle là de tests de base, sans variation de charge.
Dans ce dernier cas, j'ai vu quelques posts intéressants de Don Solaris sur le forum GS.

:-D

« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)

5
Très intéressant. Merci.
Flag;)
6
Très intéressant ton lien sur le MidiGal. La synchro d'horloge MIDI, c'est un autre aspect du jitter MIDI, mais ça revient au même, puisqu'il s'agit d'ordonnancer des messages MIDI avec une bonne précision et régularité (sauf que c'est du MIDI Clock au lieu de note on/off).

En regardant les résultats sur le forum Mutable, ce qui me frappe, c'est qu'encore une fois, contrairement aux idées reçues, les sources logicielles via une interface USB obtiennent de plutôt bons résultats, alors que les MPC, Analog Rytm et Electribe sont plutôt moins bons.

Le lien sur GS, je connaissais, c'est là que j'ai trouvé MLA que j'ai utilisé pour les mesures ;)
7
J'ai retrouvé aussi un post super intéressant sur reddit où il parle à la base du fameux groove de la tr 808 et effectivement le jitter mesuré serait sur des doubles croches de 2ms .
https://m.reddit.com/r/synthesizers/comments/2jibow/the_myth_of_the_roland_tr808_groove_a_long_and/

Apparemment un des participants aurait mesuré la jitter du cirklon : 8 samples max de drift soit 0.18 ms !

Un a aussi fait le test de décaler deux beats l'un par rapport à l'autre et arriverait à les distinguer aux environs de 1.2ms, à tester

8
Citation de alex.d. :
il s'agit d'ordonnancer des messages MIDI avec une bonne précision et régularité (sauf que c'est du MIDI Clock au lieu de note on/off).
En regardant les résultats sur le forum Mutable, ce qui me frappe, c'est qu'encore une fois, contrairement aux idées reçues, les sources logicielles via une interface USB obtiennent de plutôt bons résultats, alors que les MPC, Analog Rytm et Electribe sont plutôt moins bons.


Sauf les séquenceurs Yamaha, qui enfoncent tout le monde à 120BPM.
Par contre, j'ai noté des incongruités en fonction du nombre de BPM : il semble y avoir parfois des sweetspots à certaines fréquences très spécifique (ex : 0.011-0.015% de jitter sur l'electribe2 a précisément 25, 50, 125BPM contre ~1.8% aux autres tempo), qui correspondent peut-être à des valeurs remarquables ou aberrantes lors du calcul de l'horloge sur les machines.

Même si on ne peut pas attendre une précision millimétrique d'un protocole série anémique vieux de 33 ans, on est en droit d'exiger un minimum d'effort dans le développement des matériels/logiciels modernes - à la puissance de calcul démultipliée - pour obtenir la plus grande précision que le MIDI autorise. Les machines de l'époque y arrivaient bien (MPC60) avec leur CPU cacochymes, mais il est vrai qu'elles ne pouvaient pas faire grand chose d'autre en même temps.

Citation de alex.d. :
Le lien sur GS, je connaissais, c'est là que j'ai trouvé MLA que j'ai utilisé pour les mesures ;)


Je me doute. Mais je n'avais pas lu que Don Solaris avait fait des tests en mode single/dual/multitimbral.
Qui prouvent bien que les machines sont aussi souvent à la ramasse en charge (sauf les sampleurs Akai).

Citation de plastisaw :
J'ai retrouvé aussi un post super intéressant sur reddit où il parle à la base du fameux groove de la tr 808 et effectivement le jitter mesuré serait sur des doubles croches de 2ms .
https://m.reddit.com/r/synthesizers/comments/2jibow/the_myth_of_the_roland_tr808_groove_a_long_and/


Intéressant, merci. Le swing de la 808 a été volontairement reproduit par Roland dans la TR-8, puisque le séquenceur de celle-ci dispose de deux modes, un émulant le léger retard sur les temps faibles de l'ancêtre même avec le potard swing à midi (pun intended) tandis que l'autre est plus précis, donc rigide.
https://fr.audiofanzine.com/bar/roland/tr-8/forums/t.564410,tr707,post.8154978.html

« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)

9
Flagounet. ;)

S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

10
Ça y est, j'ai exhumé le fameux câble Y pour le port MIDI de la SB Live. Il s'agit donc d'une SB Live standard de 1999, branchée sur le port PCI, sans autre bus intermédiaire genre USB ou Firewire comme ça se fait maintenant.

J'ai donc réalisé le test toujours sous Linux avec qtractor (on n'est plus tout-à-fait dans les conditions de l'époque pour la partie logicielle), sur le E16 qui semble être celle de mes machines avec le moins de jitter intrinsèque. J'y ajoute les deux synthés avec interface USB que je n'avais pas eu le temps de tester. Voici donc :
-- interface SB Live PCI, vers Roland E16 : 0.039ms
-- Blofeld sur USB : 0.108ms
-- Streichfett sur USB : 0.119ms

On constate donc que le jitter sur une carte PCI de l'époque où on ne suspectait pas l'interface MIDI, et le jitter d'une interface USB Miditech récente est quasiment identique. On pourrait être tenté de dire que le soft multi-tâche de maintenant pénalise la carte PCI qui aurait sinon de meilleure performances, mais ça ne tient pas trop, puisqu'en réalité tout ça est excellent. Comme je l'ai calculé plus haut, ça correspond grosso modo au temps de transmettre un bit sur l'interface MIDI.

Le bilan est un peu déprimant en ce qui concerne la mesure des synthés, puisque les plus mauvais (en jitter !) sont le Nordlead et le Prophet 12, et les meilleurs sont le Roland E16 (clavier arrangeur d'entrée de gamme de 1995), le Blofeld (380€), et le Streichfett (200€). C'est sans doute le signe que le simple et rustique est plus stable que les choses plus sophistiquées (quoique le Blofeld ne soit pas vraiment rustique).

Mais bon, la conclusion est que, sur ces cas testés, le jitter de l'USB-MIDI est parfaitement raisonnable.
11
J'ai remarqué une étrange chose avec mes interfaces usb-midi (midex, esi, midisport, tc elec sk48) sur cubase7, lorsque j'enregistre la meme piste midi (un kick quantifié) en audio plusieurs fois, la latence et le jitter sont assez constants (~1ms de jitter avec la midex et la mpc1000).

Mais lorsque je relance cubase et que je fais des tests de nouveau, les pistes audio sont jusqu'à 7-8ms plus tôt ou plus tard (c'est aléatoire), le jitter lui reste relativement le meme...
Une idée du problème?

www.soundcloud.com/kicks

[ Dernière édition du message le 08/06/2017 à 22:28:55 ]

12
Ça ressemble fort à un problème quelque part dans la compensation de latence de Cubase.
13
merci!
tu parles de ça?

1896913.jpg

ou de ça (ajuster à la latence d'enregistrement):

Peripheriques-SystemeAudioVST.png

www.soundcloud.com/kicks

[ Dernière édition du message le 08/06/2017 à 23:14:31 ]

14
Oui, quelque chose par là.

Pour que les instruments MIDI soient synchros avec les pistes audio (qui ont une latence due à l'interface audio), normalement Cubase décale certains événements (MIDI plus tard, ou audio plus tôt). Pour ça, il faut avoir une estimation de la latence audio qui dépend du nombre et de la taille des buffers, ainsi que du matériel.
Mais si à chaque fois que tu démarres Cubase, il prend un chiffre différent pour la compensation de latence, il y a un bug quelque part. Normalement, il te dit quelque part quelle est la latence estimée.

Je ne sais pas précisément comment c'est fait dans Cubase, mais il y a une interaction avec l'armement des pistes en enregistrement : si tout est en lecture, il faut envoyer l'audio plus tôt, de façon à ce que l'audio (avec sa latence) et le MIDI soient synchros ; si tu es en enregistrement (bounce MIDI -> audio), alors là il faut envoyer le MIDI plus tôt, de façon à ce que ce soit synchro avec l'audio enregistré une fois passée la latence de capture audio.

15
Ok merci j’essaierai de trifouiller la compensation (image du haut), sachant que j'avais deja testé le "décalage à l'enregistrement" (image du bas) et effectivement ça avance ou recule l'enregistrement audio du nombre de sample voulu.
Malheureusement vu que mon problème semble être lié a une latence qui varie... (pourtant ce n'est pas lié a un changement de taille de buffer, et cubase indique toujours la meme latence de 2-3ms).

Alex.d. j'ai vu dans un autre forum que tu parlais de l'alyseum U3-88c, tu as pu le tester sur un win10?

www.soundcloud.com/kicks

16

Citation de : kicks

Ok merci j’essaierai de trifouiller la compensation (image du haut), sachant que j'avais deja testé le "décalage à l'enregistrement" (image du bas) et effectivement ça avance ou recule l'enregistrement audio du nombre de sample voulu.
Malheureusement vu que mon problème semble être lié a une latence qui varie... (pourtant ce n'est pas lié a un changement de taille de buffer, et cubase indique toujours la meme latence de 2-3ms).

Alex.d. j'ai vu dans un autre forum que tu parlais de l'alyseum U3-88c, tu as pu le tester sur un win10?

 Et sur win 7 ?

“(...) Mais quand on est adulte, on tue l'enfant qui est en nous.” Mamoru Oshii

"Moi j'suis pas un bourreau, alors il s'occupe de ma musique et moi de ma vie d'adulte" DarXyde

17
Citation de kicks :
Alex.d. j'ai vu dans un autre forum que tu parlais de l'alyseum U3-88c, tu as pu le tester sur un win10?


Tu veux dire, dans le fil où le gars d'Alyseum avançait l'argument que son interface était "vachement et nettement supérieure" sans aucun argument technique ni aucune mesure concrète ? Bah non, évidemment je n'ai pas cette interface.
Et d'ailleurs, je n'ai pas de win10 (ni de win7). Uniquement Linux chez moi.
18
Ouai je parle de ça ahah.
Si il a des arguments techniques mais je ne suis de loin pas assez calé pour pouvoir émettre un avis la dessus :
https://www.alyseum.com/usb3vsusb2.html
Par contre aucun test ou preuve de ce qu'il avance...

pour ceux, qui comme moi, cherchent desesperement une solution aussi précise que l'audio to midi et aussi pratique que l'usb, on a facile de se faire avoir par des arguments commerciaux... J'ai acheté une Midex8 pour le protocole LTB (le résultat est un peu mieux que mes autre interfaces mais de loin pas révolutionnaire).

ce post gearslutz semble confirmer ton point de vue :
https://www.gearslutz.com/board/electronic-music-instruments-electronic-music-production/1143920-midi-jitter-alyseum-edirol-kenton-usamo.html

www.soundcloud.com/kicks

[ Dernière édition du message le 09/06/2017 à 14:10:13 ]

19
x
Hors sujet :

Citation :
les meilleurs sont (...)le Blofeld (380€),

Il a beau être dans les meilleurs, il est pas foutu de synchroniser correctement son arpégiateur et ses effets en interne icon_facepalm.gif


20
Citation de kicks :

Par contre aucun test ou preuve de ce qu'il avance...


Voilà, aucun test, juste l'affirmation (vraie) que l'USB3 est plus rapide que l'USB2. Sauf que ça sert à rien.
Le débit MIDI est 1000 fois plus petit que le débit USB 1.1, et encore plus petit que le débit de l'USB 2, à tel point que la plupart des interfaces MIDI du marché sont en USB 1.1, même pas en USB 2. Du coup, pas trop besoin du débit de l'USB3. Mais bon, on ne vas pas refaire le débat de l'autre fil ici :-D
21
x
Hors sujet :

Citation :
Increase the MIDI transfer than 10 times compared to USB2.0


comment on fait pour accroitre la vitesse de transfert d'un protocole série dont le débit binaire est fixé par une norme ? On passe outre la norme ? :-D

[ Dernière édition du message le 09/06/2017 à 15:47:08 ]

22
ça ne sers à rien de débattre, il faut tester...

www.soundcloud.com/kicks

23
acidhouseforall
Mon Usamo n'a quasiment aucun jitter (0.1ms max...), par contre toutes mes interfaces midi usb2 ont 1,5ms de jitter max et + de latence (latence qui change lorsque je rallume cubase...icon_facepalm.gif). Qu'il faut ajouter au jitter/latence du matos externe.
Donc c'est bien la preuve que ce n'est pas le midi qui est en question, mais bien l'usb2.
Par contre aucune certitude sur le fait que l'usb3 améliore ça. Je cherche des avis de personnes ayant testé...

www.soundcloud.com/kicks

[ Dernière édition du message le 12/06/2017 à 15:56:24 ]

24
J'ai un jitter mesuré à 0.035ms sur ma Midiface 4x4 en USB 1.1...
25
en fait ton usamo ne devrait pas avoir de jitter du tout dans la mesure ou le produit est annoncé comme "sample accurate".

Et c'est pas moi qu'il faut convaincre des problèmes apportés par l'usb en musique, je n'utilise plus d'ordi pratiquement à cause de ça :-D

Et oui, c'est bien le sens de mon message, l'usb3 sur le papier ne change rien au problème car il ne s'agit pas d'un problème de bande passante, de toute façon largement supérieure aux besoin du midi, même depuis l'usb premier du nom...