Skip to content

Latest commit

 

History

483 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jumbotron

signalo

Synopsis

A DSP toolbox with focus on embedded environments.

Signalo provides the basic building-blocks for low-level real-time filtering pipelines,
based on zero-cost, zero-allocation abstractions, which can be assembled via composition.

About

Signalo basically consists of five basic traits and implementations thereof:

  • Source<T>: () -> T
  • Filter<T>: T -> U
  • MultirateFilter<T>: (&[T], &mut [U]) -> (usize, usize)
  • Sink<T>: T -> ()
  • Finalize: () -> U

Roughly signalo's traits are equivalent in semantics to the following stdlib APIs:

  • Source<…> ≈ core::iter::Iterator<…>
  • Filter<…> ≈ core::iter::Map<…>
  • Sink<…> + Finalize ≈ Iterator::fold(…)
  • Filter<…> + Finalize ≈ core::iter::Scan<…>

MultirateFilter<T> has no direct stdlib iterator equivalent because input and output progress can differ on each call.

Types implementing Finalize usually also implement either Filter<T> or Sink<T>.

Signalo provides the basic building-blocks for low-level real-time filtering pipelines, which can be assembled via composition either manually or through the use of pipes.

Features

This crate can be used without the standard library (#![no_std]) by disabling the default std feature. Use this in Cargo.toml:

[dependencies.signalo]
version = <VERSION>
default-features = false
# features = ["libm"] # <- Uncomment if you wish to use float math functions without `std`

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the MPL-2.0 – see the LICENSE.md file for details.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you to the licensor shall be under the terms and conditions of this license, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with licensor regarding such contributions.

About

A DSP toolbox with focus on embedded environments written in Rust.

Topics

Resources

Stars

131 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages