- public:
- StreamPanner (Panner& p, Evoral::Parameter param);
- ~StreamPanner ();
-
- void set_muted (bool yn);
- bool muted() const { return _muted; }
-
- const PBD::AngularVector& get_position() const { return _angles; }
- const PBD::AngularVector& get_effective_position() const { return _effective_angles; }
- void set_position (const PBD::AngularVector&, bool link_call = false);
- void set_diffusion (double);
-
- void distribute (AudioBuffer &, BufferSet &, gain_t, nframes_t);
- void distribute_automated (AudioBuffer &, BufferSet &, nframes_t, nframes_t, nframes_t, pan_t **);
-
- /* the basic StreamPanner API */
-
- /**
- * Pan some input samples to a number of output buffers.
- *
- * @param src Input buffer.
- * @param obufs Output buffers (one per panner output).
- * @param gain_coeff Gain coefficient to apply to output samples.
- * @param nframes Number of frames in the input.
- */
- virtual void do_distribute (AudioBuffer& src, BufferSet& obufs, gain_t gain_coeff, nframes_t nframes) = 0;
- virtual void do_distribute_automated (AudioBuffer& src, BufferSet& obufs,
- nframes_t start, nframes_t end, nframes_t nframes, pan_t** buffers) = 0;
-
- boost::shared_ptr<AutomationControl> pan_control() { return _control; }
-
- PBD::Signal0<void> Changed; /* for position or diffusion */
- PBD::Signal0<void> StateChanged; /* for mute, mono */
-
- int set_state (const XMLNode&, int version);
- virtual XMLNode& state (bool full_state) = 0;
-
- Panner & get_parent() { return parent; }
-
- /* old school automation loading */
- virtual int load (std::istream&, std::string path, uint32_t&) = 0;