move FaderPort8 method "button_varispeed()" into BasicUI for more general use

This commit is contained in:
Paul Davis 2021-05-04 16:10:24 -06:00
parent 981fc6b3cd
commit fbd1221833
3 changed files with 28 additions and 21 deletions

View file

@ -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 ()
{

View file

@ -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 ();

View file

@ -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