BogaudioModules

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

commit 0887666edfe27b723c68badd31e20191b7479584
parent 375929b34d98e99720a78dc5701083b1e25b8953
Author: Matt Demanett <matt@demanett.net>
Date:   Fri, 13 Sep 2019 23:14:30 -0400

Poly: OFFSET.

Diffstat:
Msrc/Offset.cpp | 22+++++++++++++++-------
Msrc/Offset.hpp | 6+++---
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