audio_samples 1.0.5

A typed audio processing library for Rust that treats audio as a first-class, invariant-preserving object rather than an unstructured numeric buffer.
Documentation
#[cfg(not(feature = "onset-detection"))]
pub fn main() {
    eprintln!("error: This example requires the `onset-detection` feature.");
    std::process::exit(1);
}

#[cfg(feature = "onset-detection")]
pub fn main() -> audio_samples::AudioSampleResult<()> {
    use audio_samples::{AudioSamples, sine_wave, utils::detection};
    use std::time::Duration;

    let audio: AudioSamples<'static, f64> = sine_wave::<f64>(
        440.0,
        Duration::from_millis(250),
        core::num::NonZeroU32::new(44_100).unwrap(),
        0.8,
    );

    let f0: Option<f64> = detection::detect_fundamental_frequency(&audio)?;
    println!("Fundamental frequency: {:?} Hz", f0);

    let silence = detection::detect_silence_regions::<f64>(&audio, 1e-4)?;
    println!("Silence regions: {:?}", silence);

    #[cfg(feature = "transforms")]
    {
        let sr = detection::detect_sample_rate::<f64>(&audio)?;
        println!("Detected sample rate: {:?}", sr);
    }

    Ok(())
}