Skip to content

Repository files navigation

Hound

A wav encoding and decoding library in Rust.

Crates.io versionChangelogDocumentation

Hound can read and write the WAVE audio format, an ubiquitous format for raw, uncompressed audio. The main motivation to write it was to test Claxon, a FLAC decoding library written in Rust.

Examples

The following example renders a 440 Hz sine wave, and stores it as a mono wav file with a sample rate of 44.1 kHz and 16 bits per sample.

use std::f32::consts::PI;use std::i16;use hound;let spec = hound::WavSpec{channels:1,sample_rate:44100,bits_per_sample:16,sample_format: hound::SampleFormat::Int,};letmut writer = hound::WavWriter::create("sine.wav", spec).unwrap();for t in(0 .. 44100).map(|x| x asf32 / 44100.0){let sample = (t *440.0*2.0*PI).sin();let amplitude = i16::MAXasf32;
writer.write_sample((sample * amplitude)asi16).unwrap();}

The file is finalized implicitly when the writer is dropped, call writer.finalize() to observe errors.

The following example computes the root mean square (RMS) of an audio file with at most 16 bits per sample.

use hound;letmut reader = hound::WavReader::open("testsamples/pop.wav").unwrap();let sqr_sum = reader.samples::<i16>().fold(0.0, |sqr_sum, s| {let sample = s.unwrap()asf64;
sqr_sum + sample * sample
});println!("RMS is {}",(sqr_sum / reader.len()asf64).sqrt());

Features

ReadWrite
FormatPCMWAVEFORMAT, WAVEFORMATEX, WAVEFORMATEXTENSIBLEPCMWAVEFORMAT, WAVEFORMATEXTENSIBLE
EncodingInteger PCM, IEEE FloatInteger PCM, IEEE Float
Bits per sample8, 16, 24, 32 (integer), 32 (float)8, 16, 24, 32 (integer), 32 (float)

Contributing

Contributions in the form of bug reports, feature requests, or pull requests are welcome. See contributing.md.

License

Hound is licensed under the Apache 2.0 license. It may be used in free software as well as closed-source applications, both for commercial and non-commercial use under the conditions given in the license. If you want to use Hound in your GPLv2-licensed software, you can add an exception to your copyright notice. Please do not open an issue if you disagree with the choice of license.

About

A wav encoding and decoding library in Rust

Resources

Contributing

Stars

634 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages