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, LineLayout}; use rustynotes::args::SimpleArgs; use clap::Parser; fn main() { const CHANNELS: u32 = 1; const PERIOD_SIZE: usize = 480; const PROC_SIZE: usize = 1 << 13; // 8k //let disp_threshold = 0.00372314453125; //let disp_threshold = 0.00526532149076897; //let disp_threshold = 0.05; let sample_rate = 48000; let notes = note_range((Notes::C, 2), (Notes::E, 7)); let rfproc: RFftProcer = RFftProcer::new(sample_rate); let pnotes = rfproc.make_pnotes(¬es); for pnote in &pnotes { println!("{}", pnote); } println!("{}", rfproc); //let outputer = Outputers::Simple(SimpleOutputer); //(2f32).sqrt() //let outputer = Outputers::LineLayout(LineLayout::new(0.25, true, (60., 255., 220.), ¬es)); let args = SimpleArgs::parse(); let disp_threshold = args.threshold; let outputer = args.get_outputer(¬es); let rfpdata = ProcerData::new(&rfproc, ProcerNotes(pnotes, disp_threshold)); let mut buf: StaticBuffer = StaticBuffer::new(48000, CHANNELS, vec![(Procers::Rfft(rfproc), rfpdata)], "guitar_c".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(); }