playr 0.1.0

A minimal TUI music player that plays local files and contacts nothing
Documentation
fn main() {
    for p in std::env::args().skip(1) {
        let path = std::path::Path::new(&p);
        match playr::audio::decode::AudioStream::open(path) {
            Ok(mut s) => {
                let spec = s.spec();
                let mut frames = 0usize;
                let mut peak = 0f32;
                let mut err = None;
                loop {
                    match s.next_chunk() {
                        Ok(Some(c)) => {
                            frames += c.len() / spec.channels.max(1) as usize;
                            for v in c {
                                peak = peak.max(v.abs());
                            }
                        }
                        Ok(None) => break,
                        Err(e) => {
                            err = Some(e.to_string());
                            break;
                        }
                    }
                }
                let secs = frames as f64 / spec.rate.max(1) as f64;
                println!(
                    "{:<12} OK  {}Hz {}ch  {:>8} frames ({:.2}s) peak={:.3} {}",
                    path.file_name().unwrap().to_string_lossy(),
                    spec.rate,
                    spec.channels,
                    frames,
                    secs,
                    peak,
                    err.map(|e| format!("ERR: {e}")).unwrap_or_default()
                );
            }
            Err(e) => println!(
                "{:<12} FAIL {e}",
                path.file_name().unwrap().to_string_lossy()
            ),
        }
    }
}