Deep dive
Even loud.
Even quiet.
Just right.
Modern releases are mixed at very different loudness levels — a 2024 pop master sits roughly twice as loud as a 2002 jazz ballad. Run2Beat measures every track on import and adjusts playback so you never have to reach for the volume control between songs.
The problem
For two decades the music industry mastered records louder and louder. A modern pop release typically lands at −7 to −9 LUFS integrated; a jazz album from 2002 sits at −18 to −22 LUFS. Perceptually, that’s roughly a factor of two in loudness — the difference between “in the room” and “background music”.
The phone’s volume slider can’t fix that. It’s the input to whatever your headphones do; it doesn’t touch the mastering decisions baked into each file. Per-track normalisation is the only solution that actually flattens the perceived-loudness curve.
Three different things people call “volume”
- Sample peak — the highest single sample value in the file. Useful for clipping protection, but barely correlates with what you hear.
- True peak (dBTP) — inter-sample peak after the digital-to-analogue reconstruction filter. EBU R 128 says this should stay below −1 dBTP so the audio never clips on the way out.
- Integrated loudness (LUFS) — the hearing-weighted mean level over the whole track, gated to ignore long silences. This is what perceived “loudness” actually is, and it’s what Apple Music, Spotify, YouTube and broadcasters use.
Standard, reference and target
Run2Beat follows the same loudness model as the major streaming services: ITU-R BS.1770 / EBU R 128. The reference level you can choose in Settings is one of three commonly used targets:
- −14 LUFS (default) — matches Apple Music, Spotify Normal and YouTube. The right choice for most listeners.
- −16 LUFS — quieter, more headroom on dynamic recordings.
- −11 LUFS — louder, like Spotify’s “Loud” setting; leaves less headroom on aggressive masters.
How a track gets its loudness number
When you import a file, Run2Beat decodes the audio at its native sample rate and runs the broadcast-standard BS.1770 loudness algorithm directly on your device. The result — integrated LUFS plus the file’s true-peak value in dBTP — is stored on the track in your library. It never has to be measured again. The work happens once during import and is part of the few-seconds-per-song cost mentioned on the home page; everything you read below about wall-clock time and battery applies to the standalone “Re-measure all loudness” button in Settings, not to import.
Embedded ReplayGain 2.0 and iTunes Sound Check tags are read first when present; the heavy analysis pass only runs if the file isn’t already telling us its loudness.
How the gain is applied at playback
On every track change Run2Beat computes the gain it needs to land the track on your chosen reference:
gainDB = referenceLUFS − measuredLUFS
gainDB = min(gainDB, −1.0 − measuredTruePeakDBTP)
The first line raises quiet tracks and lowers loud ones. The second is the true-peak ceiling: a quiet track is never amplified so much that its inter-sample peaks would clip after the D/A reconstruction. The clamp guarantees inaudible digital protection on every track, every time.
The gain is a sample-accurate scalar applied during the existing audio-mixer pass — effectively zero extra CPU, no extra latency.
Same numbers, same loudness on Apple Watch
When a BPM list or playlist syncs to your Apple Watch, the per-track LUFS and true-peak values travel along with the audio. The Watch player applies the same gain formula as the iPhone, so switching from headphones on the phone to AirPods paired to the watch doesn’t need a volume bump.
Re-measuring the library
If you change reference level, want to re-measure after an algorithm update, or simply want every legacy track that pre-dates the loudness feature to have a value, Settings has a “Re-measure all loudness” button. Some honest expectations for that run:
- Takes time. Each track needs a couple of seconds of analysis. Across several hundred tracks, the full run easily exceeds an hour.
- Battery-heavy. The phone decodes every file and runs the same DSP pipeline that broadcasters use. Battery drops noticeably faster than during normal playback for as long as the run is in progress. Connecting a charger is recommended.
- Keeps running in the background. The run continues with the screen locked or the app in the background, the same way the BPM re-analysis does — silent audio combined with the app’s audio background mode. Run2Beat takes a short pause between every track to stay inside iOS’s background limits, which keeps the run alive at the cost of roughly doubling its wall-clock duration.
- Replaces existing values. The result simply overwrites the previous one. Recently imported tracks go in too.
Rule of thumb: a library of around a thousand tracks takes well over an hour and uses roughly as much battery as a couple of hours of music playback. Plan accordingly.
Where loudness fits with the rest
Volume normalisation is independent of the equalizer and crossfade — it’s applied in a separate mixer stage so EQ presets and crossfade behave exactly the same with normalisation on or off. Tracks imported before the feature shipped have no measured loudness and simply play at their native level until you trigger the re-measure.
→ Back to the overview