riff-wave

Simple methods for reading and writing PCM wave files.

Examples

Reading a wave file

```rust extern crate riff_wave;

use std::fs::File; use std::io::BufReader;

use riff_wave::{ReadResult, WaveReader};

fn readwave() -> ReadResult<()> { let file = File::open("examples/hello.wav")?; let reader = BufReader::new(file); let mut wavereader = WaveReader::new(reader)?;

loop {
    wave_reader.read_sample_i16()?;
}

} ```

Writing a wave file

```rust extern crate riff_wave;

use std::f32::consts::PI; use std::fs::File; use std::io::BufWriter;

use riff_wave::{WaveWriter, WriteResult};

fn writewave() -> WriteResult<()> {
const SAMPLE
RATE: u32 = 44100; const FREQUENCY: f32 = 2.0 * PI * 440.0; // radian per second

let file = File::create("examples/hello.wav")?;
let writer = BufWriter::new(file);

let mut wave_writer = WaveWriter::new(1, SAMPLE_RATE, 16, writer)?;

for n in 0..SAMPLE_RATE {
    let phase = FREQUENCY * n as f32 / SAMPLE_RATE as f32;
    let sample = (phase.sin() * 0.8 * i16::MAX as f32) as i16;

    wave_writer.write_sample_i16(sample)?;
}

Ok(())

} ```

Documentation

Documentation is available via cargo doc or via this link.