# Digital Signal Processing
[![Rust](https://github.com/klangner/dsp.rs/actions/workflows/rust.yml/badge.svg)](https://github.com/klangner/dsp.rs/actions/workflows/rust.yml)
[![Crates.io](https://img.shields.io/crates/v/dsp.svg)](https://crates.io/crates/dsp) [![Crates.io](https://img.shields.io/crates/l/dsp.svg)](https://github.com/klangner/dsp/blob/master/LICENSE-MIT) [![docs.rs](https://docs.rs/dsp/badge.svg)](https://docs.rs/dsp/)
This library is focused in working with block of data not on real time processing.
If you are looking for a realtime processing library then there is already great library for it
https://github.com/FutureSDR/FutureSDR
The folder [examples](https://github.com/klangner/dsp/tree/master/examples) contains demo programs which shows how to use this library.
# Features
## Signal generators
Signals generators are nodes with the state. This allows to generate continuos signal across multiple buffers.
Implemented generators:
* [x] Impulse
* [x] Step
* [x] Sinusoid
* [x] Triangle
* [x] Square
* [x] Chirp
* [x] Noise
## Filters
* [x] Biquad
* [x] Leaky Integrator (Exponential Smoothing)
## Window functions
* [x] Rectangular
* [x] Triangular
* [x] Welch
* [x] Sine
* [x] Hann
* [x] Hamming
* [x] Blackman
## Frequency domain
* [x] FFT forward and inverse using RustFFT crate.
* [x] Find peak frequency
# License
Licensed under [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)
**Contributions**
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.