<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Does EBU R128 Loudness Normalization have clip protection?]]></title><description><![CDATA[<p dir="auto">I have a collection of around 60K flac files with music ranging from classical to jazz to techno and have, with the help of AI, looked at enabling EBU R128 and what the potential issues may be.</p>
<p dir="auto">Looking through the EBU R128 loudness normalization code (<code>ebur128analysis.cpp</code>, <code>enginebase.cpp</code>, <code>gstenginepipeline.cpp</code>) to understand how it applies gain, and I can't find any peak/clip protection in that path — but I'd like to check whether I'm missing something before assuming that's the case.</p>
<p dir="auto"><strong>What I've found so far</strong></p>
<p dir="auto">The gain applied is computed simply as <code>target_lufs - measured_lufs</code> (<code>EngineBase::Load</code>), converted to a linear multiplier (<code>10^(gain_dB/20)</code>), and applied via a dedicated <code>volume</code> element (<code>volume_ebur128_</code>) created in <code>GstEnginePipeline::InitAudioBin</code>. I don't see any peak check, clamping, or limiter anywhere in that path.</p>
<p dir="auto">By contrast, the ReplayGain path creates a <code>rgvolume → rglimiter → rgconverter</code> chain, and <code>rglimiter</code>'s <code>enabled</code> property is tied to the "Apply compression to prevent clipping" setting in Backend settings. I don't see an equivalent for EBU R128 anywhere — no limiter element, no max-peak setting, nothing referencing clipping in the EBU R128 code path.</p>
<p dir="auto"><strong>Why I'm asking</strong></p>
<p dir="auto">I ran an external loudness scan (<code>rsgain custom -t -l -23</code>, true peak, -23 LUFS target to match Strawberry's default) against my own library and computed what the post-normalization peak would be (measured true peak + computed gain). On a large, classical/opera/jazz-heavy portion of my library, a meaningful number of tracks come back with a post-normalization peak above 0 dBFS — some by quite a lot (one Vivaldi slow movement comes out over +10 dB above 0 dBFS after normalization). These are mostly quiet, sustained passages (adagios, largos, recitative, solo guitar) that are naturally low LUFS but still carry the recording's full dynamic peak elsewhere.</p>
<p dir="auto"><strong>My question</strong></p>
<p dir="auto">If EBU R128 normalization doesn't have clip protection built in, is that intentional (e.g. relying on the user to pick a conservative target LUFS, or on downstream limiting elsewhere in the audio pipeline/output device), or is this a gap that just hasn't been addressed yet? And if it's the latter, would something like ReplayGain's optional limiter (or a max-peak setting, similar to what tools like <code>rsgain</code>'s Custom Mode offer via <code>-c</code>/<code>-m</code>) be a reasonable feature request?</p>
<p dir="auto">Happy to share my test data/scripts if useful.</p>
]]></description><link>https://forum.strawberrymusicplayer.org/topic/6074/does-ebu-r128-loudness-normalization-have-clip-protection</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 06:06:02 GMT</lastBuildDate><atom:link href="https://forum.strawberrymusicplayer.org/topic/6074.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Sep 2026 23:50:38 GMT</pubDate><ttl>60</ttl></channel></rss>