# melcom's FFmpeg Audio Normalizer - Help

## Table of Contents

- Requirements
- Steps for Using v2 (GUI Version)
- Additional Notes
- Tips for Using FFmpeg
- About This File

## Requirements

- To use melcom's FFmpeg Audio Normalizer, you need FFmpeg (ffmpeg.exe). You can download FFmpeg from this link.
- Make sure that `ffmpeg.exe` is located in a folder that is included in your system path (`PATH`), **or** that you can specify the path to `ffmpeg.exe` in the program options (see section 'Options' in the GUI instructions).

## Steps for Using v2 (GUI Version)

1. Start the GUI version (the `.exe` file). Make sure that FFmpeg is installed correctly and that the program can find `ffmpeg.exe`. If you receive error messages, check the FFmpeg path in the options (File -> Options).
2. Click "Browse" to select an audio file.
3. Optionally select a LUFS Preset from the dropdown list or enter a Target LUFS Value.
4. Optionally select a True Peak Preset from the dropdown list or enter a True Peak Value (dBTP).
5. Optionally select the Output Format (new: also OGG).
6. Click "Analyze Audio" or "Start Normalization".
7. The progress is displayed in the progress bar and in the process information field.
8. The normalized output file is created by default in the **same folder as the original file**. The file name is based on the original file name, supplemented by the addition '-Normalized' before the file extension. **Example:** `musicfile.wav` becomes `musicfile-Normalized.wav`.

## Additional Notes

Information about the LUFS and True Peak Presets in this tool:

- LUFS Presets: Predefined target loudness values (Integrated Loudness) in LUFS, optimized for different platforms and applications:
  - Default (-14 LUFS): A common standard target value for music production and mastering.
  - YouTube (-14 LUFS): Recommended target value for YouTube uploads.
  - Spotify (-14 LUFS): Recommended target value for Spotify.
  - Broadcast EBU R128 (-23 LUFS): Target value for TV and radio broadcasting according to EBU R128 standard.
  - Custom: Allows manual entry of your own target LUFS value in the input field next to the preset dropdown. This is useful if you need specific target loudness values for other platforms or applications that are not included in the presets. Note: The recommended LUFS range is between -70 and -5 LUFS.
- True Peak Presets: Predefined True Peak limit values in dBTP (Decibels True Peak):
  - Default (-1 dBTP): A common standard limit value to avoid inter-sample peaks.
  - Broadcast (-2 dBTP): Stricter limit value for broadcasting applications.
  - No Limit (0 dBTP): No True Peak limit (0 dBTP). Caution: Risky! Can lead to inter-sample peaks and clipping, especially when encoding into lossy formats. Recommended for experienced users only.
  - Custom: Allows manual entry of your own True Peak limit value (in dBTP) in the input field next to the preset dropdown. This is intended for advanced users who have specific True Peak requirements. Note: The recommended True Peak range is between -9 and 0 dBTP.

'Single Log Entry' Option (Options -> Log File Settings):

- Enabled by default: With each analysis or normalization, the previous log file is **cleared** and only the information about the current process is saved. This creates a **short and clear log file** that always contains only the last operation.
- Can be deactivated: If you deactivate this option, **all** analysis and normalization processes are **saved one after the other** in the log file (log rolling behavior if the log file reaches a certain size). This is useful if you want a **history** of the processes performed.
- 'Maximum Log File Size' Field: If 'Single Log Entry' is enabled, the 'Maximum Log File Size' field is **inactive** because the log file starts anew with each process anyway.

## Tips for Using FFmpeg

FFmpeg is a powerful tool for processing multimedia files. Here are some useful commands related to audio analysis and normalization, including the standard command that this tool uses internally:

- Standard Normalization Command (used by 'melcom's FFmpeg Audio Normalizer'):
  `ffmpeg -i "musicfile.wav" -af "loudnorm=I=-14:TP=-1" -ar 48000 -ac 2 -c:a pcm_f32le "musicfile-Normalized.wav"`
  This command is an example of the standard normalization command that 'melcom's FFmpeg Audio Normalizer' uses when you select the default settings (LUFS Preset: 'Default (-14 LUFS)', True Peak Preset: 'Default (-1 dBTP)', Output Format: WAV). Here is a detailed explanation of the individual options and parameters:
  - `ffmpeg`: Calls the FFmpeg program.
  - `-i "musicfile.wav"`: Specifies the **input file**. In this case, it is `musicfile.wav`. Replace this with the path to your actual audio file.
  - `-af "loudnorm=I=-14:TP=-1"`: Uses the **audio filter** `loudnorm` for loudness normalization.
    - `loudnorm`: Name of the loudness normalization filter.
    - `I=-14`: Sets the **Target Integrated Loudness** to -14 LUFS (Loudness Units Full Scale). This is the default LUFS value in the tool.
    - `TP=-1`: Sets the **Target True Peak Level** to -1 dBTP (Decibels True Peak). This is the default True Peak value in the tool and helps to avoid clipping.
  - `-ar 48000`: Sets the **audio sampling rate** to 48000 Hz. 48 kHz is a common sampling rate for audio and video.
  - `-ac 2`: Sets the **number of audio channels** to 2 (stereo). This ensures that the output signal is stereo.
  - `-c:a pcm_f32le`: Sets the **audio codec** for the output to `pcm_f32le`.
    - `-c:a`: Option to specify the audio codec.
    - `pcm_f32le`: Stands for "Pulse Code Modulation, 32-bit float, little-endian". This is an uncompressed, lossless audio codec (WAV format with 32-bit floating point). The tool uses WAV as the default output format.
  - `"musicfile-Normalized.wav"`: Specifies the **output file**. In this case, a new file named `musicfile-Normalized.wav` is created. The tool appends "-Normalized" to the file name by default.
- Audio Analysis with Loudnorm Filter:
  `ffmpeg -i inputfile.wav -af loudnorm=print_format=summary -f null -`
  This command analyzes the audio file `inputfile.wav` with FFmpeg's `loudnorm` filter, but does not output a normalized file. Instead, it outputs a summary of the loudness values (Integrated Loudness, True Peak, Loudness Range) to the console. This can be useful to check the current loudness values of a file before starting normalization.
- Simple Audio Conversion (Example WAV to MP3):
  `ffmpeg -i inputfile.wav outputfile.mp3`
  This command converts the WAV file `inputfile.wav` to an MP3 file `outputfile.mp3`. If you have general problems with FFmpeg, you can use this simple command to test whether FFmpeg works in principle.

## About This File

This program was created by Andreas 'melcom' Urban and is **open-source software**, licensed under the **MIT License**. This means you are free to use, modify, and distribute it, both for private and commercial purposes. The full license terms can be found in the `LICENSE.txt` file that accompanies the program.

If you have any questions, you can contact melcom via the following link: Contact Form