Skip to main content

LOUDNESS LUFS METER FOR ADJUSTING TRACK GAIN LEVELS IN DECKS & SAMPLES

This loudness meter can be used to determine gain/trim adjustment in DB however indicates Loudness Unit both current and across entire track as well as dynamic range to assist DJs in correctly setting gain levels. This also relies on a peak limiter to prevent distortion and clipping on each deck.

Example is Waves WLM Plus VST which I have added to my to-do list in testing it within DJ Studio.

2 comments

Log in to comment and vote

Comments2

  • Gavin Staveley

    •

    Sep 19, 2025

    This request is now redundant in light of new information and a new request will be posted. I will mention it here when it is done.

  • Gavin Staveley

    •

    Sep 6, 2025

    I noticed DJ Studio uses ffmpeg which has an LUFS analysis function. I use a batch file to analyze the LUFS of tracks. This could be integrated into DJ Studio. LUFS works on average presence of the file, not RMS or Peak levels and is what a lot of audio engineers/producers use in the studio for mastering.

    i mix for an overal mixset LUFS of -10 LUFS but could go as loud as -8 LUFS.

    The output generated is as follows:

    Input Integrated: -16.0

    LUFS Input True Peak: -4.5 dBTP

    Input LRA: 8.0 LU

    Output Integrated: -10.0

    LUFS Output True Peak: -1.0 dBTP

    Recommended Gain to Ceiling: +3.5 dB

    Recommended Gain to Target LUFS: +6 dB

    Compression Needed: 42%

    The Last 3 are the ones to pay attention to.

    Recommended Gain to Ceiling: (+3.5 dB) is the gain to bring a track’s peaks to the PCM ceiling (before clipping), when using compression to raise the presence the rest of the way.

    Recommended Gain to Target LUFS: (eg: +6 dB) is how much total gain is needed to hit target loudness.

    Compression Needed: (eg: 42%) is the % ratio increase of compression to reach a presence of +6db after a gain increase of 3.5 dB. (2.5 db / 6.0 db = 42%)

    So the theoretical guideline is a gain of 3.5dB & Compression increase of 42%.

    Use of the following script.

    LUFSCALC {Absolute Path & File Name}

    LUFSCALC {Folder Path}

    LUFSCALC {Text File name containing list of paths & file names to process}

    -f opcode/switch dumps the output into a text file in the same folder and name as the audio file but with .lufs.txt filename extension.

    Here is my draft script.

    [batch file begin]

    @echo off

    setlocal enabledelayedexpansion

    :: --- CONFIGURATION ---

    set TARGET_LUFS=-10

    set CEILING=-1.0

    :: --- FUNCTIONS ---

    :ProcessFile

    set "file=%~1"

    set "basename=%~dpn1"

    set "outfile=%basename%.lufs.txt"

    echo.

    echo Analyzing: %file%

    :: Capture full ffmpeg output into temporary file

    set "tmpfile=%basename%.tmp"

    ffmpeg -hide_banner -i "%file%" -af "loudnorm=I=%TARGET_LUFS%:TP=%CEILING%:LRA=11:print_format=summary" -f null NUL 2>&1 > "%tmpfile%"

    :: Extract Input Integrated and True Peak

    for /f "tokens=3" %%A in ('findstr /C:"Input Integrated:" "%tmpfile%"') do set "INTEGRATED=%%A"

    for /f "tokens=3" %%A in ('findstr /C:"Input True Peak:" "%tmpfile%"') do set "TRUEPEAK=%%A"

    set "INTEGRATED=!INTEGRATED:LUFS=!"

    set "INTEGRATED=!INTEGRATED: =!"

    set "TRUEPEAK=!TRUEPEAK:dBTP=!"

    set "TRUEPEAK=!TRUEPEAK: =!"

    :: Calculate gains

    set /a LUFS_GAIN=%TARGET_LUFS% - %INTEGRATED%

    set /a PEAK_GAIN=(%CEILING% -100) - (%TRUEPEAK% -100)

    set /a PEAK_GAIN=PEAK_GAIN/100

    if %LUFS_GAIN% LEQ %PEAK_GAIN% (

    set COMPRESSION=0

    ) else (

    set /a COMPRESSION=(%LUFS_GAIN% - %PEAK_GAIN%)*100 / %LUFS_GAIN%

    )

    if "%DO_FILE%"=="1" (

    copy "%tmpfile%" "%outfile%" >nul

    echo.>> "%outfile%"

    echo Recommended Gain to Ceiling: %PEAK_GAIN% dB >> "%outfile%"

    echo Recommended Gain to Target LUFS: %LUFS_GAIN% dB >> "%outfile%"

    echo Compression Needed: %COMPRESSION%%% >> "%outfile%"

    del "%tmpfile%"

    echo Results saved to %outfile%

    ) else (

    type "%tmpfile%"

    echo Recommended Gain to Ceiling: %PEAK_GAIN% dB

    echo Recommended Gain to Target LUFS: %LUFS_GAIN% dB

    echo Compression Needed: %COMPRESSION%%%

    del "%tmpfile%"

    )

    goto :eof

    :: --- MAIN LOGIC ---

    if "%~1"=="" (

    echo Usage:

    echo normalize.bat file.mp3

    echo normalize.bat foldername

    echo normalize.bat filelist.txt

    echo Options:

    echo -f Write per-file .lufs.txt report

    exit /b

    )

    :: --- Parse switches ---

    set DO_FILE=0

    for %%A in (%*) do (

    if "%%A"=="-f" set DO_FILE=1

    )

    :: Get the last non-switch argument (the target path/file)

    set "input="

    for %%A in (%*) do (

    if not "%%A"=="-f" set "input=%%A"

    )

    :: Case 1: Text file list

    if /i "%~x1"==".txt" (

    for /f "usebackq tokens=*" %%F in ("%input%") do (

    call :ProcessFile "%%F"

    )

    goto :eof

    )

    :: Case 2: Single audio file

    if /i "%~x1"==".mp3" (

    call :ProcessFile "%input%"

    goto :eof

    )

    if /i "%~x1"==".wav" (

    call :ProcessFile "%input%"

    goto :eof

    )

    if /i "%~x1"==".flac" (

    call :ProcessFile "%input%"

    goto :eof

    )

    :: Case 3: Folder

    if exist "%input%" (

    for /r "%input%" %%F in (*.mp3 .wav .flac) do (

    call :ProcessFile "%%F"

    )

    goto :eof

    )

    echo Invalid input: %input%

    exit /b

    [batch file end]