commit aa49a377cf1cdc285d0ce6e0ecdfbb5d121dba6d
parent 9c09034057fb5c80cd51f95b88471595f9294cc5
Author: Matt Demanett <matt@demanett.net>
Date: Wed, 1 Jan 2025 10:33:58 -0800
Fix trigger bug present since Rack 2.0; bug manifested when sending poly gates to SWITCH. #243
Diffstat:
2 files changed, 4 insertions(+), 35 deletions(-)
diff --git a/src/rack_overrides.cpp b/src/rack_overrides.cpp
@@ -3,32 +3,10 @@
using namespace bogaudio;
bool Trigger::process(float in) {
- if (state) {
- if (in <= _lowThreshold) {
- state = false;
- }
- }
- else {
- if (in >= _highThreshold) {
- state = true;
- return true;
- }
- }
- return false;
+ return rack::dsp::SchmittTrigger::process(in, _lowThreshold, _highThreshold);
}
bool NegativeTrigger::process(float in) {
- if (state) {
- if (in >= _lowThreshold) {
- state = false;
- }
- }
- else {
- if (in <= _highThreshold) {
- state = true;
- return true;
- }
- }
- return false;
+ return Trigger::process(-in);
}
diff --git a/src/rack_overrides.hpp b/src/rack_overrides.hpp
@@ -21,17 +21,8 @@ struct Trigger : rack::dsp::SchmittTrigger {
bool process(float in);
};
-struct NegativeTrigger : rack::dsp::SchmittTrigger {
- float _highThreshold;
- float _lowThreshold;
-
- NegativeTrigger(float highThreshold = -1.0f, float lowThreshold = -0.1f)
- : _highThreshold(highThreshold)
- , _lowThreshold(lowThreshold)
- {
- assert(_highThreshold < _lowThreshold);
- reset();
- }
+struct NegativeTrigger : Trigger {
+ NegativeTrigger(float highThreshold = -1.0f, float lowThreshold = -0.1f) : Trigger(-highThreshold, -lowThreshold) {}
bool process(float in);
};