MayaFlux 0.3.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 90 of file ModalNetwork.cpp.

92{
93 m_modes.clear();
94 m_modes.reserve(ratios.size());
95
96 for (size_t i = 0; i < ratios.size(); ++i) {
97 ModalNode mode;
98 mode.index = i;
99 mode.frequency_ratio = ratios[i];
100 mode.base_frequency = m_fundamental * ratios[i];
101 mode.current_frequency = mode.base_frequency;
102
103 mode.decay_time = base_decay / ratios[i];
104
105 mode.initial_amplitude = 1.0 / double(i + 1);
106 mode.amplitude = 0.0;
107
108 mode.oscillator = std::make_shared<Generator::Sine>(static_cast<float>(mode.current_frequency));
109 mode.oscillator->set_in_network(true);
110
111 mode.decay_coefficient = std::exp(-1.0 / (base_decay * m_sample_rate));
112
113 m_modes.push_back(std::move(mode));
114 }
115}
std::vector< double > mode(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Mode per window via tolerance-bucketed frequency count.
Definition Analysis.cpp:559

References m_fundamental, m_modes, and MayaFlux::Nodes::Network::NodeNetwork::m_sample_rate.

Referenced by ModalNetwork(), and ModalNetwork().

+ Here is the caller graph for this function: