mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 03:36:41 +01:00
45 lines
1.4 KiB
Rust
45 lines
1.4 KiB
Rust
use crate::*;
|
|
|
|
impl Clock {
|
|
fn _todo_provide_u32 (&self) -> u32 {
|
|
todo!()
|
|
}
|
|
fn _todo_provide_opt_u32 (&self) -> Option<u32> {
|
|
todo!()
|
|
}
|
|
fn _todo_provide_f64 (&self) -> f64 {
|
|
todo!()
|
|
}
|
|
}
|
|
|
|
impl<T: HasClock> Command<T> for ClockCommand {
|
|
fn execute (&self, state: &mut T) -> Perhaps<Self> {
|
|
self.execute(state.clock_mut()) // awesome
|
|
}
|
|
}
|
|
|
|
def_command!(ClockCommand: |clock: Clock| {
|
|
SeekUsec { usec: f64 } => {
|
|
clock.playhead.update_from_usec(*usec); Ok(None) },
|
|
SeekSample { sample: f64 } => {
|
|
clock.playhead.update_from_sample(*sample); Ok(None) },
|
|
SeekPulse { pulse: f64 } => {
|
|
clock.playhead.update_from_pulse(*pulse); Ok(None) },
|
|
SetBpm { bpm: f64 } => Ok(Some(
|
|
Self::SetBpm { bpm: clock.timebase().bpm.set(*bpm) })),
|
|
SetQuant { quant: f64 } => Ok(Some(
|
|
Self::SetQuant { quant: clock.quant.set(*quant) })),
|
|
SetSync { sync: f64 } => Ok(Some(
|
|
Self::SetSync { sync: clock.sync.set(*sync) })),
|
|
|
|
Play { position: Option<u32> } => {
|
|
clock.play_from(*position)?; Ok(None) /* TODO Some(Pause(previousPosition)) */ },
|
|
Pause { position: Option<u32> } => {
|
|
clock.pause_at(*position)?; Ok(None) },
|
|
|
|
TogglePlayback { position: u32 } => Ok(if clock.is_rolling() {
|
|
clock.pause_at(Some(*position))?; None
|
|
} else {
|
|
clock.play_from(Some(*position))?; None
|
|
}),
|
|
});
|