BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit acb5d1570471e75ce43672be20172fb05f8dc153
parent e31e77db86f2a3b312521abc7db4d4bed2b119e7
Author: Matt Demanett <matt@demanett.net>
Date:   Wed, 13 Nov 2019 23:54:19 -0500

Fix poly channel engine initialization in LMTR and a few other modules.  May fix crash.  #79

Diffstat:
Msrc/CVD.cpp | 9+++++++--
Msrc/CVD.hpp | 4++--
Msrc/Clpr.hpp | 2--
Msrc/Lmtr.cpp | 13+++++++++----
Msrc/Lmtr.hpp | 4++--
Msrc/Nsgt.cpp | 13+++++++++----
Msrc/Nsgt.hpp | 4++--
Msrc/Pressor.cpp | 7++++++-
Msrc/Pressor.hpp | 4++--
9 files changed, 39 insertions(+), 21 deletions(-)

diff --git a/src/CVD.cpp b/src/CVD.cpp @@ -1,9 +1,13 @@ #include "CVD.hpp" -void CVD::sampleRateChange() { +void CVD::Engine::sampleRateChange() { + delay.setSampleRate(APP->engine->getSampleRate()); +} + +void Lmtr::sampleRateChange() { for (int c = 0; c < _channels; ++c) { - _engines[c]->delay.setSampleRate(APP->engine->getSampleRate()); + _engines[c]->sampleRateChange(); } } @@ -13,6 +17,7 @@ int CVD::channels() { void CVD::addEngine(int c) { _engines[c] = new Engine(); + _engines[c]->sampleRateChange(); } void CVD::removeEngine(int c) { diff --git a/src/CVD.hpp b/src/CVD.hpp @@ -38,6 +38,8 @@ struct CVD : BGModule { CrossFader mix; Engine() : delay(1000.0f, 10000.0f) {} + + void sampleRateChange(); }; Engine* _engines[maxChannels] {}; @@ -46,8 +48,6 @@ struct CVD : BGModule { configParam(TIME_PARAM, 0.0f, 1.0f, 0.5f, "Time base"); configParam(TIME_SCALE_PARAM, 0.0f, 2.0f, 1.0f, "Time scale", "", 10.0f, 0.1f); configParam(MIX_PARAM, -1.0f, 1.0f, 0.0f, "Dry wet mix", "%", 0.0f, 100.0f); - - sampleRateChange(); } void sampleRateChange() override; diff --git a/src/Clpr.hpp b/src/Clpr.hpp @@ -49,8 +49,6 @@ struct Clpr : BGModule { configParam(THRESHOLD_PARAM, 0.0f, 1.0f, 0.8f, "Threshold", " dB", 0.0f, 30.0f, -24.0f); configParam(OUTPUT_GAIN_PARAM, 0.0f, 1.0f, 0.0f, "Output gain", " dB", 0.0f, 24.0f); configParam(KNEE_PARAM, 0.0f, 1.0f, 0.0f, "Knee"); - - reset(); } bool active() override; diff --git a/src/Lmtr.cpp b/src/Lmtr.cpp @@ -1,12 +1,16 @@ #include "Lmtr.hpp" -void Lmtr::sampleRateChange() { +void Lmtr::Engine::sampleRateChange() { float sampleRate = APP->engine->getSampleRate(); + detector.setSampleRate(sampleRate); + attackSL.setParams(sampleRate, 150.0f); + releaseSL.setParams(sampleRate, 600.0f); +} + +void Lmtr::sampleRateChange() { for (int c = 0; c < _channels; ++c) { - _engines[c]->detector.setSampleRate(sampleRate); - _engines[c]->attackSL.setParams(sampleRate, 150.0f); - _engines[c]->releaseSL.setParams(sampleRate, 600.0f); + _engines[c]->sampleRateChange(); } } @@ -20,6 +24,7 @@ int Lmtr::channels() { void Lmtr::addEngine(int c) { _engines[c] = new Engine(); + _engines[c]->sampleRateChange(); } void Lmtr::removeEngine(int c) { diff --git a/src/Lmtr.hpp b/src/Lmtr.hpp @@ -47,6 +47,8 @@ struct Lmtr : BGModule { Compressor compressor; Amplifier amplifier; Saturator saturator; + + void sampleRateChange(); }; Engine* _engines[maxChannels] {}; @@ -57,8 +59,6 @@ struct Lmtr : BGModule { configParam(THRESHOLD_PARAM, 0.0f, 1.0f, 0.8f, "Threshold", " dB", 0.0f, 30.0f, -24.0f); configParam(OUTPUT_GAIN_PARAM, 0.0f, 1.0f, 0.0f, "Output gain", " dB", 0.0f, 24.0f); configParam(KNEE_PARAM, 0.0f, 1.0f, 0.0f, "Knee"); - - sampleRateChange(); } void sampleRateChange() override; diff --git a/src/Nsgt.cpp b/src/Nsgt.cpp @@ -2,12 +2,16 @@ #include "Nsgt.hpp" -void Nsgt::sampleRateChange() { +void Nsgt::Engine::sampleRateChange() { float sampleRate = APP->engine->getSampleRate(); + detector.setSampleRate(sampleRate); + attackSL.setParams(sampleRate, 150.0f); + releaseSL.setParams(sampleRate, 600.0f); +} + +void Nsgt::sampleRateChange() { for (int c = 0; c < _channels; ++c) { - _engines[c]->detector.setSampleRate(sampleRate); - _engines[c]->attackSL.setParams(sampleRate, 150.0f); - _engines[c]->releaseSL.setParams(sampleRate, 600.0f); + _engines[c]->sampleRateChange(); } } @@ -21,6 +25,7 @@ int Nsgt::channels() { void Nsgt::addEngine(int c) { _engines[c] = new Engine(); + _engines[c]->sampleRateChange(); } void Nsgt::removeEngine(int c) { diff --git a/src/Nsgt.hpp b/src/Nsgt.hpp @@ -47,6 +47,8 @@ struct Nsgt : BGModule { NoiseGate noiseGate; Amplifier amplifier; Saturator saturator; + + void sampleRateChange(); }; Engine* _engines[maxChannels] {}; @@ -57,8 +59,6 @@ struct Nsgt : BGModule { configParam(THRESHOLD_PARAM, 0.0f, 1.0f, 0.8f, "Threshold", " dB", 0.0f, 30.0f, -24.0f); configParam<DynamicsRatioParamQuantity>(RATIO_PARAM, 0.0f, 1.0f, 0.55159f, "Ratio"); configParam(KNEE_PARAM, 0.0f, 1.0f, 1.0f, "Knee"); - - sampleRateChange(); } void sampleRateChange() override; diff --git a/src/Pressor.cpp b/src/Pressor.cpp @@ -1,9 +1,13 @@ #include "Pressor.hpp" +void Pressor::Engine::sampleRateChange() { + detectorRMS.setSampleRate(APP->engine->getSampleRate()); +} + void Pressor::sampleRateChange() { for (int c = 0; c < _channels; ++c) { - _engines[c]->detectorRMS.setSampleRate(APP->engine->getSampleRate()); + _engines[c]->sampleRateChange(); } } @@ -24,6 +28,7 @@ int Pressor::channels() { void Pressor::addEngine(int c) { _engines[c] = new Engine(); + _engines[c]->sampleRateChange(); } void Pressor::removeEngine(int c) { diff --git a/src/Pressor.hpp b/src/Pressor.hpp @@ -68,6 +68,8 @@ struct Pressor : BGModule { Saturator saturator; Engine() : detectorRMS(1000.0f, 1.0f, 50.0f) {} + + void sampleRateChange(); }; Engine* _engines[maxChannels] {}; @@ -88,8 +90,6 @@ struct Pressor : BGModule { configParam(MODE_PARAM, 0.0f, 1.0f, 1.0f, "Mode"); configParam(DECTECTOR_MODE_PARAM, 0.0f, 1.0f, 1.0f, "Dectector mode"); configParam(KNEE_PARAM, 0.0f, 1.0f, 1.0f, "Knee"); - - sampleRateChange(); } void sampleRateChange() override;