From b942eecc9c84f5d27e1e478c2c4ca69ab1fb8c0c Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 26 Dec 2019 12:17:20 +0100 Subject: [PATCH] Vkeybd: force release notes on panic If key(s) are still being pressed, a key-repeat will re-trigger the most recently pressed note (depending on keyboard settings). --- gtk2_ardour/pianokeyboard.cc | 7 +++++++ gtk2_ardour/pianokeyboard.h | 1 + gtk2_ardour/virtual_keyboard_window.cc | 1 + 3 files changed, 9 insertions(+) diff --git a/gtk2_ardour/pianokeyboard.cc b/gtk2_ardour/pianokeyboard.cc index d317a33bed..c4e0df0ebc 100644 --- a/gtk2_ardour/pianokeyboard.cc +++ b/gtk2_ardour/pianokeyboard.cc @@ -1044,6 +1044,13 @@ APianoKeyboard::sustain_release () } } +void +APianoKeyboard::reset () +{ + sustain_release (); + stop_unsustained_notes (); +} + void APianoKeyboard::set_note_on (int note) { diff --git a/gtk2_ardour/pianokeyboard.h b/gtk2_ardour/pianokeyboard.h index 042afcd283..bf92e20936 100644 --- a/gtk2_ardour/pianokeyboard.h +++ b/gtk2_ardour/pianokeyboard.h @@ -52,6 +52,7 @@ public: void set_note_on (int note); void set_note_off (int note); + void reset (); void set_grand_piano_highlight (bool enabled); void set_annotate_layout (bool enabled); diff --git a/gtk2_ardour/virtual_keyboard_window.cc b/gtk2_ardour/virtual_keyboard_window.cc index ebe5a040e0..2af739e920 100644 --- a/gtk2_ardour/virtual_keyboard_window.cc +++ b/gtk2_ardour/virtual_keyboard_window.cc @@ -398,6 +398,7 @@ VirtualKeyboardWindow::update_octave_range () bool VirtualKeyboardWindow::send_panic_message (GdkEventButton*) { + _piano.reset (); uint8_t channel = PBD::atoi (_midi_channel.get_text ()) - 1; uint8_t ev[3]; ev[0] = MIDI_CMD_CONTROL | channel;