MayaFlux 0.4.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_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 mode.initial_amplitude = 1.0 / double(i + 1);
108 mode.amplitude = 0.0;
109
110 mode.oscillator = std::make_shared<Generator::Sine>(static_cast<float>(mode.current_frequency));
111 mode.oscillator->set_in_network(true);
112
113 mode.decay_coefficient = std::exp(-1.0 / (base_decay * m_sample_rate));
114
115 m_modes.push_back(std::move(mode));
116 }
117}
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: