- bool linked() const { return _linked; }
- void set_linked (bool yn);
-
- StreamPanner &streampanner( uint32_t n ) const { assert( n < _streampanners.size() ); return *_streampanners[n]; }
- uint32_t npanners() const { return _streampanners.size(); }
-
- PBD::Signal0<void> Changed; /* panner and/or outputs count changed */
- PBD::Signal0<void> LinkStateChanged;
- PBD::Signal0<void> StateChanged; /* for bypass */
-
- /* only StreamPanner should call these */
-
- void set_position (const PBD::AngularVector&, StreamPanner& orig);
-
- /* old school automation */
-
- int load ();
-
- struct PanControllable : public AutomationControl {
- PanControllable (Session& s, std::string name, Panner& p, Evoral::Parameter param)
- : AutomationControl (s, param,
- boost::shared_ptr<AutomationList>(new AutomationList(param)), name)
- , panner (p)
- { assert(param.type() != NullAutomation); }
-
- AutomationList* alist() { return (AutomationList*)_list.get(); }
- Panner& panner;
-
- void set_value (double);
- double get_value (void) const;
- };
-
- boost::shared_ptr<AutomationControl> pan_control (int id, int chan=0) {
- return automation_control (Evoral::Parameter (PanAutomation, chan, id));
- }
-
- boost::shared_ptr<const AutomationControl> pan_control (int id, int chan=0) const {
- return automation_control (Evoral::Parameter (PanAutomation, chan, id));
- }
-
- static std::string value_as_string (double);
-
- private:
- /* disallow copy construction */
- Panner (Panner const &);
-
- void distribute_no_automation(BufferSet& src, BufferSet& dest, nframes_t nframes, gain_t gain_coeff);
- std::vector<StreamPanner*> _streampanners; ///< one StreamPanner per input
- std::vector<Output> outputs;
- uint32_t current_outs;
- bool _linked;
- bool _bypassed;
- bool _mono;
- LinkDirection _link_direction;
-
- static float current_automation_version_number;