use rustynotes::notes::{Notes, note_range, ProcerNotes}; use rustynotes::proc::{Procer, ProcerData}; use rustynotes::rfft::RFftProcer; use rustynotes::buf::{StaticBuffer, Procers}; use rustynotes::outputers::{Outputers, SimpleOutputer}; use rustynotes::args::SimpleArgs; use clap::{Parser, CommandFactory, FromArgMatches}; fn main() { const CHANNELS: u32 = 2; const PERIOD_SIZE: usize = 800; const PROC_SIZE: usize = 5600; //1 << 13; // 8k, 16k, 32k //let disp_threshold: f32 = 0.07; //let disp_t_str = "0.07"; let disp_t_str = "0.00526532149076897"; let sample_rate = 48000; let notes = note_range((Notes::C, 2), (Notes::B, 10)); let rfproc: RFftProcer = RFftProcer::new(sample_rate); let pnotes = rfproc.make_pnotes(¬es); println!("notes len: {}, pnotes len: {}", notes.len(), pnotes.len()); for pnote in &pnotes { println!("{}", pnote); } println!("{}", rfproc); let mut cmd = SimpleArgs::command(); cmd = cmd.mut_arg("threshold", |ta| ta.default_value(disp_t_str)); let mut matches = cmd.get_matches(); let args = SimpleArgs::from_arg_matches_mut(&mut matches).unwrap(); let disp_threshold = args.threshold; println!("Args: {:?}", args); let rfpdata = ProcerData::new(&rfproc, ProcerNotes(pnotes, disp_threshold)); let outputer = args.get_outputer(¬es); let mut buf: StaticBuffer = StaticBuffer::new(48000, CHANNELS, vec![(Procers::Rfft(rfproc), rfpdata)], "mpd_c_snoop".to_string(), args.get_outdev(), outputer); println!("{}", buf); let mut aout = alsa::Output::buffer_open().unwrap(); buf.adev.dump(&mut aout); //buf.outdev.dump(&mut aout); match &buf.outdev { Some(outdev) => { outdev.dump(&mut aout); }, None => {}, } println!("{}", aout); buf.capture_loop(); }