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

◆ estimate_pitch() [2/2]

MAYAFLUX_API double MayaFlux::estimate_pitch ( const std::vector< double > &  data,
double  sample_rate = 48000.0,
double  min_freq = 80.0,
double  max_freq = 2000.0 
)

Estimate fundamental frequency using autocorrelation for single-channel data.

Parameters
dataInput signal data
sample_rateSample rate (default: 48000 Hz)
min_freqMinimum expected frequency (default: 80 Hz)
max_freqMaximum expected frequency (default: 2000 Hz)
Returns
Estimated F0 in Hz (0 if not detected)

Definition at line 757 of file Yantra.cpp.

758{
759 auto energy_analyzer = std::make_shared<Yantra::StandardEnergyAnalyzer>();
760 energy_analyzer->set_energy_method(Yantra::EnergyMethod::HARMONIC);
761 energy_analyzer->set_parameter("sample_rate", sample_rate);
762 energy_analyzer->set_parameter("min_freq", min_freq);
763 energy_analyzer->set_parameter("max_freq", max_freq);
764 auto result = energy_analyzer->analyze_energy({ Kakshya::DataVariant(data) });
765
766 return result.channels.empty() ? 0.0 : result.channels[0].mean_energy * sample_rate / 1000.0;
767}
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
Definition NDData.hpp:73

References MayaFlux::Yantra::HARMONIC.