Crate spectrum_analyzer[][src]

A simple and fast no_std library to get the frequency spectrum of a digital signal (e.g. audio) using FFT. It follows the KISS principle and consists of simple building blocks/optional features.

Modules

windows

Several window functions which you can apply before doing the FFT. For more information:

Structs

FrequencySpectrum

Convenient wrapper around the processed FFT result which describes each frequency and its value/amplitude in the analyzed slice of samples. It only consists of the frequencies which were desired, e.g. specified via crate::limit::FrequencyLimit when crate::samples_fft_to_spectrum was called.

Enums

FrequencyLimit

Can be used to specify a desired frequency limit. If you know that you only need frequencies f <= 1000Hz, 1000 <= f <= 6777, or 10000 <= f, then this can help you to accelerate overall computation speed and memory usage.

Functions

samples_fft_to_spectrum

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.

Type Definitions

Frequency

A frequency. A convenient wrapper type around f32.

FrequencyValue

The value of a frequency in a frequency spectrum. Convenient wrapper around f32. Not necessarily the magnitude of the complex numbers because scaling/normalization functions could have been applied.

SpectrumTotalScaleFunctionFactory

Describes the type for a function factory that generates a function that can scale/normalize the data inside FrequencySpectrum. This can be used to subtract min value from all values for example , if min is > 0. The signature is the following: (min: f32, max: f32, average: f32, median: f32) -> fn(f32) -> f32 i.e. you provide a function which generates a function that gets applied to each element.