Using jack_delay correctly

I think I’m missing something. I’m trying to use jack_delay to get an input latency because there’s a bit of a delay on playback, which will mess me up when recording new tracks while listening to old ones. With frames/period set to 2048 (below that, I get xruns), jack_delay gives me 42.667 ms. The value reported by jack_delay minus the jack period size is a large negative number (42.667 - 2048?).

What am I missing? I ran jack_delay in a terminal and connected jack_delay’s out to jack_delay’s in (a closed loop, right) in qjackctl. Out comes the number 42.667 until I hit ctrl-C to stop it.

Thanks for being patient with me, Paul. I feel like I was being a little dense. I connected the main stereo unbalanced outs to a couple of unused unbalanced inputs, connected jack_delay out to the two main system outs and connected jack_delay in to the two line ins I used (at which the main meter showed a feedback tone (I had the speakers off). Jack_delay went from “below threshold” to a value of 176.326. I subtract the value of 42.6667 (which you showed me how to calculate earlier), right? Which gives me 134, rounded off.

I’m going to see how that works once I turn some instruments on and do some test recordings.

@audiodef: the jack period size is in units of frames (you might prefer to think samples), not milliseconds. To convert frames to milliseconds you divide the frames by (sample rate/1000). So, at 48kHz, 2048 frames = 2048 / (48000/1000) = 2048 / 48 = 42.6667 msecs. To use jdelay correctly, you connect its outputs to your system outs, add a physical cable to connect them to the system inputs, and jdelay’s inputs to the system inputs, forming a closed loop through your audio interface. The number you get now is “correct”, but reflects a path that only goes through JACK, not your hardware.

Thanks, Paul. After looking at qjackctl, though, I’m still a bit confused. It’s not possible to connect jack_delay’s outputs to the system outputs in qjackctl. I’ve got jack_delay on the left - the outputs - and my system on the left - also outputs, and qjackctl doesn’t allow me to drag jack_delay’s outs to the system outs. I can drag jack_delay’s outs to the system input - is this what you meant?

Specifically, I have a Mackie Onyx mixer with a firewire card, which shows up as 16 L/R inputs/outputs and 2 stereo master inputs/outputs in qjackctl. I’m not sure what output to physically connect to what input, since as a sound card, there are two firewire ports and nothing else. It doesn’t make sense to connect the main outs in the back of the mixer to, say, a couple of channel inputs, or to plug the firewire ports one into another.

I’d appreciate any advice on this specific setup.

Anyone have any idea on how to use jack_delay with a Mackie Onyx mixer with firewire?

@audiodef: its no different than on any other audio interface. you need a loopback physical cable from the outs on the onyx back to the ins. then connect jdelay’s output to “system:playback_N” and jdelay’s input to “system:capture_N”. “N” is determined by which channels you have connected a loopback cable to. If you connect all the channels this way, then “N” doesn’t matter. if you only connect the first channel, then N will be “1”.

Hi, I connected the sound card output to the input, connected them by JackCtl, and I got the latency value.

Where I should set it in order to allow Ardour to use the calculated latency value?


Ardour’s Engine Settings (Menu > Window > Audio/MIDI Setup).

This is an old thread. – Since around 8 years (Ardour 3.5) latency measurement is built-in. One can directly measure systemic I/O latency when configuring when configuring the audio-system.

PS. If you use JACK and jackd is not started by Ardour, you have to configure this in the JACK control application that you use.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.