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:
parent
2c8746eda9
commit
80405e41b0
@ -178,6 +178,7 @@ 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user