Broadcast Audio Science
This page is the theoretical foundation for the LOKLOK broadcast chain. It explains why the engineering choices in the system exist — the acoustics, the psychophysics of hearing, the loudness standards, the digital signal chain, and the streaming realities — so that operators and engineers can reason about the system from first principles instead of treating it as a black box.
It is intended to be read alongside Equations & Math Reference, which gives the closed-form mathematics, and the operational pages it cites. Every scientific claim carries an APA-style in-text citation; the full alphabetized reference list lives on References.
0. The broadcast signal chain, from first principles
Before diving into any single discipline, it is worth tracing the whole audio path so each later section has a place in the picture. The LOKLOK chain is a classical digital broadcast pipeline with three major stages: capture and mastering, transport and playout, and delivery and decode. Each stage imposes its own constraints, and the system's design choices are almost always a response to the physics of one of them.
0.1 The mastering stage
Every asset that ever reaches the air (a downloaded song, a listener-submitted
social clip, a synthesized sweeper, a text-to-speech news bulletin, a karaoke
jingle) first passes through the content pipeline. The pipeline probes the file
with ffprobe to learn its real format and duration, scrubs its metadata tags,
deduplicates it against the media registry by content fingerprint, and then
loudness-masters it in two passes of the EBU R128 algorithm (§1). The
resulting file is a broadcast-ready asset: correct loudness, safe true peak,
clean tags, unique identity.
The reason this must happen before playout rather than at playout time is that loudness measurement is non-causal — the integrated-loudness value is a property of the whole file, not of any window, so you cannot know the correct gain until you have seen the entire signal (International Telecommunication Union, 2015). Mastering ahead of time is the only way to guarantee every asset in the rotation lands at the same perceived level with no gap, click, or level jump at the segue point.
0.2 The playout stage
The mastered assets live in per-category decks (directories). The smart scheduler composes them into an ordered rotation, and Liquidsoap (the playout engine) reads that order and performs the actual transitions. This is where the crossfade (§3) and ducking (§2.2) live, and where the "hard cut vs. blend" decision is made per transition type. Playout is real time: every decision here is latency-bound, which is why the expensive psychoacoustic analysis (BPM, onsets, spectral features) is done off-line during mastering and imaging, and only the lightweight rules run on the live path.
0.3 The delivery stage
The mixed stereo program leaves Liquidsoap as a raw PCM stream, which is immediately encoded. Two independent encoders run in parallel:
- Icecast encodes Vorbis CBR at 500 kbps, 48 kHz, stereo — the high-fidelity master available to desktop players.
- MediaMTX receives the same PCM re-encoded to AAC at 256 kbps via an ffmpeg bridge, and re-packages it into HLS (HTTP Live Streaming) segments for browser and app clients.
Both deliveries are perceptually lossy encodings of the same PCM master; the science of that lossiness is covered in §4. There is also a third delivery: the LOKLOK TV video channel, which renders a 1080p program from the same PCM audio (see Video channel).
1. Why broadcast loudness matters
1.1 The problem of "which one is louder?"
Human loudness perception is non-linear and frequency-dependent. The equal-loudness contours (originally measured by Fletcher & Munson, 1933; later standardized as ISO 226:2003 and re-derived by Robinson & Dadson, 1956) show that the ear is far more sensitive in the 2–5 kHz region than at the bass extremes. A sine tone at 40 Hz must be ~20–25 dB higher in physical level to be perceived as equal in loudness to a 1 kHz tone (Robinson & Dadson, 1956). Consequently, two songs with identical peak levels can sound very different in perceived loudness, and two songs that feel equally loud can have very different peak levels (Zwicker & Fastl, 1999).
This asymmetry is not a flaw of the ear — it is a consequence of the cochlea's mechanics. The basilar membrane acts as a frequency-to-place transform whose effective gain is governed by the outer hair cells, and that gain is sharply peaked in the mid-frequency region where speech and much music live (Zwicker & Fastl, 1999). Understanding this single fact explains nearly every "weird" result in audio mastering: why a clipped master feels louder, why bass needs so much more physical level to be heard, and why a flat (unweighted) spectrum does not sound flat.
A radio station plays songs, sweepers, jingles, ads, and news back to back. If each asset were left at its natural level, the perceived loudness would jump from track to track — the classic "loudness wars" artifact that fatigues listeners and drives them to change station (Vickers, 2012). Listener studies and broadcast practice converge on the same finding: perceived loudness consistency is a primary driver of station listenability, and a loudness jump of just a few LU between tracks is immediately noticeable and unpleasant (European Broadcasting Union, 2020a). The standard engineering answer is loudness normalization: measure a perceptually-relevant "integrated loudness" of each asset and apply a constant gain so that every asset is perceived at the same loudness.
1.2 Digital audio fundamentals (why the numbers are what they are)
To read the rest of this page you need the digital-audio vocabulary. A PCM (pulse-code modulation) audio signal is a sequence of samples: amplitude measurements taken at a fixed rate. The two governing parameters are:
- Sample rate — how many amplitude measurements per second. The Nyquist theorem requires the sample rate to be at least twice the highest frequency you want to represent (Nyquist, 1928). CD audio uses 44.1 kHz (bandwidth ~20 kHz); LOKLOK's chain runs at 48 kHz, the broadcast standard, giving a 24 kHz usable bandwidth with margin for anti-alias filter rolloff (Bosi & Goldberg, 2003).
- Bit depth — how many discrete levels each sample can express. 16-bit gives 96 dB of dynamic range; 24-bit gives 144 dB, more than any real audio path (Bosi & Goldberg, 2003). The chain masters at high bit depth and only quantizes at the final encode, so dithering and quantization noise are pushed below audibility.
Decibel quantities in this document are full-scale relative (dBFS) — 0 dBFS is the largest value the format can represent; everything a signal does is at or below it. When we speak of "true peak −1.5 dBTP" we mean the loudest instant the signal reaches is 1.5 dB below the ceiling, leaving headroom so the subsequent lossy encoder's reconstruction ripple cannot push any sample past full scale.
1.3 The EBU R128 / ITU-R BS.1770 framework
LOKLOK targets −14 LUFS integrated loudness, −1.5 dBTP true peak, LRA ≤ 11 LU. The measurement algorithm is defined by ITU-R Recommendation BS.1770 (International Telecommunication Union, 2015) and operationalized for broadcast by the European Broadcasting Union's R128 recommendation (European Broadcasting Union, 2020a, 2020b). Three ideas deserve careful explanation.
K-weighted measurement. BS.1770 does not measure raw RMS. It applies a K-weighting — a high-shelf boost of ~4 dB around 1.7 kHz plus a 40 Hz high-pass filter — to approximate the ear's mid-frequency sensitivity before integrating the mean square. This is precisely the Fletcher–Munson/ISO 226 frequency dependence, reduced to two filter stages for computational simplicity (International Telecommunication Union, 2015). The integrated loudness unit is the LUFS (Loudness Units Full Scale), which is simply a dBFS value with the weighting applied and summed across channels with the multichannel gains — the surround channels are boosted by 3 dB (+1.41×) because off-axis loudspeakers are measured to be less efficient perceptually, and the weighting compensates.
Gating. A naive long-term average would let a few seconds of silence drag
the loudness down, and a single loud section would drag it up — neither is what
you perceive as the track's "loudness." BS.1770 gates the measurement: the
signal is sliced into 400 ms blocks, a relative gate drops blocks 10 LU below
the ungated value (this removes brief dips that should not count against a loud
song), and an absolute gate at −70 LUFS removes near-silence (International
Telecommunication Union, 2015). The two-pass loudnorm implementation in the
pipeline (see Equations §1) first measures with these gates,
then applies a constant linear gain so the integrated loudness lands exactly
on target — constant gain rather than dynamic compression preserves the track's
dynamics (Vickers, 2012). This is the crucial choice: the pipeline is a
normalizer, not a compressor. A compressor reshapes the sound; a constant
gain just turns the whole track up or down, so a ballroom ballad stays
dynamic and a club banger stays loud, but both land on the same perceived level.
True-peak vs sample-peak. An interpolated (oversampled) measurement of peak
level, dBTP, catches inter-sample peaks that a sample-accurate meter would
miss. When a digital signal is later converted to analog (or re-encoded), the
reconstruction filter "connects the dots" between samples, and the interpolated
curve can rise above the highest sample value. Without a true-peak ceiling, an
uncorrected inter-sample overshoot can clip the DAC or the broadcast chain even
though the digital meter never touched 0 dBFS (EBU Tech 3341). LOKLOK verifies
true peak on a 192 kHz (4×) oversampled signal — at 4× the sample rate the
interpolator is accurate enough to expose the inter-sample peaks that matter.
1.4 Why −14 LUFS?
Streaming platforms and the industry's loudness normalization movement converged on −14 LUFS as a reasonable "streaming loudness": loud enough to compete with a typical loud master yet with enough headroom to avoid clipping (Vickers, 2012; European Broadcasting Union, 2020a). Streaming services (Spotify, YouTube, Apple Music) normalize to roughly −14 LUFS ±2 for integrated loudness (Vickers, 2012). By matching that target, LOKLOK assets sit at "broadcast-level loudness" for the streaming medium, and — critically for radio — every asset (music, ads, imaging, news) is normalized to the same target, so the perceived level never jumps. The −1.5 dBTP ceiling leaves a safe margin for decoder/codec headroom: lossy codecs ring around transients, and that ringing can push the reconstructed signal a few tenths of a dB above the original true-peak; a 1.5 dB cushion absorbs it (EBU Tech 3341).
1.5 Loudness range (LRA)
LRA = 11 is the maximum allowed Loudness Range (the spread between the quietest
and loudest 10% of the programme, gated). Limiting LRA matters for broadcast
because it bounds how much the perceived level drifts within a single asset —
a program with LRA 25 has quiet and loud sections that would feel "too quiet"
or "too loud" regardless of integrated loudness (EBU Tech 3342). An LRA cap of
11 is a mild constraint: it tames outliers (a stray near-silent intro or a
clipped chorus) without squashing a song's dynamics (European Broadcasting
Union, 2020b).
Think of the three numbers as a box the asset must fit inside: integrated loudness fixes where the box sits vertically (−14 LUFS), true peak fixes the ceiling (no sample above −1.5 dBTP), and LRA fixes how tall the box may be (no more than 11 LU of internal variation). Any asset that fits is guaranteed to sit beside any other fitting asset without a level surprise. That guarantee is the entire point of the mastering stage.
2. Psychoacoustics of the imaging elements
2.1 The hearing system in brief
The auditory system is not a linear meter; it is a spectral analyzer with time-dependent, level-dependent behavior. Three properties dominate broadcast practice:
- Simultaneous masking — a loud sound raises the threshold of audibility for nearby frequencies while it is sounding. The masking pattern is asymmetric: a lower-frequency masker masks higher frequencies more easily than the reverse (Zwicker & Fastl, 1999).
- Temporal masking — masking persists after the masker stops (forward masking, up to ~200 ms) and even slightly before it starts (backward masking, a few ms). A loud snare hit can hide a quiet sound that follows it closely (Zwicker & Fastl, 1999).
- Auditory grouping / stream segregation — the brain continuously decides which spectral components belong to which "auditory object." Events that share temporal onset, pitch proximity, and spatial location are fused into one stream; events that break those cues are segregated into separate objects (Bregman, 1990).
Every imaging design decision in LOKLOK is a direct application of one of these three principles.
2.2 Stingers, sweepers and the "hard cut"
The system hard-cuts imaging (jingles/sweepers/sfx/ads) and crossfades only music-to-music (see Liquidsoap). This is not an implementation shortcut — it is deliberate psychoacoustics. A short, percussive stinger (0.24–1.63 s) has no "body" to crossfade; overlapping its tail with the incoming track muddies the attack transient that defines its identity (Zwicker & Fastl, 1999). Crossfading also risks simultaneous masking — the incoming signal partially occluding the stinger's high-frequency components (the auditory system's masking is strongest for higher frequencies masked by lower ones; Zwicker & Fastl, 1999). The hard cut preserves the imaging element's transient integrity: the attack lands clean, the identity reads clearly, and the listener's grouping mechanisms tag it as "station branding" rather than "musical content" (Bregman, 1990).
There is a second, subtler reason. A crossfade is a temporal smearing operation — it blurs the boundary between two sounds over the overlap duration. For two songs that is desirable (a smooth segue). For a station ID or a news bulletin, the boundary is the content: the listener needs to know exactly when the interruption starts and ends. Hard-cutting preserves the boundary as a hard temporal edge, which is itself a grouping cue that separates the imaging element from the music (Bregman, 1990).
2.3 Ducking and the "smile" of the voice
The live-mic path ducks the music bed to amplify(0.05) ≈ −26 dB under the
voice (see Liquidsoap). This is a classic
broadcast ducking technique: speech intelligibility depends on the
signal-to-noise ratio between voice and music, and a dense music bed at full
level would seriously degrade the voice's intelligibility — the voice becomes
harder to perceive precisely when music contains mid-frequency energy close to
the voice's formant region (ANSI/ASA S3.5; American National Standards
Institute, 1997).
The science: speech intelligibility is quantified by the Speech Intelligibility Index (SII), which is a weighted SNR computed in critical-band-like frequency bands. Each band contributes to the index only insofar as its signal exceeds the noise within that band (ANSI S3.5). A music bed full of vocals, strings, and harmonic energy has significant power in exactly the 250 Hz–4 kHz bands where speech formants live, so it directly competes with the voice band-by-band. The ~26 dB duck places the bed well below the typical SII noise floor, so the voice cuts through across all its formant bands. Because the duck is a constant multiplicative gain applied only while the harbor is live, it is transparent to the music program when the mic is not hot.
2.4 Beat-aligned placement
Sweepers are placed on the beat of the underlying song (detected via BPM/onset analysis; see Imaging Engine). The motivation is psychoacoustic: the auditory system groups events that share temporal proximity, so a voice that starts exactly on a musical downbeat is perceived as "part of the music" rather than "an interruption" (Bregman, 1990). Temporal coherence is one of the strongest grouping cues in auditory scene analysis (Bregman, 1990).
Mechanically, the imaging engine runs an onset detector over the song (BPM and beat-phase estimation, see Equations §13), finds a downbeat with enough musical energy (~45% into the track for energy drops, ~1.5 s in for intro lead-ins), and delays the synthesized voice so its first syllable lands on that sample. The voice then shares the song's temporal lattice, and listeners' grouping mechanisms treat it as an element of the arrangement rather than a drop-in. This is why a well-placed sweeper "feels professional" and a badly-timed one feels like an error — the former is congruent with the perceptual stream, the latter breaks it (Bregman, 1990).
2.5 Why imaging files are loudness-normalized too
The imaging synthesis engines (sweepers, stingers, jingles, news) all run the same two-pass R128 as music. This matters for a reason beyond simple level consistency: the hard cut (vs. crossfade) means there is no fade to hide a level mismatch. A sweeper that plays 3 dB loud would be a jarring spike; one 3 dB quiet would be inaudible against the musical memory the listener still holds. Because every imaging asset is normalized to the same −14 LUFS as music, the hard cut lands at the same perceived level as the music around it — the transition is seamless in level if abrupt in content (European Broadcasting Union, 2020a).
3. Crossfade theory
3.1 The mathematics of blending two signals
A crossfade replaces a hard cut between track A and track B with a smooth swap over a duration Δ. During the overlap, the output is a weighted sum:
where is the outgoing tail and the incoming head. The two fade functions must satisfy , (start: all A, none B) and , (end: none A, all B). The perceptual question is how the power of the sum behaves in between.
3.2 The equal-power vs. linear-amplitude trade
In a linear-amplitude crossfade, the two gains are the complementary lines and . At the midpoint both are 0.5. But power is proportional to amplitude squared, so the total power at the midpoint is of the original — a −3 dB dip at the center of every crossfade. For uncorrelated signals the dip is exactly 3 dB; for correlated signals it can be worse. A 3 dB level hole every segue is audible as a subtle "pumping" if the songs are of similar loudness.
Broadcast engineers therefore commonly use equal-power (also called equal-loudness or "constant-power") crossfades, where the gains follow a raised cosine so the power stays constant across the overlap (Holman, 2010). The classic equal-power pair is
whose squared sum is identically 1 (a constant), so the perceived level does not move during the overlap (Holman, 2010).
LOKLOK's fade.initial/fade.final pair in Liquidsoap is a linear taper. The
choice is defensible and deliberate: the pipeline normalizes every music asset
to the same integrated loudness, so the two overlapping tails are already close
in level, and the residual 3 dB center dip is small relative to the level
differences a loudness-equalized playlist otherwise never exhibits (Holman,
2010). Equal-power is preferred when the source levels are unknown or unequal;
in LOKLOK they are explicitly equalized, which is the more reliable guarantee.
3.3 Crossfade length vs track duration
Liquidsoap's cross(duration=2.0, …) pre-buffers duration seconds of the
incoming track before the transition. If the incoming track is shorter than the
crossfade duration (a 0.24 s stinger under a 2.0 s window), the pre-buffer
starves — the exact bug LOKLOK fixed with the per-track liq_cross_duration
metadata override (see Equations §12.1). The rule is
maintainer-documented (Savonet, n.d.): a track shorter than the crossfade
duration is a programming error. The override makes the crossfade duration
track-dependent and always strictly shorter than the shortest track in its
class: 0.2 s for sfx/shorts (whose shortest stinger is 0.24 s), 0.5 s for
jingles/sweepers/ads/news, and no override (2.0 s) for music. The result is
zero pre-buffer starvation while music retains its full segue polish.
3.4 The loudness-interaction subtlety
There is a second-order effect the two-pass normalizer also handles. When two songs crossfade, the sum of their levels is briefly up to 3 dB higher than either alone. If both were at −14 LUFS integrated, the overlap region briefly runs hotter than the standalone integrated value. Because the whole program passes through the same codecs with a −1.5 dBTP ceiling and because the overlap is short, this is benign — but it is a real reason to keep the true-peak ceiling and the music crossfade at 2 s rather than longer; a 4–6 s overlap doubles the time the combined signal sits near the ceiling (European Broadcasting Union, 2020b).
4. Streaming & delivery science
4.1 Perceptual coding: why lossy audio works
Both delivery paths use perceptual (lossy) codecs. Perceptual coding works by exploiting the masking phenomena of §2.1: the encoder computes an audibility-threshold model per frequency band, and discards spectral energy that falls below the masker-generated threshold. The decoder reconstructs a signal that is not bit-identical to the original but is perceptually equivalent — it passes the "double-blind ABX" test at the operating bitrate (Bosi & Goldberg, 2003). This is why 256 kbps AAC can sound effectively identical to the 1411 kbps PCM it came from: the removed information was, in the masking sense, inaudible (Bosi & Goldberg, 2003).
4.2 OGG Vorbis vs HLS/AAC
The master program is delivered two ways: Icecast OGG Vorbis CBR 500 kbps and MediaMTX HLS with 256 kbps AAC (see Streaming). The two use different perceptual codecs. Vorbis at 500 kbps is essentially transparent for broadcast music — the bitrate is so far above its perceptual requirement that virtually no audible difference remains. AAC at 256 kbps is perceptually close to transparent for stereo music (Bosi & Goldberg, 2003). The 256 kbps HLS bridge is a re-encode of the 500 kbps OGG master — generational loss is minimized by the high source bitrate and the AAC encoder running at 48 kHz stereo (Bosi & Goldberg, 2003). Every re-encode adds a small amount of perceptual loss; keeping the intermediate at 500 kbps means the AAC stage is always encoding a "clean" signal, never a twice-degraded one.
4.3 HLS and the "live edge"
HLS (HTTP Live Streaming; Pantos & May, 2017) cuts the program into segments and serves them over plain HTTP. MediaMTX emits 2 s fMP4 segments (see Streaming). The client plays close to the "live edge"; the buffer length is a deliberate trade-off between jitter tolerance and latency. A longer buffer survives network blips but lags the live event; a shorter buffer is more "live" but stutters on any jitter (Pantos & May, 2017). LOKLOK's web player targets ~2–4 s latency while surviving blips via buffering + a 401/404 self-heal and an OGG failover path (Pantos & May, 2017; see Next.js Player).
The HLS flow in detail: the client first fetches a master playlist listing the
variant streams, then fetches a media playlist describing the current segment
sequence, then fetches each segment in order, and finally re-fetches the media
playlist to learn about new segments as the live edge advances. This
playlist-then-segment cadence is what makes HLS resilient: every element is a
plain HTTP GET with a URL and a byte range, so caching and CDN behavior "just
work" (Pantos & May, 2017). It is also what makes cookie semantics matter:
MediaMTX's session system (the hlsSession cookie) must persist across the
master → media → segment requests, which is why the player uses a same-origin
URL (see Streaming).
4.4 Why the muxer restart was catastrophic
The muxer-generation tracking in the web player exists because of a hard
streaming reality: when MediaMTX's RTMP publisher reconnects, MediaMTX creates a
new HLS muxer with a new random segment-hash prefix and resets the media
sequence — instantly deleting the old generation's segments. Any client still
holding the old child playlist 404s, and its buffered audio plays stale content.
This is a property of the HLS muxing layer, not the codec; the bridge's
-reconnect flags prevent the publisher from dropping in the first place (see
Streaming).
The failure mode is instructive: a client holding the old media playlist will
keep requesting segments whose URLs now 404, and (depending on player
implementation) either loop on the last buffered segment or stall. The system's
defense is two-layered. At the source, the ffmpeg bridge uses
-reconnect -reconnect_streamed 1 -reconnect_delay_max 10 so a transient
Icecast error retries inside the same process, and the RTMP publish never
drops, so MediaMTX never sees a reconnect and never mints a new muxer. At the
client, the web player detects a change in the muxer-generation hash embedded in
segment URLs and self-heals by re-fetching the master (rate-limited to once per
30 s to avoid reload storms). Defense-in-depth against a single failure class
(see Frontends).
4.5 Latency, buffering, and the "live" contract
Radio is a live medium: listeners expect the stream to be now. But every delivery link (encode, segment, transport, jitter buffer, decode) adds latency, and latency is not additive in the intuitive sense — it is dominated by the longest buffering stage. The chain's latency budget is roughly: ~2 s of segment granularity, ~1–2 s of client jitter buffer, ~0.5 s of codec buffering, and transport RTT. That sums to ~4–6 s of glass-to-glass latency, which is perceptually acceptable for a music channel where the "live event" is the playlist itself, not a sports moment. The web player's OGG failover path (libvorbis over Icecast) provides a disjoint delivery path: if HLS dies, the player can fall back to the Icecast mount, whose delivery mechanism (a continuous HTTP audio stream) has entirely different failure modes than segmented delivery (Pantos & May, 2017).
5. From science to practice
The table below maps every scientific phenomenon discussed on this page to its exact LOKLOK implementation, so an operator who sees a symptom can find the root cause and the scientific reason.
| Phenomenon | Scientific basis | LOKLOK implementation |
|---|---|---|
| Loudness mismatch | Fletcher–Munson / ISO 226 equal-loudness | Two-pass EBU R128 to −14 LUFS, all assets |
| Inter-sample overshoot | Sample vs true peak | −1.5 dBTP on 4× oversampled signal |
| Level drift inside a track | Loudness range | LRA ≤ 11 LU |
| Stinger attack masking | Simultaneous masking | Hard cut imaging, no crossfade into stingers |
| Voice buried in music | Speech intelligibility SNR (SII) | −26 dB ducking under live voice |
| Voice "not part of the music" | Auditory grouping / stream segregation | Beat-aligned sweeper placement |
| Crossfade power dip | Constant vs equal-power taper | Loudness-equalized 2 s music crossfade |
| Short track under crossfade | Pre-buffer starvation | Per-track liq_cross_duration override |
| Codec generational loss | Lossy re-encode | 500 kbps OGG → 256 kbps AAC bridge |
| Stale segment 404 | Muxer-generation restart | -reconnect bridge + client muxer-gen tracker |
| Loudness jump at hard cuts | Perceived-level discontinuity | All imaging normalized to music level |
| Speech masked by music bed | SII band-level SNR | 26 dB duck, formant-band headroom |
6. A worked example: a sweeper, end to end
To tie the sections together, consider one station sweeper from synthesis to speaker.
- Synthesis —
imaging-engine.jsrenders a voice line (edge-tts Arabic neural voice) over a music bed sliced from a real song. The voice chain runs through a de-esser, a high-pass at 100 Hz, a presence EQ, a compressor, and a limiter; the bed is low-passed and stereo-widened (see Imaging Engine). - Ducking — the bed is sidechain-compressed under the voice
(
threshold=0.1, ratio=6, attack=8ms, release=350ms), applying at synthesis time the same "voice over music" intelligibility principle the live harbor applies with its 26 dB static duck (ANSI S3.5). The sidechain duck is frequency-sensitive and time-varying where the live duck is static, but both serve SII: keep the music out of the voice's formant bands. - Alignment — the engine detects the song's BPM/onsets and delays the voice so it lands on a beat (~45% into the track for an energy drop), exploiting temporal grouping so the voice fuses with the music (Bregman, 1990).
- Mastering — two-pass R128 to −14 LUFS / −1.5 dBTP, exactly like every other asset, so the hard cut into/out of it lands at music level (European Broadcasting Union, 2020a).
- Placement — the scheduler's imaging cadence reserves a slot; the M3U entry
is annotated
liq_cross_duration=0.5, so Liquidsoap pre-buffers 0.5 s (not 2 s) around it, avoiding pre-buffer starvation (§3.3). - Playout — Liquidsoap hard-cuts it in (§2.2), the codec (Vorbis/AAC) passes it through with perceptual coding (§4.1), and the listener hears a loudness- matched, beat-aligned, intelligible station voice that is audibly "part of the station."
Each of those six steps is an application of one or more of the disciplines on this page. When you tune any of them, the science above tells you what to expect.
Next steps
- Equations & Math Reference — the closed-form mathematics.
- Rotation science & comparison — how the scheduler compares to a traditional radio station pipeline.
- References — the full APA reference list.