sfFDN
Loading...
Searching...
No Matches
filter_design.h
1// Copyright (C) 2025 Alexandre St-Onge
2// SPDX-License-Identifier: MIT
3#pragma once
4
5#include "sffdn/filter.h"
6#include "sffdn/filterbank.h"
7#include "sffdn/types.h"
8
9#include <array>
10#include <cstdint>
11#include <numbers>
12#include <optional>
13#include <span>
14#include <variant>
15#include <vector>
16
17namespace sfFDN
18{
19
33std::pair<float, float> DesignTwoBandAbsorption(const TwoBandFilterOptions& options);
34
41std::array<FilterCoefficients, 2> DesignThreeBandAbsorption(const ThreeBandFilterOptions& options);
42
52std::array<FilterCoefficients, 11> DesignTenBandAbsorption(const TenBandFilterOptions& options);
53
65std::array<FilterCoefficients, 11> DesignGraphicEQ(const GraphicEQOptions& options);
66
73std::unique_ptr<AudioProcessor> CreateAttenuationFilter(const attenuation_filter_variant_t& options);
74
82std::unique_ptr<AudioProcessor> CreateAttenuationFilterBank(const AttenuationFilterBankOptions& options);
83
91std::unique_ptr<AudioProcessor> CreateAttenuationFilterBank(const attenuation_filter_variant_t& options,
92 std::span<const float> delays);
93
95} // namespace sfFDN
std::variant< HomogenousFilterOptions, TwoBandFilterOptions, ThreeBandFilterOptions, TenBandFilterOptions > attenuation_filter_variant_t
Variant type for holding different attenuation filter options.
Definition types.h:356
Options for configuring an attenuation filter bank.
Definition types.h:361
Options for configuring a graphic equalizer.
Definition types.h:368
Options for configuring a ten-band filter.
Definition types.h:340
Options for configuring a three-band filter.
Definition types.h:321
Options for configuring a two-band filter.
Definition types.h:309
std::unique_ptr< AudioProcessor > CreateAttenuationFilterBank(const AttenuationFilterBankOptions &options)
Create a Attenuation Filter Bank object.
std::array< FilterCoefficients, 11 > DesignTenBandAbsorption(const TenBandFilterOptions &options)
Design an attenuation filter according to the method described in [1].
std::pair< float, float > DesignTwoBandAbsorption(const TwoBandFilterOptions &options)
Get the coefficients of a one-pole absorption filter.
std::array< FilterCoefficients, 2 > DesignThreeBandAbsorption(const ThreeBandFilterOptions &options)
Design a three-band absorption filter consisting of a low-shelf, high-shelf and a gain factor to matc...
std::array< FilterCoefficients, 11 > DesignGraphicEQ(const GraphicEQOptions &options)
Design an octave EQ filter consisting of a low shelf, high shelf and 8 band-pass peaking filters.
std::unique_ptr< AudioProcessor > CreateAttenuationFilter(const attenuation_filter_variant_t &options)
Create an attenuation filter processor based on the provided configuration variant.