From c95af83f75aa866f1a8e12be56920ca11d76cf93 Mon Sep 17 00:00:00 2001 From: Sean Kelly Date: Sun, 26 Jan 2025 21:13:30 -0800 Subject: [PATCH] Cleanup distortion module upsampling initialization --- .../GuitarPedal/Effect-Modules/distortion_module.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Software/GuitarPedal/Effect-Modules/distortion_module.cpp b/Software/GuitarPedal/Effect-Modules/distortion_module.cpp index 7f4dd14..d699f5a 100644 --- a/Software/GuitarPedal/Effect-Modules/distortion_module.cpp +++ b/Software/GuitarPedal/Effect-Modules/distortion_module.cpp @@ -9,8 +9,10 @@ static const char *s_clippingOptions[6] = {"Hard Clip", "Soft Clip", "Fuzz", "Tu constexpr float preFilterCutoffBase = 140.0f; constexpr float preFilterCutoffMax = 300.0f; constexpr float postFilterCutoff = 8000.0f; -cycfi::q::highpass preFilter(preFilterCutoffBase, 48000); -cycfi::q::lowpass postFilter(postFilterCutoff, 48000); +cycfi::q::highpass preFilter(preFilterCutoffBase, 48000); // Dummy values that get overwritten in Init +cycfi::q::lowpass postFilter(postFilterCutoff, 48000); // Dummy values that get overwritten in Init +cycfi::q::lowpass upsamplingLowpassFilter(0.0f, 48000); // Dummy values that get overwritten in Init + constexpr uint8_t oversamplingFactor = 16; static const int s_paramCount = 6; @@ -102,6 +104,8 @@ void DistortionModule::InitializeFilters() { } else { postFilter.config(postFilterCutoff, GetSampleRate()); } + + upsamplingLowpassFilter.config(GetSampleRate() / (2.0f * static_cast(oversamplingFactor)), GetSampleRate()); } void DistortionModule::ParameterChanged(int parameter_id) { @@ -169,9 +173,8 @@ std::vector upsample(const std::vector &input, int factor, float s } // Apply the low-pass filter to smooth interpolated samples - cycfi::q::lowpass lowpass_filter(sample_rate / (2.0f * static_cast(factor)), sample_rate); for (size_t i = 1; i < output.size(); ++i) { - output[i] = lowpass_filter(output[i]); + output[i] = upsamplingLowpassFilter(output[i]); } return output;