summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/route.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-01-13 16:32:24 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2016-01-18 12:11:08 -0500
commit1948b50a68381d7ffb14a88ffcf6da2c910bc012 (patch)
treeb8e455ad1d4290ff913a2fee839708773c77ec2a /libs/ardour/ardour/route.h
parent55094b723774086d0f54d688b1ca73a4df82b93e (diff)
working version of new gain control design
Diffstat (limited to 'libs/ardour/ardour/route.h')
-rw-r--r--libs/ardour/ardour/route.h37
1 files changed, 30 insertions, 7 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index 9a0cf9ee0b..a57610ab98 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -41,6 +41,7 @@
#include "pbd/destructible.h"
#include "ardour/ardour.h"
+#include "ardour/gain_control.h"
#include "ardour/instrument_info.h"
#include "ardour/io.h"
#include "ardour/libardour_visibility.h"
@@ -145,7 +146,6 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
void inc_gain (gain_t delta, void *src);
void set_trim (gain_t val, void *src);
- void inc_trim (gain_t delta, void *src);
void set_mute_points (MuteMaster::MutePoint);
MuteMaster::MutePoint mute_points () const;
@@ -381,7 +381,9 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
void clear_fed_by ();
bool add_fed_by (boost::shared_ptr<Route>, bool sends_only);
- /* Controls (not all directly owned by the Route */
+ /* Controls (not all directly owned by the Route) */
+
+ boost::shared_ptr<AutomationControl> get_control (const Evoral::Parameter& param);
class RouteAutomationControl : public AutomationControl {
public:
@@ -393,7 +395,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
void set_value (double val, PBD::Controllable::GroupControlDisposition group_override) {
boost::shared_ptr<Route> r = _route.lock();
if (r) {
- r->set_control (*this, val, group_override);
+ r->set_control ((AutomationType) parameter().type(), val, group_override);
}
}
@@ -407,7 +409,28 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
boost::weak_ptr<Route> _route;
};
- boost::shared_ptr<AutomationControl> get_control (const Evoral::Parameter& param);
+ class GainControllable : public GainControl {
+ public:
+ GainControllable (Session& session,
+ AutomationType type,
+ boost::shared_ptr<Route> route);
+
+ void set_value (double val, PBD::Controllable::GroupControlDisposition group_override) {
+ boost::shared_ptr<Route> r = _route.lock();
+ if (r) {
+ r->set_control ((AutomationType) parameter().type(), val, group_override);
+ }
+ }
+
+ protected:
+ friend class Route;
+
+ void route_set_value (double val) {
+ GainControl::set_value (val, Controllable::NoGroup);
+ }
+
+ boost::weak_ptr<Route> _route;
+ };
class SoloControllable : public RouteAutomationControl {
public:
@@ -442,7 +465,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
uint32_t _current_phase;
};
- void set_control (RouteAutomationControl&, double val, PBD::Controllable::GroupControlDisposition group_override);
+ void set_control (AutomationType, double val, PBD::Controllable::GroupControlDisposition group_override);
boost::shared_ptr<SoloControllable> solo_control() const {
return _solo_control;
@@ -675,9 +698,9 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
virtual void maybe_declick (BufferSet&, framecnt_t, int);
- boost::shared_ptr<AutomationControl> _gain_control;
+ boost::shared_ptr<GainControllable> _gain_control;
boost::shared_ptr<Amp> _amp;
- boost::shared_ptr<AutomationControl> _trim_control;
+ boost::shared_ptr<GainControllable> _trim_control;
boost::shared_ptr<Amp> _trim;
boost::shared_ptr<PeakMeter> _meter;
boost::shared_ptr<DelayLine> _delayline;