From 3aefe7b3d3a447be6565364a1386fe148ac061eb Mon Sep 17 00:00:00 2001 From: Lost Robot <34612565+LostRobotMusic@users.noreply.github.com> Date: Fri, 22 Dec 2023 13:58:02 -0800 Subject: [PATCH] Fix LOMM crossovers (#7026) --- plugins/LOMM/LOMM.cpp | 10 ++++++++-- plugins/LOMM/LOMM.h | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/LOMM/LOMM.cpp b/plugins/LOMM/LOMM.cpp index 6dc640626..482a59b7e 100644 --- a/plugins/LOMM/LOMM.cpp +++ b/plugins/LOMM/LOMM.cpp @@ -55,6 +55,7 @@ LOMMEffect::LOMMEffect(Model* parent, const Descriptor::SubPluginFeatures::Key* m_lp2(m_sampleRate), m_hp1(m_sampleRate), m_hp2(m_sampleRate), + m_ap(m_sampleRate), m_needsUpdate(true), m_coeffPrecalc(-0.05), m_crestTimeConst(0.999), @@ -67,6 +68,8 @@ LOMMEffect::LOMMEffect(Model* parent, const Descriptor::SubPluginFeatures::Key* m_yL[1][0] = m_yL[1][1] = LOMM_MIN_FLOOR; m_yL[2][0] = m_yL[2][1] = LOMM_MIN_FLOOR; + m_ap.setFilterType(BasicFilters<2>::FilterType::AllPass); + connect(Engine::audioEngine(), SIGNAL(sampleRateChanged()), this, SLOT(changeSampleRate())); emit changeSampleRate(); } @@ -117,6 +120,7 @@ bool LOMMEffect::processAudioBuffer(sampleFrame* buf, const fpp_t frames) { m_lp1.setLowpass(m_lommControls.m_split1Model.value()); m_hp1.setHighpass(m_lommControls.m_split1Model.value()); + m_ap.calcFilterCoeffs(m_lommControls.m_split1Model.value(), 0.70710678118); } if (m_needsUpdate || m_lommControls.m_split2Model.isValueChanged()) { @@ -224,9 +228,11 @@ bool LOMMEffect::processAudioBuffer(sampleFrame* buf, const fpp_t frames) float crestFactorValTemp = ((m_crestFactorVal[i] - LOMM_AUTO_TIME_ADJUST) * autoTime) + LOMM_AUTO_TIME_ADJUST; // Crossover filters - bands[0][i] = m_hp1.update(s[i], i); - bands[1][i] = m_hp2.update(m_lp1.update(s[i], i), i); bands[2][i] = m_lp2.update(s[i], i); + bands[1][i] = m_hp2.update(s[i], i); + bands[0][i] = m_hp1.update(bands[1][i], i); + bands[1][i] = m_lp1.update(bands[1][i], i); + bands[2][i] = m_ap.update(bands[2][i], i); if (!split1Enabled) { diff --git a/plugins/LOMM/LOMM.h b/plugins/LOMM/LOMM.h index 039f80b6a..c1a5aef70 100644 --- a/plugins/LOMM/LOMM.h +++ b/plugins/LOMM/LOMM.h @@ -73,6 +73,8 @@ private: StereoLinkwitzRiley m_hp1; StereoLinkwitzRiley m_hp2; + BasicFilters<2> m_ap; + bool m_needsUpdate; float m_coeffPrecalc;