🎨 Modding Guide: Custom Themes & Languages

Welcome! This guide is aimed at advanced users and modding enthusiasts who want to customize melcom's FFmpeg Audio Normalizer. While you don't need to write complex code, basic knowledge of running Python scripts and using a text editor (like Notepad++) is required.

⚠️ Prerequisite: Source Code & Python

This guide is intended for advanced hobbyists and modders. Since the default colors and language lists are hardcoded into the final application, customizations must be made directly within the source files.

How to do it: Extract the AudioNormalizer-Source_Code.7z file from the source_code folder of this release. To work with these files, Python must be installed on your system.

After making your modifications, you have two ways to run them:

If you don't have Python installed yet, you can download it here for free:
» www.python.org/downloads


🌍 Part 1: Adding a New Language

Want to use the program in French, Spanish, or a made-up language? No problem!

Step 1: Copy a Language File

Go to the extracted Source Code folder, then into the lang directory. Copy an existing file, e.g., en_US.json, and rename it (e.g., to fr_FR.json for French).

Step 2: Translate

Open your new file in a text editor. You will see lines like this:

"app_title": "melcom's FFmpeg Audio Normalizer",

IMPORTANT: Only change the text on the right side of the colon! The left side (e.g., "app_title") must remain exactly as it is, otherwise the program won't find the text.

Step 3: Tell the Program About the Language

Open the file constants.py in the Source Code folder. Look for this entry (near the top):

LANGUAGE_CODES_LIST = ["en_US", "de_DE", "pl_PL", "sv_SE"]

Simply add your new language to the end of the list. Don't forget the quotes and the comma:

LANGUAGE_CODES_LIST = ["en_US", "de_DE", "pl_PL", "sv_SE", "fr_FR"]

Save it, start the program via main.py, and you can now select your language in the options!


🖌️ Part 2: Creating a Custom Theme (Colors)

The program comes with several themes out of the box. Prefer bright pink or neon green? Let's do it:

Step 1: Define Your Colors

Open the file theme.py. Copy an existing color block, e.g., MIDNIGHT_PALETTE, paste it below, and rename it to something like MY_AWESOME_PALETTE. Adjust the colors using Hex codes (e.g., #FF0000 for red):

MY_AWESOME_PALETTE = {
    "bg": "#111111",           # Main window background
    "fg": "#ffffff",           # Normal text color
    "info_bg": "#222222",      # Background for text areas
    "separator": "#ff00ff",    # Borders and dividers
    "entry_bg": "#222222",     # Text input fields (e.g. LUFS)
    "disabled_fg": "#666666",  # Grayed-out text
    "error_bg": "#ff0000",     # Color for invalid input
    "button_bg": "#333333",    # Button background
    "button_hover": "#444444", # Button color on hover
    "text_relief": "flat",     # 'flat' or 'sunken' (3D)
    "accent": "#00ff00",       # Main accent color (Start Button!)
    "tree_selected": "#00ff00",# Selected row in file list
    "tree_selected_fg": "#000" # Text color of selected row
}

Step 2: Register the Theme in the Code

Scroll down to the bottom of theme.py to the function def apply_theme(...). Add your theme to the if / elif list:

    elif mode == "my awesome theme":
        colors = MY_AWESOME_PALETTE

Step 3: Make the Theme Visible in the Menu

Open constants.py again. Search for:

THEME_MODES_LIST = ["light", "läderlappen", "melcom", "aquamarine & blue", "midnight", "modernlight"]

Insert the exact name (from Step 2) into the list:

THEME_MODES_LIST = ["light", "läderlappen", "melcom", "aquamarine & blue", "midnight", "modernlight", "my awesome theme"]

Done! Start the program via main.py and select your new theme in the options.