+ const PresetRecord * preset_by_label (const std::string &);
+ const PresetRecord * preset_by_uri (const std::string &);
+
+ std::vector<PresetRecord> get_presets ();
+
+ /** @return Last preset to be requested; the settings may have
+ * been changed since; find out with parameter_changed_since_last_preset.
+ */
+ PresetRecord last_preset () const {
+ return _last_preset;
+ }
+
+ bool parameter_changed_since_last_preset () const {
+ return _parameter_changed_since_last_preset;
+ }
+
+ virtual int first_user_preset_index () const {
+ return 0;
+ }
+
+ /** Emitted when a preset is added or removed, respectively */
+ PBD::Signal0<void> PresetAdded;
+ PBD::Signal0<void> PresetRemoved;
+
+ /** Emitted when a preset has been loaded */
+ PBD::Signal0<void> PresetLoaded;
+
+ virtual bool has_editor () const = 0;
+
+ /** Emitted when any parameter changes */
+ PBD::Signal2<void, uint32_t, float> ParameterChanged;
+
+ virtual bool configure_io (ChanCount /*in*/, ChanCount /*out*/) { return true; }
+
+ /* specific types of plugins can overload this. As of September 2008, only
+ AUPlugin does this.
+ */
+ virtual bool can_support_io_configuration (const ChanCount& /*in*/, ChanCount& /*out*/) const { return false; }
+ virtual ChanCount output_streams() const;
+ virtual ChanCount input_streams() const;
+
+ PluginInfoPtr get_info() const { return _info; }
+ virtual void set_info (const PluginInfoPtr inf);