pub trait PitchDetector {
fn detect(&mut self, samples: &[f32], sample_rate: f32) -> Option<f32>;
}
pub fn detect_pitch<D: PitchDetector>(
detector: &mut D,
samples: &[f32],
sample_rate: f32,
) -> Option<f32> {
detector.detect(samples, sample_rate)
}