From fbd1221833c3048d8e3f545b543bcab5764a6886 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 4 May 2021 16:10:24 -0600 Subject: [PATCH] move FaderPort8 method "button_varispeed()" into BasicUI for more general use --- libs/surfaces/control_protocol/basic_ui.cc | 26 +++++++++++++++++++ .../control_protocol/basic_ui.h | 1 + libs/surfaces/faderport8/actions.cc | 22 +--------------- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index 9819791e02..58feab5655 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -185,6 +185,32 @@ BasicUI::remove_marker_at_playhead () } } +void +BasicUI::button_varispeed (bool fwd) +{ + // switch play direction, if needed + if (fwd) { + if (get_transport_speed() <= 0) { + session->request_transport_speed (1.0, false); + session->request_roll (TRS_UI); + return ; + } + } else { + if (get_transport_speed() >= 0) { + session->request_transport_speed (-1.0, false); + session->request_roll (TRS_UI); + return; + } + } + // incrementally increase speed by semitones + // (keypress auto-repeat is 100ms) + float maxspeed = Config->get_shuttle_max_speed(); + float speed = exp2f(1.0/12.0) * get_transport_speed(); + speed = std::max (-maxspeed, std::min (maxspeed, speed)); + session->request_transport_speed (speed, false); + session->request_roll (TRS_UI); +} + void BasicUI::rewind () { diff --git a/libs/surfaces/control_protocol/control_protocol/basic_ui.h b/libs/surfaces/control_protocol/control_protocol/basic_ui.h index 3595f20c5a..e7ec8e1cc1 100644 --- a/libs/surfaces/control_protocol/control_protocol/basic_ui.h +++ b/libs/surfaces/control_protocol/control_protocol/basic_ui.h @@ -63,6 +63,7 @@ class LIBCONTROLCP_API BasicUI { void goto_zero (); void goto_start (bool and_roll = false); void goto_end (); + void button_varispeed (bool fwd); void rewind (); void ffwd (); void transport_stop (); diff --git a/libs/surfaces/faderport8/actions.cc b/libs/surfaces/faderport8/actions.cc index 8411ab2c26..2b05c74cd3 100644 --- a/libs/surfaces/faderport8/actions.cc +++ b/libs/surfaces/faderport8/actions.cc @@ -313,27 +313,7 @@ FaderPort8::button_varispeed (bool ffw) return; } - // switch play direction, if needed - if (ffw) { - if (get_transport_speed() <= 0) { - session->request_transport_speed (1.0, false); - session->request_roll (TRS_UI); - return ; - } - } else { - if (get_transport_speed() >= 0) { - session->request_transport_speed (-1.0, false); - session->request_roll (TRS_UI); - return; - } - } - // incrementally increase speed by semitones - // (keypress auto-repeat is 100ms) - float maxspeed = Config->get_shuttle_max_speed(); - float speed = exp2f(1.0/12.0) * get_transport_speed(); - speed = std::max (-maxspeed, std::min (maxspeed, speed)); - session->request_transport_speed (speed, false); - session->request_roll (TRS_UI); + BasicUI::button_varispeed (ffw); } #ifdef FP8_MUTESOLO_UNDO