#signal-processing #music #framework #filter #input #pipeline #tick

bin+lib oxcable

A signal processing framework for making music with Rust

8 releases

Uses old Rust 2015

0.5.1 May 23, 2016
0.5.0 Feb 20, 2016
0.4.2 Jan 10, 2016
0.4.1 Nov 2, 2015
0.3.1 Jul 22, 2015

#769 in Audio

38 downloads per month
Used in oxcable-basic-devices

MIT/Apache

150KB
3K SLoC

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.

Dependencies

~1.5MB
~27K SLoC