commit b6655c82ba3c3f747ad2d7f238ba4703629532f5
parent 3e8d3b97a9c6e59a642efbad6e02c081ca591f74
Author: Matt Demanett <matt@demanett.net>
Date: Mon, 17 Feb 2020 22:35:43 -0500
Filters CV fixes.
Diffstat:
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/res-src/FFB-src.svg b/res-src/FFB-src.svg
@@ -55,14 +55,14 @@
</g>
</symbol>
- <symbol id="knobguide-centertick" viewBox="0 0 40px 40px">
+ <symbol id="knobguide-maxtick" viewBox="0 0 40px 40px">
<g transform="translate(20 20)">
- <g transform="rotate(-90) translate(10 0)">
+ <g transform="rotate(60) translate(10 0)">
<polyline points="0,0 4,0" stroke-width="1" stroke="#333" />
</g>
- <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke="#333" stroke-width="0.5" stroke-linecap="round" fill="none" transform="rotate(20)" />
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke="#333" stroke-width="0.5" stroke-linecap="round" fill="none" transform="rotate(0)" />
<path d="M 0 -12.5 A 12.5 12.5 0 0 1 12.5 0" stroke="#333" stroke-width="0.5" stroke-linecap="round" fill="none" transform="rotate(43)" />
- <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke="#333" stroke-width="0.5" stroke-linecap="round" fill="none" transform="rotate(-20)" />
+ <path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke="#333" stroke-width="0.5" stroke-linecap="round" fill="none" transform="rotate(0)" />
<path d="M 0 -12.5 A 12.5 12.5 0 0 0 -12.5 0" stroke="#333" stroke-width="0.5" stroke-linecap="round" fill="none" transform="rotate(-43)" />
</g>
</symbol>
@@ -185,7 +185,7 @@
<g transform="translate(41 228)">
<text font-size="6pt" letter-spacing="2px" transform="translate(12.5 6)">CV</text>
<use id="CV_PARAM" xlink:href="#knob-smallest" transform="translate(11 18.5)" />
- <use xlink:href="#knobguide-centertick" transform="translate(-1 6.5)" />
+ <use xlink:href="#knobguide-maxtick" transform="translate(-1 6.5)" />
</g>
<g transform="translate(80.5 228)">
<text font-size="6pt" letter-spacing="2px" transform="translate(12.5 6)">HP</text>
diff --git a/res/FFB.svg b/res/FFB.svg
Binary files differ.
diff --git a/src/FFB.cpp b/src/FFB.cpp
@@ -4,7 +4,7 @@
void FFB::Engine::sampleRateChange() {
float sr = APP->engine->getSampleRate();
for (int i = 0; i < 14; i++) {
- _slews[i].setParams(sr, 5.0f, 1.0f);
+ _slews[i].setParams(sr, 1.0f, 1.0f);
}
auto bp = [this, sr](int i, float cutoff) {
@@ -69,7 +69,7 @@ void FFB::modulateChannel(int c) {
float cv = 1.0f;
if (inputs[CV_INPUT].isConnected()) {
cv = clamp(inputs[CV_INPUT].getPolyVoltage(c) / 10.0f, 0.0f, 1.0f);
- cv *= clamp(params[CV_PARAM].getValue(), -1.0f, 1.0f);
+ cv *= clamp(params[CV_PARAM].getValue(), 0.0f, 1.0f);
}
for (int i = 0; i < 14; ++i) {
diff --git a/src/FFB.hpp b/src/FFB.hpp
@@ -91,7 +91,7 @@ struct FFB : BGModule {
configParam<AmpliferParamQuantity>(BAND_8_PARAM, 0.0f, 1.0f, 1.0f, "Band 8 level");
configParam<AmpliferParamQuantity>(BAND_12_PARAM, 0.0f, 1.0f, 1.0f, "Band 12 level");
configParam<AmpliferParamQuantity>(LOWPASS_PARAM, 0.0f, 1.0f, 1.0f, "Lowpass level");
- configParam(CV_PARAM, -1.0f, 1.0f, 0.0f, "Level CV", "%", 0.0f, 100.0f);
+ configParam(CV_PARAM, 0.0f, 1.0f, 1.0f, "Level CV", "%", 0.0f, 100.0f);
configParam<AmpliferParamQuantity>(HIGHPASS_PARAM, 0.0f, 1.0f, 1.0f, "Highpass level");
}
diff --git a/src/LVCF.cpp b/src/LVCF.cpp
@@ -106,9 +106,9 @@ void LVCF::modulateChannel(int c) {
float f = clamp(params[FREQUENCY_PARAM].getValue(), 0.0f, 1.0f);
f *= f;
if (inputs[FREQUENCY_CV_INPUT].isConnected()) {
- float fcv = clamp(inputs[FREQUENCY_CV_INPUT].getPolyVoltage(c) / 10.0f, -1.0f, 1.0f);
+ float fcv = clamp(inputs[FREQUENCY_CV_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
fcv *= clamp(params[FREQUENCY_CV_PARAM].getValue(), -1.0f, 1.0f);
- f += fcv;
+ f = std::max(0.0f, f + fcv);
}
f *= MultimodeFilter::maxFrequency;
const float lowThreshold = 100.0f;
diff --git a/src/VCF.cpp b/src/VCF.cpp
@@ -151,9 +151,9 @@ void VCF::modulateChannel(int c) {
float f = clamp(params[FREQUENCY_PARAM].getValue(), 0.0f, 1.0f);
f *= f;
if (inputs[FREQUENCY_CV_INPUT].isConnected()) {
- float fcv = clamp(inputs[FREQUENCY_CV_INPUT].getPolyVoltage(c) / 10.0f, -1.0f, 1.0f);
+ float fcv = clamp(inputs[FREQUENCY_CV_INPUT].getPolyVoltage(c) / 5.0f, -1.0f, 1.0f);
fcv *= clamp(params[FREQUENCY_CV_PARAM].getValue(), -1.0f, 1.0f);
- f += fcv;
+ f = std::max(0.0f, f + fcv);
}
f *= MultimodeFilter::maxFrequency;
if (inputs[PITCH_INPUT].isConnected() || inputs[FM_INPUT].isConnected()) {