</p>
<h2>The Latency chain</h2>
+
+<p class="note">
+ Note! the rest of this document assumes the use of jackd for the audio
+ backend. While many of the concepts are true, the specifics may be different.
+</p>
<figure>
<img src="/images/latency-chain.png" alt="Latency chain">
<figcaption>
<p>
Processing latency is usually divided into <dfn>capture latency</dfn> (the time
it takes for the digitized audio to be available for digital processing, usually
- one audio period), and <dfn>playback latency</dfn> (the time it takes for
+ one audio period), and <dfn>playback latency</dfn> (the time it takes for the
+ audio that has been processed to be available in digital form).
In practice, the combination of both matters. It is called <dfn>round-trip
latency</dfn>: the time necessary for a certain audio event to be captured,
processed and played back.
</p>
<p class="note">
- It is important to note that processing latency in a jackd is a matter of
+ It is important to note that processing latency in Ardour is a matter of
choice. It can be lowered within the limits imposed by the hardware (audio
device, CPU and bus speed) and audio driver. Lower latencies increase the
load on the system because it needs to process the audio in smaller chunks
The second approach is prone to various implementation
issues regarding timecode and transport synchronization. Ardour uses read-ahead
to compensate for latency. The time displayed in the Ardour clock corresponds
- to the audio signal that is heared on the speakers (and is not where Ardour
+ to the audio signal that is heard on the speakers (and is not where Ardour
reads files from disk).
</p>
<p>
<li>Make the appropriate connections between the jack ports so the loop is closed.</li>
<li>Adjust the playback and capture levels in the mixer.</li>
</ol>
+<p class="warning">
+ On Linux, the latency of USB audio interfaces is not constant. It may
+ change when the interface is reconnected, on reboot and even when xruns
+ occur. This is due the buffer handling in the Linux USB stack. As a
+ workaround, it is possible to recalibrate the latency at the start of each
+ session and each time an xrun occurs.
+</p>