synapse-app-sdk
C++ SDK for Synapse Apps
Loading...
Searching...
No Matches
base_filter.hpp
1#pragma once
2
3#include "Iir.h"
4namespace synapse {
5
12 public:
14 virtual ~BaseFilter() = default;
15
21 virtual float filter(const float sample) = 0;
22 virtual void reset() = 0;
23};
24
30template <typename FilterType>
31class FilterWrapper : public BaseFilter {
32 public:
37 explicit FilterWrapper(FilterType filter) : filter_instance_(std::move(filter)) {}
38
44 template <typename... Args>
45 void setup(Args&&... args) {
46 filter_instance_.setup(std::forward<Args>(args)...);
47 }
48
54 float filter(const float sample) override { return filter_instance_.filter(sample); }
55
56 void reset() override { filter_instance_.reset(); }
57
58 private:
60 FilterType filter_instance_;
61};
62
63} // namespace synapse
Abstract base class for all filters.
Definition base_filter.hpp:11
virtual ~BaseFilter()=default
Virtual destructor.
virtual float filter(const float sample)=0
Process a single sample through the filter.
FilterWrapper(FilterType filter)
Constructor that takes ownership of a filter instance.
Definition base_filter.hpp:37
void setup(Args &&... args)
Forward setup parameters to the underlying filter.
Definition base_filter.hpp:45
float filter(const float sample) override
Process a single sample through the filter.
Definition base_filter.hpp:54