TAN

TAN

True Audio Normalizer - fixing poorly mixed sound in real time. Open source, no metadata cheats, no walled garden.

This started the night I put on The Fly (1986) and couldn't hear Jeff Goldblum mumbling fly noises at the woman from Beetlejuice - so there I was again, riding the volume remote: up for the whispers, down for the explosions. The industry already solved this once - Dolby Volume and friends do it by baking loudness metadata into the mix at mastering time, then lock the fix inside licensed hardware. I hate walled gardens, so TAN does the job blind instead: it measures perceived loudness the way your ear does and rides gain in real time, and it's MIT licensed Rust you can actually read.

One waveform, three problems. Click a section to see what TAN does there.

Lows Mids Highs
Click a zone above - whisper-quiet dialogue, comfortable steady levels, and loud action bursts each get handled completely differently by the same engine.

Hear it

A deliberately badly mixed test signal: whisper-level dialogue alternating with loud action bursts. Same clip, before and after TAN's movie profile. Careful with your volume on the first one.

Before

Dialogue sits ~26 dB below the action - the "constantly grabbing the remote" experience.

After TAN (live mode)

Processed in real time with 8 ms of latency, the way system-wide audio would be. Big cuts complete inside the onset transient itself, where the ear can't track them.

After TAN (two-pass)

For files, TAN analyzes everything first: gain ramps down ahead of each loud onset, so corrections are completely inaudible. Zero reactive artifacts.

Loudness range - how far apart the quiet and loud parts sit:

Before
26.0 dB
the "constantly grabbing the remote" gap
Live mode
19.4 dB
real-time, 8 ms latency
Two-pass
12.4 dB
artifact-free, analyzes ahead
Full breakdown
K-weighted loudnessBeforeLiveTwo-pass
Quiet passages-31.9 dB-28.3 dB-20.7 dB
Loud passages-5.9 dB-8.9 dB-8.3 dB
Loudness range26.0 dB19.4 dB12.4 dB
Peak0.950.89 (limited)0.89 (limited)

Loud passages barely move. TAN levels around the content's own baseline, so overall volume stays right where the source put it, and dialogue rises to meet the action. (Live numbers include the engine's first cold seconds; on real-length content the adapted behavior dominates.)

Try it yourself, right here

Same Rust engine, compiled to WebAssembly, running entirely in your browser. Nothing you drop in here ever leaves your machine.

Your own file

Drop any audio or video file (mp4, mkv, mp3, wav...). TAN runs its two-pass normalization on the audio and gives you both versions to compare.

Across every kind of content

Music, a movie, a game, a podcast interview - four real, licensed recordings, four different mixing problems. See how TAN handles each one.

Open the sound journey →

Live on YouTube - or anything else

Chrome/Edge only. Click start, pick the browser tab that's playing your video, and check "also share tab audio". That tab's sound then plays through TAN's live engine instead. Stop sharing to go back to normal.

How it works

Three stages, all classical DSP, all in tan-core:

Perceptual loudness metering

ITU-R BS.1770 K-weighting (shelf + high-pass biquads), so gain decisions track how loud things sound, not raw sample amplitude.

Baseline-anchored gain riding

The engine tracks the content's own average loudness (following louder material quickly, sinking toward quiet slowly) and levels around that, never an absolute target - so enabling TAN never changes how loud things feel overall. Cut speed scales with overshoot, so a big correction finishes within ~50 ms of a loud onset, masked by the onset itself, while small corrections stay too slow to hear as pumping.

Look-ahead limiting

Output is delayed 8 ms while the limiter watches incoming audio, so gain ramps down before a peak arrives instead of clicking after it.

Reproduce it

git clone https://github.com/bknie1/True-Audio-Normalizer
cd True-Audio-Normalizer
cargo run --release -p tan-cli -- gen demo-input.wav
cargo run --release -p tan-cli -- process demo-input.wav demo-output.wav movie

Roadmap

Get TAN

Windows installer plus Windows, macOS, and Linux builds are on the releases page. The installer sets up the system-tray app; open it, pick your input and output, and go.

Download for Windows installer All builds Pre-Release

Heads up: TAN is early, pre-release software under active development - expect rough edges, and set-up still takes a little manual audio routing. Builds aren't code-signed yet, so Windows SmartScreen will warn on first run; choose "More info" then "Run anyway". New to it? The plain-language setup guide walks through it, including using TAN alongside SteelSeries Sonar, plus optional guides for Jellyfin and Stremio integrations.