const framepos_t start_frame = _transport_frame;
const framepos_t end_frame = _transport_frame + floor (nframes * _transport_speed);
-
+
if (_process_graph) {
DEBUG_TRACE(DEBUG::ProcessThreads,"calling graph/process-routes\n");
_process_graph->process_routes (nframes, start_frame, end_frame, declick, need_butler);
case SessionEvent::AutoLoop:
if (play_loop) {
+ /* roll after locate, do not flush, set "with loop"
+ true only if we are seamless looping
+ */
start_locate (ev->target_frame, true, false, Config->get_seamless_loop());
}
remove = false;
del = false;
break;
+ case SessionEvent::AutoLoopDeclick:
+ if (play_loop) {
+ /* Request a declick fade-out and a fade-in; the fade-out will happen
+ at the end of the loop, and the fade-in at the start.
+ */
+ transport_sub_state |= (PendingLoopDeclickOut | PendingLoopDeclickIn);
+ }
+ remove = false;
+ del = false;
+ break;
+
case SessionEvent::Locate:
if (ev->yes_or_no) {
- // cerr << "forced locate to " << ev->target_frame << endl;
+ /* args: do not roll after locate, do flush, not with loop */
locate (ev->target_frame, false, true, false);
} else {
- // cerr << "soft locate to " << ev->target_frame << endl;
+ /* args: do not roll after locate, do flush, not with loop */
start_locate (ev->target_frame, false, true, false);
}
_send_timecode_update = true;
case SessionEvent::LocateRoll:
if (ev->yes_or_no) {
- // cerr << "forced locate to+roll " << ev->target_frame << endl;
+ /* args: roll after locate, do flush, not with loop */
locate (ev->target_frame, true, true, false);
} else {
- // cerr << "soft locate to+roll " << ev->target_frame << endl;
+ /* args: roll after locate, do flush, not with loop */
start_locate (ev->target_frame, true, true, false);
}
_send_timecode_update = true;
case SessionEvent::SetTransportSpeed:
- set_transport_speed (ev->speed, ev->yes_or_no, ev->second_yes_or_no);
+ set_transport_speed (ev->speed, ev->yes_or_no, ev->second_yes_or_no, ev->third_yes_or_no);
break;
case SessionEvent::PunchIn:
break;
case SessionEvent::RangeLocate:
+ /* args: roll after locate, do flush, not with loop */
start_locate (ev->target_frame, true, true, false);
remove = false;
del = false;