Skip to content

Commit

Permalink
Merge pull request #11527 from ronso0/pref-mixer-apply
Browse files Browse the repository at this point in the history
Pref > Mixer: apply & save settings only in slotApply(), fix bugs, improve UX
  • Loading branch information
daschuer authored Oct 16, 2023
2 parents c727ccd + 268e278 commit b695252
Show file tree
Hide file tree
Showing 18 changed files with 923 additions and 807 deletions.
16 changes: 6 additions & 10 deletions src/effects/backends/builtin/bessel4lvmixeqeffect.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "effects/backends/builtin/bessel4lvmixeqeffect.h"

#include "effects/backends/builtin/equalizer_util.h"
#include "effects/defs.h"
#include "util/math.h"

// static
Expand Down Expand Up @@ -28,9 +29,9 @@ EffectManifestPointer Bessel4LVMixEQEffect::getManifest() {
return pManifest;
}

Bessel4LVMixEQEffect::Bessel4LVMixEQEffect() {
m_pLoFreqCorner = new ControlProxy("[Mixer Profile]", "LoEQFrequency");
m_pHiFreqCorner = new ControlProxy("[Mixer Profile]", "HiEQFrequency");
Bessel4LVMixEQEffect::Bessel4LVMixEQEffect()
: m_pLoFreqCorner(kMixerProfile, kLowEqFrequency),
m_pHiFreqCorner(kMixerProfile, kHighEqFrequency) {
}

void Bessel4LVMixEQEffect::loadEngineEffectParameters(
Expand All @@ -43,11 +44,6 @@ void Bessel4LVMixEQEffect::loadEngineEffectParameters(
m_pKillHigh = parameters.value("killHigh");
}

Bessel4LVMixEQEffect::~Bessel4LVMixEQEffect() {
delete m_pLoFreqCorner;
delete m_pHiFreqCorner;
}

void Bessel4LVMixEQEffect::processChannel(
Bessel4LVMixEQEffectGroupState* pState,
const CSAMPLE* pInput,
Expand Down Expand Up @@ -86,7 +82,7 @@ void Bessel4LVMixEQEffect::processChannel(
fLow,
fMid,
fHigh,
m_pLoFreqCorner->get(),
m_pHiFreqCorner->get());
m_pLoFreqCorner.get(),
m_pHiFreqCorner.get());
}
}
8 changes: 4 additions & 4 deletions src/effects/backends/builtin/bessel4lvmixeqeffect.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#pragma once
#include <QMap>

#include "control/controlproxy.h"
#include "control/pollingcontrolproxy.h"
#include "effects/backends/builtin/lvmixeqbase.h"
#include "effects/backends/effectprocessor.h"
#include "engine/effects/engineeffect.h"
Expand All @@ -22,7 +22,7 @@ class Bessel4LVMixEQEffectGroupState : public LVMixEQEffectGroupState<EngineFilt
class Bessel4LVMixEQEffect : public EffectProcessorImpl<Bessel4LVMixEQEffectGroupState> {
public:
Bessel4LVMixEQEffect();
~Bessel4LVMixEQEffect() override;
~Bessel4LVMixEQEffect() override = default;

static QString getId();
static EffectManifestPointer getManifest();
Expand Down Expand Up @@ -51,8 +51,8 @@ class Bessel4LVMixEQEffect : public EffectProcessorImpl<Bessel4LVMixEQEffectGrou
EngineEffectParameterPointer m_pKillMid;
EngineEffectParameterPointer m_pKillHigh;

ControlProxy* m_pLoFreqCorner;
ControlProxy* m_pHiFreqCorner;
PollingControlProxy m_pLoFreqCorner;
PollingControlProxy m_pHiFreqCorner;

DISALLOW_COPY_AND_ASSIGN(Bessel4LVMixEQEffect);
};
16 changes: 6 additions & 10 deletions src/effects/backends/builtin/bessel8lvmixeqeffect.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "effects/backends/builtin/bessel8lvmixeqeffect.h"

#include "effects/backends/builtin/equalizer_util.h"
#include "effects/defs.h"
#include "util/math.h"

// static
Expand Down Expand Up @@ -28,9 +29,9 @@ EffectManifestPointer Bessel8LVMixEQEffect::getManifest() {
return pManifest;
}

Bessel8LVMixEQEffect::Bessel8LVMixEQEffect() {
m_pLoFreqCorner = new ControlProxy("[Mixer Profile]", "LoEQFrequency");
m_pHiFreqCorner = new ControlProxy("[Mixer Profile]", "HiEQFrequency");
Bessel8LVMixEQEffect::Bessel8LVMixEQEffect()
: m_pLoFreqCorner(kMixerProfile, kLowEqFrequency),
m_pHiFreqCorner(kMixerProfile, kHighEqFrequency) {
}

void Bessel8LVMixEQEffect::loadEngineEffectParameters(
Expand All @@ -43,11 +44,6 @@ void Bessel8LVMixEQEffect::loadEngineEffectParameters(
m_pKillHigh = parameters.value("killHigh");
}

Bessel8LVMixEQEffect::~Bessel8LVMixEQEffect() {
delete m_pLoFreqCorner;
delete m_pHiFreqCorner;
}

void Bessel8LVMixEQEffect::processChannel(
Bessel8LVMixEQEffectGroupState* pState,
const CSAMPLE* pInput,
Expand Down Expand Up @@ -86,7 +82,7 @@ void Bessel8LVMixEQEffect::processChannel(
fLow,
fMid,
fHigh,
m_pLoFreqCorner->get(),
m_pHiFreqCorner->get());
m_pLoFreqCorner.get(),
m_pHiFreqCorner.get());
}
}
8 changes: 4 additions & 4 deletions src/effects/backends/builtin/bessel8lvmixeqeffect.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <QMap>

#include "control/controlproxy.h"
#include "control/pollingcontrolproxy.h"
#include "effects/backends/builtin/lvmixeqbase.h"
#include "effects/backends/effectprocessor.h"
#include "engine/effects/engineeffect.h"
Expand All @@ -24,7 +24,7 @@ class Bessel8LVMixEQEffectGroupState : public LVMixEQEffectGroupState<EngineFilt
class Bessel8LVMixEQEffect : public EffectProcessorImpl<Bessel8LVMixEQEffectGroupState> {
public:
Bessel8LVMixEQEffect();
~Bessel8LVMixEQEffect() override;
~Bessel8LVMixEQEffect() override = default;

static QString getId();
static EffectManifestPointer getManifest();
Expand Down Expand Up @@ -53,8 +53,8 @@ class Bessel8LVMixEQEffect : public EffectProcessorImpl<Bessel8LVMixEQEffectGrou
EngineEffectParameterPointer m_pKillMid;
EngineEffectParameterPointer m_pKillHigh;

ControlProxy* m_pLoFreqCorner;
ControlProxy* m_pHiFreqCorner;
PollingControlProxy m_pLoFreqCorner;
PollingControlProxy m_pHiFreqCorner;

DISALLOW_COPY_AND_ASSIGN(Bessel8LVMixEQEffect);
};
19 changes: 10 additions & 9 deletions src/effects/backends/builtin/biquadfullkilleqeffect.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "effects/backends/builtin/biquadfullkilleqeffect.h"

#include "effects/backends/builtin/equalizer_util.h"
#include "effects/defs.h"
#include "util/math.h"

namespace {
Expand Down Expand Up @@ -142,9 +143,9 @@ void BiquadFullKillEQEffectGroupState::setFilters(
m_lvMixIso->setFilters(sampleRate, lowFreqCorner, highFreqCorner);
}

BiquadFullKillEQEffect::BiquadFullKillEQEffect() {
m_pLoFreqCorner = std::make_unique<ControlProxy>("[Mixer Profile]", "LoEQFrequency");
m_pHiFreqCorner = std::make_unique<ControlProxy>("[Mixer Profile]", "HiEQFrequency");
BiquadFullKillEQEffect::BiquadFullKillEQEffect()
: m_pLoFreqCorner(kMixerProfile, kLowEqFrequency),
m_pHiFreqCorner(kMixerProfile, kHighEqFrequency) {
}

void BiquadFullKillEQEffect::loadEngineEffectParameters(
Expand All @@ -170,10 +171,10 @@ void BiquadFullKillEQEffect::processChannel(
Q_UNUSED(groupFeatures);

if (pState->m_oldSampleRate != engineParameters.sampleRate() ||
(pState->m_loFreqCorner != m_pLoFreqCorner->get()) ||
(pState->m_highFreqCorner != m_pHiFreqCorner->get())) {
pState->m_loFreqCorner = m_pLoFreqCorner->get();
pState->m_highFreqCorner = m_pHiFreqCorner->get();
(pState->m_loFreqCorner != m_pLoFreqCorner.get()) ||
(pState->m_highFreqCorner != m_pHiFreqCorner.get())) {
pState->m_loFreqCorner = m_pLoFreqCorner.get();
pState->m_highFreqCorner = m_pHiFreqCorner.get();
pState->m_oldSampleRate = engineParameters.sampleRate();
pState->setFilters(engineParameters.sampleRate(),
pState->m_loFreqCorner,
Expand Down Expand Up @@ -407,7 +408,7 @@ void BiquadFullKillEQEffect::processChannel(
fLow,
fMid,
fHigh,
m_pLoFreqCorner->get(),
m_pHiFreqCorner->get());
m_pLoFreqCorner.get(),
m_pHiFreqCorner.get());
}
}
6 changes: 3 additions & 3 deletions src/effects/backends/builtin/biquadfullkilleqeffect.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#include "control/controlproxy.h"
#include "control/pollingcontrolproxy.h"
#include "effects/backends/builtin/lvmixeqbase.h"
#include "effects/backends/effectprocessor.h"
#include "engine/effects/engineeffect.h"
Expand Down Expand Up @@ -96,6 +96,6 @@ class BiquadFullKillEQEffect : public EffectProcessorImpl<BiquadFullKillEQEffect
EngineEffectParameterPointer m_pKillMid;
EngineEffectParameterPointer m_pKillHigh;

std::unique_ptr<ControlProxy> m_pLoFreqCorner;
std::unique_ptr<ControlProxy> m_pHiFreqCorner;
PollingControlProxy m_pLoFreqCorner;
PollingControlProxy m_pHiFreqCorner;
};
2 changes: 1 addition & 1 deletion src/effects/backends/builtin/equalizer_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,6 @@ class EqualizerUtil {

static QString adjustFrequencyShelvesTip() {
return QObject::tr(
"To adjust frequency shelves, go to Preferences -> Equalizers.");
"To adjust frequency shelves, go to Preferences -> Mixer.");
}
};
17 changes: 8 additions & 9 deletions src/effects/backends/builtin/linkwitzriley8eqeffect.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "effects/backends/builtin/linkwitzriley8eqeffect.h"

#include "effects/backends/builtin/equalizer_util.h"
#include "effects/defs.h"
#include "util/math.h"

static constexpr unsigned int kStartupSamplerate = 44100;
Expand Down Expand Up @@ -67,9 +68,9 @@ void LinkwitzRiley8EQEffectGroupState::setFilters(int sampleRate, int lowFreq, i
m_high2->setFrequencyCorners(sampleRate, highFreq);
}

LinkwitzRiley8EQEffect::LinkwitzRiley8EQEffect() {
m_pLoFreqCorner = new ControlProxy("[Mixer Profile]", "LoEQFrequency");
m_pHiFreqCorner = new ControlProxy("[Mixer Profile]", "HiEQFrequency");
LinkwitzRiley8EQEffect::LinkwitzRiley8EQEffect()
: m_pLoFreqCorner(kMixerProfile, kLowEqFrequency),
m_pHiFreqCorner(kMixerProfile, kHighEqFrequency) {
}

void LinkwitzRiley8EQEffect::loadEngineEffectParameters(
Expand All @@ -83,8 +84,6 @@ void LinkwitzRiley8EQEffect::loadEngineEffectParameters(
}

LinkwitzRiley8EQEffect::~LinkwitzRiley8EQEffect() {
delete m_pLoFreqCorner;
delete m_pHiFreqCorner;
}

void LinkwitzRiley8EQEffect::processChannel(
Expand All @@ -108,10 +107,10 @@ void LinkwitzRiley8EQEffect::processChannel(
}

if (pState->m_oldSampleRate != engineParameters.sampleRate() ||
(pState->m_loFreq != static_cast<int>(m_pLoFreqCorner->get())) ||
(pState->m_hiFreq != static_cast<int>(m_pHiFreqCorner->get()))) {
pState->m_loFreq = static_cast<int>(m_pLoFreqCorner->get());
pState->m_hiFreq = static_cast<int>(m_pHiFreqCorner->get());
(pState->m_loFreq != static_cast<int>(m_pLoFreqCorner.get())) ||
(pState->m_hiFreq != static_cast<int>(m_pHiFreqCorner.get()))) {
pState->m_loFreq = static_cast<int>(m_pLoFreqCorner.get());
pState->m_hiFreq = static_cast<int>(m_pHiFreqCorner.get());
pState->m_oldSampleRate = engineParameters.sampleRate();
pState->setFilters(engineParameters.sampleRate(), pState->m_loFreq, pState->m_hiFreq);
}
Expand Down
6 changes: 3 additions & 3 deletions src/effects/backends/builtin/linkwitzriley8eqeffect.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <QMap>

#include "control/controlproxy.h"
#include "control/pollingcontrolproxy.h"
#include "effects/backends/effectprocessor.h"
#include "engine/effects/engineeffect.h"
#include "engine/effects/engineeffectparameter.h"
Expand Down Expand Up @@ -69,8 +69,8 @@ class LinkwitzRiley8EQEffect : public EffectProcessorImpl<LinkwitzRiley8EQEffect
EngineEffectParameterPointer m_pKillMid;
EngineEffectParameterPointer m_pKillHigh;

ControlProxy* m_pLoFreqCorner;
ControlProxy* m_pHiFreqCorner;
PollingControlProxy m_pLoFreqCorner;
PollingControlProxy m_pHiFreqCorner;

DISALLOW_COPY_AND_ASSIGN(LinkwitzRiley8EQEffect);
};
15 changes: 8 additions & 7 deletions src/effects/backends/builtin/threebandbiquadeqeffect.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include "effects/backends/builtin/threebandbiquadeqeffect.h"

#include "effects/backends/builtin/equalizer_util.h"
#include "effects/defs.h"
#include "util/math.h"

namespace {
Expand Down Expand Up @@ -116,9 +117,9 @@ void ThreeBandBiquadEQEffectGroupState::setFilters(
sampleRate, highCenter / 2, kQKillShelve, m_oldHighCut);
}

ThreeBandBiquadEQEffect::ThreeBandBiquadEQEffect() {
m_pLoFreqCorner = std::make_unique<ControlProxy>("[Mixer Profile]", "LoEQFrequency");
m_pHiFreqCorner = std::make_unique<ControlProxy>("[Mixer Profile]", "HiEQFrequency");
ThreeBandBiquadEQEffect::ThreeBandBiquadEQEffect()
: m_pLoFreqCorner(kMixerProfile, kLowEqFrequency),
m_pHiFreqCorner(kMixerProfile, kHighEqFrequency) {
}

void ThreeBandBiquadEQEffect::loadEngineEffectParameters(
Expand All @@ -141,10 +142,10 @@ void ThreeBandBiquadEQEffect::processChannel(
Q_UNUSED(groupFeatures);

if (pState->m_oldSampleRate != engineParameters.sampleRate() ||
(pState->m_loFreqCorner != m_pLoFreqCorner->get()) ||
(pState->m_highFreqCorner != m_pHiFreqCorner->get())) {
pState->m_loFreqCorner = m_pLoFreqCorner->get();
pState->m_highFreqCorner = m_pHiFreqCorner->get();
(pState->m_loFreqCorner != m_pLoFreqCorner.get()) ||
(pState->m_highFreqCorner != m_pHiFreqCorner.get())) {
pState->m_loFreqCorner = m_pLoFreqCorner.get();
pState->m_highFreqCorner = m_pHiFreqCorner.get();
pState->m_oldSampleRate = engineParameters.sampleRate();
pState->setFilters(engineParameters.sampleRate(),
pState->m_loFreqCorner,
Expand Down
6 changes: 3 additions & 3 deletions src/effects/backends/builtin/threebandbiquadeqeffect.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#include "control/controlproxy.h"
#include "control/pollingcontrolproxy.h"
#include "effects/backends/effectprocessor.h"
#include "engine/effects/engineeffect.h"
#include "engine/effects/engineeffectparameter.h"
Expand Down Expand Up @@ -77,6 +77,6 @@ class ThreeBandBiquadEQEffect : public EffectProcessorImpl<ThreeBandBiquadEQEffe
EngineEffectParameterPointer m_pKillMid;
EngineEffectParameterPointer m_pKillHigh;

std::unique_ptr<ControlProxy> m_pLoFreqCorner;
std::unique_ptr<ControlProxy> m_pHiFreqCorner;
PollingControlProxy m_pLoFreqCorner;
PollingControlProxy m_pHiFreqCorner;
};
4 changes: 4 additions & 0 deletions src/effects/defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ constexpr int kNumEffectsPerUnit = 4;

const QString kNoEffectString = QStringLiteral("---");

const QString kMixerProfile = QStringLiteral("[Mixer Profile]");
const QString kHighEqFrequency = QStringLiteral("HiEQFrequency");
const QString kLowEqFrequency = QStringLiteral("LoEQFrequency");

// NOTE: Setting this to true will enable string manipulation and calls to
// qDebug() in the audio engine thread. That may cause audio dropouts, so only
// enable this when debugging the effects system.
Expand Down
4 changes: 2 additions & 2 deletions src/effects/effectsmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ EffectsManager::EffectsManager(
std::shared_ptr<ChannelHandleFactory> pChannelHandleFactory)
: m_pConfig(pConfig),
m_pChannelHandleFactory(pChannelHandleFactory),
m_loEqFreq(ConfigKey("[Mixer Profile]", "LoEQFrequency"), 0., 22040),
m_hiEqFreq(ConfigKey("[Mixer Profile]", "HiEQFrequency"), 0., 22040) {
m_loEqFreq(ConfigKey(kMixerProfile, kLowEqFrequency), 0., 22040),
m_hiEqFreq(ConfigKey(kMixerProfile, kHighEqFrequency), 0., 22040) {
qRegisterMetaType<EffectChainMixMode>("EffectChainMixMode");

m_pBackendManager = EffectsBackendManagerPointer(new EffectsBackendManager());
Expand Down
4 changes: 4 additions & 0 deletions src/effects/effectsmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ class EffectsManager {
const QString& deckGroupName) const {
return m_equalizerEffectChains.value(deckGroupName);
}
QuickEffectChainPointer getQuickEffectChain(
const QString& deckGroupName) const {
return m_quickEffectChains.value(deckGroupName);
}
EffectChainPointer getStandardEffectChain(int unitNumber) const;
EffectChainPointer getOutputEffectChain() const;

Expand Down
Loading

0 comments on commit b695252

Please sign in to comment.