diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/panner.h | 4 | ||||
-rw-r--r-- | libs/panners/vbap/vbap.cc | 10 | ||||
-rw-r--r-- | libs/panners/vbap/vbap.h | 1 | ||||
-rw-r--r-- | libs/panners/vbap/vbap_speakers.cc | 8 | ||||
-rw-r--r-- | libs/panners/vbap/vbap_speakers.h | 1 |
5 files changed, 20 insertions, 4 deletions
diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index 75f9ea598c..7ebfe5ee03 100644 --- a/libs/ardour/ardour/panner.h +++ b/libs/ardour/ardour/panner.h @@ -78,8 +78,10 @@ class Panner : public PBD::Stateful, public PBD::ScopedConnectionList virtual double width () const { return 0.0; } virtual double elevation () const { return 0.0; } - virtual void reset() {} + virtual PBD::AngularVector signal_position (uint32_t) const { return PBD::AngularVector(); } + virtual void reset() {} + virtual bool bypassed() const { return _bypassed; } virtual void set_bypassed (bool yn); diff --git a/libs/panners/vbap/vbap.cc b/libs/panners/vbap/vbap.cc index e563952efd..c76a514eaa 100644 --- a/libs/panners/vbap/vbap.cc +++ b/libs/panners/vbap/vbap.cc @@ -331,3 +331,13 @@ VBAPanner::value_as_string (boost::shared_ptr<AutomationControl> ac) const return _pannable->value_as_string (ac); } } + +AngularVector +VBAPanner::signal_position (uint32_t n) const +{ + if (n < _signals.size()) { + return _signals[n]->direction; + } + + return AngularVector(); +} diff --git a/libs/panners/vbap/vbap.h b/libs/panners/vbap/vbap.h index 937199194f..183554132c 100644 --- a/libs/panners/vbap/vbap.h +++ b/libs/panners/vbap/vbap.h @@ -59,6 +59,7 @@ public: XMLNode& get_state (); int set_state (const XMLNode&, int version); + PBD::AngularVector signal_position (uint32_t n) const; private: struct Signal { diff --git a/libs/panners/vbap/vbap_speakers.cc b/libs/panners/vbap/vbap_speakers.cc index 506ad4a25b..bf87791b60 100644 --- a/libs/panners/vbap/vbap_speakers.cc +++ b/libs/panners/vbap/vbap_speakers.cc @@ -45,9 +45,9 @@ using namespace std; VBAPSpeakers::VBAPSpeakers (boost::shared_ptr<Speakers> s) : _dimension (2) - , _speakers (s->speakers()) + , parent (s) { - // s.Changed.connect_same_thread (speaker_connection, boost::bind (&VBAPSpeakers::update, this)); + parent->Changed.connect_same_thread (speaker_connection, boost::bind (&VBAPSpeakers::update, this)); update (); } @@ -59,7 +59,9 @@ void VBAPSpeakers::update () { int dim = 2; - + + _speakers = parent->speakers(); + for (vector<Speaker>::const_iterator i = _speakers.begin(); i != _speakers.end(); ++i) { if ((*i).angles().ele != 0.0) { cerr << "\n\n\nSPEAKER " << (*i).id << " has ele = " << (*i).angles().ele << "\n\n\n\n"; diff --git a/libs/panners/vbap/vbap_speakers.h b/libs/panners/vbap/vbap_speakers.h index 3bd298ba3d..85cd75d085 100644 --- a/libs/panners/vbap/vbap_speakers.h +++ b/libs/panners/vbap/vbap_speakers.h @@ -51,6 +51,7 @@ public: private: static const double MIN_VOL_P_SIDE_LGTH = 0.01; int _dimension; + boost::shared_ptr<Speakers> parent; std::vector<Speaker> _speakers; PBD::ScopedConnection speaker_connection; |