melcom's FFmpeg Audio Normalizer

Version 2.1.0 (Current Version)

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.