web-audio-api 0.28.0

A pure Rust implementation of the Web Audio API, for use in non-browser contexts
Documentation
use web_audio_api::context::{AudioContext, BaseAudioContext};
use web_audio_api::media::MediaElement;
use web_audio_api::node::AudioNode;

fn main() {
    let context = AudioContext::default();
    let mut media = MediaElement::new("samples/major-scale.ogg").unwrap();
    media.set_loop(true);

    let src = context.create_media_element_source(&mut media);
    src.connect(&context.destination());
    println!("Media Element ready");

    println!("Start playing");
    media.play();

    std::thread::sleep(std::time::Duration::from_millis(3000));
    println!("Current time is now {}", media.current_time());
    println!("Seek to 1 second");
    media.set_current_time(1.);

    println!("Playback rate 1.25");
    media.set_playback_rate(1.25);

    std::thread::sleep(std::time::Duration::from_millis(3000));
    println!("Current time is now {}", media.current_time());
    println!("Pause");
    media.pause();
    std::thread::sleep(std::time::Duration::from_millis(1000));

    assert!(media.paused());
    assert!(media.loop_());

    println!("Play");
    media.play();
    println!("Current time is now {}", media.current_time());

    loop {
        std::thread::sleep(std::time::Duration::from_millis(3000));
        assert!(!media.paused());
        println!("Current time is now {}", media.current_time());
    }
}