diff --git a/crates/tek_sequencer/src/transport.rs b/crates/tek_sequencer/src/transport.rs index 843d519f..13b578de 100644 --- a/crates/tek_sequencer/src/transport.rs +++ b/crates/tek_sequencer/src/transport.rs @@ -80,35 +80,6 @@ impl TransportToolbar { }; Ok(()) } - pub fn update (&mut self, scope: &ProcessScope) -> (bool, usize, usize, usize, usize, f64) { - let times = scope.cycle_times().unwrap(); - let CycleTimes { current_frames, current_usecs, next_usecs, period_usecs } = times; - let chunk_size = scope.n_frames() as usize; - let transport = self.transport.as_ref().unwrap().query().unwrap(); - self.frame = transport.pos.frame() as usize; - let mut reset = false; - if self.playing != Some(transport.state) { - match transport.state { - TransportState::Rolling => { - self.started = Some((current_frames as usize, current_usecs as usize)); - }, - TransportState::Stopped => { - self.started = None; - reset = true; - }, - _ => {} - } - } - self.playing = Some(transport.state); - ( - reset, - current_frames as usize, - chunk_size as usize, - current_usecs as usize, - next_usecs as usize, - period_usecs as f64 - ) - } pub fn bpm (&self) -> usize { self.timebase.bpm() as usize } diff --git a/crates/tek_sequencer/src/transport_snd.rs b/crates/tek_sequencer/src/transport_snd.rs index a723c5b3..554b1715 100644 --- a/crates/tek_sequencer/src/transport_snd.rs +++ b/crates/tek_sequencer/src/transport_snd.rs @@ -5,3 +5,42 @@ impl Audio for TransportToolbar { Control::Continue } } +impl TransportToolbar { + pub fn update (&mut self, scope: &ProcessScope) -> (bool, usize, usize, usize, usize, f64) { + let times = scope.cycle_times().unwrap(); + let CycleTimes { current_frames, current_usecs, next_usecs, period_usecs } = times; + let chunk_size = scope.n_frames() as usize; + let transport = self.transport.as_ref().unwrap().query().unwrap(); + self.frame = transport.pos.frame() as usize; + let mut reset = false; + if self.playing != Some(transport.state) { + match transport.state { + TransportState::Rolling => { + self.started = Some((current_frames as usize, current_usecs as usize)); + }, + TransportState::Stopped => { + self.started = None; + reset = true; + }, + _ => {} + } + } + self.playing = Some(transport.state); + match self.started { + Some((frames, usecs)) => { + self.usecs = current_usecs as usize - usecs; + }, + None => { + self.usecs = 0; + } + } + ( + reset, + current_frames as usize, + chunk_size as usize, + current_usecs as usize, + next_usecs as usize, + period_usecs as f64 + ) + } +}