Advanced LUFS Unifier
Version 1.0 | December 2025
Advanced LUFS Unifier is a professional audio processing tool that unifies audio volume and performs high-quality mastering. It achieves excellent results through a 3-stage process combining True Peak control, dynamics compression, and LUFS normalization.
Table of Contents
Key Features
Audio Processing
- True Peak Control: Prevents digital clipping by controlling True Peak to specified value (default -0.1 dB)
- Dynamic Range Compression: Customizable compressor for adjusting dynamic range
- LUFS Normalization: High-precision loudness normalization using 2-pass loudnorm (default -16.0 LUFS)
- Automatic TP Correction: Automatically corrects if True Peak exceeds target after processing
Metadata & Quality Preservation
- Complete Metadata Preservation: Preserves all metadata including title, artist, album, and cover art
- WAV File Support: Supports ID3v2.3 tags with UTF-8 encoding (can store special characters correctly)
- Sample Rate Preservation: Maintains original sample rate (44.1kHz, 48kHz, 96kHz, etc.)
- Bit Depth Preservation: Maintains original bit depth (16-bit, 24-bit, 32-bit float)
Performance
- Multi-threaded Processing: Parallel processing of multiple files for faster performance
- YAML Configuration: All parameters easily adjustable via text file
- Supported Formats: WAV, FLAC, ALAC (M4A)
System Requirements
Required
- Windows 10/11 (64-bit)
- FFmpeg (must be installed on system)
Important: FFmpeg must be set in system PATH. Verify that ffmpeg -version works in Command Prompt.
Usage
Basic Usage
- Drag and drop audio files onto
advanced_lufs_unifier.exe
- Processing starts automatically
- After processing, a
compressed subfolder is created in the same directory as input files, and output files with _compressed suffix are saved there
Using Shortcuts: You can create a shortcut of the EXE file and place it on the desktop - it will work the same way.
Output File Names and Location
| Input File |
Output File |
| C:\Music\01 Sunset Heart.wav |
C:\Music\compressed\01 Sunset Heart_compressed.wav |
| D:\Audio\song.flac |
D:\Audio\compressed\song_compressed.flac |
| E:\Files\track.m4a |
E:\Files\compressed\track_compressed.m4a |
Note: The compressed folder is created automatically if it doesn't exist.
Processing Flow
Advanced LUFS Unifier processes audio in 3 stages:
Stage 1: Linear Gain Adjustment
- Measure True Peak of original file
- Calculate gain to reach target True Peak (default -0.1 dB)
- Apply linear gain
Linear Gain = Target TP - Original TP
Stage 2: Dynamic Range Compression
- Uses FFmpeg's acompressor filter
- Moderately compresses dynamic range
- Default settings: threshold=-16dB, ratio=2.5:1
Stage 3: LUFS Normalization (2-pass, Linear Gain)
- 1st pass: Measure compressed audio to obtain optimal parameters
- 2nd pass: Perform LUFS normalization using linear gain adjustment based on measurements (linear=true mode)
- Target LUFS: Default -16.0
- No dynamic processing, only linear gain adjustment
Correction Process
- If final True Peak exceeds target, automatically applies correction gain
- May intentionally lower True Peak for some files to prioritize LUFS target
Configuration File
All parameters can be adjusted in the advanced_lufs_unifier.yaml file.
Default Configuration
target:
true_peak: -0.1 # Target True Peak (dB)
lufs: -16.0 # Target LUFS
processing:
max_workers: 4 # Number of parallel workers (adjust based on CPU cores)
compressor:
threshold: -16 # Compressor threshold (dB)
ratio: 2.5 # Compression ratio
attack: 20 # Attack time (ms)
release: 250 # Release time (ms)
knee: 2 # Knee value (dB)
detection: rms # Detection method (rms/peak)
loudnorm:
lra: 11 # Target loudness range (reference value)
linear: true # Linear mode (true=linear gain only)
Compressor Settings Details
The compressor is the key parameter for adjusting dynamic range (LRA).
1. ratio (Compression Ratio) - Greatest Impact on LRA Change
| Value |
Effect |
LRA Change (Estimated) |
Use Case |
| 1.0 |
No compression |
~0 |
When you want to fully preserve dynamics |
| 1.5 |
Light compression |
-0.5 to -1.0 |
Classical music, acoustic |
| 2.5 (Default) |
Moderate compression |
-1.3 to -1.8 |
Balanced, general-purpose setting |
| 4.0 |
Strong compression |
-2.0 to -3.0 |
Pop music, streaming |
| 10.0+ |
Limiter-like compression |
-3.0+ |
Maximum loudness, loudness-focused |
2. threshold (Threshold) - At What Level Compression Starts
- -16 dB (Default): Same as LUFS target. Starts compression at moderate level
- -20 dB: Starts at lower level. Overall gentler compression
- -12 dB: Only high levels compressed. For peak control
Tip: Lowering threshold means more audio gets compressed, resulting in gentler overall compression. Raising it means only peaks get strongly compressed.
3. attack / release (Response Speed)
- attack (Attack Time): Time from level exceeding threshold until compression starts
- Fast (5-10ms): Compresses fast transients too More controlled sound
- Slow (50-100ms): Slow response Preserves natural attack
- release (Release Time): Time from level dropping below threshold until compression releases
- Fast (50-100ms): Quick return Punchy sound
- Slow (500-1000ms): Gradual return Smooth, natural sound
4. Other Parameters
- knee: Smoothness of compression onset (0=hard, 10=soft)
- detection: Level detection method
- rms (Default): Detects average level. More natural compression
- peak: Detects instantaneous peaks. More aggressive compression
Configuration Examples
Example 1: Classical Music (Dynamics Priority)
target:
true_peak: -0.5
lufs: -18.0 # Conservative loudness
compressor:
threshold: -18
ratio: 1.5 # Light compression
attack: 50 # Slow response
release: 500 # Smooth release
knee: 4 # Smooth compression onset
detection: rms
Example 2: Streaming (Loudness Priority, -14 LUFS)
target:
true_peak: -1.0
lufs: -14.0 # Streaming standard
compressor:
threshold: -14
ratio: 4.0 # Strong compression
attack: 10 # Fast response
release: 200
knee: 2
detection: rms
Example 3: Podcast (Speech Clarity)
target:
true_peak: -1.0
lufs: -16.0
compressor:
threshold: -18
ratio: 3.0
attack: 5 # Very fast response
release: 150
knee: 1
detection: rms
Example 4: Preserve Dynamics (Minimal Compression)
target:
true_peak: -0.1
lufs: -16.0
compressor:
threshold: -16
ratio: 1.0 # Compression disabled
attack: 20
release: 250
knee: 2
detection: rms
Note: LRA (Loudness Range) change is primarily determined by ratio and threshold. Actual LRA change varies depending on the original track's dynamic characteristics.
| Format |
Extension |
Metadata |
Cover Art |
Notes |
| WAV |
.wav |
ID3v2.3 |
○ |
Full Windows Japanese support |
| FLAC |
.flac |
Vorbis Comment |
○ |
Lossless compression |
| ALAC |
.m4a |
iTunes metadata |
○ |
Apple Lossless (lossless compression) |
Sample Rate & Bit Depth
- Sample Rate: No restrictions (44.1kHz, 48kHz, 96kHz, 192kHz, etc., all preserved)
- Bit Depth: Supports 16-bit, 24-bit, 32-bit float (original depth preserved)
Special WAV File Processing
WAV files store metadata using ID3v2.3 tags:
- ID3v2.3 tags (UTF-8 support): Can be viewed/edited with Mp3tag and other professional software. Special characters (e.g., BOØWY) are correctly preserved
ID3v2.3 tags can be viewed and edited with music software such as Mp3tag, foobar2000, and iTunes. UTF-8 encoding ensures correct preservation of artist names with special characters.
Preserved Metadata
- Title
- Artist
- Album
- Album Artist
- Composer
- Date
- Genre
- Track Number
- Disc Number
- Album Art
Technical Specifications
Audio Engine
- Processing Engine: FFmpeg + soundfile (Python)
- Loudness Measurement: EBU R128 compliant (FFmpeg ebur128 filter)
- True Peak Measurement: Accurate measurement with 4x oversampling
- Metadata Library: Mutagen (Python)
Processing Precision
- Internal Processing: Float64 precision
- DC Offset Removal: Performed before writing to improve True Peak measurement accuracy
- Bit Depth Preservation: Output maintains same bit depth as input (16/24/32-bit float)
Performance
- Parallel Processing: Multi-threaded processing using ThreadPoolExecutor
- Default Workers: 4 (configurable in settings)
- Memory Usage: Minimized through efficient streaming
Troubleshooting
Configuration File Not Loading
Symptom: YAML file edits not reflected in settings
Solution:
- Verify
advanced_lufs_unifier.yaml is in same folder as EXE
- Check YAML syntax errors (use 2 spaces for indentation)
- Verify filename is exactly
advanced_lufs_unifier.yaml
True Peak Lower Than Target
Symptom: Some files have True Peak at -2.0 dB or lower than target
Cause: This is normal behavior. True Peak is intentionally lowered to achieve LUFS target
Solution: If you want to prioritize True Peak control over LUFS target, adjust LUFS value in YAML file
Japanese Filenames Garbled
Solution:
- Verify Windows "System Locale" is set to Japanese
- Check filenames don't contain invalid characters (\/:*?"<>|)
Metadata Lost
Cause: Original file may contain corrupted metadata
Solution:
- Check original file metadata with Mp3tag
- Clean up original file metadata if necessary
License
This tool is free for both personal and commercial use.
Credits
Created with Claude (Anthropic) - 2025
Support: If you encounter issues or have feature requests, try customizing the YAML file. For more detailed technical information, refer to the official FFmpeg and Mutagen documentation.