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;