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 > 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
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 > 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
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 > 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 > 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 > 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
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
@ 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)

References MayaFlux::Yantra::EnergyAnalyzer< InputType, OutputType >::calculate_num_windows(), MayaFlux::Kinesis::Discrete::dynamic_range(), MayaFlux::Yantra::DYNAMIC_RANGE, MayaFlux::Yantra::HARMONIC, MayaFlux::Kinesis::Discrete::low_frequency_energy(), MayaFlux::Yantra::EnergyAnalyzer< InputType, OutputType >::m_hop_size, MayaFlux::Yantra::EnergyAnalyzer< InputType, OutputType >::m_window_size, MayaFlux::Kinesis::Discrete::peak(), MayaFlux::Yantra::PEAK, MayaFlux::Kinesis::Discrete::power(), MayaFlux::Yantra::POWER, MayaFlux::Kinesis::Discrete::rms(), MayaFlux::Yantra::RMS, MayaFlux::Yantra::SPECTRAL, MayaFlux::Kinesis::Discrete::spectral_energy(), MayaFlux::Yantra::ZERO_CROSSING, and MayaFlux::Kinesis::Discrete::zero_crossing_rate().

Referenced by MayaFlux::Yantra::EnergyAnalyzer< InputType, OutputType >::analyze_implementation().

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