web-audio-api 0.28.0

A pure Rust implementation of the Web Audio API, for use in non-browser contexts
Documentation
use std::fs::File;

use web_audio_api::context::{AudioContext, BaseAudioContext};
use web_audio_api::node::{AudioNode, AudioScheduledSourceNode};

fn main() {
    env_logger::init();

    let audio_context = AudioContext::default();

    let file = File::open("samples/sample.wav").unwrap();
    let buffer = audio_context.decode_audio_data_sync(file).unwrap();

    let src = audio_context.create_buffer_source();
    src.connect(&audio_context.destination());
    src.set_buffer(buffer);

    src.set_onended(|_| {
        println!("> Ended event triggered!");
    });

    let now = audio_context.current_time();
    src.start_at(now);
    src.stop_at(now + 1.);

    std::thread::sleep(std::time::Duration::from_secs(4));
}