MIDI Clock jitter related to (low) ASIO buffer size
Posted: Thu Aug 14, 2014 7:18 am
I had some trouble with MIDI Clock jitter from Live's master clock.
Last night I realised that (at least with my setup) the MIDI Clock jitter is related to the ASIO buffer size.
Maybe this is old news for some, but I couldn't find any similar postings about this.
And since a lot of people are complaining about Live's sloppy MIDI clock, I'll explain a bit.
The Setup:
Thinkpad W520, Win7 64bit, Live 9.1.2 32bit
-> Audio Out: via Saffire LE (Firewire) or Scarlett 6i6 (USB)
-> MIDI Out: to MIDIbox Sequencer V4 (connected via USB)
-> External Gear slaved to MBSeq: Machinedrum, Octatrack, Shruthi-1, Evolver etc.
Live is MIDI clock master, MBSeq is slave, forwards clock to external gear
The Problem:
I had this perfectly running tight and in sync (with adjusted MIDI Clock delay in Live of course)
Then had a few months of non-activity, changing stuff, moving etc.
Recently re-connected everything and: sloppy MIDI clock on the external gear.
At 135 BPM, the jitter was max. +/- 5 BPM, observed on the Elektron machines. But clearly audible in the sound of the slaved machines as skipping or sloppiness.
The Solution:
After a lot of head-scratching and changing things around without effect (older Live versions, things in/out of the MIDI chain etc.) I realised I had raised the ASIO buffer size at one point (for whatever reason). On the Scarlett 6i6 it was 15ms for example.
When gradually lowering the ASIO buffer size, the jitter of the received MIDI Clock got better and better.
Finally around 3ms ASIO buffer, no audible sloppiness in the slaved machines. On the Elektrons, I could observer max. +/- 0.2 BPM.
I could repeat this with the Firewire Audio Interface, which already gave a good result at 5ms ASIO buffer.
Same with the MBSeq out of the chain and Live directly clocking the external gear.
My Conclusion:
The larger the ASIO buffer size, the more jitter on the computer MIDI clock.
If I want a thight MIDI clock from the computer (i.e. Live), I have to use the smallest ASIO buffer possible.
Proposed Future Research:
- try to repeat with a different clock source on the computer
- get the ASIO buffer sizes in samples
- use a software tool (MIDI-Ox ?) to record the MIDI stream to numerically evaluate the clock jitter at different buffer sizes
- try to repeat on another machine
Last night I realised that (at least with my setup) the MIDI Clock jitter is related to the ASIO buffer size.
Maybe this is old news for some, but I couldn't find any similar postings about this.
And since a lot of people are complaining about Live's sloppy MIDI clock, I'll explain a bit.
The Setup:
Thinkpad W520, Win7 64bit, Live 9.1.2 32bit
-> Audio Out: via Saffire LE (Firewire) or Scarlett 6i6 (USB)
-> MIDI Out: to MIDIbox Sequencer V4 (connected via USB)
-> External Gear slaved to MBSeq: Machinedrum, Octatrack, Shruthi-1, Evolver etc.
Live is MIDI clock master, MBSeq is slave, forwards clock to external gear
The Problem:
I had this perfectly running tight and in sync (with adjusted MIDI Clock delay in Live of course)
Then had a few months of non-activity, changing stuff, moving etc.
Recently re-connected everything and: sloppy MIDI clock on the external gear.
At 135 BPM, the jitter was max. +/- 5 BPM, observed on the Elektron machines. But clearly audible in the sound of the slaved machines as skipping or sloppiness.
The Solution:
After a lot of head-scratching and changing things around without effect (older Live versions, things in/out of the MIDI chain etc.) I realised I had raised the ASIO buffer size at one point (for whatever reason). On the Scarlett 6i6 it was 15ms for example.
When gradually lowering the ASIO buffer size, the jitter of the received MIDI Clock got better and better.
Finally around 3ms ASIO buffer, no audible sloppiness in the slaved machines. On the Elektrons, I could observer max. +/- 0.2 BPM.
I could repeat this with the Firewire Audio Interface, which already gave a good result at 5ms ASIO buffer.
Same with the MBSeq out of the chain and Live directly clocking the external gear.
My Conclusion:
The larger the ASIO buffer size, the more jitter on the computer MIDI clock.
If I want a thight MIDI clock from the computer (i.e. Live), I have to use the smallest ASIO buffer possible.
Proposed Future Research:
- try to repeat with a different clock source on the computer
- get the ASIO buffer sizes in samples
- use a software tool (MIDI-Ox ?) to record the MIDI stream to numerically evaluate the clock jitter at different buffer sizes
- try to repeat on another machine