@@ -57,7 +57,7 @@ class StateVariableFilter
5757class DualFilterBase
5858{
5959public:
60- void Process (double dt, double inL, double inR, double cutoff, double &outL, double &outR, bool highPass = false ) {}
60+ virtual void Process (double dt, double inL, double inR, double cutoff, double &outL, double &outR, bool highPass = false ) {}
6161};
6262
6363template <class T >
@@ -83,11 +83,11 @@ class MultiFilter
8383
8484private:
8585 FilterModes mode = FilterModes::onePole;
86- std::array<DualFilterBase, numFilterModes> filters = {
87- DualFilter<OnePoleFilter>(),
88- DualFilter<TwoPoleFilter>(),
89- DualFilter<FourPoleFilter>(),
90- DualFilter<StateVariableFilter>()
86+ std::array<std::unique_ptr< DualFilterBase> , numFilterModes> filters = {
87+ std::unique_ptr<DualFilterBase>( new DualFilter<OnePoleFilter>() ),
88+ std::unique_ptr<DualFilterBase>( new DualFilter<TwoPoleFilter>() ),
89+ std::unique_ptr<DualFilterBase>( new DualFilter<FourPoleFilter>() ),
90+ std::unique_ptr<DualFilterBase>( new DualFilter<StateVariableFilter>() )
9191 };
9292 std::array<double , numFilterModes> mix = {0.0 , 0.0 , 0.0 , 0.0 };
9393};
0 commit comments