Function spectrum_analyzer::samples_fft_to_spectrum [−][src]
pub fn samples_fft_to_spectrum(
samples: &[f32],
sampling_rate: u32,
frequency_limit: FrequencyLimit,
per_element_scaling_fn: Option<&dyn Fn(f32) -> f32>,
total_scaling_fn: Option<SpectrumTotalScaleFunctionFactory>
) -> FrequencySpectrum
Takes an array of samples (length must be a power of 2),
e.g. 2048, applies an FFT (using library rustfft
) on it
and returns all frequencies with their volume/magnitude.
samples
raw audio, e.g. 16bit audio data but as f32. You should apply an window function (like Hann) on the data first. The final frequency resolution issample_rate / (N / 2)
e.g.44100/(16384/2) == 5.383Hz
, i.e. more samples => better accuracysampling_rate
sampling_rate, e.g.44100 [Hz]
frequency_limit
Frequency limit. See [`FrequencyLimit´]per_element_scaling_fn
Optional per element scaling function, e.g.20 * log(x)
. To see where this equation comes from, check out this paper: https://www.sjsu.edu/people/burford.furman/docs/me120/FFT_tutorial_NI.pdftotal_scaling_fn
Seecrate::spectrum::SpectrumTotalScaleFunctionFactory
.
Returns value
New object of type FrequencySpectrum
.