# melcom's FFmpeg Audio Normalizer

Narzędzie open source do normalizacji audio oparte na FFmpeg, LUFS i True Peak. Stworzone do muzyki, podcastów, audio gamingowego oraz dużych batch-workflow - bez potrzeby używania linii poleceń.

## Wymagania

Aby korzystać z melcom's FFmpeg Audio Normalizer, wymagany jest pełny pakiet FFmpeg:

- `ffmpeg.exe` - analiza, normalizacja audio i zapisywanie metadanych
- `ffplay.exe` - podgląd audio i funkcje odtwarzacza
- `ffprobe.exe` - odczyt parametrów technicznych audio i wykrywanie kanałów

Zalecane pobieranie:
github.com/BtbN/FFmpeg-Builds/releases
Zalecany pakiet:
`ffmpeg-master-latest-win64-gpl.zip`

Po rozpakowaniu FFmpeg ustaw ścieżkę do folderu FFmpeg w opcjach programu.

## Pierwsze Kroki

1. Uruchom `AudioNormalizer.exe`.
2. Otwórz:
   `Plik -> Opcje`
3. Wybierz folder zawierający:
   `ffmpeg.exe`, `ffplay.exe` oraz `ffprobe.exe`
4. Użyj "Dodaj pliki", "Dodaj folder", lub przeciągnij pliki bezpośrednio metodą **Drag & Drop** do kolejki.
5. Wybierz preset LUFS, limit True Peak oraz format wyjściowy.
6. Wybierz preset charakteru audio. Transparent jest ustawieniem domyślnym i nie dodaje dodatkowego koloryzacji dźwięku.
7. Kliknij:
   "Rozpocznij normalizację"

Podczas przetwarzania okno logów pokazuje status procesu, komunikaty FFmpeg oraz postęp normalizacji w czasie rzeczywistym.

## Tryby Normalizacji i Opcje Eksportu

### Liniowy (2 przebiegi)

Zalecany do muzyki, masteringu i archiwizacji. Plik audio jest najpierw analizowany, a następnie normalizowany ze stałym wzmocnieniem. Pozwala to zachować oryginalną dynamikę możliwie najdokładniej.

### Dynamiczny (1 przebieg)

Zalecany do mowy, podcastów, streamów i broadcastu. Różnice głośności są aktywnie wyrównywane podczas procesu.

### Zaawansowane Opcje Eksportu i Parametry w Czasie Rzeczywistym

Edycja Kontrollraum oferuje pełną kontrolę nad formatem wyjściowym:

- Wybór częstotliwości próbkowania: Dostosuj wyjściowe próbkowanie od "Original / Default" aż do `192000 Hz (192 kHz)`.
- Jakość i głębia bitowa:
  - WAV: Wybierz między 64-bit / 32-bit Floating Point, linearnym 32-bit / 24-bit / 16-bit Integer oraz 8-bit Unsigned.
  - FLAC: Wybierz bezstratną rozdzielczość 24-bit lub 16-bit.
  - MP3 & M4A (CBR/VBR): Wybierz stałe bitraty (do 320 kbps) lub bardzo wydajne profile zmienne (np. V0, V2 dla MP3).
  - OGG: Obsługuje zmienne poziomy jakości (q4 do q10) oraz stałe 320 kbps.
- Specyfikacje na żywo i Auto-Reset: Dynamiczna linia `Specs:` natychmiast wyświetla aktualną konfigurację. Aby zapobiec konfliktom formatów, zmiana kontenera automatycznie resetuje opcje do wartości domyślnych ("Original / Default").

## Sterowanie Odtwarzaniem i Kolejka

Zintegrowany odtwarzacz i kolejka plików zostały zoptymalizowane dla maksymalnej płynności pracy:

- Zamrażanie procesów w systemie Windows (0% CPU): Kliknięcie pauzy (⏸) całkowicie usypia proces FFplay w systemie (za pomocą `NtSuspendProcess`) [5], co sprawia, że w stanie wstrzymania zużywa on dokładnie 0% mocy procesora.
- Interaktywne przewijanie: Kliknij bezpośrednio na pasek postępu odtwarzacza, aby natychmiast przeskoczyć do wybranego momentu w utworze. Oś czasu aktualizuje się płynnie i bez opóźnień od sekundy 0.
- Asynchroniczne kolumny Treeview: Kolumny *Długość*, *Format* i *Próbkowanie* są skanowane w osobnym wątku w tle, dzięki czemu główny interfejs pozostaje całkowicie płynny.
- Zarządzanie kolumnami i integracja z Windows: Kliknij prawym przyciskiem myszy na nagłówki lub użyj menu kontekstowego, aby pokazać lub ukryć kolumny. Kliknięcie prawym przyciskiem myszy na plik pozwala również szybko zlokalizować go w Eksploratorze lub otworzyć natywne okno właściwości systemu Windows.

## Właściwości dźwięku

Dzięki zintegrowanemu narzędziu Właściwości dźwięku możesz przeglądać szczegółowe informacje o swoich plikach audio, edytować metadane (tagi ID3), zarządzać okładkami oraz analizować szczegółowe statystyki głośności.

### Jak otworzyć okno "Właściwości dźwięku":

Wybierz plik z listy i kliknij przycisk [ i ], lub po prostu kliknij prawym przyciskiem myszy na wybrany plik.

### Funkcje w poszczególnych zakładkach:

- Zakładka Ogólne (General): Wyświetla kontener, kodek, częstotliwość próbkowania, kanały, czas trwania oraz nominalny bitrate. Aby zapewnić dokładność techniczną, głębia bitowa dla formatów stratnych jest poprawnie wyświetlana jako `N/D`.
- Zakładka Szczegóły (Details - Metadane): Edytuj tytuł utworu, artystę, album, rok, gatunek i inne. Obsługiwane funkcje dopasowują się dynamicznie (WAV obsługuje tylko standard RIFF INFO, surowy AAC jest tylko do odczytu, a M4A oferuje pełne wsparcie dla tagowania).
- Zakładka Okładka (Cover - Artwork): Wyświetla osadzone okładki dla MP3, FLAC i M4A. Pozwala bezstratnie zastępować obrazy, eksportować je lub całkowicie usuwać za pomocą dedykowanego przycisku "✕".
- Zakładka Statystyki (Statistics): Przeprowadza precyzyjną analizę EBU R128. Wyświetla zintegrowaną głośność, True Peak, Sample Peak, średnią moc RMS, DC Offset, zmierzoną głębię bitową oraz Crest Factor (współczynnik szczytu).
- Smart-Copy: Formatuje i kopiuje zawartość aktualnie otwartej zakładki bezpośrednio do schowka systemowego za pomocą jednego kliknięcia.

### Wygląd Inspektora:

Kliknij na zdjęcia, aby je powiększyć.

## Presety i Charakter Audio

### Presety LUFS i True Peak

- Program oferuje nowoczesne, przejrzyste i łatwe do zrozumienia nazwy profili głośności dla wszystkich popularnych wytycznych dotyczących przesyłania strumieniowego.
- Domyślny / Streaming bezpieczny (-1.0 dBTP) to świetne ustawienie domyślne dla większości platform streamingowych.
- Bezpieczny dla kodeków stratnych (-2.0 dBTP) zapewnia dodatkowy headroom dla eksportów MP3, M4A i OGG.
- Bez limitu / ryzykowne (0.0 dBTP) powinno być używane tylko wtedy, gdy docelowy format wyraźnie to dopuszcza.

### Charakter Masteringu

Transparent

Czysta normalizacja głośności bez dodatkowego przetwarzania dźwięku.

Cohesive

Dodaje delikatną kompresję i subtelny soft clipping dla bardziej spójnego miksu.

Punchy

Zapewnia więcej energii, mocniejszy punch i wyraźniejsze przetwarzanie dynamiki.

Aggressive

Najmocniejszy preset przeznaczony do ostrzejszych i bardziej agresywnych materiałów elektronicznych.

## Jakość i Metadane

### Zachowanie jakości audio

Podczas eksportu do WAV lub FLAC oryginalne częstotliwości próbkowania i głębie bitowe są zachowywane automatycznie, chyba że użytkownik ręcznie wybierze inną konfigurację.

### Metadane i Tagi

Artysta, album, tytuł, rok oraz inne metadane są automatycznie kopiowane do znormalizowanego pliku wyjściowego.

Pliki MP3 automatycznie używają standardu ID3v2.3 dla maksymalnej kompatybilności z Eksploratorem Windows i sprzętowymi odtwarzaczami audio.

## Zarządzanie profilami

Edycja Kontrollraum oferuje elastyczny system profili konfiguracyjnych, który umożliwia zapisywanie, wczytywanie i zarządzanie ulubionymi ustawieniami parametrów. Jest to niezwykle przydatne do szybkiego przełączania się między różnymi procesami roboczymi (np. normalizacją podcastów a masteringiem muzyki).

### Dostępne akcje:

- Zapisz profil (Save Profile...): Eksportuje wszystkie bieżące parametry do czystego pliku JSON w katalogu `/profile/`. Możesz określić własną nazwę pliku.
- Wczytaj profil (Load Profile...): Importuje wcześniej zapisaną konfigurację z katalogu `/profile/`, aby natychmiast przywrócić stan obszaru roboczego.
- Przywróć domyślne (Reset to Defaults): Natychmiast przywraca wszystkie listy rozwijane konfiguracji, niestandardowe wartości docelowe i opcje masteringu do ich bezpiecznych, domyślnych parametrów.

System profili zapisuje kompletny zestaw ustawień głośności (docelowe LUFS, True Peak, charakter masteringu), wybrany tryb normalizacji oraz szczegóły formatu wyjściowego (w tym docelową częstotliwość próbkowania i wybraną jakość/głębię bitową).

## Dodatkowe Uwagi

Optymalizacja wydajności: Odczyt danych z podprocesów odbywa się teraz za pomocą funkcji `readline()` zamiast odczytu bajt po bajcie. Drastycznie zmniejsza to obciążenie procesora i całkowicie eliminuje zawieszanie się interfejsu podczas przetwarzania na żywo.
Ochrona przed błędami: Aplikacja proaktywnie blokuje dodawanie plików do kolejki, jeśli skonfigurowana ścieżka do FFmpeg jest nieprawidłowa lub niepełna, co pozwala uniknąć problemów podczas pracy programu.
Jeśli proces zostanie przerwany lub wystąpi błąd, wszystkie tymczasowe pliki robocze (`.temp`) are automatycznie usuwane.

## O Tym Pliku

Projekt został stworzony przez melcom i wydany na licencji MIT.

Strona projektu:
melcom-creations.github.io/melcom-music

×