Ardour  8.12
vst_plugin.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2006-2011 David Robillard <d@drobilla.net>
3  * Copyright (C) 2007-2011 Carl Hetherington <carl@carlh.net>
4  * Copyright (C) 2007-2018 Paul Davis <paul@linuxaudiosystems.com>
5  * Copyright (C) 2014-2019 Robin Gareus <robin@gareus.org>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21 
22 #ifndef __ardour_vst_plugin_h__
23 #define __ardour_vst_plugin_h__
24 
25 #include <pbd/signals.h>
26 #include "ardour/plugin.h"
27 
28 struct _AEffect;
29 typedef struct _AEffect AEffect;
30 struct _VSTHandle;
31 typedef struct _VSTHandle VSTHandle;
32 struct _VSTState;
33 typedef struct _VSTState VSTState;
34 
35 #include "ardour/vestige/vestige.h"
36 
37 namespace ARDOUR {
38 
39 class PluginInsert;
40 struct VST2Info;
41 
44 {
45 public:
46  friend class Session;
48  VSTPlugin (const VSTPlugin& other);
49  virtual ~VSTPlugin ();
50 
51  void activate ();
52  void deactivate ();
53 
56  bool inplace_broken() const { return true; }
57  float default_value (uint32_t port);
58  float get_parameter (uint32_t port) const;
59  uint32_t nth_parameter (uint32_t port, bool& ok) const;
60  void set_parameter (uint32_t port, float val, sampleoffset_t);
61  void set_parameter_automated (uint32_t port, float val);
63  int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const;
65  std::set<Evoral::Parameter> automatable() const;
66 
67  PBD::Signal0<void> LoadPresetProgram;
68  PBD::Signal0<void> VSTSizeWindow;
69 
70  bool parameter_is_audio (uint32_t) const { return false; }
71  bool parameter_is_control (uint32_t) const { return true; }
72  bool parameter_is_input (uint32_t) const { return true; }
73  bool parameter_is_output (uint32_t) const { return false; }
74 
76 
78  samplepos_t start, samplepos_t end, double speed,
79  ChanMapping const& in, ChanMapping const& out,
80  pframes_t nframes, samplecnt_t offset
81  );
82 
83  std::string unique_id () const;
84  const char * label () const;
85  const char * name () const;
86  const char * maker () const;
87  int32_t version () const;
88  uint32_t parameter_count () const;
89  bool print_parameter (uint32_t, std::string&) const;
90 
91  bool has_editor () const;
92 
93  AEffect * plugin () const { return _plugin; }
94  VSTState * state () const { return _state; }
95  MidiBuffer * midi_buffer () const { return _midi_out_buf; }
96 
97  int set_state (XMLNode const &, int);
98 
100 
101  VstTimeInfo* timeinfo () { return &_timeInfo; }
102  samplepos_t transport_sample () const { return _transport_sample; }
103  float transport_speed () const { return _transport_speed; }
104 
105 
106 protected:
107  void parameter_changed_externally (uint32_t which, float val);
108  virtual void open_plugin ();
109  void init_plugin ();
110  gchar* get_chunk (bool) const;
111  int set_chunk (gchar const *, bool);
112  void add_state (XMLNode *) const;
115  std::string do_save_preset (std::string name);
116  void do_remove_preset (std::string name);
117  XMLTree * presets_tree () const;
118  std::string presets_file () const;
120  void find_presets ();
121 
125 
128 
131  mutable std::map <uint32_t, float> _parameter_defaults;
133 };
134 
136 {
137 public:
139  bool is_instrument () const;
140 protected:
142 };
143 
144 }
145 
146 #endif
VSTPluginInfo(VST2Info const &)
bool is_instrument() const
int first_user_preset_index() const
void do_remove_preset(std::string name)
float default_value(uint32_t port)
VstTimeInfo * timeinfo()
Definition: vst_plugin.h:101
void parameter_changed_externally(uint32_t which, float val)
void set_parameter_automated(uint32_t port, float val)
uint32_t parameter_count() const
void set_parameter(uint32_t port, float val, sampleoffset_t)
bool load_plugin_preset(PresetRecord)
int32_t version() const
VSTHandle * _handle
Definition: vst_plugin.h:122
PBD::Signal0< void > LoadPresetProgram
Definition: vst_plugin.h:67
VSTState * state() const
Definition: vst_plugin.h:94
bool load_user_preset(PresetRecord)
AEffect * _plugin
Definition: vst_plugin.h:124
bool parameter_is_input(uint32_t) const
Definition: vst_plugin.h:72
int set_chunk(gchar const *, bool)
std::set< Evoral::Parameter > automatable() const
virtual ~VSTPlugin()
bool parameter_is_control(uint32_t) const
Definition: vst_plugin.h:71
samplepos_t transport_sample() const
Definition: vst_plugin.h:102
float get_parameter(uint32_t port) const
bool requires_fixed_sized_buffers() const
std::string presets_file() const
float transport_speed() const
Definition: vst_plugin.h:103
bool parameter_is_audio(uint32_t) const
Definition: vst_plugin.h:70
XMLTree * presets_tree() const
uint32_t nth_parameter(uint32_t port, bool &ok) const
bool load_preset(PresetRecord)
samplepos_t _transport_sample
Definition: vst_plugin.h:129
const char * label() const
gchar * get_chunk(bool) const
std::string describe_parameter(Evoral::Parameter)
MidiBuffer * _midi_out_buf
Definition: vst_plugin.h:126
VSTPlugin(AudioEngine &, Session &, VSTHandle *)
bool has_editor() const
VSTPlugin(const VSTPlugin &other)
PBD::Signal0< void > VSTSizeWindow
Definition: vst_plugin.h:68
uint32_t designated_bypass_port()
AEffect * plugin() const
Definition: vst_plugin.h:93
const char * maker() const
float _transport_speed
Definition: vst_plugin.h:130
VstTimeInfo _timeInfo
Definition: vst_plugin.h:127
int get_parameter_descriptor(uint32_t which, ParameterDescriptor &) const
int set_state(XMLNode const &, int)
std::map< uint32_t, float > _parameter_defaults
Definition: vst_plugin.h:131
bool inplace_broken() const
Definition: vst_plugin.h:56
samplecnt_t plugin_latency() const
int connect_and_run(BufferSet &, samplepos_t start, samplepos_t end, double speed, ChanMapping const &in, ChanMapping const &out, pframes_t nframes, samplecnt_t offset)
virtual void open_plugin()
std::string unique_id() const
int set_block_size(pframes_t)
void add_state(XMLNode *) const
VSTState * _state
Definition: vst_plugin.h:123
bool print_parameter(uint32_t, std::string &) const
bool parameter_is_output(uint32_t) const
Definition: vst_plugin.h:73
std::string do_save_preset(std::string name)
const char * name() const
MidiBuffer * midi_buffer() const
Definition: vst_plugin.h:95
Definition: xml++.h:114
Definition: xml++.h:74
GtkImageIconNameData name
Definition: gtkimage.h:6
#define LIBARDOUR_API
PBD::PropertyDescriptor< timepos_t > start
uint32_t pframes_t
Temporal::samplecnt_t samplecnt_t
Temporal::sampleoffset_t sampleoffset_t
Temporal::samplepos_t samplepos_t