use beat_detector::StrategyKind;
use cpal::Device;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
fn main() {
let recording = Arc::new(AtomicBool::new(true));
let recording_cpy = recording.clone();
ctrlc::set_handler(move || {
eprintln!("Stopping recording");
recording_cpy.store(false, Ordering::SeqCst);
})
.unwrap();
let dev = select_input_device();
let strategy = select_strategy();
let on_beat = |info| {
println!("Found beat at {:?}ms", info);
};
let handle =
beat_detector::record::start_listening(on_beat, Some(dev), strategy, recording).unwrap();
handle.join().unwrap();
}
fn select_input_device() -> Device {
beat_detector::record::audio_input_device_list()
.into_iter()
.next()
.expect("At least one audio input device must be available.")
.1
}
fn select_strategy() -> StrategyKind {
StrategyKind::Spectrum
}