MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ initialize_modes()

void MayaFlux::Nodes::ModalNetwork::initialize_modes ( const std::vector< double > &  ratios,
double  base_decay 
)
private

Initialize modes with given frequency ratios.

Definition at line 92 of file ModalNetwork.cpp.

94{
95 m_modes.clear();
96 m_modes.reserve(ratios.size());
97
98 for (size_t i = 0; i < ratios.size(); ++i) {
99 ModalNode mode;
100 mode.index = i;
101 mode.frequency_ratio = ratios[i];
102 mode.base_frequency = m_fundamental * ratios[i];
103 mode.current_frequency = mode.base_frequency;
104
105 mode.decay_time = base_decay / ratios[i];
106
107 // Initial amplitude decreases with mode number (1/n falloff)
108 mode.initial_amplitude = 1.0 / (i + 1);
109 mode.amplitude = 0.0;
110
111 mode.oscillator = std::make_shared<Generator::Sine>(mode.current_frequency);
112
113 mode.decay_coefficient = std::exp(-1.0 / (base_decay * Config::get_sample_rate()));
114
115 m_modes.push_back(std::move(mode));
116 }
117}
std::vector< ModalNode > m_modes
uint32_t get_sample_rate()
Gets the sample rate from the default engine.
Definition Config.cpp:46

References MayaFlux::Nodes::ModalNetwork::ModalNode::amplitude, MayaFlux::Nodes::ModalNetwork::ModalNode::base_frequency, MayaFlux::Nodes::ModalNetwork::ModalNode::current_frequency, MayaFlux::Nodes::ModalNetwork::ModalNode::decay_coefficient, MayaFlux::Nodes::ModalNetwork::ModalNode::decay_time, MayaFlux::Nodes::ModalNetwork::ModalNode::frequency_ratio, MayaFlux::Config::get_sample_rate(), MayaFlux::Nodes::ModalNetwork::ModalNode::index, MayaFlux::Nodes::ModalNetwork::ModalNode::initial_amplitude, m_fundamental, m_modes, and MayaFlux::Nodes::ModalNetwork::ModalNode::oscillator.

Referenced by ModalNetwork(), and ModalNetwork().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: