use audio_visualizer::live::AudioInput;
use std::io::{BufRead, stdin};
pub fn select_input() -> AudioInput {
let mut devs = AudioInput::devices().unwrap();
assert!(!devs.is_empty(), "no audio input devices found!");
if devs.len() == 1 {
return AudioInput::from_device(devs.remove(0).1).unwrap();
}
println!();
devs.iter()
.enumerate()
.filter_map(|(i, (name, dev))| {
AudioInput::from_device(dev.clone())
.ok()
.map(|input| (i, name, input))
})
.for_each(|(i, name, input)| {
println!(" [{i}] {name} {:?}", input.config());
});
let mut input = String::new();
stdin().lock().read_line(&mut input).unwrap();
let index = input.trim().parse::<usize>().unwrap();
AudioInput::from_device(devs.remove(index).1).unwrap()
}