sfFDN
Loading...
Searching...
No Matches
fdn_config.h
1#pragma once
2
3#include "sffdn/fdn.h"
4#include "sffdn/types.h"
5
6#include <cstdint>
7#include <optional>
8#include <variant>
9#include <vector>
10
11namespace sfFDN
12{
13
17{
19 uint32_t fdn_size;
20
23
26
28 uint32_t block_size;
29
32
35
37 struct
38 {
41 std::vector<single_channel_processor_variant_t> single_channel_processors;
43 ParallelGainsOptions parallel_gains_config{
44 .mode = ParallelGainsMode::Split, .gains = {}, .time_varying_config = {}};
46 std::vector<multi_channel_processor_variant_t> multichannel_processors;
48
51
53 std::optional<AttenuationFilterBankOptions> attenuation_filter_bank_config;
54
56 std::vector<multi_channel_processor_variant_t> loop_filter_configs;
57
59 struct
60 {
63 std::vector<multi_channel_processor_variant_t> multichannel_processors;
65 ParallelGainsOptions parallel_gains_config{
66 .mode = ParallelGainsMode::Merge, .gains = {}, .time_varying_config = {}};
69 std::vector<single_channel_processor_variant_t> single_channel_processors;
71
73 std::vector<single_channel_processor_variant_t> tone_correction_filters;
74};
75
76std::unique_ptr<FDN> CreateFDNFromConfig(const FDNConfig& config);
77
78void to_json(nlohmann::json& j, const sfFDN::FDNConfig& p);
79void from_json(const nlohmann::json& j, sfFDN::FDNConfig& p);
80
81} // namespace sfFDN
std::variant< CascadedFeedbackMatrixOptions, ScalarFeedbackMatrixOptions, TimeVaryingFeedbackMatrixOptions > feedback_matrix_variant_t
Variant type for holding different feedback matrix options.
Definition types.h:558
@ Merge
Process each input channel separately and output to one channel.
@ Split
Process input as a single channel and output to multiple channels.
Options for configuring a delay bank.
Definition types.h:232
Options for configuring parallel gain processing.
Definition types.h:208
Configuration for the FDN.
Definition fdn_config.h:17
uint32_t block_size
Internal block size for processing audio. Ideally should match the block size of the system.
Definition fdn_config.h:28
bool transposed
Whether to use transposed configuration.
Definition fdn_config.h:22
DelayBankOptions delay_bank_config
Delay bank configuration.
Definition fdn_config.h:34
uint32_t fdn_size
Size of the FDN (number of channels)
Definition fdn_config.h:19
std::vector< single_channel_processor_variant_t > tone_correction_filters
Tone correction filter block.
Definition fdn_config.h:73
struct sfFDN::FDNConfig::@1 output_block_config
Output gain block.
std::optional< AttenuationFilterBankOptions > attenuation_filter_bank_config
Attenuation filter bank block.
Definition fdn_config.h:53
struct sfFDN::FDNConfig::@0 input_block_config
Input gain Block.
float sample_rate
Sample rate for the FDN. This is used to configure time-based components like delays and filters.
Definition fdn_config.h:31
float direct_gain
Direct path gain.
Definition fdn_config.h:25
feedback_matrix_variant_t feedback_matrix_config
Feedback matrix block.
Definition fdn_config.h:50
std::vector< multi_channel_processor_variant_t > loop_filter_configs
Loop filter block.
Definition fdn_config.h:56