BogaudioModules

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

commit 311ef5ae9ca861794109f5953277d0ce9d16c3fc
parent df847e4aec2584f1ef30cd6eb70c0e661066e1a5
Author: Matt Demanett <matt@demanett.net>
Date:   Sun, 19 Apr 2020 22:15:07 -0400

Fix up some constants.

Diffstat:
Msrc/FFB.cpp | 2+-
Msrc/LVCF.cpp | 2+-
Msrc/LVCF.hpp | 2+-
Msrc/VCF.cpp | 2+-
Msrc/VCF.hpp | 2+-
Msrc/dsp/filters/multimode.cpp | 14++++++++++++++
Msrc/dsp/filters/multimode.hpp | 34++++++++++++----------------------
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;