Last night I investigated MIDI latency and jitter with various MIDI devices.
The setup is simple:
- A single perfectly quantized 1/16 MIDI note is send to a MIDI OUT port
- A short MIDI cable connects MIDI OUT to MIDI IN of the same device (i.e. no external processing, filtering, etc. involved)
- The MIDI note is recorded on a separate track, its offset measured in reported MIDI ticks (960 tick resolution, project tempo: 240 BPM) and converted to msecs. Jitter is calculated as the difference between minimum and maximum offsets obtained in loop recordings (20+ loops)
Measurements where done on 2 DAWs with different specs, using Sonar Platinum 2016.07 under win10 (all updates in place).
First of all, Sonar is doing fine ... as can be seen from numbers obtained when using a virtual MIDI cable. There is a minor offset (1 msec) and small variance (1 msec jitter), which is expected as the signal is leaving Sonar into another application and comes back ...
loopMIDI (virtual MIDI cable) => offset: 4 - 8 ticks (1.04 - 2.08msec) => jitter: 4 ticks (1.04 msec) Now results get interesting: the cheap MIDIMATE unit shows same performance as good Roland interfaces (i.e. expensive Roland VS-700 and widely used A-Pro MIDI Controller keyboard)
MIDIMATE => offset: 7 - 12 ticks (1.82 - 3.13msec) => jitter: 5 ticks (1.3 msec)Roland VS-700 => offset: 5 - 11 ticks (1.30 - 2.86msec) => jitter: 6 ticks (1.56 msec) Roland A-Pro => offset: 4 - 11 ticks (1.04 - 2.86msec) => jitter: 7 ticks (1.82 msec) Later Roland units seem to have more offset and slightly less stable performance ...
Roland INTEGRA-7 => offset: 8 - 14 ticks (2.08 - 3.65msec) => jitter: 6 ticks (1.56 msec) Roland Octa-Capture => offset: 10 - 18 ticks (2.60 - 4.69msec) => jitter: 8 ticks (2.08 msec) One of the most expensive MIDI only devices currently available, however, which is advertised having "
giving you high-speed MIDI throughput, sub-millisecond timing accuracy" is quite disappointing because offset + jitter is 2-3 times higher than with other units and gets you into the timing critical range (~8ms with occasional peaks even higher)
MOTU Express XT => offset: 16 - 32 ticks (4.17 - 8.33msec) => jitter: 16 ticks (4.17 msec) The MOTU unit comes with many options for locking it to external and internal clocking but neither option changes above measurements (so I wonder if this unit is functioning properly) ...
As regards Sonar: Is there any setting/option which would allow to move all recorded MIDI forward by the measured average offset (per interface)?
Edit: Behringer BCF added ...
Behringer BCF => offset: 8 - 14 ticks (2.08 - 3.65msec) => jitter: 6 ticks (1.56 msec) Edit #2:
ESI M4U XT (win default driver) => offset: 8 - 12 ticks (2.08 - 3.13msec) => jitter: 4 ticks (1.04 msec)
ESI M4U XT (ESI driver) => offset: 8 - 11 ticks (2.08 - 2.86msec) => jitter: 3 ticks (0.78 msec)