From a072228de5e2430bab92a3a018f5d0d5ae278d26 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 1 Nov 2019 14:04:16 -0600 Subject: remove seamless looping as an option (it's now the only kind of looping we support) --- gtk2_ardour/ardour_ui.cc | 27 +++--------- gtk2_ardour/rc_option_editor.cc | 13 ------ libs/ardour/session.cc | 3 +- libs/ardour/session_process.cc | 5 +-- libs/ardour/session_transport.cc | 68 ++++++++++-------------------- libs/surfaces/control_protocol/basic_ui.cc | 5 +-- 6 files changed, 33 insertions(+), 88 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index ecc76e6dfb..03b5fa79f7 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1754,16 +1754,8 @@ ARDOUR_UI::transport_roll () */ if (!Config->get_loop_is_mode()) { - /* XXX it is not possible to just leave seamless loop and keep - playing at present (nov 4th 2009) - */ - if (!Config->get_seamless_loop()) { - /* stop loop playback and stop rolling */ - _session->request_play_loop (false, true); - } else if (rolling) { - /* stop loop playback but keep rolling */ - _session->request_play_loop (false, false); - } + /* stop loop playback but keep transport state */ + _session->request_play_loop (false, false); } } else if (_session->get_play_range () ) { @@ -1819,16 +1811,11 @@ ARDOUR_UI::toggle_roll (bool with_abort, bool roll_out_of_bounded_mode) _session->request_play_loop (false, affect_transport); } else { - if (Config->get_seamless_loop()) { - /* the disk buffers contain copies of the loop - we can't - just keep playing, so stop the transport. the user - can restart as they wish. - */ - affect_transport = true; - } else { - /* disk buffers are normal, so we can keep playing */ - affect_transport = false; - } + /* the disk buffers contain copies of the loop - we can't + just keep playing, so stop the transport. the user + can restart as they wish. + */ + affect_transport = true; _session->request_play_loop (false, affect_transport); } } else if (_session->get_play_range ()) { diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index c7e0ad1964..2a8ddf2df0 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -3178,19 +3178,6 @@ RCOptionEditor::RCOptionEditor () "When disabled the loop button starts playing the loop, but stop then cancels loop playback"))); add_option (_("Transport"), bo); - bo = new BoolOption ( - "seamless-loop", - _("Do seamless looping (not possible when slaved to MTC, LTC etc)"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_seamless_loop), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_seamless_loop) - ); - Gtkmm2ext::UI::instance()->set_tip (bo->tip_widget(), - string_compose (_("When enabled this will loop by reading ahead and wrapping around at the loop point, " - "preventing any need to do a transport locate at the end of the loop\n\n" - "When disabled looping is done by locating back to the start of the loop when %1 reaches the end " - "which will often cause a small click or delay"), PROGRAM_NAME)); - add_option (_("Transport"), bo); - add_option (_("Transport"), new OptionEditorHeading (_("Dropout (xrun) Handling"))); bo = new BoolOption ( "stop-recording-on-xrun", diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index b15013b836..87901be800 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -206,7 +206,6 @@ Session::Session (AudioEngine &eng, , _listen_cnt (0) , _solo_isolated_cnt (0) , _writable (false) - , _was_seamless (Config->get_seamless_loop ()) , _under_nsm_control (false) , _xrun_count (0) , transport_master_tracking_state (Stopped) @@ -1559,7 +1558,7 @@ Session::set_auto_loop_location (Location* location) location->set_auto_loop (true, this); - if (Config->get_loop_is_mode() && play_loop && Config->get_seamless_loop()) { + if (Config->get_loop_is_mode() && play_loop) { // set all tracks to use internal looping boost::shared_ptr rl = routes.reader (); for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) { diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index c5d286968d..da7df17fa7 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -851,10 +851,9 @@ Session::process_event (SessionEvent* ev) case SessionEvent::AutoLoop: if (play_loop) { - /* roll after locate, do not flush, set "with loop" - true only if we are seamless looping + /* roll after locate, do not flush, set "for loop end" true */ - TFSM_LOCATE (ev->target_sample, true, false, Config->get_seamless_loop(), false); + TFSM_LOCATE (ev->target_sample, true, false, true, false); } remove = false; del = false; diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 272f0b31fb..30590610dc 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -340,13 +340,11 @@ Session::do_locate (samplepos_t target_sample, bool with_roll, bool with_flush, if (!Config->get_loop_is_mode()) { set_play_loop (false, _transport_speed); } else { - if (Config->get_seamless_loop()) { - /* this will make the non_realtime_locate() in the butler - which then causes seek() in tracks actually do the right - thing. - */ - set_track_loop (false); - } + /* this will make the non_realtime_locate() in the butler + which then causes seek() in tracks actually do the right + thing. + */ + set_track_loop (false); } } else if (_transport_sample == al->start()) { @@ -502,10 +500,8 @@ Session::set_transport_speed (double speed, samplepos_t destination_sample, bool if (location != 0) { if (_transport_sample != location->start()) { - if (Config->get_seamless_loop()) { - /* force tracks to do their thing */ - set_track_loop (true); - } + /* force tracks to do their thing */ + set_track_loop (true); /* jump to start and then roll from there */ @@ -864,9 +860,9 @@ Session::set_play_loop (bool yn, double speed) return; } - if (yn && Config->get_seamless_loop() && synced_to_engine()) { + if (yn && synced_to_engine()) { warning << string_compose ( - _("Seamless looping cannot be supported while %1 is using JACK transport.\n" + _("Looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options"), PROGRAM_NAME) << endmsg; return; @@ -881,18 +877,13 @@ Session::set_play_loop (bool yn, double speed) unset_play_range (); - if (Config->get_seamless_loop()) { - if (!Config->get_loop_is_mode()) { - /* set all tracks to use internal looping */ - set_track_loop (true); - } else { - /* we will do this in the locate to the start OR when we hit the end - * of the loop for the first time - */ - } + if (!Config->get_loop_is_mode()) { + /* set all tracks to use internal looping */ + set_track_loop (true); } else { - /* set all tracks to NOT use internal looping */ - set_track_loop (false); + /* we will do this in the locate to the start OR when we hit the end + * of the loop for the first time + */ } /* Put the delick and loop events in into the event list. The declick event will @@ -1129,6 +1120,7 @@ Session::request_play_loop (bool yn, bool change_transport_roll) queue_event (ev); if (yn) { + if (!change_transport_roll) { if (!transport_rolling()) { /* we're not changing transport state, but we do want @@ -1139,7 +1131,7 @@ Session::request_play_loop (bool yn, bool change_transport_roll) } } } else { - if (!change_transport_roll && Config->get_seamless_loop() && transport_rolling()) { + if (!change_transport_roll && transport_rolling()) { // request an immediate locate to refresh the tracks // after disabling looping request_locate (_transport_sample-1, false); @@ -1237,7 +1229,7 @@ Session::butler_transport_work () if (ptw & PostTransportLocate) { - if (get_play_loop() && !Config->get_seamless_loop()) { + if (get_play_loop()) { DEBUG_TRACE (DEBUG::Butler, "flush loop recording fragment to disk\n"); @@ -1383,8 +1375,7 @@ Session::non_realtime_locate () */ set_track_loop (false); - } else if (loc && Config->get_seamless_loop() && - ((loc->start() <= _transport_sample) || (loc->end() > _transport_sample))) { + } else if (loc && ((loc->start() <= _transport_sample) || (loc->end() > _transport_sample))) { /* jumping to start of loop. This might have been done before but it is * idempotent and cheap. Doing it here ensures that when we start playback @@ -1709,13 +1700,9 @@ Session::unset_play_loop () play_loop = false; clear_events (SessionEvent::AutoLoop); set_track_loop (false); - - - if (Config->get_seamless_loop()) { - /* likely need to flush track buffers: this will locate us to wherever we are */ - add_post_transport_work (PostTransportLocate); - TFSM_EVENT (TransportFSM::ButlerRequired); - } + /* likely need to flush track buffers: this will locate us to wherever we are */ + add_post_transport_work (PostTransportLocate); + TFSM_EVENT (TransportFSM::ButlerRequired); TransportStateChange (); /* EMIT SIGNAL */ } } @@ -1999,17 +1986,6 @@ Session::sync_source_changed (SyncSource type, samplepos_t pos, pframes_t cycle_ boost::shared_ptr master = TransportMasterManager::instance().current(); - /* save value of seamless from before the switch */ - _was_seamless = Config->get_seamless_loop (); - - if (type == Engine) { - /* JACK cannot support seamless looping at present */ - Config->set_seamless_loop (false); - } else { - /* reset to whatever the value was before we last switched slaves */ - Config->set_seamless_loop (_was_seamless); - } - if (master->can_loop()) { request_play_loop (false); } else if (master->has_loop()) { diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index 679e9893cb..a6bf65f55b 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -238,10 +238,7 @@ BasicUI::transport_play (bool from_last_start) /* XXX it is not possible to just leave seamless loop and keep playing at present (nov 4th 2009) */ - if (!Config->get_seamless_loop()) { - /* stop loop playback and stop rolling */ - session->request_play_loop (false, true); - } else if (rolling) { + if (rolling) { /* stop loop playback but keep rolling */ session->request_play_loop (false, false); } -- cgit v1.2.3