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

◆ compute_energy_values()

template<ComputeData InputType = std::vector<Kakshya::DataVariant>, ComputeData OutputType = Eigen::VectorXd>
std::vector< double > MayaFlux::Yantra::EnergyAnalyzer< InputType, OutputType >::compute_energy_values ( std::span< const double >  data,
EnergyMethod  method 
) const
inlineprivate

Compute energy values using span (zero-copy processing)

Definition at line 557 of file EnergyAnalyzer.hpp.

558 {
559 namespace D = MayaFlux::Kinesis::Discrete;
560 const size_t num_windows = calculate_num_windows(data.size());
561
562 switch (method) {
564 return D::peak(data, num_windows, m_hop_size, m_window_size);
566 return D::zero_crossing_rate(data, num_windows, m_hop_size, m_window_size);
568 return D::power(data, num_windows, m_hop_size, m_window_size);
570 return D::dynamic_range(data, num_windows, m_hop_size, m_window_size);
572 return D::spectral_energy(data, num_windows, m_hop_size, m_window_size);
574 return D::low_frequency_energy(data, num_windows, m_hop_size, m_window_size);
576 default:
577 return D::rms(data, num_windows, m_hop_size, m_window_size);
578 }
579 }
size_t calculate_num_windows(size_t data_size) const
Calculate number of windows for given data size.
std::vector< double > dynamic_range(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Dynamic range in dB per window.
Definition Analysis.cpp:89
std::vector< double > spectral_energy(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Spectral energy per window using Hann-windowed FFT.
Definition Analysis.cpp:133
std::vector< double > peak(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Peak amplitude per window.
Definition Analysis.cpp:51
std::vector< double > zero_crossing_rate(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Zero-crossing rate per window.
Definition Analysis.cpp:112
std::vector< double > low_frequency_energy(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size, double low_bin_fraction)
Low-frequency spectral energy per window.
Definition Analysis.cpp:164
size_t num_windows(size_t data_size, uint32_t window_size, uint32_t hop_size) noexcept
Compute the number of analysis windows for a given data size.
Definition Analysis.hpp:39
std::vector< double > rms(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
RMS energy per window.
Definition Analysis.cpp:32
std::vector< double > power(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Power (sum of squares) per window.
Definition Analysis.cpp:70
@ SPECTRAL
Spectral energy (FFT-based)
@ DYNAMIC_RANGE
Dynamic range (dB)
@ RMS
Root Mean Square energy.
@ ZERO_CROSSING
Zero-crossing rate.
@ HARMONIC
Harmonic energy (low-frequency content)
@ POWER
Power (sum of squares)