From 0bcd3b7822fbb8c7c1fdccb0a1d19555c6be1227 Mon Sep 17 00:00:00 2001 From: thibaudk Date: Wed, 30 Oct 2024 19:51:40 +0000 Subject: [PATCH] [lpf] add low pass filter per channel --- Senior/SeniorModel.cpp | 18 ++++++++++++++++-- Senior/SeniorModel.hpp | 6 ++++++ Senior/SeniorUi.hpp | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Senior/SeniorModel.cpp b/Senior/SeniorModel.cpp index faa526d..fff0fa3 100644 --- a/Senior/SeniorModel.cpp +++ b/Senior/SeniorModel.cpp @@ -1,3 +1,5 @@ +#include + #include #include "Senior.hpp" @@ -13,11 +15,15 @@ void Senior::prepare(setup info) skipped_frames.resize(info.input_channels); fms.resize(info.input_channels); + lpfs.resize(info.input_channels); - for (auto& fm : fms) + for (auto [fm, lpf] : std::views::zip(fms, lpfs)) { fm.set_sample_rate(info.rate); fm.maxDelay(0.1); + + lpf.set_sample_rate(info.rate); + lpf.type(gam::LOW_PASS); } phases.resize(info.output_channels); @@ -98,8 +104,16 @@ void Senior::operator()(tick t) phases[i] = lfo.phase(); } + else + out_frame = current_frame; - out[j] = out_frame; + if (inputs.filter < 1.f) + { + lpfs[i].freq(inputs.filter * 2920. + 80.); + out[j] = lpfs[i](out_frame); + } + else + out[j] = out_frame; } } } diff --git a/Senior/SeniorModel.hpp b/Senior/SeniorModel.hpp index 5e9ac40..db267d1 100644 --- a/Senior/SeniorModel.hpp +++ b/Senior/SeniorModel.hpp @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -31,6 +32,7 @@ public: { halp::dynamic_audio_bus<"Input", double> audio; halp::knob_f32<"SAMPLE RATE", halp::range{.min = .1, .max = 1., .init = 1.}> s_rate; + halp::knob_f32<"FILTER", halp::range{.min = 0., .max = 1., .init = 1.}> filter; using log_map = halp::log_mapper>; struct : halp::knob_f32<"BITS", halp::range{.min = 3, .max = BITS, .init = BITS}> @@ -83,6 +85,10 @@ private: gam::ipl::Linear, halp::compat::gamma_domain>> fms; + std::vector> lpfs; + void set_bit_factor(); double crush(const double& f); }; diff --git a/Senior/SeniorUi.hpp b/Senior/SeniorUi.hpp index a31008b..fe0c7ce 100644 --- a/Senior/SeniorUi.hpp +++ b/Senior/SeniorUi.hpp @@ -17,6 +17,7 @@ struct Senior::ui { halp_meta(layout, hbox) halp::item<&ins::bits> bits; + halp::item<&ins::filter> filter; halp::item<&ins::s_rate> s_rate; } res;