microdsp is a collection of DSP
algorithms and utilities written in Rust. The code is no_std
compatible and suitable for use in embedded systems. Available algorithms include
- Monophonic pitch detection using the MPM algorithm. Supports downsampling and overlapping windows.
- Audio onset detection using spectral flux novelty. Used to detect transients and "starts of sounds". Supports downsampling and overlapping windows.
- Normalized least mean squares adaptive filter. Can for example be used for signal cancellation and time delay estimation.
To see microdsp in action on a microcontroller, check out these videos.
Add the following line to your Cargo.toml file:
microdsp = "0.1"
microdsp is no_std
compatible and relies
on alloc
.
When building for targets without a default allocator,
one must be provided by the user. This can be accomplished in stable Rust 1.68 and higher
using #[global_allocator]
and #[default_alloc_error_handler]
.
The examples
folder contains a number of demos that can be run with
cargo run --example [filename without .rs extension]
for example cargo run --example mpm
. Some of these use rust-portaudio
for real time audio input. If you run into portaudio related issues, you may find some pointers here.
The microdsp-zephyr-demos repo contains demos showing how to do real time audio processing on a microcontroller using microdsp and Zephyr.
This project is released under the MIT license.