Analyse du jitter MIDI
- 32 réponses
- 8 participants
- 2 760 vues
- 10 followers
alex.d.
5534
Je poste, donc je suis
Membre depuis 9 ans
Sujet de la discussion Posté le 04/10/2016 à 00:51:29Analyse 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.
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.
.: Odon Quelconque :.
11103
Drogué·e à l’AFéine
Membre depuis 22 ans
31 Posté le 10/09/2020 à 16:29:35
Un test du séquenceur Voyetra en mode DOS sur un Mac équipé d'une carte de compatibilité PC (12-inch PCI PC Compatibility card with Intel Pentium 166MHz CPU).
http://www.oliver-schubert.com/DOScard/DOScard.html
https://www.vogons.org/viewtopic.php?t=31628
Le Mac ne sert que d'hôte matériel donc : on obtiendrait sans doute des résultats identiques sous DOS avec un PC Pentium 166 classique.
« 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)
.: Odon Quelconque :.
11103
Drogué·e à l’AFéine
Membre depuis 22 ans
32 Posté le 21/01/2024 à 16:50:27
Nouveau déterrage avec un lien vers le site de Don Solaris, qui a procédé à des tests avec le MIDI Latency Analyser (MLA), lequel - pour rappel - nécessite un câble MIDI <-> audio spécifique pour générer des pics, afin d'effectuer des calculs statistiques sur le fichier WAV 16bit 44.1k ou 96k résultant :
Cf. le lien vers le fil sur Gearspace pour les détails : https://tinyurl.com/midijitter
https://www.donsolaris.com/?p=2124
Les résultats sont exprimés en ms, là où le MidiGAL affiche le coefficient de variation en %.
Il n'y a aucune information sur le protocole de test non plus, même si j'ai le sentiment qu'on se rapproche du Litmus Test d'Innerclock (dont les variantes ne pas très détaillées non plus)
https://www.innerclocksystems.com/litmus
https://web.archive.org/web/20180328172952/http://www.innerclocksystems.com/New%20ICS%20Midi%20Hardware.html
Difficile de comparer donc, a fortiori si les tests avec le MLA sont - comme je le pense - effectués à 120BPM uniquement, et sur 4 notes par mesure (1/4).
En effet, la bande passante du MIDI canonique étant ce qu'elle est, la gigue augmente avec la densité d'informations, et la valeur du BPM.
Ce que permet de vérifier le MidiGAL avec ses tests sur l'horloge, ou les notes en 1/4, 1/8, 1/16 ou 1/32 tout en calculant également le tempo réel.
De plus, comme je l'écrivais plus haut, certaines valeurs "parfaites" - donc aberrantes - peuvent surgir lorsque les subdivisions du BPM coïncident avec la fréquence de travail du moteur MIDI de la machine.
Je me rappelle avoir eu le cas avec l'electribe 2, donc la gigue de l'horloge MIDI (1,8% à 120BPM) était proche de 0 à certains BPM (25, 50, 125, etc).
Sur feu le forum Mutable Instruments - hélas disparu et archivé nulle part - Emilie G. m'avait sorti un petit calcul avec numpy pour confirmer que cela coïncidait avec un moteur MIDI fonctionnant à 1000Hz (ou un multiple de cette valeur).
La seule machine que j'aie pour comparer avec les résultats postés par Don Solaris est mon vénérable XP-50, dont le timing est certes honorable, mais largement battu par les Arturia Keystep et Beatstep Pro qui sont impressionnants sur ce point depuis les dernières mises à jour.
Le XP-50 est également égalé - voire battu de peu - par un ordinosaure sous WinMe/XP utilisant la bonne combinaison matérielle & logicielle Steinberg permettant d'exploiter le protocole LTB des interfaces Midex8 et Midex3 de la marque (Cubase VST5 et/ou Cubase SX3).
Il faudrait que je teste plus sérieusement avec le MidiGAL sur émulation FPGA Atari/Amiga via le MiST, maintenant que ce dernier émule le dongle de Cubase et permet donc de faire tourner une version non c*ackée, soit dans les même condition que le PC.
Cf. le lien vers le fil sur Gearspace pour les détails : https://tinyurl.com/midijitter
https://www.donsolaris.com/?p=2124
Citation :
Finding the tightest hardware MIDI sequencer among a dozen (measurement tests)
In this article the following devices will be tested
Hardware sequencers:
Akai MPC2500
Kawai Q-80EX
Roland MC-500MkII
Yamaha QX3
Yamaha RS7000
Hardware keys synths and samplers featuring a sequencer:
Ensoniq ASR-10
Ensoniq ESQ-1
Ensoniq TS-10
E-MU Emulator 4 Ultra
Korg 01/W
Kurzweil K-2600 RS
Roland XP-50
Computers featuring sequencer software:
Amiga 500
Atari 1040 ST
Mac running OSX and Windows 10 using RME UCXII and MPC Renaissance
Les résultats sont exprimés en ms, là où le MidiGAL affiche le coefficient de variation en %.
Il n'y a aucune information sur le protocole de test non plus, même si j'ai le sentiment qu'on se rapproche du Litmus Test d'Innerclock (dont les variantes ne pas très détaillées non plus)
https://www.innerclocksystems.com/litmus
https://web.archive.org/web/20180328172952/http://www.innerclocksystems.com/New%20ICS%20Midi%20Hardware.html
Difficile de comparer donc, a fortiori si les tests avec le MLA sont - comme je le pense - effectués à 120BPM uniquement, et sur 4 notes par mesure (1/4).
En effet, la bande passante du MIDI canonique étant ce qu'elle est, la gigue augmente avec la densité d'informations, et la valeur du BPM.
Ce que permet de vérifier le MidiGAL avec ses tests sur l'horloge, ou les notes en 1/4, 1/8, 1/16 ou 1/32 tout en calculant également le tempo réel.
De plus, comme je l'écrivais plus haut, certaines valeurs "parfaites" - donc aberrantes - peuvent surgir lorsque les subdivisions du BPM coïncident avec la fréquence de travail du moteur MIDI de la machine.
Je me rappelle avoir eu le cas avec l'electribe 2, donc la gigue de l'horloge MIDI (1,8% à 120BPM) était proche de 0 à certains BPM (25, 50, 125, etc).
Sur feu le forum Mutable Instruments - hélas disparu et archivé nulle part - Emilie G. m'avait sorti un petit calcul avec numpy pour confirmer que cela coïncidait avec un moteur MIDI fonctionnant à 1000Hz (ou un multiple de cette valeur).
La seule machine que j'aie pour comparer avec les résultats postés par Don Solaris est mon vénérable XP-50, dont le timing est certes honorable, mais largement battu par les Arturia Keystep et Beatstep Pro qui sont impressionnants sur ce point depuis les dernières mises à jour.
Le XP-50 est également égalé - voire battu de peu - par un ordinosaure sous WinMe/XP utilisant la bonne combinaison matérielle & logicielle Steinberg permettant d'exploiter le protocole LTB des interfaces Midex8 et Midex3 de la marque (Cubase VST5 et/ou Cubase SX3).
Il faudrait que je teste plus sérieusement avec le MidiGAL sur émulation FPGA Atari/Amiga via le MiST, maintenant que ce dernier émule le dongle de Cubase et permet donc de faire tourner une version non c*ackée, soit dans les même condition que le PC.
« 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)
[ Dernière édition du message le 30/06/2024 à 16:01:44 ]
.: Odon Quelconque :.
11103
Drogué·e à l’AFéine
Membre depuis 22 ans
33 Posté le 30/06/2024 à 14:43:00
Un petite solution automatisable de test de la gigue (jitter) MIDI perso qui avance bien, très inspirée par le MidiGAL (firmware MidiClock) et par celle-ci :
https://medium.com/@apmatthews/sequencer-tightness-hardware-vs-software-11663f56bc7b
Tourne sur Arduino disposant idéalement de 2 ports série et d'un port SD-Card, afin de pouvoir afficher les valeurs en même temps qu'il les enregistre en csv pour exploitation avancée dans un tableur. Je ne connais pas trop la gamme, mais ces modèles doivent offrir la meilleure précision pour l'horodatage en microsecondes des évènements MIDI, dont on calcule ensuite l'intervalle en millisecondes.
https://docs.arduino.cc/language-reference/en/functions/time/micros/
En étant raisonnable sur les temps de rafraîchissement du LCD à 1s ou 0.5s à des BPM réalistes, et malgré la surcouche logicielle Arduino, l'Adafruit Grand Central M4 Express est suffisamment puissant pour afficher les stats en temps réel en même temps qu'il logue les valeurs d'intervalles sur la SD ou le port série. Abondance de biens ne nuisant pas, c'est pareil avec un Giga R1.
Si le Midronome est sans surprise le plus stable comme horloge spécialisée, en tant que séquenceurs les Arturia BSP et KeyStep sont hors compétition, tellement leur timing est précis avec les derniers firmware :
Les bons vieux shields e-lickronic ont repris du service.
https://medium.com/@apmatthews/sequencer-tightness-hardware-vs-software-11663f56bc7b
Tourne sur Arduino disposant idéalement de 2 ports série et d'un port SD-Card, afin de pouvoir afficher les valeurs en même temps qu'il les enregistre en csv pour exploitation avancée dans un tableur. Je ne connais pas trop la gamme, mais ces modèles doivent offrir la meilleure précision pour l'horodatage en microsecondes des évènements MIDI, dont on calcule ensuite l'intervalle en millisecondes.
https://docs.arduino.cc/language-reference/en/functions/time/micros/
En étant raisonnable sur les temps de rafraîchissement du LCD à 1s ou 0.5s à des BPM réalistes, et malgré la surcouche logicielle Arduino, l'Adafruit Grand Central M4 Express est suffisamment puissant pour afficher les stats en temps réel en même temps qu'il logue les valeurs d'intervalles sur la SD ou le port série. Abondance de biens ne nuisant pas, c'est pareil avec un Giga R1.
Si le Midronome est sans surprise le plus stable comme horloge spécialisée, en tant que séquenceurs les Arturia BSP et KeyStep sont hors compétition, tellement leur timing est précis avec les derniers firmware :
Les bons vieux shields e-lickronic ont repris du service.
« 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)
[ Dernière édition du message le 28/08/2024 à 00:01:11 ]
- < Liste des sujets
- Charte