duration is beats not repeat
This commit is contained in:
14
src/seq.rs
14
src/seq.rs
@@ -4,12 +4,14 @@ use crate::syn;
|
|||||||
pub struct SynSeq {
|
pub struct SynSeq {
|
||||||
seq: Seq,
|
seq: Seq,
|
||||||
syn: syn::Syn,
|
syn: syn::Syn,
|
||||||
|
state: Option<tone::Tone>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_syn(syn: syn::Syn) -> SynSeq {
|
pub fn new_syn(syn: syn::Syn) -> SynSeq {
|
||||||
SynSeq{
|
SynSeq{
|
||||||
seq: new(),
|
seq: new(),
|
||||||
syn: syn,
|
syn: syn,
|
||||||
|
state: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,9 +21,15 @@ impl SynSeq {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn render(&mut self, left: &mut [f32], right: &mut [f32]) {
|
pub fn render(&mut self, left: &mut [f32], right: &mut [f32]) {
|
||||||
if let Some(tone) = self.seq.pop() {
|
let state = self.state.clone();
|
||||||
self.syn.set(tone);
|
match self.seq.pop() {
|
||||||
}
|
Some(tone) if (state.is_none() || tone != state.unwrap()) => {
|
||||||
|
self.syn.set(tone.clone());
|
||||||
|
self.state = Some(tone);
|
||||||
|
},
|
||||||
|
None => { self.state = None; },
|
||||||
|
_ => {},
|
||||||
|
};
|
||||||
self.syn.render(left, right);
|
self.syn.render(left, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user