ardour
lxvst_plugin.cc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2004 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
21 #include "ardour/session.h"
22 #include "ardour/lxvst_plugin.h"
23 
24 #include "i18n.h"
25 
26 using namespace std;
27 using namespace ARDOUR;
28 using namespace PBD;
29 
30 LXVSTPlugin::LXVSTPlugin (AudioEngine& e, Session& session, VSTHandle* h, int unique_id)
31  : VSTPlugin (e, session, h)
32 {
33  /* Instantiate the plugin and return a VSTState* */
34 
36  if ((_state = vstfx_instantiate (_handle, Session::vst_callback, this)) == 0) {
37  throw failed_constructor();
38  }
40 
42 }
43 
45  : VSTPlugin (other)
46 {
47  _handle = other._handle;
48 
50  if ((_state = vstfx_instantiate (_handle, Session::vst_callback, this)) == 0) {
51  throw failed_constructor();
52  }
54 
56 
57  // Plugin::setup_controls ();
58 }
59 
61 {
63 }
64 
65 PluginPtr
67 {
68  try {
69  PluginPtr plugin;
70 
71  if (Config->get_use_lxvst()) {
72  VSTHandle* handle;
73 
74  handle = vstfx_load(path.c_str());
75 
76  if (handle == NULL) {
77  error << string_compose(_("LXVST: cannot load module from \"%1\""), path) << endmsg;
78  }
79  else {
80  plugin.reset (new LXVSTPlugin (session.engine(), session, handle, PBD::atoi(unique_id)));
81  }
82  }
83  else {
84  error << _("You asked ardour to not use any LXVST plugins") << endmsg;
85  return PluginPtr ((Plugin*) 0);
86  }
87 
88  plugin->set_info(PluginInfoPtr(new LXVSTPluginInfo(*this)));
89  return plugin;
90  }
91 
92  catch (failed_constructor &err) {
93  return PluginPtr ((Plugin*) 0);
94  }
95 }
96 
98 {
100 }
101 
PluginPtr load(Session &session)
Definition: lxvst_plugin.cc:66
int atoi(const string &s)
Definition: convert.cc:140
VSTState * _state
Definition: vst_plugin.h:96
LIBARDOUR_API VSTHandle * vstfx_load(const char *)
std::string path
Definition: plugin.h:62
Definition: Beats.hpp:239
LIBPBD_API Transmitter error
std::ostream & endmsg(std::ostream &ostr)
Definition: transmitter.h:71
#define _(Text)
Definition: i18n.h:11
LXVSTPlugin(AudioEngine &, Session &, VSTHandle *, int unique_id)
Definition: lxvst_plugin.cc:30
boost::shared_ptr< Plugin > PluginPtr
Definition: plugin.h:50
LIBARDOUR_API VSTState * vstfx_instantiate(VSTHandle *, audioMasterCallback, void *)
LIBARDOUR_API RCConfiguration * Config
Definition: globals.cc:119
static intptr_t vst_callback(AEffect *effect, int32_t opcode, int32_t index, intptr_t value, void *ptr, float opt)
Definition: session_vst.cc:64
Definition: amp.h:29
AEffect * _plugin
Definition: vst_plugin.h:97
void set_plugin(AEffect *)
Definition: vst_plugin.cc:57
VSTHandle * _handle
Definition: vst_plugin.h:95
std::string unique_id
Definition: plugin.h:67
static int vst_current_loading_id
Definition: session.h:837
LIBARDOUR_API void vstfx_close(VSTState *)
AEffect * plugin
Definition: vst_types.h:76
std::string unique_id() const
Definition: vst_plugin.cc:604
Definition: debug.h:30
boost::shared_ptr< PluginInfo > PluginInfoPtr
Definition: plugin.h:89
ARDOUR::PluginType type
Definition: plugin.h:65
AudioEngine & engine()
Definition: session.h:546
std::string string_compose(const std::string &fmt, const T1 &o1)
Definition: compose.h:208