Backstory (skip to “Solution” below if you don’t care)
So I’ve been working on my live set recently, and I’m sure that anyone else in my position is aware of how much of a pain it can be once you have more than a couple of machines - especially once you start getting pedals and other effects involved. This goes double if you want to have fine-grained control over macros and so forth - the wiring quickly gets out of hand which makes it slow to set up and take down, and even slower to change your setup if you have multiple sets with different effects. The solution to this that I wanted to try was to use Overbridge, essentially getting the best of both worlds - keeping my hardware with all its lovely dedicated buttons for performance etc, but without needing to bring a separate backpack just for wires. However, as I’m sure anyone who’s been in my position knows, the Overbridge VSTs have a serious problem with latency. If you hover over the title bar in Live, you can see that the VST for the Analog Rytm reports almost 30ms latency with Live’s smallest supported buffer size of 32 samples, and with a more reasonable 128 sample buffer it has just under 35ms latency. With an output latency of 4,35ms (which is the lowest that I can get with my audio interface), this means a total latency of around 34ms between me pressing a pad or key and hearing the output. The maximum latency before it affects musicians is around 10-12ms, so this is absolutely unacceptable.
All the Elektron machines that support Overbridge also support class-compliant USB audio/midi, but this class-compliant mode will only output the master channel. However, when you install Overbridge on your computer, it will also install a driver which means that devices in Overbridge mode will appear as a special audio interface, and this special Overbridge audio interface has all the channels available. While this should be a direct downgrade from the VSTs, since you don’t have the transparent bidirectional parameter binding, but these audio interfaces seemingly have far, far less latency.
The reported input latency is 0,67ms at 32 samples, and although it’s possible that the driver is misreporting the true latency it’s clearly better than the VST. I haven’t rigorously tested the latency yet, but I’ve tried sending the digital output to the speakers and the direct headphone output from the devices into headphones, and you can hear the latency when using the VST whereas the latency is inaudible when using the audio interface.
Caveats and workarounds
The most obvious caveat is that sync doesn’t work by default, and I actually still haven’t figured out a way for Live to be the master clock without introducing latency. No matter what, it always seems like the machines are consistently 28ms behind Live when Live is the master clock. Since my usecase is essentially using Live as a mixer, this is fine for me since I don’t need Live to be in sync with the machines, but YMMV.
The other caveat is that you don’t get that bidirectional parameter mapping that you get with the VSTs, but I have a workaround for this: in Live you can add a muted track which has the relevant VST on it, and set the VST to sync mode “No Sync” to prevent the clock issues mentioned above. Initially this will just get you back to square one, since the VST will introduce latency on the muted track and all the other tracks will wait for it so that they all stay in sync - in Live all tracks will wait for the track with the highest latency even if that track is muted or the VST causing the latency is disabled (presumably because they don’t want the master output to “hiccup” because the latency changed). However, if you check the latency of the VST by hovering over the title bar and then set the muted track to have a delay equal to that, you essentially tell Live that the track with the VST is supposed to have latency, and so the rest of the tracks won’t wait up for it. To set the per-track delay, you need to click the little “D” in the circle at the bottom-right of the timeline when in arrangement view, this will display a control at the right-hand side of each track which allows you to set the delay in either ms or samples. Hover over the title bar of the VST to show the latency in the info box at the bottom of the screen and then enter that number as the delay for the track with the VST. Then you can control parameters with the VST but receive audio using the audio interface.
Better solution from Elektron
So if you’ve got a good eye, you might notice that the 28ms delay that I was seeing when using Live as a MIDI clock is suspiciously close to the 30ms minimum latency introduced by the VST. My guess is that the high amount of latency in the VST is because the VST is always leaving enough time for the machines to receive and process MIDI even when sync is disabled and no MIDI is being sent. Honestly I still have sync issues when using the VST even if I’m using it normally and don’t care about latency, but it would be great if there was a “low-latency mode” that could be enabled which removes this wait and brings the VST closer in line with the latency of the audio interface. If Live is sending MIDI this will cause desyncs since you’re no longer waiting for the machines to process the MIDI before receiving the audio, but it’ll make the latency better if you’re only receiving audio.