Crate rabu

source ·
Expand description

Examples

Strongly typed units can easily be converted into each other:

use rabu::units::{SampleRate, Samples, Seconds};

let seconds = Seconds::from(3.0);
let sample_rate = SampleRate::from(44100);

let samples = seconds.to_samples(sample_rate);

assert_eq!(samples, Samples::from(132_300));

Audio buffers can be used in a way that makes sense:

use rabu::buffer::Buffer;
use rabu::units::{Channels, Samples};

let mut buffer = Buffer::allocate(Channels::from(2), Samples::from(4));

for channel in buffer.iter_chans_mut() {
    for sample in channel.iter_mut() {
        *sample = 1.0;
    }
}

Modules

This module contains a biquad filter that can be instantiated with provided coefficients. On top of that it contains some functions to create the coefficients for the basic filter types. Example of a low pass filter:
This module contains a Buffer struct that is useful for many audio related tasks. It contains functions for iterating in audio specific ways and manipulating the sample data.
This module contains a lot of strong types for units and quantities that are audio related. These types have their corresponding conversion functions that make sense for that particular type. For example: a Seconds object can be converted to a Samples object when given a SampleRate value.