PARALLEL SOUNDS LETS GOOOOOO

This commit is contained in:
2026-03-11 13:40:43 -06:00
parent acdac24d1a
commit 59c7386e85
2 changed files with 34 additions and 15 deletions

View File

@@ -13,8 +13,9 @@ fn main() {
flags.sound_font, flags.sound_font,
flags.sample_rate, flags.sample_rate,
)); ));
syn_seq.append(1, "3c1");
if let Some(play) = flags.play { if let Some(play) = flags.play {
syn_seq.append(play); syn_seq.append(0, play);
} }
play(syn_seq, flags.sample_rate, flags.bpm); play(syn_seq, flags.sample_rate, flags.bpm);

View File

@@ -2,37 +2,55 @@ use crate::tone;
use crate::syn; use crate::syn;
pub struct SynSeq { pub struct SynSeq {
seq: Seq, seqs: std::collections::HashMap<i32, Seq>,
syn: syn::Syn, syn: syn::Syn,
} }
pub fn new_syn(syn: syn::Syn) -> SynSeq { pub fn new_syn(syn: syn::Syn) -> SynSeq {
SynSeq{ SynSeq{
seq: new(), seqs: std::collections::HashMap::new(),
syn: syn, syn: syn,
} }
} }
impl SynSeq { impl SynSeq {
pub fn append<S: ToString>(&mut self, s: S) { pub fn append<S: ToString>(&mut self, ch: i32, s: S) {
self.seq.append(s); match self.seqs.get_mut(&ch) {
Some(seq) => seq.append(s),
None => {
let mut seq = new();
seq.append(s);
self.seqs.insert(ch, seq);
},
};
} }
pub fn render(&mut self, left: &mut [f32], right: &mut [f32]) { pub fn render(&mut self, left: &mut [f32], right: &mut [f32]) {
match self.seq.pop() { for (ch, seq) in self.seqs.iter_mut() {
let ch = ch.clone();
match seq.pop() {
(Some(tone), changed) if changed => { (Some(tone), changed) if changed => {
self.syn.set(0, Some(tone.clone())); self.syn.set(ch, Some(tone.clone()))
}, },
(None, changed) if changed => { (None, changed) if changed => {
self.syn.set(0, None); self.syn.set(ch, None);
}, },
_ => {}, _ => {},
}; };
}
self.syn.render(left, right); self.syn.render(left, right);
} }
pub fn beats(&self) -> usize { pub fn beats(&self) -> usize {
self.seq.beats.len() let mut longest = 0 as usize;
for (_, seq) in self.seqs.iter() {
longest = if seq.beats.len() > longest {
seq.beats.len()
} else {
longest
};
}
longest
} }
} }