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

◆ estimate_pitch_per_channel()

MAYAFLUX_API std::vector< double > MayaFlux::estimate_pitch_per_channel ( const std::vector< Kakshya::DataVariant > &  channels,
double  sample_rate = 48000.0,
double  min_freq = 80.0,
double  max_freq = 2000.0 
)

Estimate fundamental frequency per channel for multi-channel data.

Parameters
channelsVector of channel data
sample_rateSample rate (default: 48000 Hz)
min_freqMinimum expected frequency (default: 80 Hz)
max_freqMaximum expected frequency (default: 2000 Hz)
Returns
Vector of estimated F0 values in Hz, one per channel (0 if not detected)

Definition at line 751 of file Yantra.cpp.

752{
753 auto a = std::make_shared<Yantra::StandardEnergyAnalyzer>();
754 a->set_energy_method(Yantra::EnergyMethod::HARMONIC);
755 a->set_parameter("sample_rate", sample_rate);
756 a->set_parameter("min_freq", min_freq);
757 a->set_parameter("max_freq", max_freq);
758 auto result = a->analyze_energy(channels);
759 std::vector<double> pitches;
760 pitches.reserve(result.channels.size());
761
762 for (const auto& ch : result.channels) {
763 pitches.push_back(ch.mean_energy * sample_rate / 1000.0);
764 }
765 return pitches;
766}
size_t a

References a, and MayaFlux::Yantra::HARMONIC.