From 683d3ef315dead956a03ae57c7cacf065ce9b28d Mon Sep 17 00:00:00 2001 From: breel Date: Wed, 11 Mar 2026 09:42:48 -0600 Subject: [PATCH] away with notes just beats now --- Cargo.lock | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/flags.rs | 11 +++----- src/main.rs | 9 +++--- src/seq.rs | 21 ++++++++++++++ src/syn.rs | 2 +- 6 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 src/seq.rs diff --git a/Cargo.lock b/Cargo.lock index 600f17d..bf44a3b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,6 +33,15 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "0.6.21" @@ -83,6 +92,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + [[package]] name = "bindgen" version = "0.72.1" @@ -125,6 +140,16 @@ version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +[[package]] +name = "cc" +version = "1.2.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +dependencies = [ + "find-msvc-tools", + "shlex", +] + [[package]] name = "cexpr" version = "0.6.0" @@ -140,6 +165,19 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-link", +] + [[package]] name = "clang-sys" version = "1.8.1" @@ -201,6 +239,7 @@ checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" name = "composer" version = "0.1.0" dependencies = [ + "chrono", "clap", "env_logger", "itertools 0.14.0", @@ -291,6 +330,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "futures-core" version = "0.3.32" @@ -333,6 +378,30 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "indexmap" version = "2.13.0" @@ -500,6 +569,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + [[package]] name = "num_enum" version = "0.7.5" diff --git a/Cargo.toml b/Cargo.toml index 594473e..04d4408 100755 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] +chrono = "0.4.44" clap = { version = "4.5.60", features = ["derive"] } env_logger = "0.11.9" itertools = "0.14.0" diff --git a/src/flags.rs b/src/flags.rs index 66463b4..e1c2657 100644 --- a/src/flags.rs +++ b/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, } diff --git a/src/main.rs b/src/main.rs index 5374314..91129ee 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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; diff --git a/src/seq.rs b/src/seq.rs new file mode 100644 index 0000000..f8804a8 --- /dev/null +++ b/src/seq.rs @@ -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: S) { + } +} diff --git a/src/syn.rs b/src/syn.rs index 3110a2e..f2a180a 100644 --- a/src/syn.rs +++ b/src/syn.rs @@ -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; }, };