away with notes just beats now
This commit is contained in:
11
src/flags.rs
11
src/flags.rs
@@ -2,19 +2,16 @@ use clap::Parser;
|
||||
|
||||
#[derive(Parser, Debug, Clone)]
|
||||
pub struct Flags {
|
||||
#[arg(short, long, default_value_t = false)]
|
||||
#[arg(short, long, default_value_t = false)]
|
||||
pub debug: bool,
|
||||
|
||||
#[arg(long, default_value_t = 16)]
|
||||
pub smallest_note: usize,
|
||||
|
||||
#[arg(long, default_value_t = 60)]
|
||||
#[arg(long, default_value_t = 60)]
|
||||
pub bpm: usize,
|
||||
|
||||
#[arg(long, default_value_t = 44100)]
|
||||
#[arg(long, default_value_t = 44100)]
|
||||
pub sample_rate: usize,
|
||||
|
||||
#[arg(long, default_value = "super_small_font.sf2")]
|
||||
#[arg(long, default_value = "super_small_font.sf2")]
|
||||
pub sound_font: String,
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ use itertools::Itertools;
|
||||
mod flags;
|
||||
mod syn;
|
||||
mod tone;
|
||||
mod seq;
|
||||
|
||||
fn main() {
|
||||
let flags = flags::Flags::new();
|
||||
@@ -14,15 +15,15 @@ fn main() {
|
||||
);
|
||||
syn.tone_on(0, tone::new("c+5"));
|
||||
|
||||
play(syn, flags.sample_rate, flags.bpm, flags.smallest_note);
|
||||
play(syn, flags.sample_rate, flags.bpm);
|
||||
}
|
||||
|
||||
fn play(mut s: syn::Syn, sample_rate: usize, bpm: usize, smallest_note: usize) {
|
||||
let samples_per_smallest_note = sample_rate / bpm * 60 / smallest_note;
|
||||
fn play(mut s: syn::Syn, sample_rate: usize, bpm: usize) {
|
||||
let samples_per_beat = sample_rate / bpm * 60;
|
||||
let params = tinyaudio::prelude::OutputDeviceParameters {
|
||||
channels_count: 2,
|
||||
sample_rate: sample_rate,
|
||||
channel_sample_count: samples_per_smallest_note,
|
||||
channel_sample_count: samples_per_beat,
|
||||
};
|
||||
|
||||
let sample_count = (params.channel_sample_count) as usize;
|
||||
|
||||
21
src/seq.rs
Normal file
21
src/seq.rs
Normal file
@@ -0,0 +1,21 @@
|
||||
use crate::tone::Tone;
|
||||
use crate::syn;
|
||||
|
||||
struct Seq {
|
||||
beats: Vec<(i32, Tone)>,
|
||||
}
|
||||
|
||||
pub fn new() -> Seq {
|
||||
Seq::new()
|
||||
}
|
||||
|
||||
impl Seq {
|
||||
fn new() -> Seq {
|
||||
Seq{
|
||||
beats: vec![],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn append<S: ToString>(s: S) {
|
||||
}
|
||||
}
|
||||
@@ -68,7 +68,7 @@ impl Syn {
|
||||
match self {
|
||||
Syn::Real(syn) => syn.render(a, b),
|
||||
Syn::Text{m, i} => {
|
||||
eprintln!("render[{}]({:?})", i, m);
|
||||
eprintln!("{} | render[{}]({:?})", chrono::prelude::Utc::now(), i, m);
|
||||
*i += 1;
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user