Repository navigation
Releases: CTreitges/AudioNormalizer
Release list
V6 - Ordner-Verarbeitung: Struktur, Kollisionen, Backup-Schutz
V6 repariert die Verarbeitung ganzer Ordner. Dort gingen bisher stillschweigend Dinge verloren — teils Dateien, im schlimmsten Fall das Original selbst.
Behoben
Unterordner-Struktur ging verloren
Die Zielstruktur wurde aus dem gemeinsamen Pfad der gefundenen Dateien abgeleitet statt aus dem ausgewählten Ordner. Lagen alle Treffer in einem einzigen Unterordner, zeigte dieser gemeinsame Pfad auf den Unterordner — aus Musik/Album/*.mp3 wurde ein flacher Zielordner, Album verschwand. Eine einzelne Datei tief im Baum verlor ihre Struktur komplett.
Jetzt ist der ausgewählte Ordner die Basis: Musik/Album A/Disc 2/track.flac → Ziel/Album A/Disc 2/track.flac. Einzeln ausgewählte Dateien landen weiterhin flach.
Namenskonflikte gingen still verloren
Zwei Quellen auf einem Zielpfad — etwa x.wav + x.flac mit --format mp3, oder gleich benannte Unterordner aus mehreren Quellordnern — überschrieben sich gegenseitig. Da parallel verarbeitet wird, war nicht einmal vorhersagbar, welche Datei gewinnt.
Solche Konflikte werden jetzt vor dem Lauf erkannt und führen zum Abbruch mit Auflistung der Kollisionen.
Backup konnte das Original verlieren
Beim zweiten Lauf über dieselben Dateien ist die Quelle bereits normalisiert. Das Backup wurde trotzdem überschrieben — die gesicherte Originalfassung wurde also durch ihre bearbeitete Version ersetzt. Danach war das Original unwiederbringlich weg.
Bestehende Sicherungen bleiben jetzt unangetastet, und Dateien im Backup-Ordner werden nicht mehr als Eingabe eingesammelt.
Weitere Korrekturen
- Wiedergänger nach Abstürzen: Liegengebliebene Temp-Dateien tragen die echte Endung und wurden beim nächsten Lauf erneut als Eingabe eingesammelt — also ein zweites Mal verstärkt. Versteckte Dateien und Ordner werden nun übersprungen (erledigt zugleich AppleDouble-Reste wie
._track.mp3von Mac-kopierten Ordnern). - Zielordner im Quellordner führte beim zweiten Lauf zur doppelten Verstärkung des eigenen Outputs.
- Parallele FFmpeg-Prozesse teilten sich die Konsole, weil
stdinnicht abgekoppelt war — das konnte einen Stapellauf ins Stocken bringen. - Protokoll landete in einem beliebigen Unterordner, sobald Struktur erhalten blieb. Es liegt jetzt immer im gewählten Zielordner.
- FFmpeg-Versionsmix: Zu einer mitgelieferten
ffmpeg-Binary wurde ein fremdesffprobeaus demPATHgegriffen (lokalffmpeg7.1 nebenffprobe8.1.2). - Lautheitsmessung konnte gekapert werden: Ein beliebiger anderer
{...}-Block in der FFmpeg-Ausgabe wurde für das Messergebnis gehalten.
Oberfläche
- Rückmeldung pro Datei: Die Liste zeigt ✓/✗ mit angewandtem Verfahren und Verstärkung. Bisher gab es bei großen Ordnern nur einen Fortschrittsbalken — das Signal dafür wurde zwar gesendet, aber nie angezeigt.
- Layout-Fehler behoben: Je nach Modus wurden die Eingabefelder zusammengequetscht, teils auf null Höhe, und die Drop-Zone legte sich über die Überschreiben-Checkbox.
- Dateien werden mit ihrem Pfad relativ zum gewählten Ordner angezeigt.
- Ein eingetragener, aber nicht nutzbarer FFmpeg-Pfad wird als solcher gemeldet, statt unter einem grünen Haken ein anderes Binary zu verwenden.
- Ein Ordner ohne Audiodateien gibt eine Rückmeldung, statt kommentarlos nichts zu tun.
Bewusst nicht geändert
Lautheit und Sample-Peak in einem FFmpeg-Durchlauf zu messen, wäre im Hybrid-Modus rund 27 % schneller. Gegen zwei getrennte Messungen wich der True Peak aber um bis zu 0,02 dB ab — genau der Wert, der das Clipping-Limit setzt. Verworfen.
Verifikation
116 Tests (vorher 73). Neu ist scripts/verify_folder_run.py, das einen echten Ordnerlauf auf erhaltene Struktur, Zielpegel je Datei, Temp-Reste und Protokoll-Ablage prüft — bestanden für Peak, Loudness und Hybrid an einem verschachtelten Korpus aus WAV/FLAC/MP3 mit Umlauten und Stördateien. Rekordbox-Kompatibilität gegengeprüft (192 kHz/float → 96 kHz/24 bit RIFF, Metadaten entfernt), Backup nach zwei Läufen nachweislich unverändert, Oberfläche real gestartet.
Paketversion 2.1.0.
Download: AudioNormalizer-windows.exe (Windows), AudioNormalizer-macos (macOS), AudioNormalizer-linux (Linux). FFmpeg ist enthalten — keine separate Installation nötig.
V5 - Modularer Umbau + Rekordbox/Ueberschreiben vereint
V5 vereint die komplett modularisierte Neufassung (v2.0) mit den V4-Features.
Neu in V5
- Modulare, getestete Architektur: Qt-freie Kern-Engine (DSP/FFmpeg) getrennt von dünner PyQt6-GUI; 73 pytest-Tests; End-to-End-Verifier.
- Automatische FFmpeg-Erkennung + gebündelte Binary (Zero-Config, kein manueller Pfad mehr nötig).
- Mehr Formate: zusätzlich zu WAV/FLAC nun MP3, M4A/AAC, OGG, Opus.
- Headless-CLI (
python -m audionormalizer.cli) mit--dry-run, scriptbar/Linux-tauglich. - Abbrechen während der Verarbeitung.
Aus V4 übernommen
- Rekordbox-Kompatibilität (Default für WAV/FLAC): max. 24-bit/96 kHz, Standard-RIFF-WAV, WAV ohne problematische Metadaten-Chunks. Abschaltbar via
--no-rekordbox. - Originaldateien überschreiben + Backup (GUI-Checkbox / CLI
--overwrite --backup-dir): erhält CuePoints/Loops/Beatgrids in Rekordbox. - Default Max-Abweichung 1,0 dB.
Bugfixes / Härtung
- Atomares Schreiben (kein In-Place-Korruptionsrisiko), Multi-Drive-Fix, robustes Decoding.
- Cover-Erhalt pro Container korrekt (kein Crash bei Opus/M4A, kein Theora bei OGG), Opus-Resampling auf 48 kHz.
- Review-Fixes: abbrechbare Hybrid-Analyse, kein QThread-Crash beim Schließen, Linux/macOS-Binary ausführbar.
Verifiziert mit FFmpeg 8 an echten Dateien (LUFS-Treffer, Output-True-Peak ≤ Ziel, 24-bit-Erhalt, Cover-Erhalt, Rekordbox-WAV, Überschreiben+Backup).
🤖 Generated with Claude Code
V4
Neue Features
- Originaldateien uberschreiben: Neuer Modus zum direkten Uberschreiben der Quelldateien mit automatischem Backup. Ideal, um CuePoints, Loops und Beatgrids in Rekordbox zu erhalten.
- Rekordbox-Kompatibilitat: Ausgabedateien werden in rekordbox-kompatiblen Formaten erzeugt (PCM 16/24-bit Integer, max. 96 kHz, Standard-RIFF-WAV ohne RF64). WAV-Metadaten werden bereinigt.
- Ordnerstruktur beibehalten: Bei der Stapelverarbeitung wird die relative Ordnerstruktur im Zielverzeichnis beibehalten.
Verbesserungen
- Verbessertes ffmpeg/ffprobe Handling: ffprobe wird automatisch neben ffmpeg gesucht, Fallback auf PATH
- Detaillierte Fehlermeldungen bei FFmpeg/FFprobe-Problemen mit konkreten Losungshinweisen
- Dateiliste zeigt Elternordner zur besseren Unterscheidung gleichnamiger Dateien
- FFmpeg-Pfad wird erst bei Bestaetigung gespeichert (editingFinished statt textChanged)
- Verbesserte Validierung des FFmpeg-Pfads mit Warnmeldungen
- Log-Dateinamen mit verbessertem Zeitstempel-Format
Full Changelog: V3...V4
V3
V2
V1
Full Changelog: https://github.com/CTreitges/AudioNormalizer/commits/V1