commit f7a45bff658559250122c94d675f8b3512a16796
parent 3fc62e1584c13b76ca4d36d7f6122d65de517fdc
Author: Matt Demanett <matt@demanett.net>
Date: Fri, 24 Apr 2020 19:34:59 -0400
SWITCH mixers: fix nasty problems recently introduced. #114
Diffstat:
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/matrix_base.cpp b/src/matrix_base.cpp
@@ -40,14 +40,18 @@ int MatrixModule::channels() {
}
void MatrixModule::modulate() {
- for (int i = 0, nn = _n * _n; i < nn; ++i) {
- _paramValues[i] = params[_firstParamID + i].getValue();
+ MatrixBaseModule::modulate();
+ for (int i = 0; i < _n; ++i) {
+ for (int j = 0; j < _n; ++j) {
+ int ii = i * _n + j;
+ _paramValues[ii] = params[_firstParamID + ii].getValue();
+ }
}
}
void MatrixModule::processChannel(const ProcessArgs& args, int c) {
- bool inActive[maxN];
- float in[maxN];
+ bool inActive[maxN] {};
+ float in[maxN] {};
for (int i = 0; i < _n; ++i) {
inActive[i] = inputs[_firstInputID + i].isConnected();
if (inActive[i]) {
@@ -61,7 +65,7 @@ void MatrixModule::processChannel(const ProcessArgs& args, int c) {
}
float out = 0.0f;
for (int j = 0; j < _n; ++j) {
- if (inActive[i]) {
+ if (inActive[j]) {
out += in[j] * _paramValues[i * _n + j];
}
}
diff --git a/src/matrix_base.hpp b/src/matrix_base.hpp
@@ -61,7 +61,7 @@ struct MatrixModule : MatrixBaseModule {
, _firstOutputID(firstOutputID)
{
assert(_n <= maxN);
- _paramValues = new float[_n * _n];
+ _paramValues = new float[_n * _n] {};
_saturators = new Saturator[_n * maxChannels];
}
virtual ~MatrixModule() {