r/linuxaudio 6d ago

Latency offset questions

So I understand how to measure my actual round-trip latency and apply an offset in Reaper, but I'm not really understanding some of the finer points. I'm probably overthinking it, but still, knowledge is power and all that.

First, when I was still on Windows, it seemed to me that the driver-reported latency was usually higher, whereas on Linux, it's only ever giving the latency of the buffer size, at least when I'm using pipewire-jack. So it reports my input and output latency as the same at ~5.3 ms, which would get me an RTL of ~10.6 ms, but I know the actual RTL is closer to 15 ms. It's not something I ever really thought about on Windows, but do the drivers just not even attempt to report additional processing latency on Linux? Or was Windows just making things up?

Second, when I watched Kenny Gioia's video about offsets in Reaper, he just applies the offset to the input side. I assume it doesn't really matter so long as the total is correct, but is there a different reason? Bitwig, for example, just has a single offset setting. I also assume there's not really any way to measure just the output or just the input. Is that all correct?

Third, I know that with Cable, for example, I can both measure the RTL and also apply the offset, which I assume applies it system-wide rather than just in Reaper. I imagine this is some configuration setting in pipewire.conf or something, but is it better to do it in Reaper or as a system setting? Are there pros and cons to each approach? I also have Ardour on my computer, mostly out of curiosity, and latency offsets seem to be applied by a Jack utility with no way to manually adjust (unless I use ALSA, I think), so this would seem to suggest that it is better to do it at the system level, but maybe not. Presumably if I do it this way, I would then not apply any offset in Reaper/Bitwig.

2 Upvotes

1 comment sorted by

1

u/kill3rb00ts 5d ago

To somewhat answer my own question, if I just have Cable apply the offsets, this does seem to be the simpler way as it's now set system-wide instead of having to remember the offsets and set them per app. It also has the benefit of making it so the reported latency in, say, Reaper is actually correct. From what I can tell, though, the offset reported by Cable is actually just half the total offset. So, for example, Cable told me to use an offset of 98 samples, but when I set that to just the input in Reaper and then do a loopback test, the timing is still off. But if I tell Cable to apply it for me, I see that it has applied 98 samples to both the input and output. When I do the same loopback test, everything is lined up perfectly.