namespace ARDOUR {
class Session;
+class Route;
class Panner;
class BufferSet;
class AudioBuffer;
class LIBARDOUR_API PannerShell : public SessionObject
{
public:
- PannerShell (std::string name, Session&, boost::shared_ptr<Pannable>);
+ PannerShell (std::string name, Session&, boost::shared_ptr<Pannable>, bool is_send = false);
virtual ~PannerShell ();
std::string describe_parameter (Evoral::Parameter param);
XMLNode& get_state ();
int set_state (const XMLNode&, int version);
+ PBD::Signal0<void> PannableChanged; /* Pannable changed -- l*/
PBD::Signal0<void> Changed; /* panner and/or outputs count and/or bypass state changed */
boost::shared_ptr<Panner> panner() const { return _panner; }
- boost::shared_ptr<Pannable> pannable() const { return _pannable; }
+ boost::shared_ptr<Pannable> pannable() const { return _panlinked ? _pannable_route : _pannable_internal; }
bool bypassed () const;
void set_bypassed (bool);
+ bool is_send () const { return (_is_send); }
+ bool is_linked_to_route () const { return (_is_send && _panlinked); }
+ /* this function takes the process lock: */
+ void set_linked_to_route (bool);
+
+ std::string current_panner_uri() const { return _current_panner_uri; }
+ std::string user_selected_panner_uri() const { return _user_selected_panner_uri; }
+ std::string panner_gui_uri() const { return _panner_gui_uri; }
+
+ /* this function takes the process lock: */
+ bool select_panner_by_uri (std::string const uri);
+
private:
void distribute_no_automation (BufferSet& src, BufferSet& dest, pframes_t nframes, gain_t gain_coeff);
+ bool set_user_selected_panner_uri (std::string const uri);
+
boost::shared_ptr<Panner> _panner;
- boost::shared_ptr<Pannable> _pannable;
+
+ boost::shared_ptr<Pannable> _pannable_internal;
+ boost::shared_ptr<Pannable> _pannable_route;
+ bool _is_send;
+ bool _panlinked;
bool _bypassed;
+
+ std::string _current_panner_uri;
+ std::string _user_selected_panner_uri;
+ std::string _panner_gui_uri;
+ bool _force_reselect;
};
} // namespace ARDOUR