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 is sample_rate / (N / 2) e.g. 44100/(16384/2) == 5.383Hz, i.e. more samples => better accuracy
  • sampling_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.pdf
  • total_scaling_fn See crate::spectrum::SpectrumTotalScaleFunctionFactory.

Returns value

New object of type FrequencySpectrum.