Skip to content

Releases: CTreitges/AudioNormalizer

V6 - Ordner-Verarbeitung: Struktur, Kollisionen, Backup-Schutz

Choose a tag to compare

@CTreitges CTreitges released this 29 Jul 00:03

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.mp3 von 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 stdin nicht 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 fremdes ffprobe aus dem PATH gegriffen (lokal ffmpeg 7.1 neben ffprobe 8.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

Choose a tag to compare

@CTreitges CTreitges released this 01 Jun 12:50

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

V4

Choose a tag to compare

@CTreitges CTreitges released this 22 Mar 14:48

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

V3

Choose a tag to compare

@CTreitges CTreitges released this 18 Feb 00:21

Full Changelog: V2...V3

V2

V2

Choose a tag to compare

@CTreitges CTreitges released this 29 Dec 06:04
Update AudioNormalizer.spec and requirements.txt to include zipfiles …

V1

V1 Pre-release
Pre-release

Choose a tag to compare

@CTreitges CTreitges released this 27 Dec 05:23