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:
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;