What a 12-Track Mixtape Taught Me About Peak Levels

这篇内容暂时只有 English 版本,以下是原文。

Last spring a friend handed me a 12-track mixtape she’d assembled in a DAW she barely knew, and asked why it sounded quiet on her phone but loud in her car. All 12 WAVs, 24-bit/48 kHz, rendered from the same session. Peak levels looked fine—nothing over -0.3 dBFS. But loudness on the phone was maybe 6 LU quieter than the car, and two tracks had audible clicks at the seams.

I pulled every file into a scratch directory and measured with ffmpeg instead of trusting the meters:

for f in *.wav; do
  ffmpeg -hide_banner -i "$f" -af ebur128=peak=true -f null - 2>&1 \
    | awk '/I:/{i=$2} /Peak:/{p=$2} END{print FILENAME, i, p}'
done

The integrated loudness ranged from -18.4 to -11.2 LUFS across the set, and true peak on one track hit +0.6 dBTP even though the sample peak read -0.2 dBFS. That’s the inter-sample overshoot people warn about; the meter was telling the truth about samples, not about the reconstructed waveform.

My fix was dull but effective. I didn’t remaster anything. I applied a single gain move per track so the set sat around -14 LUFS integrated, then a true-peak limiter at -1.0 dBTP:

ffmpeg -i in.wav -af "loudnorm=I=-14:TP=-1.0:LRA=11" -ar 48000 out.wav

Why this order: loudnorm’s two-pass mode wants a first measurement pass, otherwise it guesses and the result drifts. I ran the measurement pass, saved the JSON, then fed the measured values back in. The cost is that anything already squashed stays squashed—gain changes can’t undo a crushed transient. Two of her tracks had been limited hard in the DAW, and no amount of downstream care brought the snare back.

Where it breaks: dynamic acoustic material with long quiet intros fools integrated loudness into over-boosting the loud sections. I saw this on track 7, a solo piano piece; the -14 target pushed the climax 2 dB hotter than she wanted. If the material has more than ~15 LU of range, per-track targets beat a single set target. The clicks at the seams were a separate bug—she’d rendered with a fade-out shorter than one sample period on three tracks, so I patched those with a 2 ms fade at each boundary.

What I still don’t know: whether a streaming platform’s own normalization would have masked all of this anyway, or whether her phone’s speaker was the real culprit. If you’ve measured the same file on multiple playback paths, what did you find?

0
赞同度 100% · 0 条评论 · 3 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。