melcom's FFmpeg Audio Normalizer

Version 3.0.0 (Halloween Edition) (Build Date: 2025-10-24)

This is a major rewrite of the application, focusing on batch processing and an improved user experience.

Key New Features & Workflow Improvements (compared to v2.2.2):

*   New Core Feature: Batch Processing
    *   Process Multiple Files: The tool is no longer limited to a single file. You can now add a list of audio files to be processed in sequence.
    *   Add Entire Folders: A new "Add Folder" button allows you to recursively scan a directory and add all supported audio files.
    *   Redesigned File Management: A modern file list now displays all files queued for processing.

*   New Feature: Integrated Audio Player & Playlist
    *   Audio Preview for Batches: To help verify that the correct files are loaded, a mini-player has been integrated below the file list.
    *   Full Playback Controls: Includes Play, Stop, Next («), and Previous (») buttons for easy navigation.
    *   Playlist Functionality: The Next and Previous buttons allow you to cycle through the entire list of loaded files.
    *   Real-Time Time Display: A live time display shows the current playback position and the total duration of the track.
    *   Note: The time display requires `ffprobe.exe` to be in the same directory as `ffmpeg.exe`.

*   Major Improvement: Completely Redesigned User Interface (UI)
    *   New Two-Column Layout: Files are now managed on the left, while all normalization and output settings are neatly grouped on the right.
    *   Batch Progress Bar: A progress bar at the bottom of the window shows the overall progress of the batch job.
    *   Live Status Bar: A status bar provides real-time information on the current file being processed or the total number of files loaded.

*   New Feature: Output Format Information
    *   Dynamic Info Box: When selecting an output format, a descriptive panel appears, showing technical specifications (bitrate, sample rate) and a brief description of the format's intended use.

*   Improved Workflow: Overwrite Confirmation
    *   Pre-Process Check: The application now checks for existing output files *before* starting the normalization process.
    *   Per-File Confirmation: You will be asked for each file whether you want to overwrite it, allowing you to skip specific files without interrupting the entire batch.

Technical & Under-the-Hood Improvements:

*   Complete Code Refactoring for Stability and Future Extensibility
    *   Modern Object-Oriented Structure: The entire codebase has been rewritten into classes for better organization and maintainability.
    *   Improved Threading Model: A queue-based system now handles communication between the processing thread and the UI, preventing the application from freezing and ensuring stability.
    *   Modular Code: Logic for configuration, FFmpeg processing, and the GUI are now separated, making future updates and new features much easier to implement.

User Interface (UI) & Consistency Updates:

*   New: Modernized File List
    *   The simple file list has been upgraded to a modern Treeview, providing a cleaner look and a foundation for future features like displaying track metadata.

*   New: Live Input Validation
    *   The custom input fields for LUFS and True Peak now provide immediate visual feedback. Invalid entries (e.g., non-numeric values or values out of range) will instantly cause the field to be highlighted in red, preventing errors before a process is started.

*   Return to a Unified Retro Look & Feel
    *   Custom-Styled Windows: The "Options" and "About" windows have been rebuilt as custom windows to perfectly match the application's unique retro design, ensuring a consistent visual experience.
    *   Automatic Window Centering: All windows (main, options, about) now automatically open in the center of the screen.
*   Consistent FFmpeg Parameters
    *   Output parameters have been aligned to ensure maximum, predictable output quality, consistent with the philosophy of previous versions.
*   GUI Behavior Fixes
    *   Fixed an issue where disabled dropdown menus (Comboboxes) would turn bright white during processing. They now blend seamlessly into the background as intended.
    *   Fixed an issue where closing the application via the "X" button would not terminate a running audio preview. All child processes are now properly closed.

---

Version 2.2.2 (Build Date: 2025-10-03)

Key New Features in Version 2.2.2:

*   New Feature: Audio Preview with Play/Stop Functionality
    *   Play & Stop Buttons Added: New "Play" and "Stop" buttons have been added to the file selection area.
    *   Instant File Preview: Allows users to quickly listen to the selected audio file directly within the application before starting normalization or analysis.
    *   Improved Workflow: Helps to verify that the correct file is loaded, saving time and preventing errors.

*   Major Improvement: Real-Time Process Information and Scrollbar
    *   Live FFmpeg Output: The "Process Information" window now streams the output from FFmpeg in real-time, providing detailed feedback as the process runs.
    *   Enhanced User Feedback: Users can now see exactly what the tool is doing at every step, instead of waiting for a final summary.
    *   Scrollbar Implemented: A vertical scrollbar has been added to the information window, allowing users to scroll through long logs.

*   Various Minor Improvements
    *   Updated "Check for Updates" Link: The URL for checking for updates in the "Info" menu has been updated to the new project website.
    *   GUI Layout Adjustments: The default window width has been slightly increased to better accommodate the new preview buttons.

---

Version 2.2.1

Key New Features in Version 2.2.1 (Build Date: 2025-08-29):

*   Updated Build Date: The application's build date has been updated to 2025-08-29.
*   Improved AAC Output Encoding:
    *   AAC encoding now utilizes a Constant Bit Rate (CBR) of 512k. Previously, AAC output had no explicit bitrate specified, relying on FFmpeg's defaults.
*   Improved OGG Vorbis Output Encoding:
    *   OGG Vorbis encoding now uses a target bitrate of 500k (managed mode). This replaces the previous quality-scale setting (`-qscale:a 10`), providing more explicit control over the output file size and quality.

    *   **Note on Encoding Changes:** These new encoding parameters aim to offer high-quality output with more explicit control over bitrate. If you prefer the previous default or `qscale:a 10` settings for AAC or OGG, you can continue to use Version 2.2.0. The prior settings were not inherently wrong or of poor quality.

---

Version 2.2.0

Key New Features in Version 2.2.0:

*   New Default LUFS Value: -14 LUFS
    *   New Default: The default target loudness for normalization has been changed from -10 LUFS to -14 LUFS.
    *   Improved Standard Setting: After extensive testing, -14 LUFS is now considered a more suitable and versatile default value for a broader range of audio content.
    *   Presets Updated: The "Default" preset in the LUFS preset selection now reflects the -14 LUFS target.
    *   Note in Custom LUFS Field: The custom LUFS input field now defaults to -14 LUFS as well, with a clarifying note for users.

*   Improved GUI Styling for Options Dialog
    *   Consistent Look and Feel: The Options dialog window now features the same visual style and color scheme as the main application window.
    *   Unified User Experience: Ensures a more visually consistent and integrated user experience across the entire application.
    *   Improved Visual Harmony: Addresses minor visual inconsistencies between different parts of the GUI.

*   New Feature: "Check for Updates" Menu Item
    *   "Updates" Menu Item Added: A "Check for Updates" entry has been added to the "Info" menu.
    *   Easy Access to Update Information: Clicking this menu item opens the program's website in the default web browser, providing easy access to the latest version information and download links.
    *   User-Friendly Update Discovery: Allows users to easily check for new versions of the Audio Normalizer.


---

Version 2.1.0

Key New Features in Version 2.1.0:

*   Improved Input Validation and Error Handling for Custom LUFS/TP Values
    *   Robust Validation: Comprehensive validation of user-defined target LUFS and True Peak values.
    *   Range Check for LUFS: Ensures that the entered LUFS value is within the valid range of -70 to -5 LUFS (FFmpeg compliant).
    *   Range Check for True Peak: Ensures that the entered True Peak value is within the valid range of -9 to 0 dBTP.
    *   Unified Error Message for True Peak: Consistent error message for invalid True Peak inputs, whether format error or range exceeded.
    *   Improved User Guidance: Clearer error messages help the user enter correct values.
    *   Prevents Program Crashes: Protects the program from errors due to invalid input values.

*   New Feature: Use of Temporary Files During Normalization (already mentioned in previous version)
    *   Temporary Files: The normalization process now creates temporary files.
    *   Data Security: Increased data security as the original file is not directly modified.
    *   Renaming After Success: After successful normalization, the temporary file is automatically renamed.
    *   Deletion of Temporary Files on Cancel: When canceled, the temporary file is automatically deleted.
    *   Error Handling During Renaming: Improved error handling for errors during renaming.

*   New Feature: Cancel Normalization Process (already mentioned in previous version)
    *   Cancel Button Added: A "Cancel" button has been implemented in the GUI.
    *   Cancel Function Implemented: Clicking the button terminates the FFmpeg process.
    *   Correct User Prompts on Cancel: An informative message is displayed after canceling.
    *   Bug Fix: Incorrect error message "Unexpected Error!" on cancel fixed.

*   User-Friendliness Improvements
    *   Label Text "Target Loudness Value (Custom):" shortened to "Target Loudness Value:".
    *   "Wait" Mouse Cursor Removed: The "wait" mouse cursor has been removed.

*   New Feature: Language Selection in Program
    *   Language Setting in Options Dialog: Users can now select the program language directly in the Options dialog.
    *   Supported Languages: Version 2.1.0 supports German, English, and Polish.
    *   GUI Switching: The entire user interface (GUI) is immediately switched to the selected language.
    *   Language Setting is Saved: The selected language is saved in the program settings and loaded again on the next start.
    *   Improved International User-Friendliness: Allows users to use the program in their preferred language.

*   Improvement: Limitation of Maximum Log File Size
    *   Maximum 10 MB: The maximum size for the log file (normalization and analysis log) has been limited to 10 MB.
    *   Error Message on Exceeding Limit: If the user enters a value greater than 10 MB for the log file size in the Options dialog, an error message is displayed.
    *   More User-Friendly: Prevents log files from becoming unnecessarily large and taking up storage space.
    *   Stability: Contributes to the stability of the program by avoiding excessively large log files.

*   Improvement: Reduction of Global Variables in Code
    *   Config Class Introduced: Global variables for configuration settings have been encapsulated in a `Config` class, which improves the code structure and increases maintainability.
    *   Clearer Structure: Reduces the number of global variables and makes the code clearer.
    *   Improved Maintainability: Facilitates future changes and extensions of the code.

*   Improvement: Unification of MessageBox `parent` Parameters
    *   Consistent Modal Dialogs: In all relevant MessageBox calls, the `parent=window` parameter has been added to ensure that message boxes always appear modal to the main window.
    *   Improved User Guidance: Ensures more consistent and expected behavior of dialog windows.
    *   More Robust Code: Prevents potential problems with dialog window management in more complex GUI applications.

*   Code Refactoring: Centralization of GUI Update Logic
    *   Helper Function `_update_gui_after_process`: Repeated code in the GUI update functions (after analysis and normalization) has been consolidated into a central helper function `_update_gui_after_process`.
    *   Reduced Code Duplication: Fewer code repetitions, making the code cleaner and more maintainable.
    *   Improved Readability: The GUI update functions are now shorter and clearer.
    *   Increased Flexibility: Facilitates future adjustments and extensions of the GUI update logic.

*   Various Minor Improvements and Bug Fixes

---

Version 2.0.5

Key New Features in Version 2.0.5:
*   Bug Fixes and Stability Improvements


---

Version 2.0.1

Key New Features in Version 2.0.1:

*   New Option: "Single Log Entry per Process"
    *   Checkbox added in Options to control log behavior.
    *   Enabled by Default: Saves only the latest log entry.
    *   Deactivatable: For more detailed logs or log rolling.
    *   Disables "Maximum Log File Size" Field: When Single Log is active.
    *   Setting saved in options.ini.

*   Improvement: Default FFmpeg Path in Options Dialog
    *   Default Path in Options Dialog: Shows program path on first start.
    *   Saved Paths are Retained: Loads saved path on subsequent starts.

*   New Output Format Option: OGG Vorbis
    *   OGG Vorbis Added: Selectable as another output format.
    *   "OGG" selection possible in GUI.

*   Various Minor Improvements and Bug Fixes

Key New Features in Version 2.0:

*   Completely New Program Base & GUI
    *   Switch to Python & Tkinter: More modern base, improved GUI.

*   New Feature: Audio File Analysis
    *   Audio Analysis Before Normalization: Allows analysis before normalizing.
    *   Display Analysis Results: LUFS, True Peak, LRA in GUI and Log.

*   Extended Normalization Options
    *   Adjustable True Peak Target Value & Presets: dBTP value and presets selectable.
    *   Output Format Selection: WAV, MP3, FLAC, AAC as output formats.
    *   Custom Values Still Possible: LUFS and TP values still customizable.

*   Improved User Interface & User Guidance
    *   Modern Progress Display: Progress bar for process display.
    *   Detailed Process Information: Display in GUI window.
    *   Message Boxes for Results & Completion: Message boxes for analysis and normalization.
    *   "About..." Menu Item: Version and author information in "About" window.

*   Extended Log File Functionality
    *   Separate Analysis Log File: analysis.log for analysis logs.
    *   More Detailed Log Output: More details in the log files.

*   Further Improvements
    *   Version Number in Window Title: Shows current version in window title.
    *   Automatic FFmpeg Check: Checks for ffmpeg.exe on startup.
    *   "Continuous Mode": Tool remains open after process completion.
    *   Improved Error Handling: More detailed error messages.
    *   Various GUI & Stability Improvements.

Development Steps from Version 1.0 to 1.4 (integrated into Version 2.0):

*   Version 1.4:
    *   Restructuring of Log File (newest entries at the top).
    *   Improved User Interface (clearer prompts/inputs).
    *   Log File View After Process Completion.
    *   Bug fixes and optimizations.
    *   GUI Version (new in v1.4).
    *   Multilingual Support (German/English in v1.4).
    *   Automatic FFmpeg Check (new in v1.4).
    *   Continuous Mode (new in v1.4).

*   Version 1.3:
    *   Logging Function Added (Log File).
    *   Timestamps and Separator Lines in Log File.
    *   Limitation of Log File Size (and deletion of older entries).

*   Version 1.2:
    *   Prompt to Overwrite Existing Output Files.
    *   User-Friendliness Improvements and Bugfixes.

*   Version 1.1:
    *   Progress Display During Normalization.
    *   GUI Improvements and Clearer Prompts.

*   Version 1.0:
    *   Initial Version (Batch File).
    *   Basic Functionalities for Normalization with FFmpeg.