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:
parent
b454ff0e90
commit
572a69758a
@ -321,6 +321,15 @@ Session::default_play_speed ()
|
|||||||
void
|
void
|
||||||
Session::set_default_play_speed (double spd)
|
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);
|
_transport_fsm->set_default_speed(spd);
|
||||||
TFSM_SPEED(spd);
|
TFSM_SPEED(spd);
|
||||||
TransportStateChange (); /* EMIT SIGNAL */
|
TransportStateChange (); /* EMIT SIGNAL */
|
||||||
|
Loading…
Reference in New Issue
Block a user