diff options
author | Len Ovens <len@ovenwerks.net> | 2015-12-09 09:21:36 -0800 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2015-12-09 09:21:36 -0800 |
commit | e18ea188f45be0c30497e175907799daeed02cd4 (patch) | |
tree | 4dbcedb8e9422ff862f42ef7fc5e7407a4dd6a47 /libs/ardour/route.cc | |
parent | ba3936391a35c38772d4de92e9b12ca4e470acbb (diff) |
Fix Mackie control Gain while in flip mode (vpot control of gain)
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r-- | libs/ardour/route.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 53630d4e9c..6ee55fc26e 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -136,17 +136,14 @@ Route::init () _solo_control.reset (new SoloControllable (X_("solo"), shared_from_this ())); _mute_control.reset (new MuteControllable (X_("mute"), shared_from_this ())); _phase_control.reset (new PhaseControllable (X_("phase"), shared_from_this ())); - _group_gain_control.reset (new GroupGainControllable (X_("groupgain"), shared_from_this ())); _solo_control->set_flags (Controllable::Flag (_solo_control->flags() | Controllable::Toggle)); _mute_control->set_flags (Controllable::Flag (_mute_control->flags() | Controllable::Toggle)); _phase_control->set_flags (Controllable::Flag (_phase_control->flags() | Controllable::Toggle)); - _group_gain_control->set_flags (Controllable::Flag (_group_gain_control->flags() | Controllable::GainLike)); add_control (_solo_control); add_control (_mute_control); add_control (_phase_control); - add_control (_group_gain_control); /* panning */ @@ -177,6 +174,11 @@ Route::init () _amp.reset (new Amp (_session)); add_processor (_amp, PostFader); + // amp should exist before amp controls + _group_gain_control.reset (new GroupGainControllable (X_("groupgain"), shared_from_this ())); + _group_gain_control->set_flags (Controllable::Flag (_group_gain_control->flags() | Controllable::GainLike)); + add_control (_group_gain_control); + /* and input trim */ _trim.reset (new Amp (_session, "trim")); _trim->set_display_to_user (false); @@ -3998,6 +4000,13 @@ Route::GroupGainControllable::set_value (double val) r->set_gain ((gain_t)normalized_position, this); } +double +Route::GroupGainControllable::get_value () const +{ + boost::shared_ptr<Route> r = _route.lock (); + return 2.0 * r->gain_control()->internal_to_interface (r->gain_control()->get_value ()); +} + Route::PhaseControllable::PhaseControllable (std::string name, boost::shared_ptr<Route> r) : AutomationControl (r->session(), Evoral::Parameter (PhaseAutomation), |