19 #ifndef _ardour_plugin_insert_base_h_
20 #define _ardour_plugin_insert_base_h_
35 class ReadOnlyControl;
45 virtual std::shared_ptr<Plugin>
plugin (uint32_t num = 0)
const = 0;
61 virtual std::shared_ptr<ReadOnlyControl>
control_output (uint32_t)
const = 0;
82 std::shared_ptr<AutomationList> list = std::shared_ptr<AutomationList> ());
100 std::shared_ptr<AutomationList> list = std::shared_ptr<AutomationList> ());
126 Match () : method (Impossible), plugins (0), strict_io (false), custom_cfg (false) {}
129 : method (m), plugins (p), hide (h), strict_io (strict), custom_cfg (custom) {}
std::string get_user_string() const
XMLNode & get_state() const
virtual void actually_set_value(double val, PBD::Controllable::GroupControlDisposition group_override)
void catch_up_with_external_value(double val)
PluginControl(Session &s, PlugInsertBase *p, const Evoral::Parameter ¶m, const ParameterDescriptor &desc, std::shared_ptr< AutomationList > list=std::shared_ptr< AutomationList >())
virtual double get_value(void) const
virtual bool can_reset_all_parameters()=0
virtual std::shared_ptr< ReadOnlyControl > control_output(uint32_t) const =0
virtual UIElements ui_elements() const =0
virtual PluginType type() const =0
virtual bool reset_parameters_to_default()=0
virtual ChanMapping output_map(uint32_t num) const =0
virtual std::string describe_parameter(Evoral::Parameter param)=0
void set_control_ids(const XMLNode &, int version, bool by_value=false)
virtual void clear_stats()=0
bool parse_plugin_type(XMLNode const &, PluginType &, std::string &) const
virtual ChanMapping input_map(uint32_t num) const =0
virtual bool get_stats(PBD::microseconds_t &, PBD::microseconds_t &, double &, double &) const =0
virtual uint32_t get_count() const =0
static std::shared_ptr< Plugin > plugin_factory(std::shared_ptr< Plugin >)
virtual bool provides_stats() const =0
virtual bool write_immediate_event(Evoral::EventType event_type, size_t size, const uint8_t *buf)=0
virtual bool load_preset(Plugin::PresetRecord)=0
@ Delegate
we are delegating to the plugin, and it can handle it
@ ExactMatch
our insert's inputs are the same as the plugin's
@ Hide
we ‘hide’ some of the plugin's inputs by feeding them silence
@ Replicate
we have multiple instances of the plugin
@ Split
we copy one of our insert's inputs to multiple plugin inputs
@ NoInputs
plugin has no inputs, so anything goes
void preset_load_set_value(uint32_t, float)
virtual ~PlugInsertBase()
std::shared_ptr< Plugin > find_and_load_plugin(Session &, XMLNode const &, PluginType &, std::string const &, bool &any_vst)
virtual std::shared_ptr< Plugin > plugin(uint32_t num=0) const =0
std::ostream & operator<<(std::ostream &o, const ARDOUR::PlugInsertBase::Match &m)
Match(MatchingMethod m, int32_t p, bool strict=false, bool custom=false, ChanCount h=ChanCount())
ChanCount hide
number of channels to hide
bool strict_io
force in == out
bool custom_cfg
custom config (if not strict)
int32_t plugins
number of copies of the plugin that we need
MatchingMethod method
method to employ
XMLNode & get_state() const
virtual void actually_set_value(double value, PBD::Controllable::GroupControlDisposition)
PluginPropertyControl(Session &s, PlugInsertBase *p, const Evoral::Parameter ¶m, const ParameterDescriptor &desc, std::shared_ptr< AutomationList > list=std::shared_ptr< AutomationList >())
virtual double get_value(void) const