Skip to content
A signal processing framework for making music with Rust.
Rust Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
scripts
src
.gitignore
.travis.yml
Cargo.lock
Cargo.toml
README.md
license-apache.txt
license-mit.txt

README.md

oxcable

Build Status Crates.io License

Documentation

A signal processing framework for making music with Rust.

This framework aims to provide the basic tools for music processing. It defines many useful types, utilities, signal processing elements for building music processing pipelines.

For a basic set of predefined filters, see oxcable-basic-devices.

Examples

The following example will play back your computer's microphone input to the speakers, with an low-pass effect:

use oxcable::chain::{DeviceChain, Tick};
use oxcable::filters::first_order::{Filter, LowPass};
use oxcable::io::audio::AudioEngine;

let engine = AudioEngine::with_buffer_size(256).unwrap();
let mut chain = DeviceChain::from(
    engine.default_input(1).unwrap()
).into(
    Filter::new(LowPass(8000f32), 1)
).into(
    engine.default_output(1).unwrap()
);
chain.tick_forever();

For more simple examples, the src/bin directory contains many sample test scripts.

Projects using oxcable

If you have a project using oxcable, I'd love to hear about it. Send me a message and I can include it in this list.

Installing

Currently, oxcable requires PortAudio and PortMIDI be installed on your machine.

On Mac, these are available on Homebrew. To install, run:

brew install portaudio
brew install portmidi

Scripts

The scripts directory contains assorted scripts used both to experiment with new features, and to test the output of Rust library code. These scripts are written in Python, and leverage the numpy, scipy and matplotlib libraries for rapid prototyping purposes.

License

Licensed under either of

at your option.

Contribution

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.

You can’t perform that action at this time.