I’ve needed to detect a frequency of an audio signal a couple of times in my life, but I cannot for the love of me remember what does the FFT output actually mean. So I took this knowledge out of my latest project and packed it up in this crate.
Also this is my first potentially useful published crate, so if I missed anything, please let me know!
/// # Panics /// /// - if `samples.len()` does not match the `sample_count` passed to [Self::new] /// - if there are `NaN`s in the sample slice
Since this is library code, why not make the function return a
Result
?The new version seems to fix that since your comment was written, but it will stil panics if less than 2 samples are provided, unless the crate it wraps panics at an earlier point.
let peak = buf .iter() .copied() .enumerate() .take(self.sample_count / 2) .max_by_key(|(_, s)| (s.abs() * 1000.0) as u32) .expect("to have at least 1 sample");
You should have mentioned OP.
@fil
Excellent catch! Added validation for the
new
params