From 6c6cb52dd17c0eee770ace519c9328f8c325a52e Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 1 Feb 2022 03:28:36 -0500 Subject: [PATCH] GUI: stop notes on octave change --- src/gui/gui.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index bab3b2a2..01c876b2 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -548,6 +548,10 @@ void FurnaceGUI::drawEditControls() { if (ImGui::InputInt("##Octave",&curOctave,1,1)) { if (curOctave>6) curOctave=6; if (curOctave<-5) curOctave=-5; + for (size_t i=0; inoteOff(activeNotes[i].chan); + } + activeNotes.clear(); } ImGui::Text("Edit Step"); @@ -3989,10 +3993,24 @@ void FurnaceGUI::keyDown(SDL_Event& ev) { stop(); break; case SDLK_KP_DIVIDE: - if (--curOctave<-5) curOctave=-5; + if (--curOctave<-5) { + curOctave=-5; + } else { + for (size_t i=0; inoteOff(activeNotes[i].chan); + } + activeNotes.clear(); + } break; case SDLK_KP_MULTIPLY: - if (++curOctave>6) curOctave=6; + if (++curOctave>6) { + curOctave=6; + } else { + for (size_t i=0; inoteOff(activeNotes[i].chan); + } + activeNotes.clear(); + } break; case SDLK_RETURN: if (e->isPlaying()) {