diff --git a/src/preferences/dialog/dlgprefwaveform.cpp b/src/preferences/dialog/dlgprefwaveform.cpp index d770f10e1249..48f77f379c13 100644 --- a/src/preferences/dialog/dlgprefwaveform.cpp +++ b/src/preferences/dialog/dlgprefwaveform.cpp @@ -149,6 +149,10 @@ DlgPrefWaveform::DlgPrefWaveform( &QCheckBox::clicked, this, &DlgPrefWaveform::slotSetWaveformOptionHighDetail); + connect(visualizeEqGainCheckBox, + &QCheckBox::clicked, + this, + &DlgPrefWaveform::slotSetVisualizeEq); connect(defaultZoomComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, @@ -280,6 +284,10 @@ void DlgPrefWaveform::slotUpdate() { updateEnableUntilMark(); updateWaveformGeneralOptionsEnabled(); + bool visualizeEqGain = m_pConfig->getValue( + ConfigKey("[Waveform]", "visualize_eq_gain"), true); + visualizeEqGainCheckBox->setChecked(visualizeEqGain); + frameRateSpinBox->setValue(factory->getFrameRate()); frameRateSlider->setValue(factory->getFrameRate()); endOfTrackWarningTimeSpinBox->setValue(factory->getEndOfTrackWarningTime()); @@ -618,6 +626,10 @@ void DlgPrefWaveform::slotSetNormalizeOverview(bool normalize) { updateWaveformGainEnabled(); } +void DlgPrefWaveform::slotSetVisualizeEq(bool checked) { + WaveformWidgetFactory::instance()->setVisualizeEqGain(checked); +} + void DlgPrefWaveform::slotSetOverviewMinuteMarkers(bool draw) { m_pConfig->setValue(ConfigKey("[Waveform]", "draw_overview_minute_markers"), draw); m_pOverviewMinuteMarkersControl->forceSet(draw); diff --git a/src/preferences/dialog/dlgprefwaveform.h b/src/preferences/dialog/dlgprefwaveform.h index 367dda8b396a..948cb3e972d7 100644 --- a/src/preferences/dialog/dlgprefwaveform.h +++ b/src/preferences/dialog/dlgprefwaveform.h @@ -45,6 +45,7 @@ class DlgPrefWaveform : public DlgPreferencePage, public Ui::DlgPrefWaveformDlg slotSetWaveformOptions(allshader::WaveformRendererSignalBase::Option::HighDetail, checked); } #endif + void slotSetVisualizeEq(bool checked); void slotSetWaveformOverviewType(); void slotSetDefaultZoom(int index); void slotSetZoomSynchronization(bool checked); diff --git a/src/preferences/dialog/dlgprefwaveformdlg.ui b/src/preferences/dialog/dlgprefwaveformdlg.ui index 01fc4e8ddef5..0f192895598b 100644 --- a/src/preferences/dialog/dlgprefwaveformdlg.ui +++ b/src/preferences/dialog/dlgprefwaveformdlg.ui @@ -83,7 +83,14 @@ Select from different types of displays for the waveform, which differ primarily High details - + + + + + Visualize EQ Gain + + + diff --git a/src/waveform/renderers/waveformrenderersignalbase.cpp b/src/waveform/renderers/waveformrenderersignalbase.cpp index 4b48122cf84e..41f78ea1132d 100644 --- a/src/waveform/renderers/waveformrenderersignalbase.cpp +++ b/src/waveform/renderers/waveformrenderersignalbase.cpp @@ -160,6 +160,13 @@ void WaveformRendererSignalBase::setup(const QDomNode& node, setHighVisualGain(highGain); }); + connect(pWaveformFactory, + &WaveformWidgetFactory::visualizeEqGainChanged, + this, + [this](bool value) { m_visualizeEqGain = value; }); + + m_visualizeEqGain = pWaveformFactory->visualizeEqGain(); + setAllChannelVisualGain(pWaveformFactory->getVisualGain(BandIndex::AllBand)); setLowVisualGain(pWaveformFactory->getVisualGain(BandIndex::Low)); setMidVisualGain(pWaveformFactory->getVisualGain(BandIndex::Mid)); @@ -183,7 +190,11 @@ void WaveformRendererSignalBase::getGains(float* pAllGain, CSAMPLE_GAIN lowVisualGain = 1.0, midVisualGain = 1.0, highVisualGain = 1.0; // Only adjust low/mid/high gains if EQs are enabled. - if (m_pEQEnabled && m_pEQEnabled->get() > 0.0) { + if (!m_visualizeEqGain) { + lowVisualGain = m_lowVisualGain; + midVisualGain = m_midVisualGain; + highVisualGain = m_highVisualGain; + } else if (m_pEQEnabled && m_pEQEnabled->get() > 0.0) { if (m_pLowFilterControlObject && m_pMidFilterControlObject && m_pHighFilterControlObject) { diff --git a/src/waveform/renderers/waveformrenderersignalbase.h b/src/waveform/renderers/waveformrenderersignalbase.h index 9b5e832e7bd1..eb3cf2835149 100644 --- a/src/waveform/renderers/waveformrenderersignalbase.h +++ b/src/waveform/renderers/waveformrenderersignalbase.h @@ -64,6 +64,8 @@ class WaveformRendererSignalBase : public QObject, public WaveformRendererAbstra CSAMPLE_GAIN m_midVisualGain; CSAMPLE_GAIN m_highVisualGain; + bool m_visualizeEqGain; + float m_axesColor_r, m_axesColor_g, m_axesColor_b, m_axesColor_a; float m_signalColor_r, m_signalColor_g, m_signalColor_b; float m_signalColor_h, m_signalColor_s, m_signalColor_v; diff --git a/src/waveform/waveformwidgetfactory.cpp b/src/waveform/waveformwidgetfactory.cpp index b5f367a2f341..000415a22865 100644 --- a/src/waveform/waveformwidgetfactory.cpp +++ b/src/waveform/waveformwidgetfactory.cpp @@ -363,6 +363,10 @@ bool WaveformWidgetFactory::setConfig(UserSettingsPointer config) { bool zoomSync = m_config->getValue(ConfigKey("[Waveform]", "ZoomSynchronization"), m_zoomSync); setZoomSync(zoomSync); + bool visualizeEqGain = m_config->getValue( + ConfigKey("[Waveform]", "visualize_eq_gain"), m_visualizeEqGain); + setVisualizeEqGain(visualizeEqGain); + int beatGridAlpha = m_config->getValue(ConfigKey("[Waveform]", "beatGridAlpha"), m_beatGridAlpha); setDisplayBeatGridAlpha(beatGridAlpha); @@ -664,6 +668,13 @@ void WaveformWidgetFactory::setZoomSync(bool sync) { } } +void WaveformWidgetFactory::setVisualizeEqGain(bool value) { + m_visualizeEqGain = value; + m_config->setValue(ConfigKey("[Waveform]", "visualize_eq_gain"), value); + + emit visualizeEqGainChanged(value); +} + void WaveformWidgetFactory::setDisplayBeatGridAlpha(int alpha) { m_beatGridAlpha = alpha; if (m_waveformWidgetHolders.size() == 0) { diff --git a/src/waveform/waveformwidgetfactory.h b/src/waveform/waveformwidgetfactory.h index 05e3ced526b4..cae023d04146 100644 --- a/src/waveform/waveformwidgetfactory.h +++ b/src/waveform/waveformwidgetfactory.h @@ -191,6 +191,11 @@ class WaveformWidgetFactory : public QObject, void setZoomSync(bool sync); int isZoomSync() const { return m_zoomSync;} + bool visualizeEqGain() const { + return m_visualizeEqGain; + }; + void setVisualizeEqGain(bool value); + void setDisplayBeatGridAlpha(int alpha); int getBeatGridAlpha() const { return m_beatGridAlpha; } @@ -225,6 +230,7 @@ class WaveformWidgetFactory : public QObject, void overviewNormalizeChanged(); void visualGainChanged(double allChannelGain, double lowGain, double midGain, double highGain); + void visualizeEqGainChanged(bool value); void untilMarkShowBeatsChanged(bool value); void untilMarkShowTimeChanged(bool value); @@ -283,6 +289,7 @@ class WaveformWidgetFactory : public QObject, int m_endOfTrackWarningTime; double m_defaultZoom; bool m_zoomSync; + bool m_visualizeEqGain; double m_visualGain[BandCount]; bool m_overviewNormalized;