From 5b1b6127757c1b0eac1e4de7d98b844f01cb8750 Mon Sep 17 00:00:00 2001 From: LoRd_MuldeR Date: Sat, 21 Mar 2015 19:06:55 +0100 Subject: [PATCH] Added support for DynamicAudioNormalizer normalization filter. --- etc/Translation/Blank.ts | 657 +++++++++++++++++---------------- etc/Translation/LameXP_DE.ts | 30 +- etc/Translation/LameXP_EN.ts | 10 +- etc/Translation/LameXP_ES.ts | 28 +- etc/Translation/LameXP_FR.ts | 28 +- etc/Translation/LameXP_IT.ts | 28 +- etc/Translation/LameXP_KR.ts | 28 +- etc/Translation/LameXP_PL.ts | 671 +++++++++++++++++----------------- etc/Translation/LameXP_RU.ts | 28 +- etc/Translation/LameXP_SV.ts | 663 +++++++++++++++++---------------- etc/Translation/LameXP_TW.ts | 28 +- etc/Translation/LameXP_UK.ts | 28 +- etc/Translation/LameXP_ZH.ts | 28 +- gui/MainWindow.ui | 137 ++++--- res/localization/LameXP_DE.qm | Bin 86854 -> 87079 bytes res/localization/LameXP_ES.qm | Bin 86931 -> 86634 bytes res/localization/LameXP_FR.qm | Bin 89269 -> 88974 bytes res/localization/LameXP_KR.qm | Bin 65911 -> 65670 bytes res/localization/LameXP_PL.qm | Bin 87640 -> 87333 bytes res/localization/LameXP_RU.qm | Bin 80628 -> 80389 bytes res/localization/LameXP_SV.qm | Bin 82036 -> 81767 bytes res/localization/LameXP_TW.qm | Bin 58747 -> 58518 bytes res/localization/LameXP_UK.qm | Bin 90463 -> 90148 bytes res/localization/LameXP_ZH.qm | Bin 59267 -> 59040 bytes src/Config.h | 4 +- src/Dialog_MainWindow.cpp | 237 +++++++----- src/Dialog_MainWindow.h | 5 +- src/Dialog_Processing.cpp | 2 +- src/Filter_Normalize.cpp | 37 +- src/Filter_Normalize.h | 8 +- src/Model_Settings.cpp | 8 +- src/Model_Settings.h | 4 +- 32 files changed, 1386 insertions(+), 1311 deletions(-) diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index b4bcff33..52554b5c 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -829,7 +829,7 @@ - + Source Files @@ -850,13 +850,13 @@ - + Show Details - + Output Directory @@ -907,7 +907,7 @@ - + Meta Data @@ -949,7 +949,7 @@ - + Compression @@ -1045,7 +1045,7 @@ - + Advanced Options @@ -1226,1362 +1226,1357 @@ - - None + + Enable Dynamic Normalization - - Peak Level + + Window Size: - - RMS Level + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount - - Equalization Mode: - - - - + Tone Adjustment - + Adjust Treble (dB): - + Adjust Bass (dB): - + Custom Encoder Parameters - - - - - - + + + + + + You can enter custom parameters here! - + Lame MP3: - + OggEnc2: - + MPEG-4 AAC: - + FLAC: - + Warning: Custom parameters won't be checked at all. Use them at your own risk !!! - + Aften A/52: - + OpusEnc: - + Multi-Threading - + Choose the number of parallel instances based on the number of CPU cores (Recommended) - + Fewer Instances - + More Instances - + Temp Directory - + Browse... - + Store temporary files in your system's default TEMP directory (Recommended) - + Aften A/52 Options - + Film Light - + Film Standard - + Music Light - + Music Standard - + Speech - + None (Default) - + Auto Select - + 1+1 (Ch1,Ch2) - + 1/0 (C) - + 2/0 (L,R) - + 3/0 (L,R,C) - + 2/1 (L,R,S) - + 3/1 (L,R,C,S) - + 2/2 (L,R,SL,SR) - + 3/2 (L,R,C,SL,SR) - + Audio Coding Mode: - + Dynamic Range Compression: - + Fast Bit Allocation (Less Accurate) - + Exponent Search Size: - + Rename Output Files - + Enter the pattern to rename the output files here! - + Rename Output Files - + <a href="reset">Reset</a> &nbsp; <a href="#">Show List of Macros</a> - + Rename Pattern: - + Example File Name: - + Opus Encoder Options - + Encoding Complexity: - + Frame Size: - + Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz) - + Overwrite Mode - + Overwrite Existing File - + Skip File - + Keep Both Files (Default) - + If Target File Already Exists: - + Reset Advanced Options - + Encode Now! - - + + About... - + Exit Program - + File - + ? - + View - + Style - + Language - + Tools - + Configuration - + Quit - + Open File(s)... - + Official LameXP Project Web-Site - + Visit Official Web-Site - - - - - + + + + + Check for Updates - + Open Folder... - + Clear All - + Plastique - + Cleanlooks - + Windows Vista ("Aero") - + Windows Classic - + Windows XP ("Luna") - - + + Disable Update Reminder - - + + Disable Sound Effects - + Install WMA Decoder - + Disable Nero AAC Notifications - + Show DropBox - + From File... - + Encode! - + Disable Shell Integration - + LameXP User's Manual - + Changelog - + Translator's Guide - + Help && Support - + Open Folder Recursively... - + Check for Beta Updates - + Import Cue Sheet - + Disable Slow Startup Notifications - + Hibernate Computer On Shutdown - + MuldeR's OpenSource Projects - + Report a Bug (GitHub) - + Hydrogenaudio Knowledgebase - + Adding file(s), please wait... - - + + Access Denied - + %n file(s) have been rejected, because read access was not granted! - + This usually means the file is locked by another process. - + CDDA Files - + %n file(s) have been rejected, because they are dummy CDDA files! - + Sorry, LameXP cannot extract audio tracks from an Audio-CD at present. - + We recommend using %1 for that purpose. - + Cue Sheet - + %n file(s) have been rejected, because they appear to be Cue Sheet images! - + Please use LameXP's Cue Sheet wizard for importing Cue Sheet files. - + Files Rejected - + %n file(s) have been rejected, because the file format could not be recognized! - + This usually means the file is damaged or the file format is not supported. - + Scanning folder(s) for files, please wait... - + DEMO VERSION - + Initializing directory outline, please be patient... - + You can drop in audio files here! - + Open File in External Application - + Browse File Location - + Browse Selected Folder - + Refresh Directory Outline - + Go To Parent Directory - + Bookmark Current Output Folder - + Export Meta Tags to CSV File - + Import Meta Tags from CSV File - + License Declined - + You have declined the license. Consequently the application will exit now! - + Goodbye! - + LameXP - Expired - + This demo (pre-release) version of LameXP has expired at %1. - + LameXP is free software and release versions won't expire. - - + + Exit Program - + It seems that a bogus anti-virus software is slowing down the startup of LameXP. - + Please refer to the %1 document for details and solutions! - + Slow Startup - - - - - + + + + + Discard - - + + Don't Show Again - + Urgent Update - + Your version of LameXP is more than a year old. Time for an update! - - + + Ignore - + Skipping update check this time, please be patient... - - - + + + Update Reminder - + Your last update check was more than 14 days ago. Check for updates now? - + Your did not check for LameXP updates yet. Check for updates now? - + Postpone - + LameXP detected that your version of the Nero AAC encoder is outdated! - + The current version available is %1 (or later), but you still have version %2 installed. - + n/a - + You can download the latest version of the Nero AAC encoder from the Nero website at: - + (Hint: Please ignore the name of the downloaded ZIP file and check the included 'changelog.txt' instead!) - + AAC Encoder Outdated - + The Nero AAC encoder could not be found. AAC encoding support will be disabled. - + Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory! - + Your LameXP directory is located here: - + You can download the Nero AAC encoder for free from the official Nero website at: - + AAC Support Disabled - - - + + + LameXP - + You must add at least one file to the list before proceeding! - + Not Found - + Your currently selected TEMP folder does not exist anymore: - + Restore Default - + Cancel - + There are less than %1 GB of free diskspace available on your system's TEMP folder. - + It is highly recommend to free up more diskspace before proceeding with the encode! - + Your TEMP folder is located at: - + Low Diskspace Warning - + Abort Encoding Process - + Clean Disk Now - + Low Diskspace - + You are proceeding with low diskspace. Problems might occur! - + Sorry, an unsupported encoder has been chosen! - + Cannot write to the selected output directory. - + Please choose a different directory! - + Load Translation - + Translation Files - + Do you really want to disable the update reminder? - - - - - - - + + + + + + + Yes - - - - - - - + + + + + + + No - + The update reminder has been disabled. - + Please remember to check for updates at regular intervals! - + The update reminder has been re-enabled. - + Do you really want to disable all sound effects? - - + + Sound Effects - + All sound effects have been disabled. - + The sound effects have been re-enabled. - - + + Nero AAC Notifications - + Do you really want to disable all Nero AAC Encoder notifications? - + All Nero AAC Encoder notifications have been disabled. - + The Nero AAC Encoder notifications have been re-enabled. - - + + Slow Startup Notifications - + Do you really want to disable the slow startup notifications? - + The slow startup notifications have been disabled. - + The slow startup notifications have been re-enabled. - - + + Open Cue Sheet - - + + Cue Sheet File - - - + + + Beta Updates - + Do you really want LameXP to check for Beta (pre-release) updates? - + LameXP will check for Beta (pre-release) updates from now on. - + Check Now - + LameXP will <i>not</i> check for Beta (pre-release) updates from now on. - - + + Hibernate Computer - + Do you really want the computer to be hibernated on shutdown? - + LameXP will hibernate the computer on shutdown from now on. - + LameXP will <i>not</i> hibernate the computer on shutdown from now on. - - - + + + Shell Integration - + Do you really want to disable the LameXP shell integration? - + The LameXP shell integration has been disabled. - + The LameXP shell integration has been re-enabled. - - + + Add file(s) - - + + Add Folder - + Loading dropped files or folders, please wait... - - + + Save CSV file - - - - + + + + CSV File - - - - + + + + CSV Export - + Sorry, there are no meta tags that can be exported! - + Sorry, failed to open CSV file for writing! - + Sorry, failed to write to the CSV file! - + The CSV files was created successfully! - - + + Open CSV file - - - - + + + + CSV Import - + Sorry, failed to open CSV file for reading! - + Sorry, failed to read from the CSV file! - + Sorry, the CSV file does not contain any known fields! - + CSV file is incomplete. Not all files were updated! - + The CSV files was imported successfully! - - + + New Folder - + Enter the name of the new folder: - + Failed to create folder - + The new folder could not be created: - + Drive is read-only or insufficient access rights! - + Current Encoder: %1 - - + + Quality Level %1 - + Compression %1 - + Uncompressed - + Best Quality (Slow) - + High Quality (Recommended) - + Acceptable Quality (Fast) - + Poor Quality (Very Fast) - + File name without extension - + Track number with leading zero - + Track title - + Artist name - + Album name - + Year with (at least) four digits - + Comment - + Characters forbidden in file names: - + Rename Macros - + %n Instance(s) - + Cannot write to the selected directory. Please choose another directory! - + Overwrite Mode - + Warning: This mode may overwrite existing files with no way to revert! - + Continue - + Revert - + Already Running - + LameXP is already running, please use the running instance! diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts index b4183c2b..999089fd 100644 --- a/etc/Translation/LameXP_DE.ts +++ b/etc/Translation/LameXP_DE.ts @@ -1309,7 +1309,7 @@ Peak Volume (dB): - Max. Lautstärke (dB): + Max. Pegel (dB): Reset Advanced Options @@ -1707,22 +1707,6 @@ Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! Achtung: Die Geschwindigkeit wird sehr gering sein. Bitte <u>nicht</u> über die Geschwindigkeit beschweren! - - Peak Level - Max. Pegel - - - RMS Level - Max. Energie - - - None - Keiner - - - Equalization Mode: - Angleichungsmodus: - DEMO VERSION @@ -2006,6 +1990,18 @@ LameXP User's Manual LameXP Benutzerhandbuch + + Enable Dynamic Normalization + Dynamische Normalisierung + + + Window Size: + Fenstergröße: + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + Kanal-Kopplung aktivieren, d.h. alle Kanäle einer Mehrkanal-Datei um den gleichen Faktor verstärken + MetaInfo diff --git a/etc/Translation/LameXP_EN.ts b/etc/Translation/LameXP_EN.ts index 14001cf3..702e2221 100644 --- a/etc/Translation/LameXP_EN.ts +++ b/etc/Translation/LameXP_EN.ts @@ -31,7 +31,7 @@ MainWindow - + %n file(s) have been rejected, because read access was not granted! %n file have been rejected, because read access was not granted! @@ -39,7 +39,7 @@ - + %n file(s) have been rejected, because they are dummy CDDA files! %n file have been rejected, because they are dummy CDDA files! @@ -47,7 +47,7 @@ - + %n file(s) have been rejected, because they appear to be Cue Sheet images! %n file have been rejected, because they appear to be Cue Sheet images! @@ -55,7 +55,7 @@ - + %n file(s) have been rejected, because the file format could not be recognized! %n file have been rejected, because the file format could not be recognized! @@ -63,7 +63,7 @@ - + %n Instance(s) %n Instance diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts index f9b44bf3..e7a9f2c8 100644 --- a/etc/Translation/LameXP_ES.ts +++ b/etc/Translation/LameXP_ES.ts @@ -1706,22 +1706,6 @@ Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! Aviso: ¡La velocidad de proceso será muy lenta. Por favor, <u>no</u> se queje de la velocidad de proceso! - - Peak Level - Nivel de pico - - - RMS Level - Nivel RMS - - - None - Ninguno - - - Equalization Mode: - Modo de equalización: - DEMO VERSION VERSIÓN DEMO @@ -2005,6 +1989,18 @@ LameXP User's Manual + + Enable Dynamic Normalization + + + + Window Size: + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + MetaInfo diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts index 32fe3460..e09562db 100644 --- a/etc/Translation/LameXP_FR.ts +++ b/etc/Translation/LameXP_FR.ts @@ -1715,22 +1715,6 @@ Ouvrir le dossier récursivement... Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! AVERTISSEMENT : La vitesse de traitement sera très lente. Veuillez <u>ne pas</u> vous plaindre de la vitesse de traitement ! - - Peak Level - Niveau maximum - - - RMS Level - Niveau RMS - - - None - Aucun - - - Equalization Mode: - Mode d'égalisation : - DEMO VERSION VERSION DE DÉMONSTRATION @@ -2014,6 +1998,18 @@ Ouvrir le dossier récursivement... LameXP User's Manual + + Enable Dynamic Normalization + + + + Window Size: + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + MetaInfo diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts index bbea71af..3cb2a513 100644 --- a/etc/Translation/LameXP_IT.ts +++ b/etc/Translation/LameXP_IT.ts @@ -1707,22 +1707,6 @@ Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! - - Peak Level - - - - RMS Level - - - - None - - - - Equalization Mode: - - DEMO VERSION @@ -2006,6 +1990,18 @@ LameXP User's Manual + + Enable Dynamic Normalization + + + + Window Size: + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + MetaInfo diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts index d616ed8e..f184ea6a 100644 --- a/etc/Translation/LameXP_KR.ts +++ b/etc/Translation/LameXP_KR.ts @@ -1704,22 +1704,6 @@ Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! 경고: 처리 속도가 매우 느리게 됩니다. 처리 속도에 대해 <u>불평하지 마십시오</u>! - - Peak Level - 피크 레벨 - - - RMS Level - RMS 레벨 - - - None - 없음 - - - Equalization Mode: - 이퀄라이저 방식: - DEMO VERSION 데모 버전 @@ -1998,6 +1982,18 @@ LameXP User's Manual LameXP 사용자 매뉴얼 + + Enable Dynamic Normalization + + + + Window Size: + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + MetaInfo diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts index 693a6653..72fdc307 100644 --- a/etc/Translation/LameXP_PL.ts +++ b/etc/Translation/LameXP_PL.ts @@ -835,7 +835,7 @@ - + Source Files Pliki źródłowe @@ -856,13 +856,13 @@ - + Show Details Pokaż szczegóły - + Output Directory Folder docelowy @@ -898,7 +898,7 @@ - + Meta Data Tagi @@ -940,7 +940,7 @@ - + Compression Kompresja @@ -991,7 +991,7 @@ - + Advanced Options Opcje zaawansowane @@ -1171,21 +1171,6 @@ Peak Volume (dB): Najwyższa głośność (dB): - - - Peak Level - Wg poziomu szczytowego - - - - RMS Level - Wg poziomu RMS - - - - None - Żaden - Up One Level @@ -1247,817 +1232,827 @@ Pokaż pomoc - - Equalization Mode: - Tryb korekcji: + + Enable Dynamic Normalization + - + + Window Size: + + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + + + Tone Adjustment Zmiana tonów - + Adjust Treble (dB): Zmień tony wysokie (dB): - + Adjust Bass (dB): Zmień tony niskie (dB): - + Custom Encoder Parameters Własne parametry kodowania - - - - - - + + + + + + You can enter custom parameters here! Tutaj możesz wpisać własne parametry kodowania! - + Lame MP3: Lame MP3: - + OggEnc2: OggEnc2: - + MPEG-4 AAC: MPEG-4 AAC: - + FLAC: FLAC: - + Warning: Custom parameters won't be checked at all. Use them at your own risk !!! Ostrzeżenie: Włąśne parametry kompresji nie będą weryfikowane. Używasz je na własne ryzyko!!! - + Aften A/52: Aften A/52: - + OpusEnc: OpusEnc: - + Multi-Threading Wielowątkowość - + Choose the number of parallel instances based on the number of CPU cores (Recommended) Wybierz ilość równoległych kodowań na podstawie ilości wątków procesora (Zalecane) - + Fewer Instances Mniej - + More Instances Więcej - + Temp Directory Folder tymczasowy - + Browse... Wybierz... - + Store temporary files in your system's default TEMP directory (Recommended) Zapisuj pliki tymczasowe w systemowej lokalizacji TEMP (Zalecane) - + Aften A/52 Options Opcje A/52 - + Film Light - + Film Standard - + Music Light - + Music Standard - + Speech Speech - + None (Default) Żadna (Domyślnie) - + Auto Select Automatycznie - + 1+1 (Ch1,Ch2) 1+1 (Ch1,Ch2) - + 1/0 (C) 1/0 (C) - + 2/0 (L,R) 2/0 (L,R) - + 3/0 (L,R,C) 3/0 (L,R,C) - + 2/1 (L,R,S) 2/1 (L,R,S) - + 3/1 (L,R,C,S) 3/1 (L,R,C,S) - + 2/2 (L,R,SL,SR) 2/2 (L,R,SL,SR) - + 3/2 (L,R,C,SL,SR) 3/2 (L,R,C,SL,SR) - + Audio Coding Mode: Ilość kanałów: - + Dynamic Range Compression: Kompresja dynamiki (DRC): - + Fast Bit Allocation (Less Accurate) Szybka alokacja bitów (Mniejsza dokładność) - + Exponent Search Size: - + Rename Output Files Zmiana nazwy plików wyjściowych - + Enter the pattern to rename the output files here! Zapisz tutaj wzór wg którego zmienisz nazwy! - + Rename Output Files Zmieniaj nazwy plików - + <a href="reset">Reset</a> &nbsp; <a href="#">Show List of Macros</a> <a href="reset">Resetuj</a> &nbsp; <a href="#">Pokaż listę makr</a> - + Rename Pattern: Format wyjściowy: - + Example File Name: Przykładowa nazwa pliku: - + Opus Encoder Options Opcje kodera Opus Opcje kodera Opus - + Encoding Complexity: Złożoność kompresji: - + Frame Size: Rozmiar ramki: - + Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz) Wyłącz zmianę częstotliwości dźwięku dekodera Opus (np. zawsze na wyjściu 48.000 Hz) - + Overwrite Mode Tryb nadpisywania - + Overwrite Existing File Nadpisz istniejący plik - + Skip File Pomiń plik - + Keep Both Files (Default) Zachowaj obydwa pliki (Domyślnie) - + If Target File Already Exists: Jeśli plik o takiej samej nazwie już istnieje to: - + Reset Advanced Options Resetuj opcje zaawansowane - + Encode Now! Kompresuj! - - + + About... Info... - + Exit Program Wyjdź z programu - + File Plik - + ? ? - + View Widok - + Style Styl - + Language Język - + Tools Narzędzia - + Configuration Konfiguracja - + Quit Zamknij - + Open File(s)... Otwórz plik(i)... - + Official LameXP Project Web-Site Oficjalna strona programu LameXP - + Visit Official Web-Site Odwiedź oficjalną stronę - - - - - + + + + + Check for Updates Sprawdź aktualizacje - + Open Folder... Otwórz folder... - + Clear All Wyczyść wszystko - + Plastique Plastique - + Cleanlooks Cleanlooks - + Windows Vista ("Aero") Windows Vista ("Aero") - + Windows Classic Windows Classic - + Windows XP ("Luna") Windows XP ("Luna") - - + + Disable Update Reminder Wyłącz przypominanie o aktualizacji - - + + Disable Sound Effects Wyłącz efekty dźwiękowe - + Install WMA Decoder Zainstaluj Dekoder WMA - + Disable Nero AAC Notifications Wyłącz powiadomienia Nero AAC - + Show DropBox Pokaż DropBoxa - + From File... Z pliku... - + Encode! Kompresuj! - + Disable Shell Integration Wyłącz integrację z systemem - + LameXP User's Manual Instrukcja obsługi LameXP - + Changelog Lista zmian - + Translator's Guide Przewodnik tłumacza - + Help && Support Pomoc i Wsparcie - + Open Folder Recursively... Otwórz folder rekurencyjnie... - + Check for Beta Updates Sprawdzaj czy jest Beta - + Import Cue Sheet Importuj plik Cue - + Disable Slow Startup Notifications Wyłącz powiadomienia o powolnym starcie - + Hibernate Computer On Shutdown Hibernuj zamiast zamykać - + MuldeR's OpenSource Projects Otwartoźródłowe projekty MuldeR'a - + Report a Bug (GitHub) Zgłoś błąd (GitHub) - + Hydrogenaudio Knowledgebase Baza Wiedzy Hydrogenaudio - + Adding file(s), please wait... Dodawanie plików, prosze czekać... - - + + Access Denied Dostęp zablokowany - + This usually means the file is locked by another process. To przeważnie oznacza, że plik jest zablokowany przez inny proces. - + CDDA Files Pliki CDDA - + Sorry, LameXP cannot extract audio tracks from an Audio-CD at present. LameXP nie może teraz wyekstrachować ścieżki z płyty Audio-CD. - + We recommend using %1 for that purpose. Zaleca się użycie w tym celu %1. - + Cue Sheet Cue Sheet - + Please use LameXP's Cue Sheet wizard for importing Cue Sheet files. Prosze użyć przewodnika Cue Sheet w LameXP w celu importowania tych plików. - + Files Rejected Pliki odrzucone - + This usually means the file is damaged or the file format is not supported. To przeważnie oznacza że plik jest uszkodzony lub format pliku nie jest wspierany. - + Scanning folder(s) for files, please wait... Skanowanie folderu/ów, prosze czekać... - + You can drop in audio files here! Tutaj możesz upuścić pliki dźwiękowe! - + Open File in External Application Otwórz plik w zewnętrznym programie - + Browse File Location Otwórz lokalizację pliku - + Browse Selected Folder Otwórz wybrany folder - + Bookmark Current Output Folder Zapamiętaj wybrany folder - + License Declined Licencja odrzucona - + You have declined the license. Consequently the application will exit now! Odrzuciłeś licencję. W takim razie program zostanie teraz zamknięty! - + Goodbye! Naraska! - + LameXP - Expired LameXP - Termin wygasł - + This demo (pre-release) version of LameXP has expired at %1. Ta wersja próbna LameXP wygasła %1. - + LameXP is free software and release versions won't expire. LameXP jest darmowym oprogramowaniem i pełna wersja nie wygasa. - - + + Exit Program Wyjdź z programu - + It seems that a bogus anti-virus software is slowing down the startup of LameXP. Najwyraźniej twoje oprogramowanie antywirusowe spowalnia uruchamianie się LameXP. - + Please refer to the %1 document for details and solutions! Prosze sprawdzić dokument %1 w celu dalszych szcegółów i rozwiązań! - + Slow Startup Powolny start - - - - - + + + + + Discard Zamknij - - + + Don't Show Again Nie pokazuj ponownie - + Urgent Update Ważna aktualizacja - + Your version of LameXP is more than a year old. Time for an update! Twoja wersja LameXP jest starsza niż rok! Czas na aktualizację! - - - + + + Update Reminder Powiadomienie aktualizacji - + Your last update check was more than 14 days ago. Check for updates now? Ostatnie sprawdzenie aktualizacji miało miejsce ponad 14 dni temu. Sprawdzić teraz aktualizacje? - + Your did not check for LameXP updates yet. Check for updates now? Nie sprawdzałeś jeszcze aktualizacji LameXP. Sprawdzić teraz aktualizacje? - + Postpone Przełóż - + LameXP detected that your version of the Nero AAC encoder is outdated! LameXP wykrył że Twoja wersja kodera Nero AAC jest nieaktualna! - + The current version available is %1 (or later), but you still have version %2 installed. Wersją dostępną obecnie jest %1, Twoja wersja to %2. - + n/a b/d - + You can download the latest version of the Nero AAC encoder from the Nero website at: Możesz pobrać najnowszą wersję kodera Nero AAC ze strony Nero: - + AAC Encoder Outdated Koder AAC jest nieaktualny - + The Nero AAC encoder could not be found. AAC encoding support will be disabled. Nie można odnaleźć kodera Nero AAC. Kompresja formatu AAC zostanie wyłączona. - + Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory! Prosze skopiować 'neroAacEnc.exe', 'neroAacDec.exe', oraz 'neroAacTag.exe' do folderu LameXP! - + Your LameXP directory is located here: Folder aplikacji LameXP znajduje się tutaj: - + You can download the Nero AAC encoder for free from the official Nero website at: Możesz pobrać koder Nero AAC za darmo z oficjalnej strony Nero: - + AAC Support Disabled Wsparcie dla AAC wyłączone - - - + + + LameXP LameXP - + You must add at least one file to the list before proceeding! Powinienieś dodać przynajmniej jeden plik do listy aby zacząć działać! - + Not Found Nie znaleziono - + Your currently selected TEMP folder does not exist anymore: Wybrany przez Ciebie folder tymczasowy TEMP już nie istnieje: - + Restore Default Przywróć domyślne - + Cancel Anuluj - + Low Diskspace Warning Ostrzeżenie o małej ilości miejsca na dysku - + There are less than %1 GB of free diskspace available on your system's TEMP folder. Jest mniej niż %1 GB dostępnego miejsca w systemowym folderze TEMP. - + DEMO VERSION WERSJA PRÓBNA - + (Hint: Please ignore the name of the downloaded ZIP file and check the included 'changelog.txt' instead!) (Podpowiedź: Zignoruj nazwę pobranego pliku ZIP, w zamian sprawdż załączony w archiwum plik "changelog.txt"!) - + It is highly recommend to free up more diskspace before proceeding with the encode! Jest wysoce zalecane zwolnić miejsce na dysku zanim zaczniesz kompresję! - + Your TEMP folder is located at: Twój folder TEMP znajduję się: - + Abort Encoding Process Przerwij proces kompresji - + Clean Disk Now Wykonaj oczyszczanie dysku - - + + Ignore Ignoruj - + %n file(s) have been rejected, because read access was not granted! %n plik został odrzucony, ponieważ nie dano praw odczytu! @@ -2066,7 +2061,7 @@ - + %n file(s) have been rejected, because they are dummy CDDA files! %n plik został odrzucony, ponieważ jest to plik CDDA! @@ -2075,7 +2070,7 @@ - + %n file(s) have been rejected, because they appear to be Cue Sheet images! %n plik został odrzucony, ponieważ jest to plik Cue! @@ -2084,7 +2079,7 @@ - + %n file(s) have been rejected, because the file format could not be recognized! %n plik został odrzucony, ponieważ jego format nie został rozpoznany! @@ -2093,473 +2088,473 @@ - + Initializing directory outline, please be patient... Ładowanie zestawu folderów, prosze czekać... - + Refresh Directory Outline Odśwież foldery - + Go To Parent Directory Idź do głównego folderu - + Export Meta Tags to CSV File Eksportuj Tagi do pliku CVS - + Import Meta Tags from CSV File Importuj Tagi do pliku CVS - + Skipping update check this time, please be patient... Pomijanie sprawdzania aktualizacji, prosze czekać... - + Low Diskspace Mało miejsca na dysku - + You are proceeding with low diskspace. Problems might occur! Chcesz zacząć działać z małą ilością miejsca na dysku. Mogą wystąpić problemy! - + Sorry, an unsupported encoder has been chosen! Został wybrany koder, który nie jest wspierany! - + Cannot write to the selected output directory. Nie można zapisać do wybranej lokalizacji. - + Please choose a different directory! Prosze wybrać inną lokalizację! - + Load Translation Zaladuj plik językowy - + Translation Files Pliki językowe - + Do you really want to disable the update reminder? Czy na pewno chcesz wyłączyć przypominanie o aktualizacjach? - - - - - - - + + + + + + + Yes Tak - - - - - - - + + + + + + + No Nie - + The update reminder has been disabled. Przypominanie o aktualizacjach wyłączone. - + Please remember to check for updates at regular intervals! Prosze pamiętać o okresowym sprawdzaniu aktualizacji! - + The update reminder has been re-enabled. Przypominanie o aktualizacjach ponownie włączone. - + Do you really want to disable all sound effects? Czy na pewno chcesz wyłączyć wszystkie dźwiękowe? - - + + Sound Effects Efekty dźwiękowe - + All sound effects have been disabled. Wszystkie efekty dźwiękowe zostały wyłączone. - + The sound effects have been re-enabled. Efekty dźwiękowe zostały ponownie włączone. - - + + Nero AAC Notifications Powiadomienia Nero AAC - + Do you really want to disable all Nero AAC Encoder notifications? Czy na pewno chcesz wyłączyć wszystkie powiadomienia Nero AAC? - + All Nero AAC Encoder notifications have been disabled. Wszystkie powiadomienia kodera Nero AAC zostały wyłączone. - + The Nero AAC Encoder notifications have been re-enabled. Powiadomienia Nero AAC zostały ponownie włączone. - - + + Slow Startup Notifications Powiadomienia o powolnym starcie - + Do you really want to disable the slow startup notifications? Czy na pewno chcesz wyłączyć powiadomienia o powolnym starcie? - + The slow startup notifications have been disabled. Powiadomienia o powolnym starcie zostały wyłączone. - + The slow startup notifications have been re-enabled. Powiadomienia o powolnym starcie zostały ponownie włączone. - - + + Open Cue Sheet Otwórz plik Cue Sheet - - + + Cue Sheet File Plik Cue Sheet - - - + + + Beta Updates Aktualizacje Beta - + Do you really want LameXP to check for Beta (pre-release) updates? Czy na pewno chcesz aby LameXP sprawdzał aktualizacje Beta? - + LameXP will check for Beta (pre-release) updates from now on. Od teraz LameXP będzie sprawdzał aktualizacje Beta. - + Check Now Sprawdź teraz - + LameXP will <i>not</i> check for Beta (pre-release) updates from now on. LameXP od teraz <i>nie będzie</i> sprawdzał aktualizacji Beta. - - + + Hibernate Computer Hibernuj komputer - + Do you really want the computer to be hibernated on shutdown? Czy na pewno chcesz aby komputer był hibernowany zamiast zamykany? - + LameXP will hibernate the computer on shutdown from now on. Od teraz LameXP będzie hibernował komputer zamiast zamykać. - + LameXP will <i>not</i> hibernate the computer on shutdown from now on. LameXP od teraz <i>nie</i> będzie hibernował komputera tylko zamykał. - - - + + + Shell Integration Integracja z systemem - + Do you really want to disable the LameXP shell integration? Czy na pewno chcesz wyłączyć integrację LameXP z systemem? - + The LameXP shell integration has been disabled. Integracja LameXP z systemem zostałą wyłączona. - + The LameXP shell integration has been re-enabled. Integracja LameXP z systemem została ponownie włączona. - - + + Add file(s) Dodaj plik(i) - - + + Add Folder Dodaj folder - + Loading dropped files or folders, please wait... Ładowanie upuszczonych plików lub folderów, prosze czekać... - - + + Save CSV file Zapisz plik CSV - - - - + + + + CSV File Plik CSV - - - - + + + + CSV Export Eksportowanie CSV - + Sorry, there are no meta tags that can be exported! Nie ma żadnych tagów, które można eksportować! - + Sorry, failed to open CSV file for writing! Nie można otworzyć pliku CSV aby go zapisać! - + Sorry, failed to write to the CSV file! Nie można zapisać do pliku CSV! - + The CSV files was created successfully! Pliki CSV utworzone pomyślnie! - - + + Open CSV file Otwórz plik CSV - + Sorry, failed to open CSV file for reading! Nie można otworzyć pliku CSV aby go wczytać! - - - - + + + + CSV Import Importowanie CSV - + Sorry, failed to read from the CSV file! Próba odczytania pliku CSV zakończona niepowodzeniem! - + Sorry, the CSV file does not contain any known fields! Plik CSV nie zawiera żadnych znanych pól! - + CSV file is incomplete. Not all files were updated! Plik CSV nie jest kompletny. Nie wszystkie pliki zostały zaktualizowane! - + The CSV files was imported successfully! Pliki CSV zaimportowano pomyślnie! - - + + New Folder Nowy folder - + Enter the name of the new folder: Wprowadź nazwę nowego folderu: - + Failed to create folder Utworzenie folderu zakończone niepowodzeniem - + The new folder could not be created: Nowy folder nie mógł zostać stworzony: - + Drive is read-only or insufficient access rights! Dysk tylko do odczytu lub brak praw dostępu! - - + + Quality Level %1 Poziom jakości %1 - + Compression %1 Kompresja %1 - + Uncompressed Nieskompresowany - + Best Quality (Slow) Najlepsza jakość (Powoli) - + Acceptable Quality (Fast) Akceptowalna jakość (Szybko) - + High Quality (Recommended) Wysoka jakość (Zalecane) - + Current Encoder: %1 Obecny koder: %1 - + Poor Quality (Very Fast) Najniższa jakość (Bardzo szybko) - + File name without extension Nazwa pliku bez rozszerzenia - + Track number with leading zero Numer ścieżki z zerem na początku - + Track title Nazwa ścieżki - + Artist name Nazwa Artysty - + Album name Nazwa Albumu - + Year with (at least) four digits Rok z (przynajmniej) czterema cyframi - + Comment Komentarz - + Characters forbidden in file names: Zabronione znaki w nazwach plików: - + Rename Macros Zmień nazwy makr - + %n Instance(s) %n wątek @@ -2568,37 +2563,37 @@ - + Cannot write to the selected directory. Please choose another directory! Nie można zapisać do wybranej lokalizacji. Prosze wybierz inną lokalizację! - + Overwrite Mode Tryb nadpisywania - + Warning: This mode may overwrite existing files with no way to revert! Ostrzeżenie: W tym trybie istniejące pliki będą nadpisywane bez możliwości ich odzyskania! - + Continue Kontynuuj - + Revert Cofnij - + Already Running Już działa - + LameXP is already running, please use the running instance! LameXP już działa, przejdź do działającego procesu! diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts index 8bad13ce..0b795ca5 100644 --- a/etc/Translation/LameXP_RU.ts +++ b/etc/Translation/LameXP_RU.ts @@ -1715,22 +1715,6 @@ Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! Предупреждение: Преобразование будет идти очень медленно! - - Peak Level - - - - RMS Level - - - - None - Нет - - - Equalization Mode: - Режим эквалайзера: - DEMO VERSION ДЕМО ВЕРСИЯ @@ -2019,6 +2003,18 @@ LameXP User's Manual + + Enable Dynamic Normalization + + + + Window Size: + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + MetaInfo diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts index 8666df7b..6d8470b3 100644 --- a/etc/Translation/LameXP_SV.ts +++ b/etc/Translation/LameXP_SV.ts @@ -833,7 +833,7 @@ - + Source Files Källfiler @@ -854,13 +854,13 @@ - + Show Details Visa detaljer - + Output Directory Målmapp @@ -911,7 +911,7 @@ - + Meta Data Metadata @@ -953,7 +953,7 @@ - + Compression Komprimering @@ -1049,7 +1049,7 @@ - + Advanced Options Avancerat @@ -1230,540 +1230,535 @@ Toppvolym (dB): - - None - Ingen + + Enable Dynamic Normalization + - - Peak Level - Toppnivå + + Window Size: + - - RMS Level - RMS-nivå + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + - - Equalization Mode: - Utjämningsläge: - - - + Tone Adjustment Tonjustering - + Adjust Treble (dB): Diskant (dB): - + Adjust Bass (dB): Bas (dB): - + Custom Encoder Parameters Anpassade kodningsparametrar - - - - - - + + + + + + You can enter custom parameters here! Du kan ange anpassade parametrar här! - + Lame MP3: Lame MP3: - + OggEnc2: OggEnc2: - + MPEG-4 AAC: MPEG-4 AAC: - + FLAC: FLAC: - + Warning: Custom parameters won't be checked at all. Use them at your own risk !!! Varning! Anpassade parametrar kommer inte att kontrolleras. Använd dem på eget ansvar! - + Aften A/52: Aften A/52: - + OpusEnc: OpusEnc: - + Multi-Threading Flertrådskörning - + Choose the number of parallel instances based on the number of CPU cores (Recommended) Välj antal parallella instanser baserat på antal processorkärnor (rekommenderas) - + Fewer Instances Färre instanser - + More Instances Fler instanser - + Temp Directory Temporär destination - + Browse... Bläddra... - + Store temporary files in your system's default TEMP directory (Recommended) Lagra temporära filer i systemets standardmapp (rekommenderas) - + Aften A/52 Options Aften A/52-alternativ - + Film Light Film lätt - + Film Standard Film standard - + Music Light Musik lätt - + Music Standard Musik standard - + Speech Tal - + None (Default) Ingen (standard) - + Auto Select Automatiskt - + 1+1 (Ch1,Ch2) 1+1 (Ch1,Ch2) - + 1/0 (C) 1/0 (C) - + 2/0 (L,R) 2/0 (V,H) - + 3/0 (L,R,C) 3/0 (V,H,C) - + 2/1 (L,R,S) 2/1 (V,H,S) - + 3/1 (L,R,C,S) 3/1 (V,H,C,S) - + 2/2 (L,R,SL,SR) 2/2 (V,H,SV,SH) - + 3/2 (L,R,C,SL,SR) 3/2 (V,H,C,SV,SH) - + Audio Coding Mode: Ljudkodningsläge: - + Dynamic Range Compression: Dynamisk intervallkomprimering: - + Fast Bit Allocation (Less Accurate) Snabb bitallokering (mindre exakt) - + Exponent Search Size: Exponentsökstorlek: - + Rename Output Files Namnändra utdatafiler - + Enter the pattern to rename the output files here! Ange namnändringsmall för utdatafiler här! - + Rename Output Files Namnändra utdatafiler - + <a href="reset">Reset</a> &nbsp; <a href="#">Show List of Macros</a> <a href="reset">Återställ</a> &nbsp; <a href="#">Visa lista över Macron</a> - + Rename Pattern: Namnändringsmall: - + Example File Name: Exempelnamn: - + Opus Encoder Options Opus-alternativ - + Encoding Complexity: Kodningskomplexitet: - + Frame Size: Ramstorlek: - + Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz) Inaktivera omsampling för Opus-avkodare (all utdata 48.000 Hz) - + Overwrite Mode Överskrivningsläge - + Overwrite Existing File Skriv över befintlig fil - + Skip File Hoppa över fil - + Keep Both Files (Default) Behåll båda filerna (Standard) - + If Target File Already Exists: Om målfilen redan finns: - + Reset Advanced Options Återställ avancerade inställningar - + Encode Now! Koda om nu! - - + + About... Om... - + Exit Program Avsluta LameXP - + File Arkiv - + ? ? - + View Visa - + Style Stil - + Language Språk - + Tools Verktyg - + Configuration Inställningar - + Quit Avsluta - + Open File(s)... Öppna fil(er)... - + Official LameXP Project Web-Site Officiell LameXP projektwebbsida - + Visit Official Web-Site Besök hemsidan - - - - - + + + + + Check for Updates Sök efter uppdateringar - + Open Folder... Öppna mapp... - + Clear All Rensa alla - + Plastique Plastique - + Cleanlooks Cleanlooks - + Windows Vista ("Aero") Windows Vista ("Aero") - + Windows Classic Windows Classic - + Windows XP ("Luna") Windows XP ("Luna") - - + + Disable Update Reminder Inaktivera uppdateringsmeddelande - - + + Disable Sound Effects Inaktivera ljudeffekter - + Install WMA Decoder Installera WMA-avkodare - + Disable Nero AAC Notifications Inaktivera Nero AAC-meddelanden - + Show DropBox Visa DropBox - + From File... Från fil... - + Encode! Koda om! - + Disable Shell Integration Inaktivera utforskarintegration - + LameXP User's Manual LameXP användarmanual - + Changelog Ändringslogg - + Translator's Guide Översättningsguide - + Help && Support Hjälp && support - + Open Folder Recursively... Öppna mapp rekursivt... - + Check for Beta Updates Sök efter beta-uppdateringar - + Import Cue Sheet Importera cue-fil - + Disable Slow Startup Notifications Inaktivera meddelanden om långsam uppstart - + Hibernate Computer On Shutdown Försätt datorn i viloläge vid avslut - + MuldeR's OpenSource Projects MuldeRs Öppen källkodsprojekt - + Report a Bug (GitHub) Rapportera ett fel (GitHub) - + Hydrogenaudio Knowledgebase Hydrogenaudio kunskapsdatabas - + Adding file(s), please wait... Lägger till fil(er), vänta... - - + + Access Denied Åtkomst nekad - + This usually means the file is locked by another process. Det innebär oftast att filen är låst av någon annan process. - + %n file(s) have been rejected, because read access was not granted! %n fil har avvisats, eftersom läsbehörighet saknas! @@ -1771,22 +1766,22 @@ - + CDDA Files CDDA-filer - + Sorry, LameXP cannot extract audio tracks from an Audio-CD at present. LameXP kan för närvarande inte extrahera ljudspår från en ljud-CD. - + We recommend using %1 for that purpose. Vi rekommenderar att du använder %1 för det ändamålet. - + %n file(s) have been rejected, because they are dummy CDDA files! %n fil har avvisats, eftersom det är en CDDA attrappfil (dummy)! @@ -1794,17 +1789,17 @@ - + Cue Sheet Cue-fil - + Please use LameXP's Cue Sheet wizard for importing Cue Sheet files. Använd LameXPs cue-guide för att importera cue-filer. - + %n file(s) have been rejected, because they appear to be Cue Sheet images! %n fil har avvisats, eftersom det verkar vara en cue-avbildning! @@ -1812,17 +1807,17 @@ - + Files Rejected Undantagna filer - + This usually means the file is damaged or the file format is not supported. Det innebär oftast att filen är skadad eller att filformatet inte stöds. - + %n file(s) have been rejected, because the file format could not be recognized! %n fil har avvisats, eftersom filformatet inte känns igen! @@ -1830,729 +1825,729 @@ - + Scanning folder(s) for files, please wait... Genomsöker mapp(ar) efter fil(er), vänta... - + DEMO VERSION DEMOVERSION - + You can drop in audio files here! Du kan dra och släppa filer här! - + Initializing directory outline, please be patient... Initierar mappdisposition, vänta... - + Open File in External Application Öppna fil i externt program - + Browse File Location Öppna målmappen - + Browse Selected Folder Öppna markerad mapp - + Refresh Directory Outline Uppdatera mappdisposition - + Go To Parent Directory Gå till överordnad mapp - + Bookmark Current Output Folder Lägg till aktuell utdatamapp i favoriter - + Export Meta Tags to CSV File Exportera metadata till CSV-fil - + Import Meta Tags from CSV File Importera metadata från CSV-fil - + License Declined Licensavtal avvisat - + You have declined the license. Consequently the application will exit now! Du har nekat att godkänna licensavtalet. Programmet kommer nu att avslutas! - + Goodbye! Hej då! - + LameXP - Expired LameXP - Upphört - + This demo (pre-release) version of LameXP has expired at %1. Denna demoversion av LameXP har upphört att gälla från %1. - + LameXP is free software and release versions won't expire. LameXP är kostnadsfritt och release-versionerna upphör inte att gälla. - - + + Exit Program Avsluta programmet - + It seems that a bogus anti-virus software is slowing down the startup of LameXP. Det verkar som ett antivirusprogram orsakar långsammare uppstart av LameXP. - + Please refer to the %1 document for details and solutions! Läs gärna %1 för detaljer och lösningar! - + Slow Startup Långsam uppstart - - - - - + + + + + Discard Stäng - - + + Don't Show Again Visa inte igen - + Urgent Update Viktig uppdatering - + Your version of LameXP is more than a year old. Time for an update! Din version av LameXP är mer än ett år gammal. Dags att uppdatera! - - + + Ignore Ignorera - + Skipping update check this time, please be patient... Hoppar över uppdateringskontrollen den här gången, vänta... - - - + + + Update Reminder Uppdateringspåminnelse - + Your last update check was more than 14 days ago. Check for updates now? Din senaste uppdateringskontroll var för mer än 14 dagar sedan. Vill du söka efter uppdateringar nu? - + Your did not check for LameXP updates yet. Check for updates now? Du har inte genomfört uppdateringskontroll ännu. Vill du söka efter uppdateringar nu? - + Postpone Skjut upp - + LameXP detected that your version of the Nero AAC encoder is outdated! LameXP har uptäckt att din version av Nero AAC-kodare är utdaterad! - + The current version available is %1 (or later), but you still have version %2 installed. Aktuell version är %1 (eller senare), men du har fortfarande version %2. - + n/a n/a - + You can download the latest version of the Nero AAC encoder from the Nero website at: Du kan ladda ner senaste versionen av Nero AAC-kodare från Neros webbsida: - + (Hint: Please ignore the name of the downloaded ZIP file and check the included 'changelog.txt' instead!) (Tips: Bortse från den nedladde zipfilens namn, och kontrollera istället den inkluderade textfilen 'changelog.txt'!) - + AAC Encoder Outdated AAC-kodare utdaterad - + The Nero AAC encoder could not be found. AAC encoding support will be disabled. Neros AAC-kodare kan inte hittas. Stödet för AAC-kodning kommer att inaktiveras. - + Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory! Placera 'neroAacEnc.exe', 'neroAacDec.exe' och 'neroAacTag.exe' i LameXPs programmmapp! - + Your LameXP directory is located here: Din LameXP programmapp finns här: - + You can download the Nero AAC encoder for free from the official Nero website at: Du kan ladda ner Nero AAC-kodare gratis från den officiella webbsidan: - + AAC Support Disabled AAC-stödet är inaktiverat - - - + + + LameXP LameXP - + You must add at least one file to the list before proceeding! Du måste lägga till minst en fil till listan innan du fortsätter! - + Not Found Kan inte hittas - + Your currently selected TEMP folder does not exist anymore: Din aktuella TEMP-mapp finns inte längre: - + Restore Default Återställ standard - + Cancel Avbryt - + There are less than %1 GB of free diskspace available on your system's TEMP folder. Det finns mindre än %1 GB ledigt diskutrymme i systemets temp-mapp. - + It is highly recommend to free up more diskspace before proceeding with the encode! Du behöver frigöra mer diskutrymme innan du fortsätter med omkodningen! - + Your TEMP folder is located at: Temp-mappens placering: - + Low Diskspace Warning Varning för dåligt diskutrymme - + Abort Encoding Process Avbryt omkodningsprocessen - + Clean Disk Now Rensa disken nu - + Low Diskspace Dåligt diskutrymme - + You are proceeding with low diskspace. Problems might occur! Du fortsätter med dåligt diskutrymme. Problem kan uppstå! - + Sorry, an unsupported encoder has been chosen! En kodare som saknar stöd har valts! - + Cannot write to the selected output directory. Kan inte skriva till den valda utdatamappen. - + Please choose a different directory! Välj en annan målmapp! - + Load Translation Läs in översättning - + Translation Files Översättningsfiler - + Do you really want to disable the update reminder? Vill du verkligen inaktivera uppdateringspåminnelsen? - - - - - - - + + + + + + + Yes Ja - - - - - - - + + + + + + + No Nej - + The update reminder has been disabled. Uppdateringspåminnelsen har inaktiverats. - + Please remember to check for updates at regular intervals! Glöm inte att söka efter uppdateringar med jämna mellanrum! - + The update reminder has been re-enabled. Uppdateringspåminnelsen har återaktiverats. - + Do you really want to disable all sound effects? Vill du verkligen inaktivera alla ljudeffekter? - - + + Sound Effects Ljudeffekter - + All sound effects have been disabled. Alla ljudeffekter har inaktiverats. - + The sound effects have been re-enabled. Ljudeffekterna har återaktiverats. - - + + Nero AAC Notifications Nero AAC-meddelanden - + Do you really want to disable all Nero AAC Encoder notifications? Vill du verkligen inaktivera alla Nero AAC-meddelanden? - + All Nero AAC Encoder notifications have been disabled. Alla Nero AAC-meddelanden har inaktiverats. - + The Nero AAC Encoder notifications have been re-enabled. Nero AAC-meddelanden har återaktiverats. - - + + Slow Startup Notifications Meddelande om långsam uppstart - + Do you really want to disable the slow startup notifications? Vill du verkligen inaktivera meddelanden om långsam uppstart? - + The slow startup notifications have been disabled. Meddelanden om långsam uppstart har inaktiverats. - + The slow startup notifications have been re-enabled. Meddelanden om långsam uppstart har återaktiverats. - - + + Open Cue Sheet Öppna cue-fil - - + + Cue Sheet File Cue-fil - - - + + + Beta Updates Beta-uppdateringar - + Do you really want LameXP to check for Beta (pre-release) updates? Vill du verkligen att LameXP skall söka efter beta-uppdateringar? - + LameXP will check for Beta (pre-release) updates from now on. LameXP kommer i fortsättningen att söka efter beta-uppdatyeringar. - + Check Now Sök nu - + LameXP will <i>not</i> check for Beta (pre-release) updates from now on. LameXP kommer i fortsättningen <i>inte</i> att söka efter beta-uppdateringar. - - + + Hibernate Computer Viloläge - + Do you really want the computer to be hibernated on shutdown? Vill du verkligen att datorn skall försättas i viloläge vid avslut? - + LameXP will hibernate the computer on shutdown from now on. LameXP kommer i fortsättningen att försätta datorn i viloläge vid avslut. - + LameXP will <i>not</i> hibernate the computer on shutdown from now on. LameXP kommer i fortsättningen <i>inte</i> att försätta datorn i viloläge vid avslut. - - - + + + Shell Integration Utforskarintegrering - + Do you really want to disable the LameXP shell integration? Vill du verkligen inaktivera LameXPs utforskarintegration? - + The LameXP shell integration has been disabled. LameXPs utforskarintegration har inaktiverats. - + The LameXP shell integration has been re-enabled. LameXPs utforskarintegration har återaktiverats. - - + + Add file(s) Lägg till fil(er) - - + + Add Folder Lägg till mapp - + Loading dropped files or folders, please wait... Läser in släppta filer och mappar! Vänta... - - + + Save CSV file Spara CSV-fil - - - - + + + + CSV File CSV-fil - - - - + + + + CSV Export CSV-export - + Sorry, there are no meta tags that can be exported! Det finns ingen meta-data som kan exporteras! - + Sorry, failed to open CSV file for writing! Kunde inte öppna CSV-filen för skrivning! - + Sorry, failed to write to the CSV file! Kunde inte skriva till CSV-filen! - + The CSV files was created successfully! CSV-filen skapades korrekt! - - + + Open CSV file Öppna CSV-fil - - - - + + + + CSV Import CSV-import - + Sorry, failed to open CSV file for reading! Kunde inte öppna CSV-filen för läsning! - + Sorry, failed to read from the CSV file! Kunde inte läsa från CSV-filen! - + Sorry, the CSV file does not contain any known fields! CSV-filen innehåller inga kända fält! - + CSV file is incomplete. Not all files were updated! CSV-filen är inte komplett. Alla filer uppdaterades inte! - + The CSV files was imported successfully! CSV-filen importerades korrekt! - - + + New Folder Ny mapp - + Enter the name of the new folder: Namn på den nya mappen: - + Failed to create folder Kunde inte skapa någon mapp - + The new folder could not be created: Den nya mappen kunde inte skapas: - + Drive is read-only or insufficient access rights! Diskenheten är skrivskyddad eller åtkomsträttigheter saknas! - - + + Quality Level %1 Kvallitetsnivå %1 - + Compression %1 Kompression %1 - + Uncompressed Okomprimerad - + Best Quality (Slow) Bäst kvalitet (Långsam) - + Acceptable Quality (Fast) Acceptabel kvalitet (Snabb) - + High Quality (Recommended) Hög kvallitet (rekommenderas) - + Current Encoder: %1 Aktuell kodare: %1 - + Poor Quality (Very Fast) Dålig kvallitet (mycket snabb) - + File name without extension Filnamn utan filtillägg - + Track number with leading zero Spårnummer med inledande nolla - + Track title Spårtitel - + Artist name Artistnamn - + Album name Albumnamn - + Year with (at least) four digits Årtal med (minst) fyra siffror - + Comment Kommentar - + Characters forbidden in file names: Förbjudna tecken i filnamn: - + Rename Macros Namnändra macron - + %n Instance(s) %n instans @@ -2560,37 +2555,37 @@ - + Cannot write to the selected directory. Please choose another directory! Kan inte skriva till den specificerade mappen. Välj en annan destination! - + Overwrite Mode Överskrivningsläge - + Warning: This mode may overwrite existing files with no way to revert! Varning! Det här läget kan skriva över befintliga filer, utan möjlighet att återskapa! - + Continue Fortsätt - + Revert Återställ - + Already Running Körs redan - + LameXP is already running, please use the running instance! LameXP körs redan, använd den redan startade instansen! diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts index 84334e8b..4dae2f05 100644 --- a/etc/Translation/LameXP_TW.ts +++ b/etc/Translation/LameXP_TW.ts @@ -1703,22 +1703,6 @@ Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! 警告: 處理速度會很慢.請<u>不要</u>抱怨處理速度慢! - - Peak Level - 峰值水平 - - - RMS Level - RMS 水平 - - - None - - - - Equalization Mode: - 均衡模式: - DEMO VERSION 演示版 @@ -1997,6 +1981,18 @@ LameXP User's Manual + + Enable Dynamic Normalization + + + + Window Size: + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + MetaInfo diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts index 13b8efa3..6e4a4ffb 100644 --- a/etc/Translation/LameXP_UK.ts +++ b/etc/Translation/LameXP_UK.ts @@ -1710,22 +1710,6 @@ Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! Попередження: Швидкість обробки буде дуже низькою. Будь ласка, <u>не</u> жалійтеся потім на швидкість обробки! - - Peak Level - Піковий рівень - - - RMS Level - Ефективний рівень - - - None - Не задано - - - Equalization Mode: - Режим балансування: - DEMO VERSION ТЕСТОВА ВЕРСІЯ @@ -2014,6 +1998,18 @@ LameXP User's Manual Інструкція користувача LameXP + + Enable Dynamic Normalization + + + + Window Size: + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + MetaInfo diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts index d29a90a5..7542e2ee 100644 --- a/etc/Translation/LameXP_ZH.ts +++ b/etc/Translation/LameXP_ZH.ts @@ -1703,22 +1703,6 @@ Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! 警告: 处理速度会很慢。请<u>不要</u>抱怨处理速度! - - Peak Level - 峰值水平 - - - RMS Level - 均方根水平 - - - None - - - - Equalization Mode: - 均衡模式: - DEMO VERSION 演示版 @@ -1997,6 +1981,18 @@ LameXP User's Manual LameXP用户指南 + + Enable Dynamic Normalization + + + + Window Size: + + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + MetaInfo diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui index cc124bba..377e8131 100644 --- a/gui/MainWindow.ui +++ b/gui/MainWindow.ui @@ -1509,8 +1509,8 @@ 0 0 - 602 - 1750 + 613 + 1794 @@ -2261,7 +2261,7 @@ - + Enable Normalization Filter @@ -2300,7 +2300,7 @@ - + false @@ -2347,7 +2347,7 @@ - + Qt::Vertical @@ -2363,31 +2363,6 @@ - - - - false - - - 0 - - - - None - - - - - Peak Level - - - - - RMS Level - - - - @@ -2401,16 +2376,6 @@ - - - - Equalization Mode: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -2440,6 +2405,74 @@ + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 6 + + + + + + + + false + + + Enable Dynamic Normalization + + + + + + + Window Size: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + false + + + 3 + + + 301 + + + 2 + + + 31 + + + + + + + false + + + Enable channel-coupling, i.e. amplify all channels of a multi-channel file by the same amount + + + true + + + @@ -5230,9 +5263,9 @@ - checkBoxNormalizationFilter + checkBoxNormalizationFilterEnabled clicked(bool) - spinBoxNormalizationFilter + spinBoxNormalizationFilterPeak setEnabled(bool) @@ -5374,9 +5407,9 @@ - checkBoxNormalizationFilter + checkBoxNormalizationFilterEnabled clicked(bool) - comboBoxNormalizationMode + checkBoxNormalizationFilterDynamic setEnabled(bool) @@ -5389,5 +5422,21 @@ + + checkBoxNormalizationFilterEnabled + clicked(bool) + checkBoxNormalizationFilterCoupled + setEnabled(bool) + + + 141 + 175 + + + 328 + 250 + + + diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm index c1d23ea228676be118cf637bff25194fbfe7aa41..10bef2ea16e0ecdcfbb31d2a457c900d21a756c9 100644 GIT binary patch delta 5121 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 delta 4829 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 N&khm~F1=(G^M8%eMtA@K delta 4545 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 diff --git a/res/localization/LameXP_FR.qm b/res/localization/LameXP_FR.qm index bf3dd2dbe3d0301e947cb98025330222aaa37b58..a787f0d3accb4b137a9d8e1a8276e15022740cbf 100644 GIT binary patch delta 4541 zcmX9>c|cA17yo?kyZ65L?pv;ep_DcvM5$EvB1A>@r7TH=tWAVovNTyzo{Tb5CM0E$ zU6wSqkRl>eG?w3#F_eA(9s29Mcklgvzvq0;=X}oj9yuW-9uo{bk56k^{NlHi>(;H$ zPR=}C|Sr|(X9LO2%+*gu7E;}URx5rl>`AZ!_gPjO)U14yF|1E(ItZi@h%dk2?+ z!9c`FxV0_@_5cI7YzEqw|FF!^>?Ha`U}2pDdgw+AC|Sc z-Dtbr!w?}H*yxEN(_+BHX&5?64@~|a{4T5pJ{4n_?`5F>YmB|}Cppp+W3Q%y_1uH; z=P0n^OPHV`J5>5%4NMV%3DXI%yNfZg%@g3W7bdPeLXqSmIL!p`@WZ5nYJgjeY2gI! zmiGuHH1N>|)Bm9NqY5y~Ef~ye66Vcq1!kR(pDiMQtgVP@{(aj6uBFKc6KPZ{s7okhvEiWsP;!?fEnGWG1{2NIU3B<*oHS{z(YTlR2KneZo*Qt zngRQ5S;ptzfhz*by*G`>n%QUvto>nG6AxCri>T5yv(b9(XtclPu&bJSuzq2zcdIG$n~PXwl_d=DJISi-t%%l@?B9chU_E@;TlbS-E*kcB z_I}`cEXVGXwTa=l7a?GFA2{B|1u$F7DI-e2)TNw0pc2^N!^xXZ0{^z+EK-R&d(Lxh zM@13E+__GVX9B?^Ime4j2$&?!!!!}txriGizoyJoI&;B)cLn?lxvPX?+xz(U%UGy_DO#{v+_M1D9vn z3ON3dJ1}(}Q2z^eG{lC!E9Oqg2Z4*W-1#?7z&~N!9fu(DBr}YA(sl;m`>N4?{K(b$ zjv(m$xPP7I0xP$3Zw8eES_Svv!UaG-LBT>ofnUEUq;i7Vex$;D`B$RILxr6!*_N{u z_PvN|ce9O0ct@L7f?`mbH!wFwG1!#i47ODSUXBE7`#>@BCIj~67zLr7VMCr`Y6uap zPrV}a`)89!DkA3-48QGFL^b>Vf3;%ikLO1fE8R(d*w#TL#-mWXdsx%N|ATd3C#Ve;`k>MlBh(*l~V+V^(DoX(lQ|Rw&Gfbiij}S zUvX;$G5F>&MaAtifLyBhDmwz6>vTcDzLd9W-VPZ_|nL6!e03>ehwwQpxvQ8Ub_*;|H|& zm`F9hjvwIZNuEyPhxY0QtZUB?izji)E$2rsUq*~P$3;NkG4W{7U%)uw)z`zlk=U@sLkAK!kZ)VO%Y?GrZIB>4iNheM$VT+<4No6n^*Q zOt7CG@%w`9NaIy}u9D&~S;OZQttQdk%NNu%5J2Gy>8p5$RSr$+nR z6QO;f9;{biq0^X`q~hU%OJ^eXt8Agy$8#hJ@j}2`0@#fcMtt@l=9UPfy%rHtp~4v7 zWZ?CEAvE@H;Frt7{DwZje`+BzjRIS55EgrpBn+7<#J0<#_oIb%8OE+EjdbFRU+ zQdv)CHCJ$jrYBq z=))J%0I^E+37}%Kb`%F&8YsCRx`@8HC#Vsci++9VNDU&y@!JSnW34zo>oxVQhvEd* zoJf6CoOFl~`cN*e$h!&FeU2C>)AIxO#m)JYt8=kp#y&?d)>_=VjMT<b1`t{s(7PC?mgh==Hjgeid>y2Ry`wV-t04eQQMDWN=Y*g zteJ~a>P4zvnxQlqP1{AgDov%{U>?hq&D0dn{8VN0t@M7=BW1g<>A>otO8bePz_S!( zhbB*Gf?22R_Aec0Rj2IfL#J?&#^sXb)TGPGX%V!{e64cfh7&Y96)1lmHkI1=IOWgD z4K#OzD;IMyKzXEcP0%#jeuy%8E!oo^%FR)P($F5tl+sArew1?Ca7xRke#*@Aq$zP{ zmA|*_NApb&;}^-&`SW4r@ekp^lhw*gg`^M%f|QpZk=M?g@=6zK&f4S3s(-%I&rVr= zb`?z%LyUeJOT)o5mFPu6Bn7C%`_VMz<)~WO6aPm|RGB?J1T>kTvTII3eHo(iXieJ< zvs3lx>rXlBtm-#NN$m4ed1a7--l|slYl)o;m#X{^y`k+}s)n^?z+XS9#;T0e8h5DX z<65f~YMbC&Bq}~? zyQi;cDxRkvGKaRfZ=;@?P8dDo)zhzCA^we4&v?`u&}~=Gq`{2|vU+wTWpbL8I?7`z z&@fUR6J1G_>7b75PTFJR(P-T|tABY#7$y%^Z^+Zbz|1u2lqD;GKX<5qjkE;w?5N(| zji@p$NWCYTV%lD+-dpboNCE2HQMskZVvVsl#<}sPMR=fFPP~mX<}P){II(;8Kga} zvZN3niOBYoG_7YdV6lIredjGjbSR``gi40Fw7zG!l;lQ8-wBq|2LxFIRgIG&3ysO0_pZYHNX*D;~c#uhc(6xdPirM7>)Cp|A1@dnjSh+y7qW$ygQL#>^h_w zP7^e1wL}wq&x^(}cTMnrbc*9i<8!^Eq0b!6cFTBR(QD1l2N7W1bedhc|09KV&=fY^ zOSh#MO;JiYnBtD6OiR>i6Rx>wPU)JV&{RC9C^Ot_x?_eom&PmhUjr?nnWPm&)` zwZ7w>fCOK%ailEf+CZ7;GIh8%aC9QYv7^!UbJC8Ul?jahOS|wvI@RjSXFq=6bz5!p z6~a*wu8r+z4W@jijd!4IIYeuJ$))H0yEoeRoHk(#Z7?rZo7JM06gEk_CpC=<<%Tvp zY(KE9TATZp`0Qw=-Ty0zgOH#-3bMaDYmYa$l4Lq+3yw|!F3r$hxYx=K2$ksvsZ(f< z_DY7H#9^4WG$aPh+gU3r{^;EE%bT)}c zh{hhe4z<4n7E!vcS0kv=EZ4bBY6_@KbRJ2!NyN%@leZFpOG9*1wiC;24(TGy>*=Ct zsau#R0bi4J8*@^rfm!G_y&q0v_Bmb32upJ7y)JF`6&T}8Yz$Vq{Rc>vUX9Zo%1ozH ztkxZFL!q62qAT#GE%G+&PPbSB{JlVT<`TIeZq!}0B$v~RbY(jqQup4YdwiUpXVvR! zBfP=P4(ncZqF#5>PWR2NE6pn{b>D7B18eg1{1z(ZjeqH-3JSs2RBs|A(v_v*xxTfs zmS$>eeVa9e;p%Pr4mR!SmRM=*)pVeGt3IS+936klxS^?=q0JP1deeOR+fKjBNuW#l zEd8!kV`#3kZM3^ZefBB>viObu$ncL;2_y9d3CTc@ApM!6q=X$4^fl%&z>P3{-L*Fq z-F1E4(^6nWg#NkC38>ZSUqvWj}yCt1^wM9eyGFY8X{(AX9w zTQzA*7avdADm<3v#W}LI!jq^PC)=DLYWBB~?Mmu_E?U`t%5h>yr9A4Vg%nl1Ji2o^ zHBU(%Grk(ExuYC5hq_+(=kknHDzN}FdFI$lbZM`bBQ|=FaD~cCk~>hB+#*NkE;JUJ zng(-nV#rGZ-e1nJCZKct<-CK#Y4D4d5190(+xA;Ie`9Y_psn)pC`#xxJGp4>3X-^D z`NB?Xx`HLh6-U332g&k1g`Q6Gm;YImKvG&T6Kr5)zH>9*4f(e-D=dr;m+<*jXAg+^ OH!r3s^Rr8IiT?*rQ)d+b delta 4674 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 HRg>~Rhys4Z diff --git a/res/localization/LameXP_KR.qm b/res/localization/LameXP_KR.qm index 2dbce25729abf20d29c841b63db6ef6850ff5025..5852e35ed8d44329a32bed9b1bd22a48d557002a 100644 GIT binary patch delta 4464 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 Rym;u^#X#+$F-0F%{vRYURwDoa delta 4646 zcmZ`+d0b8T|9(E_o^$R!=PpOd&TUbm$r6e-Bx|N3OHE8BX;LU#mMoW%F$OIzMvPEG zDf`lpB{4}fA)=Wy&0u6#g9*d;O|RFye*gUbxUcs)=YGy-dEU?adEO^0N4S+Mq*z7w z0MH+Zk^#XJ@Mzl<0~?#->&+AcfxUBpA%lS_`+;FIfh8fps30)scR)}tV0R`k)(H67 z0TYXW+HZiFqkzsgn&RV_)Wxk#`QT6Tz^Z*s@$ui_%N>Aqg%F0&BH0ZP#?c~sw?K%Z zNe-k!SVQA~`Vqp}NWi%xgkOq*+jAh))5fNyKzK_FeNZ5eJpvRY!hWLw6k4G7&@f=u zX}Gn&1nlX6p&Qo&rmpQiT`N{chS$nYV2G(~pLeDw? zCD$=t>i`o*9{+TKe>YvF>(~I)Ys0yUq|8s>2YP!E#$mD{Tz^N}-vkc1j zrDe<_q>geK%q%yBgLSQER;L_+*!ir5hb7RnHEXrB7R+Tn>+KT(ED%}WgYN-XJLX>3 z0OmNI_21LM2~6Y3J{MFpAex2j9uC&opM}=aLMcPdSzNbCEkoJbmsf%6Q!M3SELe+D zw(i^nApJL%w$lpOm%+Bb%LFcVWVyE|1HLz!qF?H#$Yh0G$|B12zSIgt$9|>Q={Uzd zivY8I%JFu+fesOzI<^dqx91FjRY39yxt1HI{0-c);llo)5*)pVi;6!D=DCxL6CMIAms=c0yr?YU5~t8{ zmmc9(Xm?WSskrYYC*Y8YOW91NcWWxQeE=;m<1LrH<_*wT!{r&((<4gwd_xN|RE5P^FVchiY>l9A5cbC?1I9%+iNdUFr`Miahq++&wG;M-{K z<**7sZ{`{=TmYKQR=MX1(Cp=ACL%1d(m9l`8V% z=*T2h{7gb)>sqtF(8~0SDw%&m;OSEs*;n0K_^~SQhpWKd`fkBy9NkwP+cEQ6us)8s=RR;u+*vEE8R#9 zTk5m&-q>l&VIoQAJ;WyPvwP`4M3YAfC&{+rbJet6Z782tw1U)g2VYQIPdH5E&)J*@8s72e zn{$B01pdOKGT_D@zIYUE^LnFMuQrdN*IR;f@N-iA z)ouJ$Peci8F0ZF)D}?m}sicwv%-$NK=}oe*?HQr8VUe(Xr~|R$ zcVXAbO~k%q!tOGHr@>RmSzScO=`QU5kP61y35T92z;b7y(DfRz_Di8?`f>8QKEjpb zDq>foP~o0H-c=w}{7%P?8zEGhXr3qIgj;z7fG;KqHU5+Z>tLZ~YZ*+;xvNm?JA+(S zBivInu-5B^hk3NWKa+*`V`h>z=|!a?9juduXrnFzxu|HTP?S4-jw2nNnAzvKA6aGs?aY!JQfkU)7+_-|Q<8QO* zm-`cW)L_xSKk+KJl^D8(a9sbF7`pRs;4^P=JZk|g_7f)_B7|Pri_7w^f%RG~exuOy zg9F6%hbcd2GsNwCy8&-g#Oy_+4UTWby)#{bH0$;05Imc37q*R@nzjH7uLpHerM`+>QxQCmrL zkoZb@OR+cX{UNvbAZIdU7lcGJdI^y_OC+`IUO^ z$Vp%}6V!84saR4i)bqI|R1{2|`u$|`#Z2}3c?8192kH&w@pSlI>Mf%P^;ZkjJI+z9 zuSip8w)P=itXA)mN=Tr`s}FRZL>dvOKCqOeZQK_1K|=x=|2cJjV+{H6A3M~=g)$X; zf%@W~v}?BnbxC*fOYx?<`oTxu8P#{rB$C6AG`ni8O${1xAV~+mUnBlX)9fzQv~eVk ze^IDud;bt=nMq^cg0TB%u*SVT%{Hb)<2fLJay3}vGfYjaTc8=Zoiy)Sh$cWsteh9G z2{`nUX1CUibYMW0S`(r%Q$ysbnQ@rL75ZxyRJu@mH(Imw9pz45kH4f~u zT(e>QLEx@QllBJ>){$wp$b|8bwVEyWOR1q+r`fiFxZ?9jvv=YK@~;|ANhw85qo#5Q zrSi^Av$xL8)I}>GIgvJ1No4N(X*x9 z33Q%qK2r7z!b5vh$~{T>(C(57{Gy09+0xCJBw+hpsVXK2Se7N#dbR}<=1cbu@KlW6 zQk}IAaQ{c?pW1cQCOb?2jxd_Q2KY+<&Z25upD1^)cBP%3kbA!kr`Fh0?$i1fwa(RY z-xgiSjJ#xTkxp_-ko!L*gen)yA@?Z(J!i|~!?VHk`{fA^bbuq}@>d{PX}?^K7$Os$ zyyeMWR+QNKrdVGn$95?swQVDt;!HHbfID)E8$n;OSxz5p3;a4v-WGO-U{k@p`b<8P*yPY);g;U~#w2Al`eCCg_j$b~xP$i*Td>V91=Z|4Wt zy_Ro0s0EJhm#ggB0BiQhRWk{JR=iwejx$(sZ!OI$4BdM6c%bch`YBMFul3Y7Cwn=l z^>rq7*j1z*)wYZ>^qDs7_CV^C`f05bHs3S2nLO&WTa7D$`RBD6HL=v$uhwSe z{zax3rY*G02K-&LMH?ze#Gt*ZYYTKt)n02y37l@Bt$aeq-f>cU_hv`n#P8aB3uv3? zUu*A`hY_JSX`dG~1A;qiUw8%p`%T)0pR?!_q+I(pC>@wvp?$k=8C3XfmU*jUG-(xG zOH)_sPrv&VnRH&)a?c=g$BDWQ=?^KNnL6W_m%!8}oh|o~;YOY9BPYPiOXv9ZE{Ro` z&i(!g`jYU{`GvZWN##)dhID3@E=VB)MFs1E#w7v&7JrJ&YoTu3)E)Hg^^0zHO*%38 ziS4HgJbR)`D0vE~5_C&Hv!$kGsBWbb<*(ar-FLb4e0Yzh*f3YOY9mcB=e%xb%Q`T_ z0p0Gj%>##m}_hnKPC;eBO z2*@QD^x<2Hf7bi;vF&J{&pYa8C&|eu}-8VpNbJY%(0{m*K*j58;5Slnr*1RIm2?Kj zF$N1E3GMK-#?W3}M~!ZCgY~xr;&Z#boEG5IwQfyTo#MQfs-A_qi{rwgDvKK(FKqVkNpD0qS zjBPcW4824N4!r}WOjM$#lg0IFRHmd+ZH+EgqC<+Qv0JXhCcBe{c_|B0yO1R|C<(dr zp4?k8ebs|Hkukx_+MZ8=V{??Gi042^p|ahU@Xo1F@(zxo&aQ`Yz@i^eK0!I0+>f;B zCnbL#<+W6&6n(!8SoF1WA;T8PuU0CLeV}5?R&J|Eqx$m7gE^~!@4b{a!IbZlYoft? zKBz$K#YoIT9HL+@>C^G>cq`lFUhOf4o-M#6*if4qN7s=QBM^gVc+dw16$$+;2hWTT zpB9}EJ|{XZ);w`}+ss9o?OV%iA;K}4-iZBgBp*Nne9pBvyy(m%(Z?CVw3-cO(98)m zV;rU9kr?!P(Yk&)q3Z9b2j8#&Ef8)bF)&V>MVkM{r1R6+2^ T=>J}og8WDSpEsSaG_L#~4E1=M diff --git a/res/localization/LameXP_RU.qm b/res/localization/LameXP_RU.qm index 873ad732b3abce084e04eafbc48076b796364182..d31b82b2e79a188ba4157726e67c807ec313f0ef 100644 GIT binary patch delta 4413 zcmX9>c|cA17ysP%?!E85`5L9=?>0|JnCD(&83%7ZA72$N0&2QI*V2L~MSMDG!SKwv8RT2cVp0x)97cA(>m zHmhq|hmlT~fX8(hb;TZxQ7F8BB1dyJ!@F-1P}aN6ep&RxGR9*tnp*&@I*ZY>qJY+66jV7&KD%6c69i>^^1mhiv53ykG-1YDuSPTs>*C0V!gKdcTl8cdx- zaOIg|npF)sSc++D&rl}Q5SVNLbT!2ET=L3%!K?)VKuiQ?XY~aB4#J!h^uJdmK9V;SQyDF>w*%Qj2{>BNUq|(LjoiCW zfj9|nHPDN^3Kioz0MDchC!_D@yD~y<6Of+9wA&vFoLa>g_}2ozI5CDhgTWXyFvgc0 zfq(^!$pAyZ){!w=Qw_#sHPd_OOkmbnrvJ%rfPFsWTH6Rld7c?^*co_N%lyolNa=xe z#{bYLFsemNKs6n-N~_P5xCFHHX0|ll2d;%OTk9x}uW8J#1IED4S|+t64ahQQGRkKG zJvX-5elOZ={XOPZI#I=bcAM?v-e%W!Vs0xxfUz#u_mNuZHZc{IT7n~tsdTgkh6OYK zoXiJf0j9bC1u(|ZO!LCy!0Evf<_TGIdx_-zOfdW_32WOMF!YtkLW+SmK@!cl3Lv7p zMBIJ>xHnMJaToDp+c$~Bq~*jTjik%V`9zAF5|8N#=&P*5nrYRwzkzCwJ4HNRDj&0#utw zGPUN^7g|Zyj7`7;XUW-_w$vAfl8fR=AoG~yYEuv3_7TZLXF7IsrliJU9x$l1%~pCy z>bxfqn6vfatd-3Msqlaxl7E(3M1BKfxJ_zrN2U90E_HMxisX&gpJ82WKc`DaCJ&>o zPLYl>qR_{uNqujIgOO!OCzdiK0~hoh=g2J9cje48kI~`p%H9?N7KR zYorP6Tf*t4bgROSXgfrjYJ7wODVL^IBmgBA(u{%;KZL^& zDZ%!Sq(vpfj&%y@om4q6aIv&(0)?8BEq(M?9w4|#zlkn@&ZQg6EC>T`JY^-r%7DXL zSnm75`WTjrYXrnKEVqjs*EX^I@IWef6RW8oMf9#>+kHp|-WRhSL+GH9^{j1|?}dzH zd-Uo?NUvart_lGhN3x!sU8ye_)^orB3N)Ji*{v6_B7hwqmjpZfQNsE~uBLvlW*1tF zrOb8g((ptu_HWqe_0_4+0daYH)*kS!g*A3FG*WXm2>ckLX*KH#aA)?e6%`dFY+ z!&V>E0Mb9%+5kHELk!!nnd)K&_M0DlkE#7(8PmQTz8@6i!?kOS2X+nSjC{9}N`!LO znePD29nS9YX~5GpE2)02E)PkYYs-&-U{{tjH{0TiL5VVjM+&UMb$kbpks zx=gMoK^@Qa?m8QIIDm8ea)lb#m>btjFgo4mCbUo;d^&J`9={P%XSm7UiNGTtZuXkz zz_N*4Xu}ZTKEs74Q(`OEaw|Njaoq-TYdReO!as7GQuW>CN@0HuxB1R?5BQyt zDJ6!-as`Xd0jqPkyXQ#m3PZUEt`WfhdU6k*5fW29xkozkQ&z=2&U7b1_u!t6p^_Pu za8LIXL&vo9-f}TF2M5={>W<55A$sPSZE($pMuYObDf?$!Cx6x zO)Z(l-|l*gMwBOiFTIQ4Op^AmezhKiEE?2RnYdV zdMC^IOar4xCM(PrNFLtHZoZ(XJ8`n2ZqC5l99iXSqMxo=R&_a+=6ZsDj8d!H-6H2b zD2X?fa{fsKu}qMgJGv5k(&Qapog)1UmD`(8QcuI=u9oC(Xuf=)`&e>gCLcOdM(f2_ zxkoDLfUAmsbV{pEU^Uo+)Pvgx@a(ejm#deB~TOunYY zg@j`6pdTMlUM!EbG9UpyBagk4PL1C|o)GmN)qC=U)~jID$K*-dPtpXklka-Y(rmGl z?-nTV-u>jeU)?6!OXPc#h)msY$qy%Pq(Pb|KQ=uH_%m8wbek;OD1YQdHNSpbUgh0^ z`qoJP;#{qMzRFpr_EZ?A7XU{$D=ZcC$a*J*ZD1K`$~=Yrt45&zUB&1{au`rw}Icb4nx$6v)_LqvNhziJ>5lNP1Y) zHftKL_`Q)ZjQmxxB~wEfd`VX%t&9dT)++u8*AnACC=T`_s!YmM9EzZvey>s-`QSoo z8>Yy(NI5sGSLAxnB?_e}9xjLnHl9~hEbs*uMk=ZYQf~jmDr&M=lA3#pTC1VJ-TsPC z)!V31$`!4n$-jLsMe9=PSe?Jnt+EewWFd7Hp$n*mQZEc&4 zYZgwN`vx>G7xG4>5MBQiF1ud?8iR$)5BAYA$P0x$LEQ0Qp~S))Fx@Wv^}3n@E7LF1 zXeG~m^;~FC{tSXXV%9(U77bO20?c>OMSGnd-XIrrM{?)~{BX9v)6J)K1kgrH-n1R;B&r z7Hz~sR5p_D{Iycqym1D88m4mm`jYr|Tjl!d0>yDvVRo2(9}hBXjd`;w@P(*?s1}5iz=g;b{&yd9seVbdelyJ z7G&dNR5=ZOXgU6*$~_wl98XnUFE_Ub{N~aJQYXJ=RZ*&ju3s8e$;>Faw8W_XwyFXS z9@kg4v(mY%B}?-uj0bA@0|Ve#mAZrN2kKW3wQc+vVsV<aci$ZZzA~2}gI){OYRS_Q{9B zb5byb8rOUy$452{~k?x>||P%n%iumzvgf(;dZiBbH?Wj;gPJ#-H-^leA48dEu!uy z*Hl|X0cYN5>h3gADtk0_uV~d8{$BG|-2=EYMpGYgobX+*`8=3Z;E99gb5bl_NxO;4 zhONY-qi&-5(oq8Ju4vuPfi%2Pv|g}=27a1oBOO4*tQT$1$AhsOD%ux+0PI}EvB5bs zLgU3rW??kYKZ|}{so|nJh?4`Vh*uZIxr>}>XEqS$?V^Tqzbwx8FQi@X4>2Tx=<-n| zu1s{I#lTdI$Ot37lz617d7UO5u6X^TIR2u?0X^xnA(ubDAW--fP zFx>_;Vs--Ae;F}nc?t=LL@d}CP5QP}yuROtHjg6l(b@kfpnYPwlw`;f;_Kfw&@wo0 xJ{X5;DJ@f$tQD(;HF_c2-MCXk_Qm*Ci|p#7ja+tXRs^pfe~8OIaBlqC{{t`GP;vkO delta 4439 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 diff --git a/res/localization/LameXP_SV.qm b/res/localization/LameXP_SV.qm index 9b498be8d5a34356a8751f1488b9ef10a610c970..76208ab67d61556878cf8b19dfaeffd1176d8f18 100644 GIT binary patch delta 4403 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 diff --git a/res/localization/LameXP_TW.qm b/res/localization/LameXP_TW.qm index e2b55708ff3730435468e8bafbab9294b17e71ac..2cb2ed3da316b4f7b55ce57b7533b7282fc11033 100644 GIT binary patch delta 4351 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 delta 4419 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 diff --git a/res/localization/LameXP_UK.qm b/res/localization/LameXP_UK.qm index bdf1b05f4b0e4303be441e87666fd8ff024ef526..18dc7afe3c4a6ebd8c18bb16a12e95ddd1cf3c9c 100644 GIT binary patch delta 4459 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 delta 4677 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 a0r?>dYfbVe#g()9qqf$w`99knef|%pH8*Df delta 4431 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 R2M3J)_gu5m_>2x?{s#qoKehk> diff --git a/src/Config.h b/src/Config.h index ecffaf77..9bc38d65 100644 --- a/src/Config.h +++ b/src/Config.h @@ -34,8 +34,8 @@ #define VER_LAMEXP_MINOR_HI 1 #define VER_LAMEXP_MINOR_LO 1 #define VER_LAMEXP_TYPE RC -#define VER_LAMEXP_PATCH 1 -#define VER_LAMEXP_BUILD 1680 +#define VER_LAMEXP_PATCH 3 +#define VER_LAMEXP_BUILD 1688 #define VER_LAMEXP_CONFG 1558 /////////////////////////////////////////////////////////////////////////////// diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index 02bd5931..d312242c 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -167,6 +167,11 @@ while(0) #define SET_CHECKBOX_STATE(CHCKBX, STATE) do \ { \ + const bool isDisabled = (!(CHCKBX)->isEnabled()); \ + if(isDisabled) \ + { \ + (CHCKBX)->setEnabled(true); \ + } \ if((CHCKBX)->isChecked() != (STATE)) \ { \ (CHCKBX)->click(); \ @@ -175,6 +180,10 @@ while(0) { \ qWarning("Warning: Failed to set checkbox " #CHCKBX " state!"); \ } \ + if(isDisabled) \ + { \ + (CHCKBX)->setEnabled(false); \ + } \ } \ while(0) @@ -454,31 +463,34 @@ MainWindow::MainWindow(MUtils::IPCChannel *const ipcChannel, FileListModel *cons ui->sliderLameAlgoQuality->setValue(m_settings->lameAlgoQuality()); if(m_settings->maximumInstances() > 0) ui->sliderMaxInstances->setValue(m_settings->maximumInstances()); - ui->spinBoxBitrateManagementMin->setValue(m_settings->bitrateManagementMinRate()); - ui->spinBoxBitrateManagementMax->setValue(m_settings->bitrateManagementMaxRate()); - ui->spinBoxNormalizationFilter->setValue(static_cast(m_settings->normalizationFilterMaxVolume()) / 100.0); - ui->spinBoxToneAdjustBass->setValue(static_cast(m_settings->toneAdjustBass()) / 100.0); - ui->spinBoxToneAdjustTreble->setValue(static_cast(m_settings->toneAdjustTreble()) / 100.0); - ui->spinBoxAftenSearchSize->setValue(m_settings->aftenExponentSearchSize()); - ui->spinBoxOpusComplexity->setValue(m_settings->opusComplexity()); + ui->spinBoxBitrateManagementMin ->setValue(m_settings->bitrateManagementMinRate()); + ui->spinBoxBitrateManagementMax ->setValue(m_settings->bitrateManagementMaxRate()); + ui->spinBoxNormalizationFilterPeak->setValue(static_cast(m_settings->normalizationFilterMaxVolume()) / 100.0); + ui->spinBoxNormalizationFilterSize->setValue(m_settings->normalizationFilterSize()); + ui->spinBoxToneAdjustBass ->setValue(static_cast(m_settings->toneAdjustBass()) / 100.0); + ui->spinBoxToneAdjustTreble ->setValue(static_cast(m_settings->toneAdjustTreble()) / 100.0); + ui->spinBoxAftenSearchSize ->setValue(m_settings->aftenExponentSearchSize()); + ui->spinBoxOpusComplexity ->setValue(m_settings->opusComplexity()); - ui->comboBoxMP3ChannelMode->setCurrentIndex(m_settings->lameChannelMode()); - ui->comboBoxSamplingRate->setCurrentIndex(m_settings->samplingRate()); - ui->comboBoxAACProfile->setCurrentIndex(m_settings->aacEncProfile()); - ui->comboBoxAftenCodingMode->setCurrentIndex(m_settings->aftenAudioCodingMode()); - ui->comboBoxAftenDRCMode->setCurrentIndex(m_settings->aftenDynamicRangeCompression()); - ui->comboBoxNormalizationMode->setCurrentIndex(m_settings->normalizationFilterEQMode()); - ui->comboBoxOpusFramesize->setCurrentIndex(m_settings->opusFramesize()); + ui->comboBoxMP3ChannelMode ->setCurrentIndex(m_settings->lameChannelMode()); + ui->comboBoxSamplingRate ->setCurrentIndex(m_settings->samplingRate()); + ui->comboBoxAACProfile ->setCurrentIndex(m_settings->aacEncProfile()); + ui->comboBoxAftenCodingMode ->setCurrentIndex(m_settings->aftenAudioCodingMode()); + ui->comboBoxAftenDRCMode ->setCurrentIndex(m_settings->aftenDynamicRangeCompression()); + ui->comboBoxOpusFramesize ->setCurrentIndex(m_settings->opusFramesize()); - SET_CHECKBOX_STATE(ui->checkBoxBitrateManagement, m_settings->bitrateManagementEnabled()); - SET_CHECKBOX_STATE(ui->checkBoxNeroAAC2PassMode, m_settings->neroAACEnable2Pass()); - SET_CHECKBOX_STATE(ui->checkBoxAftenFastAllocation, m_settings->aftenFastBitAllocation()); - SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilter, m_settings->normalizationFilterEnabled()); - SET_CHECKBOX_STATE(ui->checkBoxAutoDetectInstances, (m_settings->maximumInstances() < 1)); - SET_CHECKBOX_STATE(ui->checkBoxUseSystemTempFolder, !m_settings->customTempPathEnabled()); - SET_CHECKBOX_STATE(ui->checkBoxRenameOutput, m_settings->renameOutputFilesEnabled()); - SET_CHECKBOX_STATE(ui->checkBoxForceStereoDownmix, m_settings->forceStereoDownmix()); - SET_CHECKBOX_STATE(ui->checkBoxOpusDisableResample, m_settings->opusDisableResample()); + SET_CHECKBOX_STATE(ui->checkBoxBitrateManagement, m_settings->bitrateManagementEnabled()); + SET_CHECKBOX_STATE(ui->checkBoxNeroAAC2PassMode, m_settings->neroAACEnable2Pass()); + SET_CHECKBOX_STATE(ui->checkBoxAftenFastAllocation, m_settings->aftenFastBitAllocation()); + SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilterEnabled, m_settings->normalizationFilterEnabled()); + SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilterDynamic, m_settings->normalizationFilterDynamic()); + SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilterCoupled, m_settings->normalizationFilterCoupled()); + SET_CHECKBOX_STATE(ui->checkBoxAutoDetectInstances, (m_settings->maximumInstances() < 1)); + SET_CHECKBOX_STATE(ui->checkBoxUseSystemTempFolder, (!m_settings->customTempPathEnabled())); + SET_CHECKBOX_STATE(ui->checkBoxRenameOutput, m_settings->renameOutputFilesEnabled()); + SET_CHECKBOX_STATE(ui->checkBoxForceStereoDownmix, m_settings->forceStereoDownmix()); + SET_CHECKBOX_STATE(ui->checkBoxOpusDisableResample, m_settings->opusDisableResample()); + ui->checkBoxNeroAAC2PassMode->setEnabled(aacEncoder == SettingsModel::AAC_ENCODER_NERO); ui->lineEditCustomParamLAME ->setText(EncoderRegistry::loadEncoderCustomParams(m_settings, SettingsModel::MP3Encoder)); @@ -507,46 +519,49 @@ MainWindow::MainWindow(MUtils::IPCChannel *const ipcChannel, FileListModel *cons ui->radioButtonOverwriteModeSkipFile->setChecked(m_settings->overwriteMode() == SettingsModel::Overwrite_SkipFile); ui->radioButtonOverwriteModeReplaces->setChecked(m_settings->overwriteMode() == SettingsModel::Overwrite_Replaces); - connect(ui->sliderLameAlgoQuality, SIGNAL(valueChanged(int)), this, SLOT(updateLameAlgoQuality(int))); - connect(ui->checkBoxBitrateManagement, SIGNAL(clicked(bool)), this, SLOT(bitrateManagementEnabledChanged(bool))); - connect(ui->spinBoxBitrateManagementMin, SIGNAL(valueChanged(int)), this, SLOT(bitrateManagementMinChanged(int))); - connect(ui->spinBoxBitrateManagementMax, SIGNAL(valueChanged(int)), this, SLOT(bitrateManagementMaxChanged(int))); - connect(ui->comboBoxMP3ChannelMode, SIGNAL(currentIndexChanged(int)), this, SLOT(channelModeChanged(int))); - connect(ui->comboBoxSamplingRate, SIGNAL(currentIndexChanged(int)), this, SLOT(samplingRateChanged(int))); - connect(ui->checkBoxNeroAAC2PassMode, SIGNAL(clicked(bool)), this, SLOT(neroAAC2PassChanged(bool))); - connect(ui->comboBoxAACProfile, SIGNAL(currentIndexChanged(int)), this, SLOT(neroAACProfileChanged(int))); - connect(ui->checkBoxNormalizationFilter, SIGNAL(clicked(bool)), this, SLOT(normalizationEnabledChanged(bool))); - connect(ui->comboBoxAftenCodingMode, SIGNAL(currentIndexChanged(int)), this, SLOT(aftenCodingModeChanged(int))); - connect(ui->comboBoxAftenDRCMode, SIGNAL(currentIndexChanged(int)), this, SLOT(aftenDRCModeChanged(int))); - connect(ui->spinBoxAftenSearchSize, SIGNAL(valueChanged(int)), this, SLOT(aftenSearchSizeChanged(int))); - connect(ui->checkBoxAftenFastAllocation, SIGNAL(clicked(bool)), this, SLOT(aftenFastAllocationChanged(bool))); - connect(ui->spinBoxNormalizationFilter, SIGNAL(valueChanged(double)), this, SLOT(normalizationMaxVolumeChanged(double))); - connect(ui->comboBoxNormalizationMode, SIGNAL(currentIndexChanged(int)), this, SLOT(normalizationModeChanged(int))); - connect(ui->spinBoxToneAdjustBass, SIGNAL(valueChanged(double)), this, SLOT(toneAdjustBassChanged(double))); - connect(ui->spinBoxToneAdjustTreble, SIGNAL(valueChanged(double)), this, SLOT(toneAdjustTrebleChanged(double))); - connect(ui->buttonToneAdjustReset, SIGNAL(clicked()), this, SLOT(toneAdjustTrebleReset())); - connect(ui->lineEditCustomParamLAME, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); - connect(ui->lineEditCustomParamOggEnc, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); - connect(ui->lineEditCustomParamNeroAAC, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); - connect(ui->lineEditCustomParamFLAC, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); - connect(ui->lineEditCustomParamAften, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); - connect(ui->lineEditCustomParamOpus, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); - connect(ui->sliderMaxInstances, SIGNAL(valueChanged(int)), this, SLOT(updateMaximumInstances(int))); - connect(ui->checkBoxAutoDetectInstances, SIGNAL(clicked(bool)), this, SLOT(autoDetectInstancesChanged(bool))); - connect(ui->buttonBrowseCustomTempFolder, SIGNAL(clicked()), this, SLOT(browseCustomTempFolderButtonClicked())); - connect(ui->lineEditCustomTempFolder, SIGNAL(textChanged(QString)), this, SLOT(customTempFolderChanged(QString))); - connect(ui->checkBoxUseSystemTempFolder, SIGNAL(clicked(bool)), this, SLOT(useCustomTempFolderChanged(bool))); - connect(ui->buttonResetAdvancedOptions, SIGNAL(clicked()), this, SLOT(resetAdvancedOptionsButtonClicked())); - connect(ui->checkBoxRenameOutput, SIGNAL(clicked(bool)), this, SLOT(renameOutputEnabledChanged(bool))); - connect(ui->lineEditRenamePattern, SIGNAL(editingFinished()), this, SLOT(renameOutputPatternChanged())); - connect(ui->lineEditRenamePattern, SIGNAL(textChanged(QString)), this, SLOT(renameOutputPatternChanged(QString))); - connect(ui->labelShowRenameMacros, SIGNAL(linkActivated(QString)), this, SLOT(showRenameMacros(QString))); - connect(ui->checkBoxForceStereoDownmix, SIGNAL(clicked(bool)), this, SLOT(forceStereoDownmixEnabledChanged(bool))); - connect(ui->comboBoxOpusFramesize, SIGNAL(currentIndexChanged(int)), this, SLOT(opusSettingsChanged())); - connect(ui->spinBoxOpusComplexity, SIGNAL(valueChanged(int)), this, SLOT(opusSettingsChanged())); - connect(ui->checkBoxOpusDisableResample, SIGNAL(clicked(bool)), SLOT(opusSettingsChanged())); - connect(m_overwriteButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(overwriteModeChanged(int))); - connect(m_evenFilterCustumParamsHelp, SIGNAL(eventOccurred(QWidget*, QEvent*)), this, SLOT(customParamsHelpRequested(QWidget*, QEvent*))); + connect(ui->sliderLameAlgoQuality, SIGNAL(valueChanged(int)), this, SLOT(updateLameAlgoQuality(int))); + connect(ui->checkBoxBitrateManagement, SIGNAL(clicked(bool)), this, SLOT(bitrateManagementEnabledChanged(bool))); + connect(ui->spinBoxBitrateManagementMin, SIGNAL(valueChanged(int)), this, SLOT(bitrateManagementMinChanged(int))); + connect(ui->spinBoxBitrateManagementMax, SIGNAL(valueChanged(int)), this, SLOT(bitrateManagementMaxChanged(int))); + connect(ui->comboBoxMP3ChannelMode, SIGNAL(currentIndexChanged(int)), this, SLOT(channelModeChanged(int))); + connect(ui->comboBoxSamplingRate, SIGNAL(currentIndexChanged(int)), this, SLOT(samplingRateChanged(int))); + connect(ui->checkBoxNeroAAC2PassMode, SIGNAL(clicked(bool)), this, SLOT(neroAAC2PassChanged(bool))); + connect(ui->comboBoxAACProfile, SIGNAL(currentIndexChanged(int)), this, SLOT(neroAACProfileChanged(int))); + connect(ui->checkBoxNormalizationFilterEnabled, SIGNAL(clicked(bool)), this, SLOT(normalizationEnabledChanged(bool))); + connect(ui->checkBoxNormalizationFilterDynamic, SIGNAL(clicked(bool)), this, SLOT(normalizationDynamicChanged(bool))); + connect(ui->checkBoxNormalizationFilterCoupled, SIGNAL(clicked(bool)), this, SLOT(normalizationCoupledChanged(bool))); + connect(ui->comboBoxAftenCodingMode, SIGNAL(currentIndexChanged(int)), this, SLOT(aftenCodingModeChanged(int))); + connect(ui->comboBoxAftenDRCMode, SIGNAL(currentIndexChanged(int)), this, SLOT(aftenDRCModeChanged(int))); + connect(ui->spinBoxAftenSearchSize, SIGNAL(valueChanged(int)), this, SLOT(aftenSearchSizeChanged(int))); + connect(ui->checkBoxAftenFastAllocation, SIGNAL(clicked(bool)), this, SLOT(aftenFastAllocationChanged(bool))); + connect(ui->spinBoxNormalizationFilterPeak, SIGNAL(valueChanged(double)), this, SLOT(normalizationMaxVolumeChanged(double))); + connect(ui->spinBoxNormalizationFilterSize, SIGNAL(valueChanged(int)), this, SLOT(normalizationFilterSizeChanged(int))); + connect(ui->spinBoxNormalizationFilterSize, SIGNAL(editingFinished()), this, SLOT(normalizationFilterSizeFinished())); + connect(ui->spinBoxToneAdjustBass, SIGNAL(valueChanged(double)), this, SLOT(toneAdjustBassChanged(double))); + connect(ui->spinBoxToneAdjustTreble, SIGNAL(valueChanged(double)), this, SLOT(toneAdjustTrebleChanged(double))); + connect(ui->buttonToneAdjustReset, SIGNAL(clicked()), this, SLOT(toneAdjustTrebleReset())); + connect(ui->lineEditCustomParamLAME, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); + connect(ui->lineEditCustomParamOggEnc, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); + connect(ui->lineEditCustomParamNeroAAC, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); + connect(ui->lineEditCustomParamFLAC, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); + connect(ui->lineEditCustomParamAften, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); + connect(ui->lineEditCustomParamOpus, SIGNAL(editingFinished()), this, SLOT(customParamsChanged())); + connect(ui->sliderMaxInstances, SIGNAL(valueChanged(int)), this, SLOT(updateMaximumInstances(int))); + connect(ui->checkBoxAutoDetectInstances, SIGNAL(clicked(bool)), this, SLOT(autoDetectInstancesChanged(bool))); + connect(ui->buttonBrowseCustomTempFolder, SIGNAL(clicked()), this, SLOT(browseCustomTempFolderButtonClicked())); + connect(ui->lineEditCustomTempFolder, SIGNAL(textChanged(QString)), this, SLOT(customTempFolderChanged(QString))); + connect(ui->checkBoxUseSystemTempFolder, SIGNAL(clicked(bool)), this, SLOT(useCustomTempFolderChanged(bool))); + connect(ui->buttonResetAdvancedOptions, SIGNAL(clicked()), this, SLOT(resetAdvancedOptionsButtonClicked())); + connect(ui->checkBoxRenameOutput, SIGNAL(clicked(bool)), this, SLOT(renameOutputEnabledChanged(bool))); + connect(ui->lineEditRenamePattern, SIGNAL(editingFinished()), this, SLOT(renameOutputPatternChanged())); + connect(ui->lineEditRenamePattern, SIGNAL(textChanged(QString)), this, SLOT(renameOutputPatternChanged(QString))); + connect(ui->labelShowRenameMacros, SIGNAL(linkActivated(QString)), this, SLOT(showRenameMacros(QString))); + connect(ui->checkBoxForceStereoDownmix, SIGNAL(clicked(bool)), this, SLOT(forceStereoDownmixEnabledChanged(bool))); + connect(ui->comboBoxOpusFramesize, SIGNAL(currentIndexChanged(int)), this, SLOT(opusSettingsChanged())); + connect(ui->spinBoxOpusComplexity, SIGNAL(valueChanged(int)), this, SLOT(opusSettingsChanged())); + connect(ui->checkBoxOpusDisableResample, SIGNAL(clicked(bool)), this, SLOT(opusSettingsChanged())); + connect(m_overwriteButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(overwriteModeChanged(int))); + connect(m_evenFilterCustumParamsHelp, SIGNAL(eventOccurred(QWidget*, QEvent*)), this, SLOT(customParamsHelpRequested(QWidget*, QEvent*))); //-------------------------------- // Force initial GUI update @@ -556,6 +571,7 @@ MainWindow::MainWindow(MUtils::IPCChannel *const ipcChannel, FileListModel *cons updateMaximumInstances(ui->sliderMaxInstances->value()); toneAdjustTrebleChanged(ui->spinBoxToneAdjustTreble->value()); toneAdjustBassChanged(ui->spinBoxToneAdjustBass->value()); + normalizationEnabledChanged(ui->checkBoxNormalizationFilterEnabled->isChecked()); customParamsChanged(); //-------------------------------- @@ -1064,7 +1080,7 @@ void MainWindow::changeEvent(QEvent *e) return; } - int comboBoxIndex[8]; + int comboBoxIndex[6]; //Backup combobox indices, as retranslateUi() resets comboBoxIndex[0] = ui->comboBoxMP3ChannelMode->currentIndex(); @@ -1072,9 +1088,7 @@ void MainWindow::changeEvent(QEvent *e) comboBoxIndex[2] = ui->comboBoxAACProfile->currentIndex(); comboBoxIndex[3] = ui->comboBoxAftenCodingMode->currentIndex(); comboBoxIndex[4] = ui->comboBoxAftenDRCMode->currentIndex(); - comboBoxIndex[5] = ui->comboBoxNormalizationMode->currentIndex(); - comboBoxIndex[6] = 0; //comboBoxOpusOptimize->currentIndex(); - comboBoxIndex[7] = ui->comboBoxOpusFramesize->currentIndex(); + comboBoxIndex[5] = ui->comboBoxOpusFramesize->currentIndex(); //Re-translate from UIC ui->retranslateUi(this); @@ -1085,9 +1099,7 @@ void MainWindow::changeEvent(QEvent *e) ui->comboBoxAACProfile->setCurrentIndex(comboBoxIndex[2]); ui->comboBoxAftenCodingMode->setCurrentIndex(comboBoxIndex[3]); ui->comboBoxAftenDRCMode->setCurrentIndex(comboBoxIndex[4]); - ui->comboBoxNormalizationMode->setCurrentIndex(comboBoxIndex[5]); - //comboBoxOpusOptimize->setCurrentIndex(comboBoxIndex[6]); - ui->comboBoxOpusFramesize->setCurrentIndex(comboBoxIndex[7]); + ui->comboBoxOpusFramesize->setCurrentIndex(comboBoxIndex[5]); //Update the window title if(MUTILS_DEBUG) @@ -3739,6 +3751,16 @@ void MainWindow::opusSettingsChanged(void) void MainWindow::normalizationEnabledChanged(bool checked) { m_settings->normalizationFilterEnabled(checked); + normalizationDynamicChanged(ui->checkBoxNormalizationFilterDynamic->isChecked()); +} + +/* + * Dynamic normalization enabled changed + */ +void MainWindow::normalizationDynamicChanged(bool checked) +{ + ui->spinBoxNormalizationFilterSize->setEnabled(ui->checkBoxNormalizationFilterEnabled->isChecked() && checked); + m_settings->normalizationFilterDynamic(checked); } /* @@ -3752,9 +3774,30 @@ void MainWindow::normalizationMaxVolumeChanged(double value) /* * Normalization equalization mode changed */ -void MainWindow::normalizationModeChanged(int mode) +void MainWindow::normalizationCoupledChanged(bool checked) { - m_settings->normalizationFilterEQMode(mode); + m_settings->normalizationFilterCoupled(checked); +} + +/* + * Normalization filter size changed + */ +void MainWindow::normalizationFilterSizeChanged(int value) +{ + m_settings->normalizationFilterSize(value); +} + +/* + * Normalization filter size editing finished + */ +void MainWindow::normalizationFilterSizeFinished(void) +{ + const int value = ui->spinBoxNormalizationFilterSize->value(); + if((value % 2) != 1) + { + bool rnd = MUtils::parity(MUtils::next_rand32()); + ui->spinBoxNormalizationFilterSize->setValue(rnd ? value+1 : value-1); + } } /* @@ -4095,31 +4138,33 @@ void MainWindow::resetAdvancedOptionsButtonClicked(void) { PLAY_SOUND_OPTIONAL("blast", true); - ui->sliderLameAlgoQuality->setValue(m_settings->lameAlgoQualityDefault()); - ui->spinBoxBitrateManagementMin->setValue(m_settings->bitrateManagementMinRateDefault()); - ui->spinBoxBitrateManagementMax->setValue(m_settings->bitrateManagementMaxRateDefault()); - ui->spinBoxNormalizationFilter->setValue(static_cast(m_settings->normalizationFilterMaxVolumeDefault()) / 100.0); - ui->spinBoxToneAdjustBass->setValue(static_cast(m_settings->toneAdjustBassDefault()) / 100.0); - ui->spinBoxToneAdjustTreble->setValue(static_cast(m_settings->toneAdjustTrebleDefault()) / 100.0); - ui->spinBoxAftenSearchSize->setValue(m_settings->aftenExponentSearchSizeDefault()); - ui->spinBoxOpusComplexity->setValue(m_settings->opusComplexityDefault()); - ui->comboBoxMP3ChannelMode->setCurrentIndex(m_settings->lameChannelModeDefault()); - ui->comboBoxSamplingRate->setCurrentIndex(m_settings->samplingRateDefault()); - ui->comboBoxAACProfile->setCurrentIndex(m_settings->aacEncProfileDefault()); - ui->comboBoxAftenCodingMode->setCurrentIndex(m_settings->aftenAudioCodingModeDefault()); - ui->comboBoxAftenDRCMode->setCurrentIndex(m_settings->aftenDynamicRangeCompressionDefault()); - ui->comboBoxNormalizationMode->setCurrentIndex(m_settings->normalizationFilterEQModeDefault()); - ui->comboBoxOpusFramesize->setCurrentIndex(m_settings->opusFramesizeDefault()); + ui->sliderLameAlgoQuality ->setValue(m_settings->lameAlgoQualityDefault()); + ui->spinBoxBitrateManagementMin ->setValue(m_settings->bitrateManagementMinRateDefault()); + ui->spinBoxBitrateManagementMax ->setValue(m_settings->bitrateManagementMaxRateDefault()); + ui->spinBoxNormalizationFilterPeak->setValue(static_cast(m_settings->normalizationFilterMaxVolumeDefault()) / 100.0); + ui->spinBoxNormalizationFilterSize->setValue(m_settings->normalizationFilterSizeDefault()); + ui->spinBoxToneAdjustBass ->setValue(static_cast(m_settings->toneAdjustBassDefault()) / 100.0); + ui->spinBoxToneAdjustTreble ->setValue(static_cast(m_settings->toneAdjustTrebleDefault()) / 100.0); + ui->spinBoxAftenSearchSize ->setValue(m_settings->aftenExponentSearchSizeDefault()); + ui->spinBoxOpusComplexity ->setValue(m_settings->opusComplexityDefault()); + ui->comboBoxMP3ChannelMode ->setCurrentIndex(m_settings->lameChannelModeDefault()); + ui->comboBoxSamplingRate ->setCurrentIndex(m_settings->samplingRateDefault()); + ui->comboBoxAACProfile ->setCurrentIndex(m_settings->aacEncProfileDefault()); + ui->comboBoxAftenCodingMode ->setCurrentIndex(m_settings->aftenAudioCodingModeDefault()); + ui->comboBoxAftenDRCMode ->setCurrentIndex(m_settings->aftenDynamicRangeCompressionDefault()); + ui->comboBoxOpusFramesize ->setCurrentIndex(m_settings->opusFramesizeDefault()); - SET_CHECKBOX_STATE(ui->checkBoxBitrateManagement, m_settings->bitrateManagementEnabledDefault()); - SET_CHECKBOX_STATE(ui->checkBoxNeroAAC2PassMode, m_settings->neroAACEnable2PassDefault()); - SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilter, m_settings->normalizationFilterEnabledDefault()); - SET_CHECKBOX_STATE(ui->checkBoxAutoDetectInstances, (m_settings->maximumInstancesDefault() < 1)); - SET_CHECKBOX_STATE(ui->checkBoxUseSystemTempFolder, !m_settings->customTempPathEnabledDefault()); - SET_CHECKBOX_STATE(ui->checkBoxAftenFastAllocation, m_settings->aftenFastBitAllocationDefault()); - SET_CHECKBOX_STATE(ui->checkBoxRenameOutput, m_settings->renameOutputFilesEnabledDefault()); - SET_CHECKBOX_STATE(ui->checkBoxForceStereoDownmix, m_settings->forceStereoDownmixDefault()); - SET_CHECKBOX_STATE(ui->checkBoxOpusDisableResample, m_settings->opusDisableResampleDefault()); + SET_CHECKBOX_STATE(ui->checkBoxBitrateManagement, m_settings->bitrateManagementEnabledDefault()); + SET_CHECKBOX_STATE(ui->checkBoxNeroAAC2PassMode, m_settings->neroAACEnable2PassDefault()); + SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilterEnabled, m_settings->normalizationFilterEnabledDefault()); + SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilterDynamic, m_settings->normalizationFilterDynamicDefault()); + SET_CHECKBOX_STATE(ui->checkBoxNormalizationFilterCoupled, m_settings->normalizationFilterCoupledDefault()); + SET_CHECKBOX_STATE(ui->checkBoxAutoDetectInstances, (m_settings->maximumInstancesDefault() < 1)); + SET_CHECKBOX_STATE(ui->checkBoxUseSystemTempFolder, (!m_settings->customTempPathEnabledDefault())); + SET_CHECKBOX_STATE(ui->checkBoxAftenFastAllocation, m_settings->aftenFastBitAllocationDefault()); + SET_CHECKBOX_STATE(ui->checkBoxRenameOutput, m_settings->renameOutputFilesEnabledDefault()); + SET_CHECKBOX_STATE(ui->checkBoxForceStereoDownmix, m_settings->forceStereoDownmixDefault()); + SET_CHECKBOX_STATE(ui->checkBoxOpusDisableResample, m_settings->opusDisableResampleDefault()); ui->lineEditCustomParamLAME ->setText(m_settings->customParametersLAMEDefault()); ui->lineEditCustomParamOggEnc ->setText(m_settings->customParametersOggEncDefault()); diff --git a/src/Dialog_MainWindow.h b/src/Dialog_MainWindow.h index f17785df..307bb58d 100644 --- a/src/Dialog_MainWindow.h +++ b/src/Dialog_MainWindow.h @@ -127,9 +127,12 @@ private slots: void metaTagsEnabledChanged(void); void neroAAC2PassChanged(bool checked); void neroAACProfileChanged(int value); + void normalizationCoupledChanged(bool checked); + void normalizationDynamicChanged(bool checked); void normalizationEnabledChanged(bool checked); + void normalizationFilterSizeChanged(int value); + void normalizationFilterSizeFinished(void); void normalizationMaxVolumeChanged(double volume); - void normalizationModeChanged(int mode); void notifyOtherInstance(void); void openFolderActionActivated(void); void opusSettingsChanged(void); diff --git a/src/Dialog_Processing.cpp b/src/Dialog_Processing.cpp index 7c524ebb..88d09db8 100644 --- a/src/Dialog_Processing.cpp +++ b/src/Dialog_Processing.cpp @@ -614,7 +614,7 @@ void ProcessingDialog::startNextJob(void) } if(m_settings->normalizationFilterEnabled()) { - thread->addFilter(new NormalizeFilter(m_settings->normalizationFilterMaxVolume(), m_settings->normalizationFilterEQMode())); + thread->addFilter(new NormalizeFilter(m_settings->normalizationFilterMaxVolume(), m_settings->normalizationFilterDynamic(), m_settings->normalizationFilterCoupled(), m_settings->normalizationFilterSize())); } if(m_settings->renameOutputFilesEnabled() && (!m_settings->renameOutputFilesPattern().simplified().isEmpty())) { diff --git a/src/Filter_Normalize.cpp b/src/Filter_Normalize.cpp index 79acab2c..2ca11c83 100644 --- a/src/Filter_Normalize.cpp +++ b/src/Filter_Normalize.cpp @@ -26,6 +26,7 @@ #include "Global.h" //MUtils +#include #include //Qt @@ -33,17 +34,23 @@ #include #include -NormalizeFilter::NormalizeFilter(int peakVolume, int equalizationMode) +static double dbToLinear(const double &value) +{ + return pow(10.0, value / 20.0); +} + +NormalizeFilter::NormalizeFilter(const int &peakVolume, const bool &dnyAudNorm, const bool &channelsCoupled, const int &filterSize) : - m_binary(lamexp_tools_lookup("sox.exe")) + m_binary(lamexp_tools_lookup("sox.exe")), + m_useDynAudNorm(dnyAudNorm), + m_peakVolume(qMin(-50, qMax(-3200, peakVolume))), + m_channelsCoupled(channelsCoupled), + m_filterLength(qBound(3, filterSize + (1 - (filterSize % 2)), 301)) { if(m_binary.isEmpty()) { MUTILS_THROW("Error initializing SoX filter. Tool 'sox.exe' is not registred!"); } - - m_peakVolume = qMin(-50, qMax(-3200, peakVolume)); - m_equalizationMode = qMin(2, qMax(0, equalizationMode)); } NormalizeFilter::~NormalizeFilter(void) @@ -54,7 +61,6 @@ bool NormalizeFilter::apply(const QString &sourceFile, const QString &outputFile { QProcess process; QStringList args; - QString eqMode = (m_equalizationMode == 0) ? "-n" : ((m_equalizationMode == 1) ? "-ne" : "-nb"); process.setWorkingDirectory(QFileInfo(outputFile).canonicalPath()); @@ -62,8 +68,23 @@ bool NormalizeFilter::apply(const QString &sourceFile, const QString &outputFile args << "--temp" << "."; args << QDir::toNativeSeparators(sourceFile); args << QDir::toNativeSeparators(outputFile); - args << "gain"; - args << eqMode << QString().sprintf("%.2f", static_cast(m_peakVolume) / 100.0); + + if(!m_useDynAudNorm) + { + args << "gain"; + args << (m_channelsCoupled ? "-n" : "-nb"); + args << QString().sprintf("%.2f", static_cast(m_peakVolume) / 100.0); + } + else + { + args << "dynaudnorm"; + args << "-p" << QString().sprintf("%.2f", qBound(0.1, dbToLinear(static_cast(m_peakVolume) / 100.0), 1.0)); + args << "-g" << QString().sprintf("%d", m_filterLength); + if(!m_channelsCoupled) + { + args << "-n"; + } + } if(!startProcess(process, m_binary, args)) { diff --git a/src/Filter_Normalize.h b/src/Filter_Normalize.h index 0d08f016..0b3f9d0d 100644 --- a/src/Filter_Normalize.h +++ b/src/Filter_Normalize.h @@ -27,13 +27,15 @@ class NormalizeFilter : public AbstractFilter { public: - NormalizeFilter(int peakVolume = -50, int equalizationMode = 0); + NormalizeFilter(const int &peakVolume = -50, const bool &dnyAudNorm = false, const bool &channelsCoupled = true, const int &filterSize = 31); ~NormalizeFilter(void); virtual bool apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *formatInfo, volatile bool *abortFlag); private: const QString m_binary; - int m_peakVolume; - int m_equalizationMode; + const bool m_useDynAudNorm; + const bool m_channelsCoupled; + const int m_peakVolume; + const int m_filterLength; }; diff --git a/src/Model_Settings.cpp b/src/Model_Settings.cpp index 716ee5c4..5eb85ca4 100644 --- a/src/Model_Settings.cpp +++ b/src/Model_Settings.cpp @@ -262,8 +262,10 @@ LAMEXP_MAKE_ID(mostRecentInputPath, "InputDirectory/MostRecentPath"); LAMEXP_MAKE_ID(neroAACEnable2Pass, "AdvancedOptions/AACEnc/Enable2Pass"); LAMEXP_MAKE_ID(neroAacNotificationsEnabled, "Flags/EnableNeroAacNotifications"); LAMEXP_MAKE_ID(normalizationFilterEnabled, "AdvancedOptions/VolumeNormalization/Enabled"); -LAMEXP_MAKE_ID(normalizationFilterEQMode, "AdvancedOptions/VolumeNormalization/EqualizationMode"); +LAMEXP_MAKE_ID(normalizationFilterDynamic, "AdvancedOptions/VolumeNormalization/UseDynAudNorm"); +LAMEXP_MAKE_ID(normalizationFilterCoupled, "AdvancedOptions/VolumeNormalization/ChannelCoupling"); LAMEXP_MAKE_ID(normalizationFilterMaxVolume, "AdvancedOptions/VolumeNormalization/MaxVolume"); +LAMEXP_MAKE_ID(normalizationFilterSize, "AdvancedOptions/VolumeNormalization/FilterLength"); LAMEXP_MAKE_ID(opusComplexity, "AdvancedOptions/Opus/EncodingComplexity"); LAMEXP_MAKE_ID(opusDisableResample, "AdvancedOptions/Opus/DisableResample"); LAMEXP_MAKE_ID(opusFramesize, "AdvancedOptions/Opus/FrameSize"); @@ -638,8 +640,10 @@ LAMEXP_MAKE_OPTION_S(mostRecentInputPath, defaultDirectory()) LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass, true) LAMEXP_MAKE_OPTION_B(neroAacNotificationsEnabled, true) LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled, false) -LAMEXP_MAKE_OPTION_I(normalizationFilterEQMode, 0) +LAMEXP_MAKE_OPTION_B(normalizationFilterDynamic, false) +LAMEXP_MAKE_OPTION_B(normalizationFilterCoupled, true) LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume, -50) +LAMEXP_MAKE_OPTION_I(normalizationFilterSize, 31) LAMEXP_MAKE_OPTION_I(opusComplexity, 10) LAMEXP_MAKE_OPTION_B(opusDisableResample, false) LAMEXP_MAKE_OPTION_I(opusFramesize, 3) diff --git a/src/Model_Settings.h b/src/Model_Settings.h index 9cdc1171..c65e34cf 100644 --- a/src/Model_Settings.h +++ b/src/Model_Settings.h @@ -179,8 +179,10 @@ public: LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass) LAMEXP_MAKE_OPTION_B(neroAacNotificationsEnabled) LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled) - LAMEXP_MAKE_OPTION_I(normalizationFilterEQMode) + LAMEXP_MAKE_OPTION_B(normalizationFilterDynamic) + LAMEXP_MAKE_OPTION_B(normalizationFilterCoupled) LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume) + LAMEXP_MAKE_OPTION_I(normalizationFilterSize) LAMEXP_MAKE_OPTION_I(opusComplexity) LAMEXP_MAKE_OPTION_B(opusDisableResample) LAMEXP_MAKE_OPTION_I(opusFramesize)