fix timer of horizontal sequencer

This commit is contained in:
🪞👃🪞 2024-07-03 20:03:00 +03:00
parent 2601592d17
commit 1259176576
6 changed files with 293 additions and 254 deletions

View file

@ -73,6 +73,7 @@ pub fn main () -> Usually<()> {
state.midi_in = Some(client.register_port("midi-in", MidiIn)?);
state.transport = Some(client.transport());
state.playing = Some(TransportState::Stopped);
state.time_zoom = 24;
state.jack = Some(jack);
Ok(())
}))
@ -156,6 +157,20 @@ process!(App |self, _client, scope| {
});
impl App {
pub fn toggle_play (&mut self) -> Usually<()> {
self.playing = match self.playing.expect("after jack init") {
TransportState::Stopped => {
self.transport.as_ref().unwrap().start()?;
Some(TransportState::Starting)
},
_ => {
self.transport.as_ref().unwrap().stop()?;
self.transport.as_ref().unwrap().locate(0)?;
Some(TransportState::Stopped)
},
};
Ok(())
}
pub fn connect_tracks (&self) -> Usually<()> {
//let (client, _status) = Client::new(
//&format!("{}-init", &self.name), ClientOptions::NO_START_SERVER
@ -184,6 +199,18 @@ impl App {
//}
Ok(())
}
pub fn add_scene (&mut self, name: Option<&str>) -> Usually<&mut Scene> {
let name = name.ok_or_else(||format!("Scene {}", self.scenes.len() + 1))?;
self.scenes.push(Scene::new(&name, vec![]));
self.scene_cursor = self.scenes.len();
Ok(&mut self.scenes[self.scene_cursor - 1])
}
pub fn add_track (&mut self, name: Option<&str>) -> Usually<&mut Track> {
let name = name.ok_or_else(||format!("Track {}", self.tracks.len() + 1))?;
self.tracks.push(Track::new(&name, self.jack.as_ref().unwrap().as_client(), None, None)?);
self.track_cursor = self.tracks.len();
Ok(&mut self.tracks[self.track_cursor - 1])
}
pub fn track (&self) -> Option<(usize, &Track)> {
match self.track_cursor { 0 => None, _ => {
let id = self.track_cursor as usize - 1;