BogaudioModules

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

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:
Msrc/matrix_base.cpp | 14+++++++++-----
Msrc/matrix_base.hpp | 2+-
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() {