MayaFlux 0.4.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 564 of file EnergyAnalyzer.hpp.

565 {
566 namespace D = MayaFlux::Kinesis::Discrete;
567 const size_t num_windows = calculate_num_windows(data.size());
568
569 switch (method) {
571 return D::peak(data, num_windows, m_hop_size, m_window_size);
573 return D::zero_crossing_rate(data, num_windows, m_hop_size, m_window_size);
575 return D::power(data, num_windows, m_hop_size, m_window_size);
577 return D::dynamic_range(data, num_windows, m_hop_size, m_window_size);
579 return D::spectral_energy(data, num_windows, m_hop_size, m_window_size);
581 return D::low_frequency_energy(data, num_windows, m_hop_size, m_window_size);
583 default:
584 return D::rms(data, num_windows, m_hop_size, m_window_size);
585 }
586 }
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)