Crates.io | dsp-chain |
lib.rs | dsp-chain |
version | 0.13.1 |
source | src |
created_at | 2015-03-03 09:48:44.205404 |
updated_at | 2016-06-08 02:02:21.171608 |
description | Provides a Node trait and a Graph type for chaining together audio generators/processors in a dsp graph. |
homepage | https://github.com/RustAudio/dsp-chain |
repository | https://github.com/RustAudio/dsp-chain.git |
max_upload_size | |
id | 1512 |
size | 45,675 |
A library for chaining together multiple audio dsp processors/generators, written in Rust!
Use cases for dsp-chain include:
Designing effects.
Creating an audio mixer.
Making a sampler.
Writing a dsp backend for a DAW.
Any kind of modular audio synthesis/processing.
Here's what it looks like:
// Construct our dsp graph.
let mut graph = Graph::new();
// Construct our fancy Synth and add it to the graph!
let synth = graph.add_node(DspNode::Synth);
// Add a few oscillators as inputs to the synth.
graph.add_input(DspNode::Oscillator(0.0, A5_HZ, 0.2), synth);
graph.add_input(DspNode::Oscillator(0.0, D5_HZ, 0.1), synth);
graph.add_input(DspNode::Oscillator(0.0, F5_HZ, 0.15), synth);
// Set the synth as the master node for the graph.
// This can be inferred by the graph so calling this is optional, but it's nice to be explicit.
graph.set_master(Some(synth));
// Request audio from our Graph.
graph.audio_requested(&mut buffer, settings);
Here are two working examples of using dsp-chain to create a very basic synth and an oscillating volume.
Add dsp-chain to your Cargo.toml dependencies like so:
[dependencies]
dsp-chain = "*"