ardour
Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
ARDOUR::Plugin Class Referenceabstract

#include <plugin.h>

Inheritance diagram for ARDOUR::Plugin:
PBD::StatefulDestructible ARDOUR::Latent PBD::Stateful PBD::Destructible ARDOUR::AUPlugin ARDOUR::LadspaPlugin ARDOUR::LV2Plugin ARDOUR::VSTPlugin ARDOUR::LXVSTPlugin ARDOUR::WindowsVSTPlugin

Classes

struct  PresetRecord
 

Public Types

typedef std::map< uint32_t,
ParameterDescriptor
PropertyDescriptors
 

Public Member Functions

 Plugin (ARDOUR::AudioEngine &, ARDOUR::Session &)
 
 Plugin (const Plugin &)
 
virtual ~Plugin ()
 
XMLNodeget_state ()
 
virtual int set_state (const XMLNode &, int version)
 
virtual void set_insert_id (PBD::ID id)
 
virtual std::string unique_id () const =0
 
virtual const char * label () const =0
 
virtual const char * name () const =0
 
virtual const char * maker () const =0
 
virtual uint32_t parameter_count () const =0
 
virtual float default_value (uint32_t port)=0
 
virtual float get_parameter (uint32_t which) const =0
 
virtual std::string get_docs () const
 
virtual std::string get_parameter_docs (uint32_t) const
 
virtual int get_parameter_descriptor (uint32_t which, ParameterDescriptor &) const =0
 
virtual uint32_t nth_parameter (uint32_t which, bool &ok) const =0
 
virtual void activate ()=0
 
virtual void deactivate ()=0
 
virtual void flush ()
 
virtual int set_block_size (pframes_t nframes)=0
 
virtual int connect_and_run (BufferSet &bufs, ChanMapping in, ChanMapping out, pframes_t nframes, framecnt_t offset)
 
virtual std::set
< Evoral::Parameter
automatable () const =0
 
virtual std::string describe_parameter (Evoral::Parameter)=0
 
virtual std::string state_node_name () const =0
 
virtual void print_parameter (uint32_t, char *, uint32_t len) const =0
 
virtual bool parameter_is_audio (uint32_t) const =0
 
virtual bool parameter_is_control (uint32_t) const =0
 
virtual bool parameter_is_input (uint32_t) const =0
 
virtual bool parameter_is_output (uint32_t) const =0
 
virtual boost::shared_ptr
< ScalePoints
get_scale_points (uint32_t) const
 
void realtime_handle_transport_stopped ()
 
void realtime_locate ()
 
void monitoring_changed ()
 
PresetRecord save_preset (std::string)
 
void remove_preset (std::string)
 
virtual bool load_preset (PresetRecord)
 
void clear_preset ()
 
const PresetRecordpreset_by_label (const std::string &)
 
const PresetRecordpreset_by_uri (const std::string &)
 
std::vector< PresetRecordget_presets ()
 
virtual bool presets_are_MIDI_programs () const
 
virtual bool current_preset_uses_general_midi () const
 
PresetRecord last_preset () const
 
bool parameter_changed_since_last_preset () const
 
virtual int first_user_preset_index () const
 
virtual bool has_editor () const =0
 
virtual bool configure_io (ChanCount, ChanCount)
 
virtual bool can_support_io_configuration (const ChanCount &, ChanCount &)
 
virtual ChanCount output_streams () const
 
virtual ChanCount input_streams () const
 
PluginInfoPtr get_info () const
 
virtual void set_info (const PluginInfoPtr inf)
 
ARDOUR::AudioEngineengine () const
 
ARDOUR::Sessionsession () const
 
void set_cycles (uint32_t c)
 
cycles_t cycles () const
 
virtual const PropertyDescriptorsget_supported_properties () const
 
virtual const ParameterDescriptorget_property_descriptor (uint32_t id) const
 
virtual void set_property (uint32_t key, const Variant &value)
 
virtual void announce_property_values ()
 
- Public Member Functions inherited from PBD::Stateful
 Stateful ()
 
virtual ~Stateful ()
 
virtual bool apply_changes (PropertyBase const &)
 
PropertyChange apply_changes (PropertyList const &)
 
const OwnedPropertyListproperties () const
 
void add_property (PropertyBase &s)
 
void add_extra_xml (XMLNode &)
 
XMLNodeextra_xml (const std::string &str, bool add_if_missing=false)
 
void save_extra_xml (const XMLNode &)
 
const PBD::IDid () const
 
bool set_id (const XMLNode &)
 
void set_id (const std::string &)
 
void reset_id ()
 
void clear_changes ()
 
virtual void clear_owned_changes ()
 
PropertyListget_changes_as_properties (Command *) const
 
virtual void rdiff (std::vector< Command * > &) const
 
bool changed () const
 
virtual PropertyListproperty_factory (const XMLNode &) const
 
virtual void suspend_property_changes ()
 
virtual void resume_property_changes ()
 
bool property_changes_suspended () const
 
- Public Member Functions inherited from PBD::Destructible
 Destructible ()
 
virtual ~Destructible ()
 
void drop_references ()
 
- Public Member Functions inherited from ARDOUR::Latent
 Latent ()
 
virtual ~Latent ()
 
virtual framecnt_t signal_latency () const =0
 
framecnt_t user_latency () const
 
framecnt_t effective_latency () const
 
virtual void set_user_latency (framecnt_t val)
 

Public Attributes

PBD::Signal0< void > PresetAdded
 
PBD::Signal0< void > PresetRemoved
 
PBD::Signal0< void > PresetLoaded
 
PBD::Signal2< void, uint32_t,
float > 
ParameterChanged
 
PBD::Signal2< void, uint32_t,
Variant
PropertyChanged
 
PBD::Signal1< void, uint32_t > StartTouch
 
PBD::Signal1< void, uint32_t > EndTouch
 
- Public Attributes inherited from PBD::Stateful
PBD::Signal1< void, const
PropertyChange & > 
PropertyChanged
 
- Public Attributes inherited from PBD::Destructible
PBD::Signal0< void > Destroyed
 
PBD::Signal0< void > DropReferences
 

Protected Member Functions

virtual void set_parameter (uint32_t which, float val)
 
virtual std::string do_save_preset (std::string)=0
 
virtual void do_remove_preset (std::string)=0
 
- Protected Member Functions inherited from PBD::Stateful
void add_instant_xml (XMLNode &, const std::string &directory_path)
 
XMLNodeinstant_xml (const std::string &str, const std::string &directory_path)
 
void add_properties (XMLNode &)
 
PropertyChange set_values (XMLNode const &)
 
virtual void post_set (const PropertyChange &)
 
virtual void send_change (const PropertyChange &)
 
virtual void mid_thaw (const PropertyChange &)
 

Protected Attributes

ARDOUR::AudioEngine_engine
 
ARDOUR::Session_session
 
PluginInfoPtr _info
 
uint32_t _cycles
 
std::map< std::string,
PresetRecord
_presets
 
- Protected Attributes inherited from PBD::Stateful
XMLNode_extra_xml
 
XMLNode_instant_xml
 
PBD::PropertyChange _pending_changed
 
Glib::Threads::Mutex _lock
 
std::string _xml_node_name
 name of node to use for this object in XML More...
 
OwnedPropertyList_properties
 
- Protected Attributes inherited from ARDOUR::Latent
framecnt_t _user_latency
 

Private Member Functions

virtual void find_presets ()=0
 
virtual void add_state (XMLNode *) const =0
 
void resolve_midi ()
 

Private Attributes

bool _have_presets
 
MidiStateTracker _tracker
 
BufferSet _pending_stop_events
 
bool _have_pending_stop_events
 
PresetRecord _last_preset
 
bool _parameter_changed_since_last_preset
 

Friends

class PluginInsert
 

Additional Inherited Members

- Static Public Attributes inherited from PBD::Stateful
static int current_state_version = 0
 
static int loading_state_version = 0
 

Detailed Description

Definition at line 92 of file plugin.h.

Member Typedef Documentation

Definition at line 234 of file plugin.h.

Constructor & Destructor Documentation

Plugin::Plugin ( ARDOUR::AudioEngine e,
ARDOUR::Session s 
)

Definition at line 86 of file plugin.cc.

Plugin::Plugin ( const Plugin other)

Definition at line 97 of file plugin.cc.

Plugin::~Plugin ( )
virtual

Definition at line 111 of file plugin.cc.

Member Function Documentation

virtual void ARDOUR::Plugin::activate ( )
pure virtual
virtual void ARDOUR::Plugin::add_state ( XMLNode ) const
privatepure virtual

Add state to an existing XMLNode

Implemented in ARDOUR::LV2Plugin, ARDOUR::AUPlugin, ARDOUR::LadspaPlugin, and ARDOUR::VSTPlugin.

virtual void ARDOUR::Plugin::announce_property_values ( )
inlinevirtual

Emit PropertyChanged for all current property values.

Reimplemented in ARDOUR::LV2Plugin.

Definition at line 264 of file plugin.h.

virtual std::set<Evoral::Parameter> ARDOUR::Plugin::automatable ( ) const
pure virtual
virtual bool ARDOUR::Plugin::can_support_io_configuration ( const ChanCount ,
ChanCount  
)
inlinevirtual

Reimplemented in ARDOUR::AUPlugin.

Definition at line 221 of file plugin.h.

void Plugin::clear_preset ( )

Definition at line 350 of file plugin.cc.

virtual bool ARDOUR::Plugin::configure_io ( ChanCount  ,
ChanCount   
)
inlinevirtual

Reimplemented in ARDOUR::AUPlugin.

Definition at line 216 of file plugin.h.

int Plugin::connect_and_run ( BufferSet bufs,
ChanMapping  in,
ChanMapping  out,
pframes_t  nframes,
framecnt_t  offset 
)
virtual

Reimplemented in ARDOUR::LV2Plugin, ARDOUR::LadspaPlugin, ARDOUR::AUPlugin, and ARDOUR::VSTPlugin.

Definition at line 259 of file plugin.cc.

virtual bool ARDOUR::Plugin::current_preset_uses_general_midi ( ) const
inlinevirtual
Returns
true if this plugin is General MIDI compliant, false otherwise.

It is important to note that it is is almost impossible for a host (e.g. Ardour) to determine this for just about any plugin API known as of June 2012

Definition at line 187 of file plugin.h.

cycles_t ARDOUR::Plugin::cycles ( ) const
inline

Definition at line 232 of file plugin.h.

virtual void ARDOUR::Plugin::deactivate ( )
pure virtual
virtual float ARDOUR::Plugin::default_value ( uint32_t  port)
pure virtual
virtual std::string ARDOUR::Plugin::describe_parameter ( Evoral::Parameter  )
pure virtual
virtual void ARDOUR::Plugin::do_remove_preset ( std::string  )
protectedpure virtual

Do the actual removal of a preset of the provided name

Implemented in ARDOUR::LV2Plugin, ARDOUR::AUPlugin, ARDOUR::LadspaPlugin, and ARDOUR::VSTPlugin.

virtual std::string ARDOUR::Plugin::do_save_preset ( std::string  )
protectedpure virtual

Do the actual saving of the current plugin settings to a preset of the provided name. Should return a URI on success, or an empty string on failure.

Implemented in ARDOUR::LV2Plugin, ARDOUR::AUPlugin, ARDOUR::LadspaPlugin, and ARDOUR::VSTPlugin.

ARDOUR::AudioEngine& ARDOUR::Plugin::engine ( ) const
inline

Definition at line 228 of file plugin.h.

virtual void ARDOUR::Plugin::find_presets ( )
privatepure virtual

Fill _presets with our presets

Implemented in ARDOUR::LV2Plugin, ARDOUR::AUPlugin, ARDOUR::LadspaPlugin, and ARDOUR::VSTPlugin.

virtual int ARDOUR::Plugin::first_user_preset_index ( ) const
inlinevirtual

Reimplemented in ARDOUR::VSTPlugin.

Definition at line 200 of file plugin.h.

virtual void ARDOUR::Plugin::flush ( )
inlinevirtual

Reimplemented in ARDOUR::AUPlugin.

Definition at line 118 of file plugin.h.

virtual std::string ARDOUR::Plugin::get_docs ( ) const
inlinevirtual

Reimplemented in ARDOUR::LV2Plugin.

Definition at line 111 of file plugin.h.

PluginInfoPtr ARDOUR::Plugin::get_info ( ) const
inline

Definition at line 225 of file plugin.h.

virtual float ARDOUR::Plugin::get_parameter ( uint32_t  which) const
pure virtual
virtual int ARDOUR::Plugin::get_parameter_descriptor ( uint32_t  which,
ParameterDescriptor  
) const
pure virtual
virtual std::string ARDOUR::Plugin::get_parameter_docs ( uint32_t  ) const
inlinevirtual

Reimplemented in ARDOUR::LV2Plugin.

Definition at line 112 of file plugin.h.

vector< Plugin::PresetRecord > Plugin::get_presets ( )

Definition at line 313 of file plugin.cc.

virtual const ParameterDescriptor& ARDOUR::Plugin::get_property_descriptor ( uint32_t  id) const
inlinevirtual

Reimplemented in ARDOUR::LV2Plugin.

Definition at line 249 of file plugin.h.

virtual boost::shared_ptr<ScalePoints> ARDOUR::Plugin::get_scale_points ( uint32_t  ) const
inlinevirtual

Reimplemented in ARDOUR::LV2Plugin, and ARDOUR::LadspaPlugin.

Definition at line 136 of file plugin.h.

XMLNode & Plugin::get_state ( void  )
virtual

Implements PBD::Stateful.

Definition at line 390 of file plugin.cc.

virtual const PropertyDescriptors& ARDOUR::Plugin::get_supported_properties ( ) const
inlinevirtual

Get a descrption of all properties supported by this plugin.

Properties are distinct from parameters in that they are potentially dynamic, referred to by key, and do not correspond 1:1 with ports.

For LV2 plugins, properties are implemented by sending/receiving set/get messages to/from the plugin via event ports.

Reimplemented in ARDOUR::LV2Plugin.

Definition at line 244 of file plugin.h.

virtual bool ARDOUR::Plugin::has_editor ( ) const
pure virtual
ChanCount Plugin::input_streams ( ) const
virtual

Reimplemented in ARDOUR::AUPlugin.

Definition at line 226 of file plugin.cc.

virtual const char* ARDOUR::Plugin::label ( ) const
pure virtual
PresetRecord ARDOUR::Plugin::last_preset ( ) const
inline
Returns
Last preset to be requested; the settings may have been changed since; find out with parameter_changed_since_last_preset.

Definition at line 192 of file plugin.h.

bool Plugin::load_preset ( PresetRecord  r)
virtual

Set parameters using a preset

Reimplemented in ARDOUR::LV2Plugin, ARDOUR::LadspaPlugin, ARDOUR::AUPlugin, and ARDOUR::VSTPlugin.

Definition at line 340 of file plugin.cc.

virtual const char* ARDOUR::Plugin::maker ( ) const
pure virtual
void Plugin::monitoring_changed ( )

Definition at line 294 of file plugin.cc.

virtual const char* ARDOUR::Plugin::name ( ) const
pure virtual
virtual uint32_t ARDOUR::Plugin::nth_parameter ( uint32_t  which,
bool &  ok 
) const
pure virtual
ChanCount Plugin::output_streams ( ) const
virtual

Reimplemented in ARDOUR::AUPlugin.

Definition at line 217 of file plugin.cc.

bool ARDOUR::Plugin::parameter_changed_since_last_preset ( ) const
inline

Definition at line 196 of file plugin.h.

virtual uint32_t ARDOUR::Plugin::parameter_count ( ) const
pure virtual
virtual bool ARDOUR::Plugin::parameter_is_audio ( uint32_t  ) const
pure virtual
virtual bool ARDOUR::Plugin::parameter_is_control ( uint32_t  ) const
pure virtual
virtual bool ARDOUR::Plugin::parameter_is_input ( uint32_t  ) const
pure virtual
virtual bool ARDOUR::Plugin::parameter_is_output ( uint32_t  ) const
pure virtual
const Plugin::PresetRecord * Plugin::preset_by_label ( const std::string &  )

Definition at line 235 of file plugin.cc.

const Plugin::PresetRecord * Plugin::preset_by_uri ( const std::string &  )

Definition at line 248 of file plugin.cc.

virtual bool ARDOUR::Plugin::presets_are_MIDI_programs ( ) const
inlinevirtual
Returns
true if this plugin will respond to MIDI program change messages by changing presets.

This is hard to return a correct value for because most plugin APIs do not specify plugin behaviour. However, if you want to force the display of plugin built-in preset names rather than MIDI program numbers, return true. If you want a generic description, return false.

Definition at line 178 of file plugin.h.

virtual void ARDOUR::Plugin::print_parameter ( uint32_t  ,
char *  ,
uint32_t  len 
) const
pure virtual
void Plugin::realtime_handle_transport_stopped ( )

Definition at line 282 of file plugin.cc.

void Plugin::realtime_locate ( )

Definition at line 288 of file plugin.cc.

void Plugin::remove_preset ( std::string  )

Definition at line 116 of file plugin.cc.

void Plugin::resolve_midi ( )
private

Definition at line 300 of file plugin.cc.

Plugin::PresetRecord Plugin::save_preset ( std::string  )
Returns
PresetRecord with empty URI on failure

Definition at line 128 of file plugin.cc.

ARDOUR::Session& ARDOUR::Plugin::session ( ) const
inline

Definition at line 229 of file plugin.h.

virtual int ARDOUR::Plugin::set_block_size ( pframes_t  nframes)
pure virtual
void ARDOUR::Plugin::set_cycles ( uint32_t  c)
inline

Definition at line 231 of file plugin.h.

void Plugin::set_info ( const PluginInfoPtr  inf)
virtual

Reimplemented in ARDOUR::AUPlugin.

Definition at line 414 of file plugin.cc.

virtual void ARDOUR::Plugin::set_insert_id ( PBD::ID  id)
inlinevirtual

Reimplemented in ARDOUR::LV2Plugin.

Definition at line 102 of file plugin.h.

void Plugin::set_parameter ( uint32_t  which,
float  val 
)
protectedvirtual
Parameters
val`plugin' value

Reimplemented in ARDOUR::AUPlugin, ARDOUR::LV2Plugin, ARDOUR::LadspaPlugin, and ARDOUR::VSTPlugin.

Definition at line 361 of file plugin.cc.

virtual void ARDOUR::Plugin::set_property ( uint32_t  key,
const Variant value 
)
inlinevirtual

Set a property from the UI.

This is not UI-specific, but may only be used by one thread. If the Ardour UI is present, that is the UI thread, but otherwise, any thread except the audio thread may call this function as long as it is not called concurrently.

Reimplemented in ARDOUR::LV2Plugin.

Definition at line 261 of file plugin.h.

int Plugin::set_state ( const XMLNode node,
int  version 
)
virtual

Implements PBD::Stateful.

Reimplemented in ARDOUR::LV2Plugin, ARDOUR::LadspaPlugin, ARDOUR::AUPlugin, and ARDOUR::VSTPlugin.

Definition at line 369 of file plugin.cc.

virtual std::string ARDOUR::Plugin::state_node_name ( ) const
pure virtual
virtual std::string ARDOUR::Plugin::unique_id ( ) const
pure virtual

Friends And Related Function Documentation

friend class PluginInsert
friend

Definition at line 274 of file plugin.h.

Member Data Documentation

uint32_t ARDOUR::Plugin::_cycles
protected

Definition at line 288 of file plugin.h.

ARDOUR::AudioEngine& ARDOUR::Plugin::_engine
protected

Definition at line 285 of file plugin.h.

bool ARDOUR::Plugin::_have_pending_stop_events
private

Definition at line 302 of file plugin.h.

bool ARDOUR::Plugin::_have_presets
private

Definition at line 299 of file plugin.h.

PluginInfoPtr ARDOUR::Plugin::_info
protected

Definition at line 287 of file plugin.h.

PresetRecord ARDOUR::Plugin::_last_preset
private

Definition at line 303 of file plugin.h.

bool ARDOUR::Plugin::_parameter_changed_since_last_preset
private

Definition at line 304 of file plugin.h.

BufferSet ARDOUR::Plugin::_pending_stop_events
private

Definition at line 301 of file plugin.h.

std::map<std::string, PresetRecord> ARDOUR::Plugin::_presets
protected

Definition at line 289 of file plugin.h.

ARDOUR::Session& ARDOUR::Plugin::_session
protected

Definition at line 286 of file plugin.h.

MidiStateTracker ARDOUR::Plugin::_tracker
private

Definition at line 300 of file plugin.h.

PBD::Signal1<void,uint32_t> ARDOUR::Plugin::EndTouch

Definition at line 270 of file plugin.h.

PBD::Signal2<void, uint32_t, float> ARDOUR::Plugin::ParameterChanged

Emitted when any parameter changes

Definition at line 214 of file plugin.h.

PBD::Signal0<void> ARDOUR::Plugin::PresetAdded

Emitted when a preset is added or removed, respectively

Definition at line 205 of file plugin.h.

PBD::Signal0<void> ARDOUR::Plugin::PresetLoaded

Emitted when a preset has been loaded

Definition at line 209 of file plugin.h.

PBD::Signal0<void> ARDOUR::Plugin::PresetRemoved

Definition at line 206 of file plugin.h.

PBD::Signal2<void, uint32_t, Variant> ARDOUR::Plugin::PropertyChanged

Emitted when a property is changed in the plugin.

Definition at line 267 of file plugin.h.

PBD::Signal1<void,uint32_t> ARDOUR::Plugin::StartTouch

Definition at line 269 of file plugin.h.


The documentation for this class was generated from the following files: