#conversion #high-level #channel #api #converting #libsamplerate

samplerate

A library based on libsamplerate for converting samplerates

11 releases

Uses old Rust 2015

0.2.4 Jan 14, 2021
0.2.3 Nov 19, 2020
0.2.2 Apr 29, 2020
0.2.1 Jul 7, 2019
0.1.5 Oct 30, 2018

#210 in Audio

Download history 3976/week @ 2023-11-21 4381/week @ 2023-11-28 5173/week @ 2023-12-05 3355/week @ 2023-12-12 3011/week @ 2023-12-19 4262/week @ 2023-12-26 3084/week @ 2024-01-02 3385/week @ 2024-01-09 3144/week @ 2024-01-16 3111/week @ 2024-01-23 4051/week @ 2024-01-30 5744/week @ 2024-02-06 2983/week @ 2024-02-13 1895/week @ 2024-02-20 2548/week @ 2024-02-27 2243/week @ 2024-03-05

10,242 downloads per month
Used in 4 crates

BSD-2-Clause

28KB
482 lines

Samplerate

Build Status Docs

A samplerate conversion library for Rust. This library provides a high-level API for libsamplerate-sys and hence is built on top of libsamplerate.

Example

extern crate samplerate;
extern crate hound;

use samplerate::{convert, ConverterType};
use hound::{WavSpec, WavWriter, SampleFormat};

fn main() {
    // Generate a 880Hz sine wave for 1 second in 44100Hz with one channel.
    let freq = std::f32::consts::PI * 880f32 / 44100f32;
    let input: Vec<f32> = (0..44100 * 5).map(|i| (freq * i as f32).sin()).collect();

    // Resample the input from 44100Hz to 48000Hz.
    let resampled = convert(44100, 48000, 1, ConverterType::SincBestQuality, &input).unwrap();

    // Write the resampled pcm data to disk.
    let mut writer = WavWriter::create("resampled.wav", WavSpec {
        channels: 1,
        sample_rate: 48000,
        bits_per_sample: 32,
        sample_format: SampleFormat::Float,
    }).unwrap();
    resampled.iter().for_each(|i| writer.write_sample(*i).unwrap());
}

Dependencies

~4MB