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

◆ initialize_modes()

void MayaFlux::Nodes::Network::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_base_decay = base_decay;
96 m_modes.clear();
97 m_modes.reserve(ratios.size());
98
99 for (size_t i = 0; i < ratios.size(); ++i) {
100 ModalNode mode;
101 mode.index = i;
102 mode.frequency_ratio = ratios[i];
103 mode.base_frequency = m_fundamental * ratios[i];
104 mode.current_frequency = mode.base_frequency;
105
106 mode.decay_time = base_decay / ratios[i];
107
108 mode.initial_amplitude = 1.0 / static_cast<double>(i + 1);
109 mode.amplitude = 0.0;
110
111 mode.oscillator = std::make_shared<Generator::Sine>(static_cast<float>(mode.current_frequency));
112 mode.oscillator->set_in_network(true);
113
114 mode.decay_coefficient = Kinesis::Discrete::decay_per_sample(base_decay, m_sample_rate);
115
116 m_modes.push_back(std::move(mode));
117 }
118}
uint32_t mode
double decay_per_sample(double seconds, double sample_rate) noexcept
Per-sample factor that falls by 1/e in a given time.

References MayaFlux::Kinesis::Discrete::decay_per_sample(), MayaFlux::Nodes::Network::ModalNetwork::ModalNode::index, m_base_decay, m_fundamental, m_modes, MayaFlux::Nodes::Network::NodeNetwork::m_sample_rate, and mode.

Referenced by ModalNetwork(), and ModalNetwork().

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