commit 0887666edfe27b723c68badd31e20191b7479584
parent 375929b34d98e99720a78dc5701083b1e25b8953
Author: Matt Demanett <matt@demanett.net>
Date: Fri, 13 Sep 2019 23:14:30 -0400
Poly: OFFSET.
Diffstat:
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/src/Offset.cpp b/src/Offset.cpp
@@ -1,25 +1,33 @@
#include "Offset.hpp"
-void Offset::processChannel(const ProcessArgs& args, int _c) {
- float offset = knobValue(params[OFFSET_PARAM], inputs[OFFSET_INPUT]);
- float scale = knobValue(params[SCALE_PARAM], inputs[SCALE_INPUT]);
+int Offset::channels() {
+ if (inputs[IN_INPUT].isConnected()) {
+ return inputs[IN_INPUT].getChannels();
+ }
+ return 1;
+}
+
+void Offset::processChannel(const ProcessArgs& args, int c) {
+ float offset = knobValue(params[OFFSET_PARAM], inputs[OFFSET_INPUT], c);
+ float scale = knobValue(params[SCALE_PARAM], inputs[SCALE_INPUT], c);
scale = scale < 0.0f ? -pow(scale, 2.0f) : pow(scale, 2.0f);
scale *= 10.0;
- float out = inputs[IN_INPUT].getVoltage();
+ float out = inputs[IN_INPUT].getVoltage(c);
out += 10.0f * offset;
out *= scale;
if (!_disableOutputLimit) {
out = clamp(out, -12.0f, 12.0f);
}
- outputs[OUT_OUTPUT].setVoltage(out);
+ outputs[OUT_OUTPUT].setChannels(_channels);
+ outputs[OUT_OUTPUT].setVoltage(out, c);
}
-float Offset::knobValue(Param& knob, Input& cv) const {
+float Offset::knobValue(Param& knob, Input& cv, int c) const {
float v = knob.getValue();
if (cv.isConnected()) {
- v *= clamp(cv.getVoltage() / 10.0f, -1.0f, 1.0f);
+ v *= clamp(cv.getPolyVoltage(c) / 10.0f, -1.0f, 1.0f);
}
return v;
}
diff --git a/src/Offset.hpp b/src/Offset.hpp
@@ -32,9 +32,9 @@ struct Offset : DisableOutputLimitModule {
configParam(SCALE_PARAM, -1.0f, 1.0f, 0.316f, "Scale", "%", 0.0f, 100.0f);
}
- void processChannel(const ProcessArgs& args, int _c) override;
-
- float knobValue(Param& knob, Input& cv) const;
+ int channels() override;
+ void processChannel(const ProcessArgs& args, int c) override;
+ float knobValue(Param& knob, Input& cv, int c) const;
};
} // namespace bogaudio