Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
JACK_IODELAY(1)		    General Commands Manual	       JACK_IODELAY(1)

NAME
       jack_iodelay - JACK toolkit client to measure roundtrip latency

SYNOPSIS
       jack_iodelay

DESCRIPTION
       jack_iodelay  will  create one input and	one output port, and then mea-
       sures the latency (signal delay)	between	them. For this	to  work,  the
       output port must	be connected to	its input port.	The measurement	is ac-
       curate to a resolution of greater than 1	sample.

       The expected use	is to connect jack_iodelay's output port to a hardware
       playback	 port, then use	a physical loopback cable from the correspond-
       ing hardware output connector to	an input  connector,  and  to  connect
       that  corresponding hardware capture port to jack_iodelay's input port.
       This creates a roundtrip	that goes through  any	analog-to-digital  and
       digital-to-analog converters that are present in	the audio hardware.

       Although	 the hardware loopback latency is the expected use, it is also
       possible	to use jack_iodelay to measure the  latency  along  any	 fully
       connected signal	path, such as those involving other JACK clients.

       Once jack_iodelay completes its measurement it will print the total la-
       tency  it has detected. This will include the JACK buffer length	in ad-
       dition to any other latency in the signal path.	It  will  continue  to
       print  the value	every 0.5 seconds so that if you wish you can vary as-
       pects of	the signal path	to see their effect on the measured latency.

       If no incoming signal is	detected from  the  input  port,  jack_iodelay
       will print

	Signal below threshold... .

       every  second  until this changes (e.g. until you establish the correct
       connections).

       To use the value	measured by jack_iodelay with the -I and -O  arguments
       of  a JACK backend (also	called Input Latency and Output	Latency	in the
       setup dialog of qjackctl), you must subtract the	JACK buffer size  from
       the  result. The	buffer size is determined by multiplying the number of
       frames per period (given	to the jackd backend by	the -p or --period op-
       tion) by	the number of periods per buffer (given	to the	jackd  backend
       by  the -n or --nperiods	option).  Note that JACK2 will add an implicit
       additional period when using the	 default  asynchronous	mode,  so  for
       JACK1  or  JACK2	 in  synchronous mode, the buffer size is n*p, but for
       JACK2 in	asynchronous mode the buffer size is (n+1)*p.  Once  the  JACK
       buffer  size is subtracted from the measured latency, the result	is the
       "extra" latency due to the interface hardware.  Then,  if  you  believe
       that  the  latency  is equally distributed between the input and	output
       parts of	your audio hardware (extremely likely),	divide the  result  by
       two  and	 use that for input and	output latency values. Doing this mea-
       surement	will enable JACK clients that use the JACK latency API to  ac-
       curately	 position/delay	 audio	to keep	signals	synchronized even when
       there are inherent delays in the	end-to-end signal pathways.

AUTHOR
       Originally written in C++ by Fons Adriaensen, ported  to	 C  by	Torben
       Hohn.

4				     2022		       JACK_IODELAY(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=jack_iodelay&sektion=1&manpath=FreeBSD+Ports+15.0.quarterly>

home | help