[Jack-Devel] I'm confused about latency

Alexandre Bique bique.alexandre at gmail.com
Thu Apr 4 18:19:50 CEST 2019


Hi,

I've been reading the code of Ableon's LinkHut's jack backend.

https://github.com/Ableton/link/blob/master/examples/linkaudio/AudioPlatform_Jack.hpp
https://github.com/Ableton/link/blob/master/examples/linkaudio/AudioPlatform_Jack.cpp

And I was quite surprised because I did not find any latency compensation there.
So for real-time beat time synchronization this is quite important right?
BTW, if any jack expert finds the time and motivation to fix the jack
back-end of Link's example that would be awesome and a great example.

Then I've read the documentation:

http://jackaudio.org/api/group__LatencyFunctions.html

And I am totally confused.

Why a latency range? What is the use case for it?

How is the application supposed to work with multiple inputs and
outputs having each a different latency range?

What's the point of a latency range? If you're concerned about the
shortest path and the longest path, why wouldn't you be concerned
about any path in between?

How to know at which time on a given a clock (CLOCK_REALTIME or
CLOCK_MONOTONIC) a sample in the current process block will be played
on the sound card's output?

I've tried with qjackctl to set the periods/buffer to 12 with 2048
samples per buffer at 44100 Hz which is about half a second of
latency. Do you manage to get the correct latency reported with those
settings? See https://imgur.com/w45wsp8

Jack allows feedback routing, how do you deal with latency with such a graph?

I've been testing with Jack 1.9.12-8 on Archlinux and QJackCtl 0.5.6-1

Many thanks for your answer and your time,
Alexandre Bique



More information about the Jackaudio mailing list