use rodio::{OutputStream, source::SineWave};
use rodio::Source;
use std::{env, thread, time};
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() < 2 {
println!("Please provide a list of integers as command-line arguments.");
return;
}
let intervals: Vec<u64> = args[1..]
.iter()
.filter_map(|arg| arg.parse().ok())
.collect();
if intervals.is_empty() {
println!("None of the provided arguments were valid integers.");
return;
}
let (_stream, stream_handle) = OutputStream::try_default().unwrap();
let mut beepcount = 0;
loop {
for interval in &intervals {
thread::sleep(time::Duration::from_secs(*interval));
let source = SineWave::new(1000).take_duration(time::Duration::from_millis(500)).amplify(3.0);
stream_handle.play_raw(source.convert_samples()).unwrap();
beepcount += 1;
println!("beep! {}", beepcount);
}
}
}