From 2e483cfeba7cd6bc91441bc384d074cedad023a7 Mon Sep 17 00:00:00 2001 From: lordmulder Date: Mon, 24 Jan 2011 01:13:08 +0100 Subject: [PATCH] Prepare UI for "volume normalization" filter. --- etc/Translation/Blank.ts | 16 ++++ etc/Translation/LameXP_DE.ts | 34 +++++--- etc/Translation/LameXP_ES.ts | 16 ++++ etc/Translation/LameXP_FR.ts | 16 ++++ etc/Translation/LameXP_IT.ts | 16 ++++ gui/MainWindow.ui | 175 +++++++++++++++++++++++++++++++++++++++++- res/localization/LameXP_DE.qm | Bin 45916 -> 46415 bytes src/Dialog_MainWindow.cpp | 22 ++++++ src/Dialog_MainWindow.h | 2 + src/Model_Settings.cpp | 4 + src/Model_Settings.h | 2 + 11 files changed, 293 insertions(+), 10 deletions(-) diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index 6f465d86..389f0a11 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -518,6 +518,22 @@ + Volume Normalization + + + + Enable Normalization Filter + + + + Peak Volume (dB): + + + + Reset Advanced Options + + + Encode Now! diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts index d33de303..4b979369 100644 --- a/etc/Translation/LameXP_DE.ts +++ b/etc/Translation/LameXP_DE.ts @@ -316,7 +316,7 @@ Meta Information - Meta Informationen + Meta Informationen Edit @@ -332,7 +332,7 @@ Options - Optionen + Optionen Automatically generate playlist file (.m3u) @@ -348,7 +348,7 @@ Encoder / Format - Kodierer / Format + Kodierer / Format Lame MP3 @@ -372,7 +372,7 @@ Rate Control Method - Bitraten Steuerungsmethode + Bitraten Steuerungsmethode Quality-based (VBR) @@ -388,7 +388,7 @@ Quality / Bitrate - Qualität / Bitrate + Qualität / Bitrate Minimum @@ -404,7 +404,7 @@ Encode Now! - Jetzt Kodieren! + Jetzt Kodieren! About... @@ -412,7 +412,7 @@ Exit Program - Programm Ende + Programm Ende File @@ -896,7 +896,7 @@ LAME Algorithm Quality - LAME Algorithmus Qualität + LAME Algorithmus Qualität Faster Processing @@ -928,7 +928,7 @@ Bitrate Management (LAME and OggEnc2) - Bitraten Verwaltung (LAME und OggEnc2) + Bitraten Verwaltung (LAME und OggEnc2) Enable Bitrate Management @@ -1030,6 +1030,22 @@ Enforce HE-AAC v2 (AAC + SBR + PS) Erzwinge HE-AAC v2 (AAC + SBR + PS) + + Volume Normalization + Lautstärke Normalisieren + + + Enable Normalization Filter + Normalisierungsfilter Aktivieren + + + Peak Volume (dB): + Max. Lautstärke (dB): + + + Reset Advanced Options + Erweiterte Optionen Zurücksetzen + MetaInfo diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts index 7acae9a1..22643301 100644 --- a/etc/Translation/LameXP_ES.ts +++ b/etc/Translation/LameXP_ES.ts @@ -1030,6 +1030,22 @@ Enforce HE-AAC v2 (AAC + SBR + PS) + + Volume Normalization + + + + Enable Normalization Filter + + + + Peak Volume (dB): + + + + Reset Advanced Options + + MetaInfo diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts index 307aab4f..3a3826f8 100644 --- a/etc/Translation/LameXP_FR.ts +++ b/etc/Translation/LameXP_FR.ts @@ -1034,6 +1034,22 @@ Votre dossier TEMP est situé ici: Enforce HE-AAC v2 (AAC + SBR + PS) + + Volume Normalization + + + + Enable Normalization Filter + + + + Peak Volume (dB): + + + + Reset Advanced Options + + MetaInfo diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts index 988bd4d0..c89f3b29 100644 --- a/etc/Translation/LameXP_IT.ts +++ b/etc/Translation/LameXP_IT.ts @@ -1030,6 +1030,22 @@ Enforce HE-AAC v2 (AAC + SBR + PS) + + Volume Normalization + + + + Enable Normalization Filter + + + + Peak Volume (dB): + + + + Reset Advanced Options + + MetaInfo diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui index 4d5e0921..1defd64f 100644 --- a/gui/MainWindow.ui +++ b/gui/MainWindow.ui @@ -971,6 +971,12 @@ + + QFrame::Plain + + + Qt::ScrollBarAlwaysOff + true @@ -980,7 +986,7 @@ 0 0 604 - 431 + 520 @@ -1617,6 +1623,151 @@ + + + + + 50 + false + + + + Volume Normalization + + + + + + + + Enable Normalization Filter + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 10 + 20 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 10 + 20 + + + + + + + + false + + + + 160 + 0 + + + + -12.000000000000000 + + + 0.000000000000000 + + + 0.500000000000000 + + + + + + + Peak Volume (dB): + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 8 + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 8 + + + + + + + + + @@ -2128,6 +2279,12 @@ + + + + + + @@ -2498,5 +2655,21 @@ + + checkBoxNormalizationFilter + clicked(bool) + spinBoxNormalizationFilter + setEnabled(bool) + + + 133 + 502 + + + 447 + 502 + + + diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm index 684cb58d606d3ce1fbe97b6740310cea3ee67c69..e37325d2fbdc7d58bb6fcb984c180555c79bdf86 100644 GIT binary patch delta 3409 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 F_aAYL%Af!M delta 3051 zcwQ}5dt8n8AOAe(xt;TzbDl$`saCpKoe~kzg^=z>7pfI0RO**3ROE6JxooJMYH}^P zOqb0VGjnfj$0gt^PJc7e4o$fefvB=bt(SSp(r*p1QU@T zk=;ci-iK&KIqFoR$#;n&B8e)>h-NhqrM)A{iXbw3-B+_W6L%rWBoUZjw-jzrtKDby7Yy0uWKCz{JX)>n&S`s()IC~WRZ zqILc0!wZE(%bO{-@q41_(^+bQRqI!;OV(QFhUWmGrRy7q)5#^O;p{g zSipA?DS{N0-TgU(Wk{+fU_6T_)%Pdw>J(> z;G$P7CmMCSukI-3GOVT$O||D1W|t7{zs0TAy&@WB#;w}|gg&@#;5Hlr6uI5p){v7# zuIu~il40DgbG}4U47aat9Xb!>_9sGYn;W>=1h~N7pQ{rw!NyRoz5yyvHRDd+d4@)A zap!HJ_N9Bd?@bkWzLUG~5aOIWm-`_CFPy!K`#A-+o?OLUH?D!G4gclt?3anS8{GZV zDsW!Py^F?y&fd*X_d$N_>$61GMn3Bq@?+5g zKK}y@;?@OiB|=KA8(D?uw9jU8Yv-cNu?eW!>IPeA2fh2m2+&Q-2f3O8|1$W5i=01U7) zNjW;k6dEc}dKun_sNN4&`izH7#$8uVtV9qco>fjc{1*;BrHoaAbGI60{u@9(G@!38 z*{fVL2clqb;8s9C&qVt28;Ed|VWo6B1PH7jBb{jlcb~D+4+19JV=6UUg%X*PbnOAu9nm1Q z*<%NIy^wAfV+pyBk~%`Ld{P%mf9`;5ob9FOLx9|>D{9qN*iK;kszt5ZM~fHoi`D)^ zkO#qA)Il53X!3b=vKkZ^><_7vZ(M_IdeqC}^;nDN)oWx8xaQU68Z=U^SMRxv2ex~t z_to7871z|~Ob#Ndozx9wST==%`ezNeHT_zB)e000PE|kkftIFRQTIe*FxN90_I&U5 zE7Mr-!g32s(%8&|2siwsaq77T|BusaLN<0H(>YC~4&t%v&_qUqvo%e9b?-Gzbgu?% z+BJ)Av2|JO`SUgKk|F0Cft)ein%saao#>!psGlJS^0tXWfG_7POSSaYBPyJGDg zP2Ee_dg~a?@n^`5{-v4=zgocm4wd);pF6Z`8Y?lextHdNj2D*N)pQpkI-|yEm94mr zY1dlXW1SW}(CRxufysAT_a-2dSE2PP27*J1wTWAym0>5eNjm|(u}ZsWGc;p3t}Tm# z*c_K>cZi@^y;xgq0xBbmwWrJtOCg5m+KV<2QNRmrXQn?sG~Bg+>Uy`6qxNsl-W+g| z2d#xDM+eG-zgmcG9VF}RozYOD>}mky>?_%AChi}WD~}FAbPqO>Cxjta`u`};xD1VG zugY_70EskbIimogleKcjC49h`XUUm{*RaomH?pA;K30{>1=d(9HnwtMI3^sBAn!6k z(#@-u_pOP6cwWkPtYE_#x8$x4EFqg5`427j`TW1-SL5J{rQPzYG6d2JMrWIj?}ufp zb@tza!hJg3^!KpNV+QDA;@Yt_f6*mX;hLItX{qy(XgiR?!q2$AN7~+#xW$|xFxz@Sx{IN zqI`1c}@<-O-=!fjq#dOFk^4Db+$K7 za&~7djk(SN%n0Kd=Ml!|&Ys4c)kBT(dMBoz@lmXWu~KitI2zCC9gX+(!setValue(m_settings->lameAlgoQuality()); spinBoxBitrateManagementMin->setValue(m_settings->bitrateManagementMinRate()); spinBoxBitrateManagementMax->setValue(m_settings->bitrateManagementMaxRate()); + spinBoxNormalizationFilter->setValue(static_cast(m_settings->normalizationFilterMaxVolume()) / 100.0); comboBoxMP3ChannelMode->setCurrentIndex(m_settings->lameChannelMode()); comboBoxSamplingRate->setCurrentIndex(m_settings->samplingRate()); comboBoxNeroAACProfile->setCurrentIndex(m_settings->neroAACProfile()); while(checkBoxBitrateManagement->isChecked() != m_settings->bitrateManagementEnabled()) checkBoxBitrateManagement->click(); while(checkBoxNeroAAC2PassMode->isChecked() != m_settings->neroAACEnable2Pass()) checkBoxNeroAAC2PassMode->click(); + while(checkBoxNormalizationFilter->isChecked() != m_settings->normalizationFilterEnabled()) checkBoxNormalizationFilter->click(); connect(sliderLameAlgoQuality, SIGNAL(valueChanged(int)), this, SLOT(updateLameAlgoQuality(int))); connect(checkBoxBitrateManagement, SIGNAL(clicked(bool)), this, SLOT(bitrateManagementEnabledChanged(bool))); connect(spinBoxBitrateManagementMin, SIGNAL(valueChanged(int)), this, SLOT(bitrateManagementMinChanged(int))); @@ -230,6 +232,8 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S connect(comboBoxSamplingRate, SIGNAL(currentIndexChanged(int)), this, SLOT(samplingRateChanged(int))); connect(checkBoxNeroAAC2PassMode, SIGNAL(clicked(bool)), this, SLOT(neroAAC2PassChanged(bool))); connect(comboBoxNeroAACProfile, SIGNAL(currentIndexChanged(int)), this, SLOT(neroAACProfileChanged(int))); + connect(checkBoxNormalizationFilter, SIGNAL(clicked(bool)), this, SLOT(normalizationEnabledChanged(bool))); + connect(spinBoxNormalizationFilter, SIGNAL(valueChanged(double)), this, SLOT(normalizationMaxVolumeChanged(double))); connect(buttonResetAdvancedOptions, SIGNAL(clicked()), this, SLOT(resetAdvancedOptionsButtonClicked())); updateLameAlgoQuality(sliderLameAlgoQuality->value()); @@ -1693,6 +1697,22 @@ void MainWindow::neroAACProfileChanged(int value) } /* + * Normalization filter enabled changed + */ +void MainWindow::normalizationEnabledChanged(bool checked) +{ + m_settings->normalizationFilterEnabled(checked); +} + +/* + * Normalization max. volume changed + */ +void MainWindow::normalizationMaxVolumeChanged(double value) +{ + m_settings->normalizationFilterMaxVolume(static_cast(value * 100.0)); +} + +/* * Reset all advanced options to their defaults */ void MainWindow::resetAdvancedOptionsButtonClicked() @@ -1700,11 +1720,13 @@ void MainWindow::resetAdvancedOptionsButtonClicked() sliderLameAlgoQuality->setValue(m_settings->lameAlgoQualityDefault()); spinBoxBitrateManagementMin->setValue(m_settings->bitrateManagementMinRateDefault()); spinBoxBitrateManagementMax->setValue(m_settings->bitrateManagementMaxRateDefault()); + spinBoxNormalizationFilter->setValue(static_cast(m_settings->normalizationFilterMaxVolumeDefault()) / 100.0); comboBoxMP3ChannelMode->setCurrentIndex(m_settings->lameChannelModeDefault()); comboBoxSamplingRate->setCurrentIndex(m_settings->samplingRateDefault()); comboBoxNeroAACProfile->setCurrentIndex(m_settings->neroAACProfileDefault()); while(checkBoxBitrateManagement->isChecked() != m_settings->bitrateManagementEnabledDefault()) checkBoxBitrateManagement->click(); while(checkBoxNeroAAC2PassMode->isChecked() != m_settings->neroAACEnable2PassDefault()) checkBoxNeroAAC2PassMode->click(); + while(checkBoxNormalizationFilter->isChecked() != m_settings->normalizationFilterEnabledDefault()) checkBoxNormalizationFilter->click(); scrollArea->verticalScrollBar()->setValue(0); } diff --git a/src/Dialog_MainWindow.h b/src/Dialog_MainWindow.h index 0d8b6e9e..3010cc25 100644 --- a/src/Dialog_MainWindow.h +++ b/src/Dialog_MainWindow.h @@ -87,6 +87,8 @@ private slots: void channelModeChanged(int value); void neroAACProfileChanged(int value); void neroAAC2PassChanged(bool checked); + void normalizationEnabledChanged(bool checked); + void normalizationMaxVolumeChanged(double volume); void resetAdvancedOptionsButtonClicked(); void sourceModelChanged(void); void metaTagsEnabledChanged(void); diff --git a/src/Model_Settings.cpp b/src/Model_Settings.cpp index 2274f5d2..db31b99b 100644 --- a/src/Model_Settings.cpp +++ b/src/Model_Settings.cpp @@ -59,6 +59,8 @@ static const char *g_settingsId_bitrateManagementMaxRate = "AdvancedOptions/Bitr static const char *g_settingsId_samplingRate = "AdvancedOptions/Common/Resampling"; static const char *g_settingsId_neroAACEnable2Pass = "AdvancedOptions/NeroAAC/Enable2Pass"; static const char *g_settingsId_neroAACProfile = "AdvancedOptions/NeroAAC/ForceProfile"; +static const char *g_settingsId_normalizationFilterEnabled = "AdvancedOptions/VolumeNormalization/Enabled"; +static const char *g_settingsId_normalizationFilterMaxVolume = "AdvancedOptions/VolumeNormalization/MaxVolume"; //Macros #define MAKE_OPTION1(OPT,DEF) \ @@ -223,3 +225,5 @@ MAKE_OPTION1(bitrateManagementMaxRate, 500) MAKE_OPTION1(samplingRate, 0) MAKE_OPTION3(neroAACEnable2Pass, true) MAKE_OPTION1(neroAACProfile, 0) +MAKE_OPTION3(normalizationFilterEnabled, false) +MAKE_OPTION1(normalizationFilterMaxVolume, -50) diff --git a/src/Model_Settings.h b/src/Model_Settings.h index fd57eb9a..8081f033 100644 --- a/src/Model_Settings.h +++ b/src/Model_Settings.h @@ -91,6 +91,8 @@ public: MAKE_OPTION_DEC1(samplingRate) MAKE_OPTION_DEC3(neroAACEnable2Pass) MAKE_OPTION_DEC1(neroAACProfile) + MAKE_OPTION_DEC3(normalizationFilterEnabled) + MAKE_OPTION_DEC1(normalizationFilterMaxVolume) //Misc void validate(void); -- 2.11.4.GIT