use web_audio_api::context::{AudioContext, BaseAudioContext};
use web_audio_api::node::{AudioNode, AudioScheduledSourceNode, OscillatorType};
use web_audio_api::PeriodicWaveOptions;
fn main() {
env_logger::init();
let context = AudioContext::default();
let osc = context.create_oscillator();
osc.connect(&context.destination());
let options = PeriodicWaveOptions {
real: Some(vec![0., 0.5, 0.5]),
imag: Some(vec![0., 0., 0.]),
disable_normalization: false,
};
let periodic_wave = context.create_periodic_wave(options);
osc.start();
let interval_time = 2.;
println!("Sine tone sweep playing... 🎵🎵🎵");
osc.frequency()
.linear_ramp_to_value_at_time(880., interval_time);
std::thread::sleep(std::time::Duration::from_secs(interval_time as u64));
println!("Square tone sweep playing...🎵🎵🎵");
osc.set_type(OscillatorType::Square);
osc.frequency()
.linear_ramp_to_value_at_time(440., context.current_time() + interval_time);
std::thread::sleep(std::time::Duration::from_secs(interval_time as u64));
println!("Triangle tone sweep playing...🎵🎵🎵");
osc.set_type(OscillatorType::Triangle);
osc.frequency()
.linear_ramp_to_value_at_time(880., context.current_time() + interval_time);
std::thread::sleep(std::time::Duration::from_secs(interval_time as u64));
println!("Sawtooth tone sweep playing...🎵🎵🎵");
osc.set_type(OscillatorType::Sawtooth);
osc.frequency()
.linear_ramp_to_value_at_time(440., context.current_time() + interval_time);
std::thread::sleep(std::time::Duration::from_secs(interval_time as u64));
println!("Periodic wave tone sweep playing...🎵🎵🎵");
osc.set_periodic_wave(periodic_wave);
osc.frequency()
.linear_ramp_to_value_at_time(880., context.current_time() + interval_time);
std::thread::sleep(std::time::Duration::from_secs(interval_time as u64));
}