From cd43cac59b67fee68205fd0e721f2b2a28459880 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Thu, 25 Feb 2021 00:01:56 +0100 Subject: [PATCH] Faust filters automatically generated --- src/CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ src/sfizz/SfzFilterImpls.hpp | 20 ++++++++++---------- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ee7dbc3b..cc19c67f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -310,6 +310,36 @@ endif() # Generic library alias add_library(sfizz::sfizz ALIAS sfizz_static) +# Preserve generated files (Faust) +set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM TRUE) + +# Faust filters +foreach(filter_type + Lpf1p Lpf2p Lpf4p Lpf6p Hpf1p Hpf2p Hpf4p Hpf6p + Bpf1p Bpf2p Bpf4p Bpf6p Apf1p Brf1p Brf2p + Pink Lpf2pSv Hpf2pSv Bpf2pSv Brf2pSv + Lsh Hsh Peq EqPeak EqLshelf EqHshelf) + add_faust_command( + "sfizz/dsp/filters/sfz_filters.dsp" + "sfizz/gen/filters/sfz${filter_type}.hxx" + DOUBLE IN_PLACE + PROCESS_NAME "sfz${filter_type}" + CLASS_NAME "faust${filter_type}" + SUPERCLASS_NAME "sfzFilterDsp" + IMPORT_DIRS "sfizz/dsp") + add_faust_command( + "sfizz/dsp/filters/sfz_filters.dsp" + "sfizz/gen/filters/sfz2ch${filter_type}.hxx" + DOUBLE IN_PLACE + PROCESS_NAME "sfz2ch${filter_type}" + CLASS_NAME "faust2ch${filter_type}" + SUPERCLASS_NAME "sfzFilterDsp" + IMPORT_DIRS "sfizz/dsp") + target_sources(sfizz_internal PRIVATE + "sfizz/gen/filters/sfz${filter_type}.hxx" + "sfizz/gen/filters/sfz2ch${filter_type}.hxx") +endforeach() + # Windows installer if(WIN32) include(VSTConfig) diff --git a/src/sfizz/SfzFilterImpls.hpp b/src/sfizz/SfzFilterImpls.hpp index 613a41d5..72bb0fb8 100644 --- a/src/sfizz/SfzFilterImpls.hpp +++ b/src/sfizz/SfzFilterImpls.hpp @@ -16,7 +16,7 @@ public: virtual void init(int) = 0; virtual void instanceClear() = 0; - virtual void compute(int, float **, float **) = 0; + virtual void compute(int, const float *const *, float *const *) = 0; virtual void configureStandard(float, float, float) {} virtual void configureEq(float, float, float) {} @@ -105,8 +105,8 @@ protected: template struct sfzFilter : public F { void configureStandard(float cutoff, float q, float pksh) override { - F::fCutoff = cutoff; - F::fQ = q; + this->setCutoff(cutoff); + this->setResonance(q); (void)pksh; } }; @@ -118,7 +118,7 @@ template struct sfzFilter : public F { template struct sfzFilterNoQ : public F { void configureStandard(float cutoff, float q, float pksh) override { - F::fCutoff = cutoff; + this->setCutoff(cutoff); (void)q; (void)pksh; } @@ -144,9 +144,9 @@ template struct sfzFilterNoCutoff : public F { template struct sfzFilterPkSh : public F { void configureStandard(float cutoff, float q, float pksh) override { - F::fCutoff = cutoff; - F::fQ = q; - F::fPkShGain = pksh; + this->setCutoff(cutoff); + this->setResonance(q); + this->setPeakShelfGain(pksh); } }; @@ -157,9 +157,9 @@ template struct sfzFilterPkSh : public F { template struct sfzFilterEq : public F { void configureEq(float cutoff, float bw, float pksh) override { - F::fCutoff = cutoff; - F::fBandwidth = bw; - F::fPkShGain = pksh; + this->setCutoff(cutoff); + this->setBandwidth(bw); + this->setPeakShelfGain(pksh); } };