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.

In short, this is a convenient wrapper around an FFT implementation. You choose the implementation at compile time via Cargo features. As of version 0.4.0 this uses “microfft”-crate.

Modules

scaling

This module contains convenient public transform functions that you can use as parameters in crate::samples_fft_to_spectrum.

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 the specified FFT implementation) on it and returns all frequencies with their volume/magnitude.

Type Definitions

ComplexSpectrumScalingFunction

Describes the type for a function factory that generates a function that can scale/normalize the data inside FrequencySpectrum.

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.

SimpleSpectrumScalingFunction

Definition of a simple function that gets applied on each frequency magnitude in the spectrum. This is easier to write, especially for Rust beginners. Everything that can be achieved with this, can also be achieved with parameter total_scaling_fn.