MIDI lagging when Ableton set to External Sync?
Has anyone ever had this issue?
I've got some M4L devices on a track. These devices do Jitter operations that are triggered by the track's MIDI notes. The last device on the track is a Simpler device, playing a rimshot sample on each MIDI note.
When I hit play, everything works nicely in time - the audio is in time with the click, and my Jitter stuff looks like it's 'on the beat'.
As soon as I switch Ableton into External Sync, everything now lags behind the click - but the audio and the Jitter stuff are still in time with each other.
Switching back to internal syncing makes everything look and sound in time with the click again.
Normally I would attribute any lag to my M4L devices being inefficient. But I would expect them to be equally inefficient whether I was using internal or external sync.
By the way, this has nothing to do with the MIDI Clock Sync Delay in the Ableton prefs - changing this doesn't fix it.
Perhaps there's simply a greater load on the system when using external sync, and I just need to consider that when building my devices?
I believe that PDC (plugin delay compensation) is not supported if Live runs in external sync mode. It would explain the different behavior since M4L devices introduce some latency.
@broc - thanks for alerting me to Plugin Delay Compensation - I wasn't aware of it until now.
Hmm... this could mean I have to stop using Ableton for this project. Unless I can find some other way of keeping Ableton in sync with Traktor. Just had the idea of using Ableton as the master and Traktor as the slave. Might work for some use cases, but not all.
Would buying a very powerful machine help?
The timing problem can't be eliminated with a powerful machine but minimized because M4L devices introduce latency depending on Live's audio buffer and sample rate. For instance, with 512 samples at 44.1kHz the latency per device is about 12ms, with 64 samples at 88.2kHz it should be less than 1ms.
Thanks @broc.
I was able to reduce my audio buffer to 30 samples, and that greatly reduced the latency.
Another factor that may be causing latency is that I had both Ableton and Traktor running on the same machine, whereas I usually have Traktor running on a second machine.
In theory the problem could be solved with "manual delay compensation", ie. adding dummy M4L devices such that each track has the same latency (same number of 3rd party plugins or M4L devices). In this case all tracks would play in sync regardless if automatic delay compensation is supported or not.
I use ableton as the master sequencer and use the M4l Observer object to send a bang to max/jitter (to the global metro toggle) when the Live transport starts playing, all messages are sent with udpsend and udpreceive to various jitter objects, live buffer size is 128 samples, no noticeable latency.
Live uses a LOT of plugins :)