Crate rotary[][src]

Documentation Crates Actions Status

A library for dealing efficiently with AudioBuffer non-interleaved audio buffers.

The buffer is constructed similarly to a Vec<Vec<T>>, except the interior vector has a fixed size. And the buffer makes no attempt to clear data which is freed when using functions such as AudioBuffer::resize.

use rand::Rng as _;

let mut buffer = rotary::AudioBuffer::<f32>::new();

buffer.resize_channels(2);
buffer.resize(2048);

/// Fill both channels with random noise.
let mut rng = rand::thread_rng();
rng.fill(&mut buffer[0]);
rng.fill(&mut buffer[1]);

Creating and using a masked audio buffer.

use rotary::BitSet;

let mut buffer = rotary::MaskedAudioBuffer::<f32, BitSet<u128>>::with_topology(4, 1024);

buffer.mask(1);

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

let expected = vec![1.0f32; 1024];

assert_eq!(&buffer[0], &expected[..]);
assert_eq!(&buffer[1], &[][..]);
assert_eq!(&buffer[2], &expected[..]);
assert_eq!(&buffer[3], &expected[..]);

Re-exports

pub use self::audio_buffer::AudioBuffer;
pub use self::bit_set::BitSet;
pub use self::masked_audio_buffer::MaskedAudioBuffer;

Modules

audio_buffer

A dynamically sized, multi-channel audio buffer.

bit_set

A fixed size bit set.

masked_audio_buffer

A dynamically sized, multi-channel audio buffer that supports.

Traits

Mask

The trait for a mask that can be used with crate::MaskedAudioBuffer.

Sample

A sample that can be stored in an audio buffer.