flesh out sequencer
This commit is contained in:
@@ -6,6 +6,7 @@ pub struct Event {
|
||||
|
||||
// Timing
|
||||
pub time: Option<f64>,
|
||||
pub delta: Option<f64>,
|
||||
pub repeat: Option<f32>,
|
||||
pub duration: Option<f32>,
|
||||
pub gate: Option<f32>,
|
||||
@@ -172,6 +173,7 @@ impl Event {
|
||||
match key {
|
||||
"doux" | "dirt" => event.cmd = Some(val.to_string()),
|
||||
"time" | "t" => event.time = val.parse().ok(),
|
||||
"delta" => event.delta = val.parse().ok(),
|
||||
"repeat" | "rep" => event.repeat = val.parse().ok(),
|
||||
"duration" | "dur" | "d" => event.duration = val.parse().ok(),
|
||||
"gate" => event.gate = val.parse().ok(),
|
||||
|
||||
@@ -263,7 +263,11 @@ impl Engine {
|
||||
}
|
||||
}
|
||||
|
||||
fn play_event(&mut self, event: Event) -> Option<usize> {
|
||||
fn play_event(&mut self, mut event: Event) -> Option<usize> {
|
||||
if let Some(delta) = event.delta {
|
||||
event.time = Some(self.time + delta);
|
||||
event.delta = None;
|
||||
}
|
||||
if event.time.is_some() {
|
||||
// ALL events with time go to schedule (like dough.c)
|
||||
// This ensures repeat works correctly for time=0 events
|
||||
|
||||
Reference in New Issue
Block a user