commit 2e6f0b3ce4a15af359031b4242a696da10cda068
parent 50db8a221902514e4834a2a596e0ed02bf1aa616
Author: Matt Demanett <matt@demanett.net>
Date: Tue, 16 Jun 2020 23:07:55 -0400
(L)VCF, PEQ: minor fixes to frequency CV handling; increase frequency slew rate slightly.
Diffstat:
5 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/LVCF.cpp b/src/LVCF.cpp
@@ -27,9 +27,9 @@ void LVCF::Engine::setParams(
);
}
-void LVCF::Engine::sampleRateChange(int modulationSteps) {
+void LVCF::Engine::sampleRateChange() {
_sampleRate = APP->engine->getSampleRate();
- _frequencySL.setParams(_sampleRate, 100.0f / (float)modulationSteps, frequencyToSemitone(maxFrequency - minFrequency));
+ _frequencySL.setParams(_sampleRate, 0.5f, frequencyToSemitone(maxFrequency - minFrequency));
_finalHP.setParams(_sampleRate, MultimodeFilter::BUTTERWORTH_TYPE, 2, MultimodeFilter::HIGHPASS_MODE, 80.0f, MultimodeFilter::minQbw, MultimodeFilter::LINEAR_BANDWIDTH_MODE, MultimodeFilter::MINIMUM_DELAY_MODE);
}
@@ -80,7 +80,7 @@ void LVCF::dataFromJson(json_t* root) {
void LVCF::sampleRateChange() {
for (int c = 0; c < _channels; ++c) {
- _engines[c]->sampleRateChange(_modulationSteps);
+ _engines[c]->sampleRateChange();
}
}
@@ -119,12 +119,12 @@ void LVCF::modulateChannel(int c) {
float q = _q;
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) / 5.0f, -1.0f, 1.0f);
fcv *= clamp(params[FREQUENCY_CV_PARAM].getValue(), -1.0f, 1.0f);
f = std::max(0.0f, f + fcv);
}
+ f *= f;
f *= maxFrequency;
f = clamp(f, minFrequency, maxFrequency);
diff --git a/src/LVCF.hpp b/src/LVCF.hpp
@@ -54,7 +54,7 @@ struct LVCF : BGModule {
float qbw,
MultimodeFilter::BandwidthMode bwm
);
- void sampleRateChange(int modulationSteps = 100);
+ void sampleRateChange();
void reset();
float next(float sample);
};
diff --git a/src/VCF.cpp b/src/VCF.cpp
@@ -49,9 +49,9 @@ void VCF::Engine::setParams(
}
}
-void VCF::Engine::sampleRateChange(int modulationSteps) {
+void VCF::Engine::sampleRateChange() {
_sampleRate = APP->engine->getSampleRate();
- _frequencySL.setParams(_sampleRate, 100.0f / (float)modulationSteps, frequencyToSemitone(maxFrequency - minFrequency));
+ _frequencySL.setParams(_sampleRate, 0.5f, frequencyToSemitone(maxFrequency - minFrequency));
_finalHP.setParams(_sampleRate, MultimodeFilter::BUTTERWORTH_TYPE, 2, MultimodeFilter::HIGHPASS_MODE, 80.0f, MultimodeFilter::minQbw, MultimodeFilter::LINEAR_BANDWIDTH_MODE, MultimodeFilter::MINIMUM_DELAY_MODE);
for (int i = 0; i < nFilters; ++i) {
_gainSLs[i].setParams(_sampleRate, 50.0f, 1.0f);
@@ -105,7 +105,7 @@ void VCF::dataFromJson(json_t* root) {
void VCF::sampleRateChange() {
for (int c = 0; c < _channels; ++c) {
- _engines[c]->sampleRateChange(_modulationSteps);
+ _engines[c]->sampleRateChange();
}
}
@@ -151,12 +151,12 @@ 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) / 5.0f, -1.0f, 1.0f);
fcv *= clamp(params[FREQUENCY_CV_PARAM].getValue(), -1.0f, 1.0f);
f = std::max(0.0f, f + fcv);
}
+ f *= f;
f *= maxFrequency;
if (inputs[PITCH_INPUT].isConnected() || inputs[FM_INPUT].isConnected()) {
float fm = inputs[FM_INPUT].getPolyVoltage(c);
diff --git a/src/VCF.hpp b/src/VCF.hpp
@@ -59,7 +59,7 @@ struct VCF : BGModule {
MultimodeFilter::BandwidthMode bwm
);
void reset();
- void sampleRateChange(int modulationSteps = 100);
+ void sampleRateChange();
float next(float sample);
};
diff --git a/src/parametric_eq.cpp b/src/parametric_eq.cpp
@@ -9,7 +9,7 @@ constexpr float PEQChannel::minFrequency;
void PEQChannel::setSampleRate(float sampleRate) {
_sampleRate = sampleRate;
_levelSL.setParams(sampleRate, 0.05f, maxDecibels - minDecibels);
- _frequencySL.setParams(sampleRate, 1.0f, frequencyToSemitone(maxFrequency - minFrequency));
+ _frequencySL.setParams(sampleRate, 0.5f, frequencyToSemitone(maxFrequency - minFrequency));
_bandwidthSL.setParams(sampleRate, 0.05f, MultimodeFilter::maxQbw - MultimodeFilter::minQbw);
_rms.setSampleRate(sampleRate);
}