22 #ifndef EDSP_FILTER_HPP 23 #define EDSP_FILTER_HPP 28 #include <edsp/filter/internal/rbj_designer.hpp> 29 #include <edsp/filter/internal/zoelzer_designer.hpp> 30 #include <edsp/filter/internal/butterworth_designer.hpp> 31 #include <edsp/filter/internal/chebyshev_I_designer.hpp> 32 #include <edsp/filter/internal/chebyshev_II_designer.hpp> 38 namespace edsp {
namespace filter {
56 template <
typename T, DesignerType Designer, std::
size_t MaxOrder>
64 template <
typename T, std::
size_t MaxOrder>
78 return RBJFilterDesigner<T, Type>{}(fc, sample_rate, Q, gain_db);
87 template <
typename T, std::
size_t MaxOrder>
102 return ZoelzerFilterDesigner<T, Type>{}(fc, sample_rate, Q, gain_db);
111 template <
typename T, std::
size_t MaxOrder>
114 constexpr
auto design(Args... arg)
const -> decltype(ButterworthDesigner<T, Type, MaxOrder>{}(arg...)) {
115 return ButterworthDesigner<T, Type, MaxOrder>{}.operator()(arg...);
124 template <
typename T, std::
size_t MaxOrder>
128 -> decltype(ChebyshevIDesigner<T, Type, MaxOrder>{}(std::declval<Args&&>()...)) {
129 return ChebyshevIDesigner<T, Type, MaxOrder>{}(arg...);
138 template <
typename T, std::
size_t MaxOrder>
142 -> decltype(ChebyshevIIDesigner<T, Type, MaxOrder>{}(std::declval<Args&&>()...)) {
143 return ChebyshevIIDesigner<T, Type, MaxOrder>{}(arg...);
163 #endif // EDSP_FILTER_HPP
FilterType
The FilterType enum defines the different available filters.
Definition: biquad.hpp:38
template design< Type >(std::declval< Args &&>()...))
Definition: filter.hpp:156
constexpr auto design(Args... arg) const -> decltype(ButterworthDesigner< T, Type, MaxOrder >
Definition: filter.hpp:114
constexpr auto design(Args... arg) const -> decltype(ChebyshevIIDesigner< T, Type, MaxOrder >
Definition: filter.hpp:141
constexpr biquad< T > design(T fc, T sample_rate, T Q, T gain_db=1) const
Returns a filter which parameters represents the designed frequency response by using the Zoelzer for...
Definition: filter.hpp:101
This Biquad class implements a second-order recursive linear filter, containing two poles and two zer...
Definition: biquad.hpp:71
DesignerType
The DesignerType enum defines the different filter's implementation from different authors...
Definition: filter.hpp:45
Definition: filter.hpp:57
constexpr auto design(Args... arg) const -> decltype(ChebyshevIDesigner< T, Type, MaxOrder >
Definition: filter.hpp:127
constexpr auto make_filter(Args... arg) -> decltype(designer< T, Designer, MaxOrder >
Creates a filter using args as the parameter list for the construction.
Definition: filter.hpp:155
Definition: amplifier.hpp:29
constexpr biquad< T > design(T fc, T sample_rate, T Q, T gain_db=1) const
Returns a filter which parameters represents the designed frequency response by using the RBJ formula...
Definition: filter.hpp:77