commit 311ef5ae9ca861794109f5953277d0ce9d16c3fc
parent df847e4aec2584f1ef30cd6eb70c0e661066e1a5
Author: Matt Demanett <matt@demanett.net>
Date: Sun, 19 Apr 2020 22:15:07 -0400
Fix up some constants.
Diffstat:
7 files changed, 31 insertions(+), 27 deletions(-)
diff --git a/src/FFB.cpp b/src/FFB.cpp
@@ -11,7 +11,7 @@ void FFB::Engine::sampleRateChange() {
_bandPasses[i].setParams(
sr,
cutoff,
- 0.22f / BOGAUDIO_DSP_MULTIMODEFILTER_MAXBWPITCH,
+ 0.22f / MultimodeFilter::maxBWPitch,
MultimodeFilter::PITCH_BANDWIDTH_MODE
);
};
diff --git a/src/LVCF.cpp b/src/LVCF.cpp
@@ -30,7 +30,7 @@ void LVCF::Engine::setParams(
void LVCF::Engine::sampleRateChange(int modulationSteps) {
_sampleRate = APP->engine->getSampleRate();
_frequencySL.setParams(_sampleRate, 100.0f / (float)modulationSteps, frequencyToSemitone(maxFrequency - minFrequency));
- _finalHP.setParams(_sampleRate, MultimodeFilter::BUTTERWORTH_TYPE, 2, MultimodeFilter::HIGHPASS_MODE, 80.0f, BOGAUDIO_DSP_MULTIMODEFILTER_MINQBW);
+ _finalHP.setParams(_sampleRate, MultimodeFilter::BUTTERWORTH_TYPE, 2, MultimodeFilter::HIGHPASS_MODE, 80.0f, MultimodeFilter::minQbw);
}
void LVCF::Engine::reset() {
diff --git a/src/LVCF.hpp b/src/LVCF.hpp
@@ -60,7 +60,7 @@ struct LVCF : BGModule {
};
static constexpr float maxFrequency = 20000.0f;
- static constexpr float minFrequency = BOGAUDIO_DSP_MULTIMODEFILTER_MINFREQUENCY;
+ static constexpr float minFrequency = MultimodeFilter::minFrequency;
MultimodeFilter::Mode _mode = MultimodeFilter::UNKNOWN_MODE;
int _polesSetting = 4;
int _poles = 0;
diff --git a/src/VCF.cpp b/src/VCF.cpp
@@ -52,7 +52,7 @@ void VCF::Engine::setParams(
void VCF::Engine::sampleRateChange(int modulationSteps) {
_sampleRate = APP->engine->getSampleRate();
_frequencySL.setParams(_sampleRate, 100.0f / (float)modulationSteps, frequencyToSemitone(maxFrequency - minFrequency));
- _finalHP.setParams(_sampleRate, MultimodeFilter::BUTTERWORTH_TYPE, 2, MultimodeFilter::HIGHPASS_MODE, 80.0f, BOGAUDIO_DSP_MULTIMODEFILTER_MINQBW);
+ _finalHP.setParams(_sampleRate, MultimodeFilter::BUTTERWORTH_TYPE, 2, MultimodeFilter::HIGHPASS_MODE, 80.0f, MultimodeFilter::minQbw);
for (int i = 0; i < nFilters; ++i) {
_gainSLs[i].setParams(_sampleRate, 50.0f, 1.0f);
}
diff --git a/src/VCF.hpp b/src/VCF.hpp
@@ -64,7 +64,7 @@ struct VCF : BGModule {
};
static constexpr float maxFrequency = 20000.0f;
- static constexpr float minFrequency = BOGAUDIO_DSP_MULTIMODEFILTER_MINFREQUENCY;
+ static constexpr float minFrequency = MultimodeFilter::minFrequency;
MultimodeFilter::Mode _mode = MultimodeFilter::UNKNOWN_MODE;
MultimodeFilter::BandwidthMode _bandwidthMode = MultimodeFilter::PITCH_BANDWIDTH_MODE;
Engine* _engines[maxChannels] {};
diff --git a/src/dsp/filters/multimode.cpp b/src/dsp/filters/multimode.cpp
@@ -7,6 +7,7 @@
using namespace bogaudio::dsp;
+
#ifdef RACK_SIMD
void Biquad4::setParams(int i, float a0, float a1, float a2, float b0, float b1, float b2) {
@@ -129,6 +130,19 @@ template struct bogaudio::dsp::BiquadBank<MultimodeTypes::T, 4>;
template struct bogaudio::dsp::BiquadBank<MultimodeTypes::T, 16>;
+constexpr int MultimodeTypes::minPoles;
+constexpr int MultimodeTypes::maxPoles;
+constexpr int MultimodeTypes::modPoles;
+constexpr float MultimodeTypes::minFrequency;
+constexpr float MultimodeTypes::maxFrequency;
+constexpr float MultimodeTypes::minQbw;
+constexpr float MultimodeTypes::maxQbw;
+constexpr float MultimodeTypes::minBWLinear;
+constexpr float MultimodeTypes::maxBWLinear;
+constexpr float MultimodeTypes::minBWPitch;
+constexpr float MultimodeTypes::maxBWPitch;
+
+
template<int N> void MultimodeDesigner<N>::setParams(
BiquadBank<T, N>& biquads,
float& outGain,
diff --git a/src/dsp/filters/multimode.hpp b/src/dsp/filters/multimode.hpp
@@ -46,16 +46,6 @@ struct BiquadBank : Filter {
float next(float sample) override;
};
-// hacky workaround for certain linkers here; see https://github.com/bogaudio/BogaudioModules/issues/104
-#define BOGAUDIO_DSP_MULTIMODEFILTER_MINFREQUENCY 1.0f
-#define BOGAUDIO_DSP_MULTIMODEFILTER_MAXFREQUENCY 21000.0f
-#define BOGAUDIO_DSP_MULTIMODEFILTER_MINQBW 0.0f
-#define BOGAUDIO_DSP_MULTIMODEFILTER_MAXQBW 1.0f
-#define BOGAUDIO_DSP_MULTIMODEFILTER_MINBWLINEAR 10.0f
-#define BOGAUDIO_DSP_MULTIMODEFILTER_MAXBWLINEAR 5000.0f
-#define BOGAUDIO_DSP_MULTIMODEFILTER_MINBWPITCH (1.0f / (1.0f * 12.0f * 100.0f / 25.0f))
-#define BOGAUDIO_DSP_MULTIMODEFILTER_MAXBWPITCH 2.0f
-
struct MultimodeTypes {
typedef float T;
typedef std::complex<T> TC;
@@ -79,6 +69,18 @@ struct MultimodeTypes {
LINEAR_BANDWIDTH_MODE,
PITCH_BANDWIDTH_MODE
};
+
+ static constexpr int minPoles = 1;
+ static constexpr int maxPoles = 16;
+ static constexpr int modPoles = 1;
+ static constexpr float minFrequency = 1.0f;
+ static constexpr float maxFrequency = 21000.0f;
+ static constexpr float minQbw = 0.0f;
+ static constexpr float maxQbw = 1.0f;
+ static constexpr float minBWLinear = 10.0f;
+ static constexpr float maxBWLinear = 5000.0f;
+ static constexpr float minBWPitch = 1.0f / (1.0f * 12.0f * 100.0f / 25.0f);
+ static constexpr float maxBWPitch = 2.0f;
};
template<int N>
@@ -103,18 +105,6 @@ struct MultimodeDesigner : MultimodeTypes {
}
};
- static constexpr int minPoles = 1;
- static constexpr int maxPoles = 16;
- static constexpr int modPoles = 1;
- const float minFrequency = BOGAUDIO_DSP_MULTIMODEFILTER_MINFREQUENCY;
- const float maxFrequency = BOGAUDIO_DSP_MULTIMODEFILTER_MAXFREQUENCY;
- const float minQbw = BOGAUDIO_DSP_MULTIMODEFILTER_MINQBW;
- const float maxQbw = BOGAUDIO_DSP_MULTIMODEFILTER_MAXQBW;
- const float minBWLinear = BOGAUDIO_DSP_MULTIMODEFILTER_MINBWLINEAR;
- const float maxBWLinear = BOGAUDIO_DSP_MULTIMODEFILTER_MAXBWLINEAR;
- const float minBWPitch = BOGAUDIO_DSP_MULTIMODEFILTER_MINBWPITCH;
- const float maxBWPitch = BOGAUDIO_DSP_MULTIMODEFILTER_MAXBWPITCH;
-
float _sampleRate = 44100.0f;
float _half2PiST = 0.0f;
Type _type = UNKNOWN_TYPE;