diff options
Diffstat (limited to 'libs/ardour/session_process.cc')
-rw-r--r-- | libs/ardour/session_process.cc | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index 5bd1166fc6..d389f32696 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -322,14 +322,12 @@ Session::process_with_events (nframes_t nframes) return; } - /// TODO: Figure out what happens to phi and phase, if transport speed momentarily becomes - /// 1.0 eg. during the adjustments of a slave. If that is a bug, then AudioDiskstream::process - /// is very likely broken too if (_transport_speed == 1.0) { frames_moved = (long) nframes; } else { - frames_moved = (long) AudioDiskstream:: - calculate_varispeed_playback_distance(nframes, phase, phi, target_phi); + interpolation.set_target_speed (_target_transport_speed); + interpolation.set_speed (_transport_speed); + frames_moved = (long) interpolation.interpolate (nframes, 0, 0); } end_frame = _transport_frame + (nframes_t)frames_moved; @@ -845,14 +843,12 @@ Session::process_without_events (nframes_t nframes) prepare_diskstreams (); - /// TODO: Figure out what happens to phi and phase, if transport speed momentarily becomes - /// 1.0 eg. during the adjustments of a slave. If that is a bug, then AudioDiskstream::process - /// is very likely broken too if (_transport_speed == 1.0) { frames_moved = (long) nframes; } else { - frames_moved = (long) AudioDiskstream:: - calculate_varispeed_playback_distance(nframes, phase, phi, target_phi); + interpolation.set_target_speed (_target_transport_speed); + interpolation.set_speed (_transport_speed); + frames_moved = (long) interpolation.interpolate (nframes, 0, 0); } if (process_routes (nframes)) { |