Hanz
Anonieme Analogist
Zo, dan heb je een paar daagjes vakantie en wat doe je dan? Tweak'n natuurlijk!
Aangezien ik al een tijdje aan het puzzelen was met m'n Unitor-8 midi interface, met name de midi latency in Cubase SX, waar je nog wel eens wat over leest, vond ik het wel een mooie gelegenheid om dit eens tot op de bodem uit te zoeken.
De experts hoef ik natuurlijk weinig te zeggen, tegen deze mensen zou ik willen zeggen: skip het verhaaltje even tot op de laatste paragraaf, wellicht zit er toch alsnog een verrrassing voor je in!
PS het hele verhaal gaat volgens mij ook op voor gebruikers van de AMT-8 en MT-4 interfaces van Emagic.
Let op, voor andere interfaces kan de optimale instelling compleet (!) anders zijn.
Goed, voor de liefhebbers een kleine detailbeschrijving:
Op het Windows platform, met name Cubase SX geloof ik, word je qua MIDI al gauw hoorndol van al de mogelijke verschillende driver(model)-varianten die onder de motorkap kunnen draaien. Zeker bij de Emagic Unitor-8, ooit een rete-dure interface, tegenwoordig bar slecht ondersteund, zit je out-of-the-box al snel tegen een pittige latency aan te hikken.
Aangezien ik dit niet echt tof vond, ben ik er even in gedoken. Twee dingen die ik even wil noemen maar bekend veronderstel:
-het opschonen van dubbele Emagic driver entries in je registry d.m.v. Regedit (HKLM -> System -> CurrentControlSet -> Enum -> USB -> Vid_xxx)
-het 'ignoreportfilter' verhaal (vrij goed gedocumenteerd); ik had ooit begrepen dat het met Cubase SX 3.1 niet meer echt nodig zou zijn... nou, met een Unitor-8 wel dus. Hierdoor zag ik dus dat er lustig gebruik werd gemaakt van de [Emulated] DirectMusic drivers, in plaats van de oorspronkelijke Windows Midi drivers (MME). Ook zag ik nog het vinkje 'use system timestamp' en enig Googlen deed me inzien dat hier ook vrij veel indianenverhalen over bestaan; het zou iets zijn wat alleen een rol speelt bij DirectMusic drivers, niet bij MME.
Kortom, een leuk aantal scenario's om eens uit te pluizen. Hoe doe je dat?
In principe voor je een groot aantal volledige MIDI message roundtrips uit; d.w.z. kabeltje tussen MIDI OUT en MIDI IN, en dan zorgvuldig meten met het onvolprezen programmaatje MidiTest.
Leuk om te weten: naast het bovengenoemde programmaatje Miditest bestaat er het tooltje MidiTime van deze site. Dit tooltje meet, maar geeft de resultaten niet erg duidelijk weer. Wel wordt er een advies uitgebracht over de beste keuze van MIDI instellingen.
Interessant genoeg klopt het advies van MidiTime wel voor de Unitor8, maar niet voor de MIDI interface op m'n MOTU 828mkII, als je de uitkomst vergelijkt met metingen van MidiTest. Gezien de opmerkingen op de site van de maker heb ik zo het gevoel dat MidiTime inmiddels gewoon verouderd is. MidiTest gebruiken, dus!
Om te beginnen bleek zoals gezegd dat de DirectMusic drivers een MIDI latency van 11 ms en een enorme jitter veroorzaakten; tevens werkte sysex problematisch (dat is een bekende issue met DirectMusic, trouwens).
Dan maar even de MME drivers gemeten; direct zien de de latency duikelen naar rond de 6 ms en de jitter is ook lager.
Tot zoverre eigenlijk een bekend verhaal voor iedereen die de materie al eens heeft bekeken.
Nu, om het interessant te maken, maar eens gaan spelen met het vinkje 'Use System Time', resultaten hieronder:
Use Timestamp:
No Timestamp:
Toelichting: ik heb hierbij gekozen voor het benchmarken van 20.000 midi events, waarbij ik de typen Sysex, Tune Request en Active Sensing heb uitgeschakeld. Sysex, omdat hiervan de timing minder kritisch komt. De andere 2 boodschappen blijken de werking van de Unitor dusdanig te verstoren dat het uitvoeren van een meting niet mogelijk zou zijn. Interessant dus!
OK, we zien dus dat het uitschakelen van System Timestamp wel degelijk uitmaakt voor MME drivers, zelfs voordelig blijkt in het geval van de Unitor. Toch weer een milliseconde van de latency afgeschaafd... maar... zou er niet nog meer te halen zijn?
Uiteindelijk ben ik nog eens goed door alle driver-opties van de Unitor heengelopen.
Wat bleek, er bestaan 2 driver entries in Device Manager, ééntje in "Sound, Video and Game Controllers" met vrij algemene, saaie opties. En nog ééntje, onder de "Universal Serial Bus Controllers", genaamd Emagic Midi device. Klik je deze open, dan zie je vanzelf een tabblad met "USB Mode". Interessant genoeg staat daar nog een optie voor "Special USB-chipset optimization", met een verhaaltje over performance. Normaal zou ik dit lekker met rust laten, maar vandaag toch maar even geprobeerd. Resultaat: alweer een performance verbetering! (waarbij het trouwens nog altijd zin heeft om System Timestamp lekker uit te laten).
Uiteindelijk verkreeg ik dus deze resultaten:
"Special USB-chipset optimization" i.c.m. No Timestamping:
Kortom, een latency van vier-en-een-halve milliseconde in plaats van de meer dan elf milliseconden out-of-the-box. En ook veel minder jitter. Best dus even de moeite om te proberen of dit werkt voor andere gebruikers van WinXP i.c.m. de Emagic midi interfaces dus!
Succes, en laat het resultaat even horen!
P.S. ik ben nog even van plan soortgelijke metingen te doen m.b.v. een seriele aansluiting. Moet ik wel eerst ergens zo'n kabeltje vandaan graven...
Aangezien ik al een tijdje aan het puzzelen was met m'n Unitor-8 midi interface, met name de midi latency in Cubase SX, waar je nog wel eens wat over leest, vond ik het wel een mooie gelegenheid om dit eens tot op de bodem uit te zoeken.
De experts hoef ik natuurlijk weinig te zeggen, tegen deze mensen zou ik willen zeggen: skip het verhaaltje even tot op de laatste paragraaf, wellicht zit er toch alsnog een verrrassing voor je in!
PS het hele verhaal gaat volgens mij ook op voor gebruikers van de AMT-8 en MT-4 interfaces van Emagic.
Let op, voor andere interfaces kan de optimale instelling compleet (!) anders zijn.
Goed, voor de liefhebbers een kleine detailbeschrijving:
Op het Windows platform, met name Cubase SX geloof ik, word je qua MIDI al gauw hoorndol van al de mogelijke verschillende driver(model)-varianten die onder de motorkap kunnen draaien. Zeker bij de Emagic Unitor-8, ooit een rete-dure interface, tegenwoordig bar slecht ondersteund, zit je out-of-the-box al snel tegen een pittige latency aan te hikken.
Aangezien ik dit niet echt tof vond, ben ik er even in gedoken. Twee dingen die ik even wil noemen maar bekend veronderstel:
-het opschonen van dubbele Emagic driver entries in je registry d.m.v. Regedit (HKLM -> System -> CurrentControlSet -> Enum -> USB -> Vid_xxx)
-het 'ignoreportfilter' verhaal (vrij goed gedocumenteerd); ik had ooit begrepen dat het met Cubase SX 3.1 niet meer echt nodig zou zijn... nou, met een Unitor-8 wel dus. Hierdoor zag ik dus dat er lustig gebruik werd gemaakt van de [Emulated] DirectMusic drivers, in plaats van de oorspronkelijke Windows Midi drivers (MME). Ook zag ik nog het vinkje 'use system timestamp' en enig Googlen deed me inzien dat hier ook vrij veel indianenverhalen over bestaan; het zou iets zijn wat alleen een rol speelt bij DirectMusic drivers, niet bij MME.
Kortom, een leuk aantal scenario's om eens uit te pluizen. Hoe doe je dat?
In principe voor je een groot aantal volledige MIDI message roundtrips uit; d.w.z. kabeltje tussen MIDI OUT en MIDI IN, en dan zorgvuldig meten met het onvolprezen programmaatje MidiTest.
Leuk om te weten: naast het bovengenoemde programmaatje Miditest bestaat er het tooltje MidiTime van deze site. Dit tooltje meet, maar geeft de resultaten niet erg duidelijk weer. Wel wordt er een advies uitgebracht over de beste keuze van MIDI instellingen.
Interessant genoeg klopt het advies van MidiTime wel voor de Unitor8, maar niet voor de MIDI interface op m'n MOTU 828mkII, als je de uitkomst vergelijkt met metingen van MidiTest. Gezien de opmerkingen op de site van de maker heb ik zo het gevoel dat MidiTime inmiddels gewoon verouderd is. MidiTest gebruiken, dus!
Om te beginnen bleek zoals gezegd dat de DirectMusic drivers een MIDI latency van 11 ms en een enorme jitter veroorzaakten; tevens werkte sysex problematisch (dat is een bekende issue met DirectMusic, trouwens).
Dan maar even de MME drivers gemeten; direct zien de de latency duikelen naar rond de 6 ms en de jitter is ook lager.
Tot zoverre eigenlijk een bekend verhaal voor iedereen die de materie al eens heeft bekeken.
Nu, om het interessant te maken, maar eens gaan spelen met het vinkje 'Use System Time', resultaten hieronder:
Use Timestamp:
Code:
================ Results Per Message =====================================
MESSAGES Snd Rcv Snd+Rcv
Message TotalTime: 161.27 ms 125876.86 ms 126038.13 ms
Message MaximumTime: 0.20 ms 10.88 ms 10.89 ms
Message MinimumTime: 0.01 ms 1.30 ms 1.30 ms
Message AverageTime: 0.01 ms 6.29 ms 6.30 ms
SysexTime: 0.00 ms 0.00 ms 0.00 ms
SysexAverage: 0.00 ms 0.00 ms 0.00 ms
< 1 ms: 20000 0 0
1 - 2 ms: 0 4 4
2 - 3 ms: 0 69 67
3 - 4 ms: 0 734 729
4 - 5 ms: 0 2440 2410
5 - 10 ms: 0 16747 16784
10 - 20 ms: 0 6 6
20 - 50 ms: 0 0 0
50 - 100 ms: 0 0 0
> 100 ms: 0 0 0
Message count: 20000 Sysex count: 0
Sysex size: 0 Sysex passed: 0
Message latency: 6.30 ms Total time: 127.372 sec
Message jitter: 1.27 ms
Message max deviation: 5.00 ms
No Timestamp:
Code:
================ Results Per Message =====================================
MESSAGES Snd Rcv Snd+Rcv
Message TotalTime: 159.96 ms 106226.34 ms 106386.30 ms
Message MaximumTime: 0.27 ms 8.93 ms 8.94 ms
Message MinimumTime: 0.00 ms 1.12 ms 1.13 ms
Message AverageTime: 0.01 ms 5.31 ms 5.32 ms
SysexTime: 0.00 ms 0.00 ms 0.00 ms
SysexAverage: 0.00 ms 0.00 ms 0.00 ms
< 1 ms: 20000 0 0
1 - 2 ms: 0 13 12
2 - 3 ms: 0 202 200
3 - 4 ms: 0 2449 2405
4 - 5 ms: 0 4482 4493
5 - 10 ms: 0 12854 12890
10 - 20 ms: 0 0 0
20 - 50 ms: 0 0 0
50 - 100 ms: 0 0 0
> 100 ms: 0 0 0
Message count: 20000 Sysex count: 0
Sysex size: 0 Sysex passed: 0
Message latency: 5.32 ms Total time: 127.542 sec
Message jitter: 1.03 ms
Message max deviation: 4.19 ms
Toelichting: ik heb hierbij gekozen voor het benchmarken van 20.000 midi events, waarbij ik de typen Sysex, Tune Request en Active Sensing heb uitgeschakeld. Sysex, omdat hiervan de timing minder kritisch komt. De andere 2 boodschappen blijken de werking van de Unitor dusdanig te verstoren dat het uitvoeren van een meting niet mogelijk zou zijn. Interessant dus!
OK, we zien dus dat het uitschakelen van System Timestamp wel degelijk uitmaakt voor MME drivers, zelfs voordelig blijkt in het geval van de Unitor. Toch weer een milliseconde van de latency afgeschaafd... maar... zou er niet nog meer te halen zijn?
Uiteindelijk ben ik nog eens goed door alle driver-opties van de Unitor heengelopen.
Wat bleek, er bestaan 2 driver entries in Device Manager, ééntje in "Sound, Video and Game Controllers" met vrij algemene, saaie opties. En nog ééntje, onder de "Universal Serial Bus Controllers", genaamd Emagic Midi device. Klik je deze open, dan zie je vanzelf een tabblad met "USB Mode". Interessant genoeg staat daar nog een optie voor "Special USB-chipset optimization", met een verhaaltje over performance. Normaal zou ik dit lekker met rust laten, maar vandaag toch maar even geprobeerd. Resultaat: alweer een performance verbetering! (waarbij het trouwens nog altijd zin heeft om System Timestamp lekker uit te laten).
Uiteindelijk verkreeg ik dus deze resultaten:
"Special USB-chipset optimization" i.c.m. No Timestamping:
Code:
================ Results Per Message =====================================
MESSAGES Snd Rcv Snd+Rcv
Message TotalTime: 171.04 ms 88165.41 ms 88336.45 ms
Message MaximumTime: 0.63 ms 6.01 ms 6.02 ms
Message MinimumTime: 0.00 ms 1.20 ms 1.20 ms
Message AverageTime: 0.01 ms 4.41 ms 4.42 ms
SysexTime: 0.00 ms 0.00 ms 0.00 ms
SysexAverage: 0.00 ms 0.00 ms 0.00 ms
< 1 ms: 20000 0 0
1 - 2 ms: 0 93 88
2 - 3 ms: 0 1163 1084
3 - 4 ms: 0 3402 3478
4 - 5 ms: 0 10803 10778
5 - 10 ms: 0 4539 4572
10 - 20 ms: 0 0 0
20 - 50 ms: 0 0 0
50 - 100 ms: 0 0 0
> 100 ms: 0 0 0
Message count: 20000 Sysex count: 0
Sysex size: 0 Sysex passed: 0
Message latency: 4.42 ms Total time: 108.983 sec
Message jitter: 0.86 ms
Message max deviation: 3.21 ms
Kortom, een latency van vier-en-een-halve milliseconde in plaats van de meer dan elf milliseconden out-of-the-box. En ook veel minder jitter. Best dus even de moeite om te proberen of dit werkt voor andere gebruikers van WinXP i.c.m. de Emagic midi interfaces dus!
Succes, en laat het resultaat even horen!
P.S. ik ben nog even van plan soortgelijke metingen te doen m.b.v. een seriele aansluiting. Moet ik wel eerst ergens zo'n kabeltje vandaan graven...
Laatst gewijzigd: