13
0

Fix shuttle wheel unit granularity

When switching to Semitones, round speed to nearest semitone.

This fixes an issue when rolling forward at < 25% which is
less that -24st and then scrolling right (increase pitch).
The result may still be < -24st and playback reverses.

When changing max-speed, directly constrain speed.
This commit is contained in:
Robin Gareus 2021-04-20 14:14:45 +02:00
parent 2c8746eda9
commit 80405e41b0
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -178,9 +178,10 @@ ShuttleControl::map_transport_state ()
if (Config->get_shuttle_units() == Semitones) { if (Config->get_shuttle_units() == Semitones) {
bool reverse; bool reverse;
int semi = speed_as_semitones (speed, reverse); int semi = speed_as_semitones (speed, reverse);
semi = std::max (-24, std::min (24, semi));
shuttle_fract = semitones_as_fract (semi, reverse); shuttle_fract = semitones_as_fract (semi, reverse);
} else { } else {
shuttle_fract = speed/shuttle_max_speed; shuttle_fract = speed / shuttle_max_speed;
} }
} }
@ -276,8 +277,6 @@ void
ShuttleControl::set_shuttle_max_speed (float speed) ShuttleControl::set_shuttle_max_speed (float speed)
{ {
Config->set_shuttle_max_speed (speed); Config->set_shuttle_max_speed (speed);
shuttle_max_speed = speed;
last_speed_displayed = -99999999;
} }
bool bool
@ -716,9 +715,14 @@ ShuttleControl::parameter_changed (std::string p)
} }
} else if (p == "shuttle-max-speed") { } else if (p == "shuttle-max-speed") {
queue_draw (); shuttle_max_speed = Config->get_shuttle_max_speed ();
last_speed_displayed = -99999999;
map_transport_state ();
use_shuttle_fract (true);
} else if (p == "shuttle-units") { } else if (p == "shuttle-units") {
queue_draw (); last_speed_displayed = -99999999;
map_transport_state ();
use_shuttle_fract (true);
} }
} }