BogaudioModules

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

commit 58ce4bf8c9af5448956a07218e626d124c402e8e
parent e5ae4d2dd633f75c2472a15060a80b2b42791331
Author: Matt Demanett <matt@demanett.net>
Date:   Thu,  9 May 2019 22:30:09 -0400

Walks: adjust rate response.

Diffstat:
Msrc/Walk.cpp | 3+--
Msrc/Walk2.cpp | 10++++++----
2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/Walk.cpp b/src/Walk.cpp @@ -20,8 +20,7 @@ void Walk::step() { if (inputs[RATE_INPUT].active) { rate *= clamp(inputs[RATE_INPUT].value / 10.0f, 0.0f, 1.0f); } - rate *= rate; - rate *= rate; + rate = 0.2f * powf(rate, 5.0f); _walk.setParams(engineGetSampleRate(), rate); _offset = params[OFFSET_PARAM].value; diff --git a/src/Walk2.cpp b/src/Walk2.cpp @@ -38,6 +38,10 @@ void Walk2::fromJson(json_t* root) { } } +inline float scaleRate(float rate) { + return 0.2f * powf(rate, 5.0f); +} + void Walk2::step() { ++_modulationStep; if (_modulationStep >= modulationSteps) { @@ -48,8 +52,7 @@ void Walk2::step() { if (inputs[RATE_X_INPUT].active) { rateX *= clamp(inputs[RATE_X_INPUT].value / 10.0f, 0.0f, 1.0f); } - rateX *= rateX; - rateX *= rateX; + rateX = scaleRate(rateX); _walkX.setParams(sampleRate, rateX); _slewX.setParams(sampleRate, std::max((1.0f - rateX) * 100.0f, 0.0f), 10.0f); @@ -68,8 +71,7 @@ void Walk2::step() { if (inputs[RATE_Y_INPUT].active) { rateY *= clamp(inputs[RATE_Y_INPUT].value / 10.0f, 0.0f, 1.0f); } - rateY *= rateY; - rateY *= rateY; + rateY = scaleRate(rateY); _walkY.setParams(sampleRate, rateY); _slewY.setParams(sampleRate, std::max((1.0f - rateY) * 100.0f, 0.0f), 10.0f);