Min playback speed is +/- (100/16)%

This is for at least two reasons: transport will effectively
move with 32 samples * 6.25% = 2 samples per cycle and the
resampler cannot up/downsample a factor of > 16 with
reasonable quality.
This commit is contained in:
Robin Gareus 2021-07-19 17:28:25 +02:00
parent b454ff0e90
commit 572a69758a
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -321,6 +321,15 @@ Session::default_play_speed ()
void
Session::set_default_play_speed (double spd)
{
/* see also Port::set_speed_ratio and
* VMResampler::set_rratio() for min/max range.
* speed must be > +/- 100 / 16 %
*/
if (spd > 0.0) {
spd = std::min<double> (Config->get_max_transport_speed(), std::max (0.0625, spd));
} else if (spd < 0.0) {
spd = std::max<double> (- Config->get_max_transport_speed(), std::min (-0.0625, spd));
}
_transport_fsm->set_default_speed(spd);
TFSM_SPEED(spd);
TransportStateChange (); /* EMIT SIGNAL */