X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fvst_plugin.h;h=d1522059d1f8c4c63352701d05591a2f02acc997;hb=a473d630eb165272992e90f8d854b1d66ec0be63;hp=e7f09a8986f198cb6e481e5c39e722a6f2787901;hpb=5695b1790e3fdee4f15a45ed507e41ac866917cd;p=ardour.git diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h index e7f09a8986..d1522059d1 100644 --- a/libs/ardour/ardour/vst_plugin.h +++ b/libs/ardour/ardour/vst_plugin.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2004 Paul Davis + Copyright (C) 2004 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_vst_plugin_h__ @@ -28,16 +27,8 @@ #include #include -#include -#include -#include -#include -#include - -using std::string; -using std::vector; -using std::list; -using std::map; +#include "pbd/stateful.h" +#include "ardour/plugin.h" struct _FSTHandle; struct _FST; @@ -57,25 +48,29 @@ class VSTPlugin : public ARDOUR::Plugin ~VSTPlugin (); /* Plugin interface */ - - uint32_t unique_id() const; + + std::string unique_id() const; const char * label() const; const char * name() const; const char * maker() const; uint32_t parameter_count() const; float default_value (uint32_t port); - nframes_t latency() const; + framecnt_t signal_latency() const; void set_parameter (uint32_t port, float val); float get_parameter (uint32_t port) const; int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; - std::set automatable() const; + std::set automatable() const; uint32_t nth_parameter (uint32_t port, bool& ok) const; void activate (); void deactivate (); - void set_block_size (nframes_t nframes); - int connect_and_run (vector& bufs, uint32_t maxbuf, int32_t& in, int32_t& out, nframes_t nframes, nframes_t offset); - string describe_parameter (uint32_t); - string state_node_name() const { return "vst"; } + int set_block_size (pframes_t); + + int connect_and_run (BufferSet&, + ChanMapping in, ChanMapping out, + pframes_t nframes, framecnt_t offset); + + std::string describe_parameter (Evoral::Parameter); + std::string state_node_name() const { return "vst"; } void print_parameter (uint32_t, char*, uint32_t len) const; bool parameter_is_audio(uint32_t i) const { return false; } @@ -83,19 +78,29 @@ class VSTPlugin : public ARDOUR::Plugin bool parameter_is_input(uint32_t i) const { return true; } bool parameter_is_output(uint32_t i) const { return false; } - bool load_preset (const string preset_label ); - bool save_preset(string name); + bool load_preset (PresetRecord); + int first_user_preset_index () const; bool has_editor () const; - XMLNode& get_state(); - int set_state(const XMLNode& node); + int set_state (XMLNode const &, int); + + AEffect * plugin () const { return _plugin; } + FST * fst () const { return _fst; } - AEffect* plugin() const { return _plugin; } - FST* fst() const { return _fst; } +private: + void do_remove_preset (std::string name); + std::string do_save_preset (std::string name); + gchar* get_chunk (bool) const; + int set_chunk (gchar const *, bool); + XMLTree * presets_tree () const; + std::string presets_file () const; + void find_presets (); + bool load_user_preset (PresetRecord); + bool load_plugin_preset (PresetRecord); + void add_state (XMLNode *) const; - private: FSTHandle* handle; FST* _fst; AEffect* _plugin; @@ -105,9 +110,9 @@ class VSTPlugin : public ARDOUR::Plugin class VSTPluginInfo : public PluginInfo { public: - VSTPluginInfo () {} + VSTPluginInfo (); ~VSTPluginInfo () {} - + PluginPtr load (Session& session); };