#audio #filter #digital #dsp #lowpass

no-std lowpass-filter

This is a no_std Rust library for simple digital low pass filters. You can use it for example to get the low frequencies from a song.

7 releases

0.2.4 Mar 30, 2021
0.2.3 Mar 17, 2021
0.1.2 Mar 12, 2021

#111 in No standard library

49 downloads per month
Used in beat-detector

MIT license

2MB
156 lines

Rust: no_std digital low pass filter library

This is a no_std Rust library for simple digital low pass filters. You can use it for example to get the low frequencies from a song.

I'm not an expert on digital signal processing. Code contributions are highly welcome! :)

How to use

use audio_visualizer::waveform::staticc::png_file::waveform_static_png_visualize;
// audio_visualizer has some cool convenient types that I reuse here
use audio_visualizer::{ChannelInterleavement, Channels};
use lowpass_filter::simple::sp::apply_lpf_i16_sp;

/// Minimal example how to use this crate/how to apply low pass filter.
fn main() {
    // read this from MP3 for example
    let audio_data_lrlr = [0_i16, 1, -5, 1551, 141, 24];

    // split into left and right channel
    // audio_visualizer has some cool convenient types that I reuse here
    let (mut left, mut right) = Channels::Stereo(ChannelInterleavement::LRLR)
        .stereo_interleavement()
        .to_channel_data(&audio_data_lrlr);

    // left
    apply_lpf_i16_sp(&mut left, 44100, 120);
    // right
    apply_lpf_i16_sp(&mut right, 44100, 120);

    // visualize effect as waveform in a PNG file
    waveform_static_png_visualize(
        &left,
        Channels::Mono,
        "test/out",
        "example_waveform_lowpassed_left.png",
    );
    waveform_static_png_visualize(
        &right,
        Channels::Mono,
        "test/out",
        "example_waveform_lowpassed_right.png",
    );
}

Visual Examples

#1: Original Waveform of a short sample

Example 1: Original Waveform of a short sample

#1: Lowpassed Waveform

Example 1: Lowpassed Waveform of a short sample

#2: Original Waveform of a song

Example 1: Original Waveform of a song

#2: Lowpassed Waveform

Example 1: Lowpassed Waveform of a song

#2: 3x Lowpassed Waveform

Example 1: Lowpassed Waveform of a song 3x

No runtime deps