diff options
Diffstat (limited to 'src/bin/smolguitar.rs')
-rw-r--r-- | src/bin/smolguitar.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/bin/smolguitar.rs b/src/bin/smolguitar.rs new file mode 100644 index 0000000..bb36b64 --- /dev/null +++ b/src/bin/smolguitar.rs @@ -0,0 +1,44 @@ +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<f32, PERIOD_SIZE, PROC_SIZE> = 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<f32, PERIOD_SIZE, PROC_SIZE> = 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(); +} |