-
Notifications
You must be signed in to change notification settings - Fork 0
Glossary
Terms as AudioHub uses them. Where a word has a looser meaning elsewhere, the definition here is the one the UI and this wiki mean.
The receive-side buffer that holds arriving audio frames briefly so that packets which arrive late or out of order can still be played in the right place.
Its depth is the single largest tunable contributor to latency. The latency setting is effectively a target for this buffer's depth, expressed as an end-to-end goal rather than a raw frame count.
The name is slightly misleading here. On our reference link, network jitter is 0.18 ms at p95 with zero loss — the buffer is not protecting against the network. What it absorbs is the sending process's own scheduling stalls. See Latency.
The moment of playback arrives and the buffer has nothing to deliver.
The criterion is exact and possibly counter-intuitive: an underrun occurs if and only if the specific next frame is missing — it does not depend on how full the buffer is overall. Losing one packet causes exactly one concealment whether the buffer holds 2 frames or 12.
Buffer depth therefore buys lateness tolerance, not loss tolerance. A packet that arrives late but within the buffer's depth still makes its slot; a packet that never arrives is an underrun at any depth.
After an underrun the buffer re-primes from a low water mark, which is why underruns tend to arrive in clusters rather than evenly spread.
Synthesising plausible audio to fill a frame that never arrived, instead of inserting silence. Silence is audible as a click; concealment usually is not.
Counted separately from hard silence fills in the diagnostics, because they mean different things: concealment means the pipeline coped, silence means it ran out of material to cope with.
The share of output that was not built from the peer's original samples — concealed frames plus silence, over total frames played. It is one of the three components of the quality grade.
Specific to the two deepest quality rungs, which split each 10 ms frame into two 5 ms packets on the wire. When only one half arrives, the receiver delivers the frame with the missing half concealed rather than waiting for it. See Audio Quality.
The classification of how a peer's audio is actually travelling: Tier 0 direct over UDP, Tier 1 media relayed over TCP, Tier 2 everything multiplexed onto a single connection.
A tier is an attribution tool, not a diagnostic field. Its purpose is to put
the cause next to the raised latency number at the moment you read it. Internal
identifiers like tier1 never appear in the UI — it says "relayed over TCP".
Full detail: Transport Tiers.
The curve mapping a volume slider position to actual gain. A slider at 50 % does not mean half the amplitude; what it means is decided by the taper, and every device may use a different one.
Four distinct tapers were measured across four devices — square-root, linear, squared, and a power law — three of them on macOS alone. This is the reason loudness and slider position cannot both be synchronised. See Volume.
Three different quantities that all get loosely called "volume":
- Slider position — what you drag, 0 to 1. Device-specific meaning.
- Amplitude — the linear multiplier applied to samples. Mute is exactly 0.
- Decibels — logarithmic, closer to perception, but mute is −∞ and every device places its floor somewhere different.
AudioHub carries amplitude on the wire. Never compare amplitudes to judge whether a volume changed by much; equal amplitude steps are very unequal perceptually.
One step on the quality ladder — a (sample rate, bit depth) pair. Rung 0 is the
highest quality; the number increases as quality decreases, matching the
direction AUTO moves when a link degrades. See Audio Quality.
- Sample rate (kHz) — samples per second. Sets the frequency ceiling.
- Bandwidth (kHz) — the highest frequency that survives, always half the sample rate. Derived, never measured.
- Bit depth (bit) — precision of each sample. Affects noise floor only; it has no effect on bandwidth.
16 kHz and 16 bit are different axes. Every quality label writes both.
For quality: move down the ladder one rung on loss above 5 % or jitter above 15 ms, move up one rung after ten consecutive clean periods, never above rung 2. For latency: adapt the target to measured network quality rather than holding a fixed figure.
Three ways audio goes missing, with different causes:
- Underrun — the receiver had nothing to play.
- Dropped — a buffer was full and discarded something. Which end it discards (oldest or newest) changes what you hear: consistently late but continuous, or late and broken up.
- Stale — on a degraded link, a frame that has waited past its 200 ms budget is discarded deliberately before sending. This is not a new loss source; it is leaving the gap that lets the receiver's concealment work.
Measured total latency minus the sum of all known stages. A persistently large value means there is a buffer in the path that AudioHub is not modelling. It is the completeness check on the latency figure, not an error term.
The displayed latency is a lower bound, because at least one stage that is known to exist could not be read. It is never resolved by substituting zero.
Permanent for Bluetooth, HDMI and AirPlay outputs, whose platform APIs report 20–30 ms for devices genuinely adding 150–250 ms. See Latency.
Reading system audio without becoming the system's output device. AudioHub's system audio capture is always a side tap: your output device and its volume are never changed. The alternative — requiring you to point system output at a virtual device — is explicitly out of bounds for this project.
A machine in share mode can serve several peers at once: its microphone is fanned out to all of them, and audio arriving from all of them is mixed into its output. A machine in a consumer mode uses one peer at a time.
The one-time exchange establishing mutual trust between two machines, via a 6-digit PIN. Once complete, trust is bidirectional — each appears in the other's list — and it survives restarts and address changes. Unpairing revokes it on both sides and removes any virtual devices on both sides.
A digest of a machine's public key, shown in the UI and used to verify identity when connecting. Any machine that can reach the control port obtains it during the handshake anyway; it is displayed so you can confirm you are pairing with the machine you think you are.
Using it
How it behaves
Settings
Reference