diff --git a/gtk2_ardour/pianokeyboard.cc b/gtk2_ardour/pianokeyboard.cc index ba5a249917..16721e6908 100644 --- a/gtk2_ardour/pianokeyboard.cc +++ b/gtk2_ardour/pianokeyboard.cc @@ -315,6 +315,18 @@ APianoKeyboard::handle_fixed_keys (GdkEventKey* ev) case GDK_KEY_F4: PitchBend (16383, false); return true; + case GDK_KEY_F5: + SetVelocity (32); + return true; + case GDK_KEY_F6: + SetVelocity (64); + return true; + case GDK_KEY_F7: + SetVelocity (96); + return true; + case GDK_KEY_F8: + SetVelocity (127); + return true; case GDK_KEY_Down: PitchBend (0, true); return true; diff --git a/gtk2_ardour/pianokeyboard.h b/gtk2_ardour/pianokeyboard.h index 32bf6c7a56..737c7faa1f 100644 --- a/gtk2_ardour/pianokeyboard.h +++ b/gtk2_ardour/pianokeyboard.h @@ -38,6 +38,7 @@ public: sigc::signal Rest; sigc::signal SustainChanged; sigc::signal PitchBend; + sigc::signal SetVelocity; sigc::signal SwitchOctave; void sustain_press (); diff --git a/gtk2_ardour/virtual_keyboard_window.cc b/gtk2_ardour/virtual_keyboard_window.cc index 9f3e203f09..555c3bb2d6 100644 --- a/gtk2_ardour/virtual_keyboard_window.cc +++ b/gtk2_ardour/virtual_keyboard_window.cc @@ -221,6 +221,7 @@ VirtualKeyboardWindow::VirtualKeyboardWindow () _piano.NoteOff.connect (sigc::mem_fun (*this, &VirtualKeyboardWindow::note_off_event_handler)); _piano.SwitchOctave.connect (sigc::mem_fun (*this, &VirtualKeyboardWindow::octave_key_event_handler)); _piano.PitchBend.connect (sigc::mem_fun (*this, &VirtualKeyboardWindow::pitch_bend_key_event_handler)); + _piano.SetVelocity.connect (sigc::mem_fun (*this, &VirtualKeyboardWindow::velocity_key_event_handler)); /* initialize GUI */ @@ -448,6 +449,17 @@ VirtualKeyboardWindow::update_cc (size_t i, int cc) _cc_key[i].set_active (buf); } +void +VirtualKeyboardWindow::velocity_key_event_handler (int v) +{ + if (v < 1 || v > 127) { + return; + } + char buf[16]; + sprintf (buf, "%d", v); + _piano_velocity.set_active (buf); +} + void VirtualKeyboardWindow::octave_key_event_handler (bool up) { diff --git a/gtk2_ardour/virtual_keyboard_window.h b/gtk2_ardour/virtual_keyboard_window.h index 514f508232..9eae27fb6a 100644 --- a/gtk2_ardour/virtual_keyboard_window.h +++ b/gtk2_ardour/virtual_keyboard_window.h @@ -111,6 +111,7 @@ private: void modwheel_slider_adjusted (); void octave_key_event_handler (bool); + void velocity_key_event_handler (int); void pitch_bend_key_event_handler (int, bool); bool pitch_bend_timeout ();