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.
@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”.
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.