From 5c6e8954ed4e186771760b19d72b5d3c795ef4e2 Mon Sep 17 00:00:00 2001 From: Len Ovens Date: Sat, 8 Aug 2020 18:41:03 -0700 Subject: [PATCH] Add pre/post fader to foldback send creation add position param to send creation default all to prefader as first step --- gtk2_ardour/foldback_strip.cc | 7 ++++--- gtk2_ardour/processor_box.cc | 2 +- libs/ardour/ardour/route.h | 2 +- libs/ardour/route.cc | 10 ++++++++-- libs/surfaces/osc/osc.cc | 4 ++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/foldback_strip.cc b/gtk2_ardour/foldback_strip.cc index 56c1cae126..c946ff768c 100644 --- a/gtk2_ardour/foldback_strip.cc +++ b/gtk2_ardour/foldback_strip.cc @@ -416,7 +416,7 @@ FoldbackStrip::init () global_vpacker.set_border_width (1); global_vpacker.set_spacing (2); - // Packing is from top down to the send box. Thje send box + // Packing is from top down to the send box. The send box // needs the most room and takes all left over space // Everything below the send box is packed from the bottom up // the panner is the last thing to pack as it doesn't always show @@ -1599,7 +1599,7 @@ FoldbackStrip::create_selected_sends (bool include_buses) if ((*i)->is_selected() && !(*i)->is_master() && !(*i)->is_monitor()) { boost::shared_ptr rt = boost::dynamic_pointer_cast(*i); if (rt) { - rt->add_foldback_send (_route); + rt->add_foldback_send (_route, false); } } } @@ -1664,7 +1664,8 @@ FoldbackStrip::duplicate_current_fb () if (i->sends_only) { boost::shared_ptr rt (i->r.lock()); boost::shared_ptr old_snd = rt->internal_send_for (old_fb); - rt->add_foldback_send (new_fb); + // XXXX needs false to be replaced with value from duplicated send + rt->add_foldback_send (new_fb, false); if (old_snd) { float old_gain = old_snd->gain_control()->get_value (); boost::shared_ptr new_snd = rt->internal_send_for (new_fb); diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 25b58b7f25..ff0885654b 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -2821,7 +2821,7 @@ ProcessorBox::choose_aux (boost::weak_ptr wr) } if (target->is_foldbackbus ()) { - _route->add_foldback_send (target); + _route->add_foldback_send (target, false); } else { _session->add_internal_send (target, _placement, _route); } diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index e027990452..7429203587 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -417,7 +417,7 @@ public: PBD::Signal1 SelectedChanged; int add_aux_send (boost::shared_ptr, boost::shared_ptr); - int add_foldback_send (boost::shared_ptr); + int add_foldback_send (boost::shared_ptr, bool post_fader); void remove_aux_or_listen (boost::shared_ptr); /** diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index dd07ddc0b9..fe24a5a120 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -3384,10 +3384,15 @@ Route::add_aux_send (boost::shared_ptr route, boost::shared_ptr route) +Route::add_foldback_send (boost::shared_ptr route, bool post_fader) { assert (route != _session.monitor_out ()); - boost::shared_ptr before = before_processor_for_placement (PreFader); + boost::shared_ptr before; + if (post_fader) { + before = before_processor_for_placement (PostFader); + } else { + before = before_processor_for_placement (PreFader); + } { Glib::Threads::RWLock::ReaderLock rm (_processor_lock); @@ -3413,6 +3418,7 @@ Route::add_foldback_send (boost::shared_ptr route) } listener->panner_shell()->set_linked_to_route (false); + listener->set_pre_fader (!post_fader); add_processor (listener, before); } catch (failed_constructor& err) { diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 8212a25121..7f1606079a 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -4323,7 +4323,7 @@ OSC::sel_new_personal_send (char *foldback, lo_message msg) bool s_only = true; if (!rt->feeds (lsn_rt, &s_only)) { // create send - rt->add_foldback_send (lsn_rt); + rt->add_foldback_send (lsn_rt, false); //boost::shared_ptr snd = rt->internal_send_for (aux); session->dirty (); return 0; @@ -6608,7 +6608,7 @@ OSC::cue_new_send (string rt_name, lo_message msg) bool s_only = true; if (!rt_send->feeds (aux, &s_only)) { // create send - rt_send->add_foldback_send (aux); + rt_send->add_foldback_send (aux, false); boost::shared_ptr snd = rt_send->internal_send_for (aux); session->dirty (); return 0;