From cbebadb8a2beb9829fa3f336885d537f1817001b Mon Sep 17 00:00:00 2001 From: PolyMeilex Date: Fri, 29 Sep 2023 01:14:34 +0200 Subject: [PATCH] Fix play along play/pause/rewind --- neothesia/src/scene/playing_scene/midi_player.rs | 5 +++++ neothesia/src/scene/playing_scene/mod.rs | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/neothesia/src/scene/playing_scene/midi_player.rs b/neothesia/src/scene/playing_scene/midi_player.rs index 715d2aff..c7c14dbd 100644 --- a/neothesia/src/scene/playing_scene/midi_player.rs +++ b/neothesia/src/scene/playing_scene/midi_player.rs @@ -95,6 +95,7 @@ impl MidiPlayer { pub fn resume(&mut self) { self.playback.resume(); + self.play_along.clear(); } fn send_midi_programs_for_timestamp(&self, time: &Duration) { @@ -256,6 +257,10 @@ impl PlayAlong { } } + pub fn clear(&mut self) { + self.required_notes.clear() + } + pub fn are_required_keys_pressed(&self) -> bool { self.required_notes.is_empty() } diff --git a/neothesia/src/scene/playing_scene/mod.rs b/neothesia/src/scene/playing_scene/mod.rs index a6e1705f..2c6d8f2c 100644 --- a/neothesia/src/scene/playing_scene/mod.rs +++ b/neothesia/src/scene/playing_scene/mod.rs @@ -82,8 +82,9 @@ impl Scene for PlayingScene { } fn update(&mut self, target: &mut Target, delta: Duration) { + self.rewind_controler.update(&mut self.player, target); + if self.player.play_along().are_required_keys_pressed() || !target.config.play_along { - self.rewind_controler.update(&mut self.player, target); let midi_events = self.player.update(target, delta); self.keyboard.file_midi_events(&target.config, &midi_events); }