tweaks to get a VST-supporting 3.0 to build & startup
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 27 Feb 2009 22:52:39 +0000 (22:52 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 27 Feb 2009 22:52:39 +0000 (22:52 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@4705 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/route_ui.cc
libs/ardour/ardour/vst_plugin.h
libs/ardour/plugin_manager.cc
libs/ardour/session_vst.cc
libs/ardour/vst_plugin.cc
vst/ardevst

index facabd97795f8104b36546880045da78607812c1..17baffe6af09be42fb2b9fe379f5d8d6fa2024b9 100644 (file)
@@ -1194,3 +1194,5 @@ RouteUI::adjust_latency ()
 {
        LatencyDialog dialog (_route->name() + _("latency"), *(_route.get()), _session.frame_rate(), _session.engine().frames_per_cycle());
 }
+
+
index ba936b97213ea042da372d841a747883ef0f3db1..7541740cf8ae3829fc8bd393f345b961650616f9 100644 (file)
@@ -66,13 +66,13 @@ class VSTPlugin : public ARDOUR::Plugin
        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<uint32_t> automatable() const;
+       std::set<Evoral::Parameter> 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 (BufferSet&, uint32_t& in, uint32_t& out, nframes_t nframes, nframes_t offset);
-       string describe_parameter (uint32_t);
+       string describe_parameter (Evoral::Parameter);
        string state_node_name() const { return "vst"; }
        void print_parameter (uint32_t, char*, uint32_t len) const;
 
index c665c7212669eafbd11537f8e733bcd98ba8bd5d..439768c07ea448b800e235c6c72b08e609dee486 100644 (file)
@@ -528,8 +528,8 @@ PluginManager::vst_discover (string path)
        info->path = path;
        info->creator = finfo->creator;
        info->index = 0;
-       info->n_inputs = finfo->numInputs;
-       info->n_outputs = finfo->numOutputs;
+       info->n_inputs.set_audio (finfo->numInputs);
+       info->n_outputs.set_audio (finfo->numOutputs);
        info->type = ARDOUR::VST;
        
        _vst_plugin_info.push_back (info);
index 86b541f4672d36fbfa648e184e1f5ad6bd0ff18b..99809e41b90cd62e4de743340edb19a97f606a2d 100644 (file)
@@ -21,7 +21,6 @@
 #include <cstdio>
 
 #include <fst.h>
-#include <vst/aeffectx.h>
 
 #include "ardour/session.h"
 #include "ardour/vst_plugin.h"
index cd2531d52296882feeb3abb9aa7e6794298ca8da..d69ef2a50ae9d55c6dfa7c5bbe652f05238f451f 100644 (file)
 #include "pbd/pathscanner.h"
 #include "pbd/xml++.h"
 
-#include <vst/aeffectx.h>
+#include <fst.h>
 
 #include "ardour/session.h"
 #include "ardour/audioengine.h"
 #include "ardour/filesystem_paths.h"
 #include "ardour/vst_plugin.h"
 #include "ardour/buffer_set.h"
+#include "ardour/audio_buffer.h"
 
 #include "pbd/stl_delete.h"
 
@@ -82,7 +83,7 @@ VSTPlugin::VSTPlugin (AudioEngine& e, Session& session, FSTHandle* h)
 
        _plugin->dispatcher (_plugin, effSetProgram, 0, 0, NULL, 0.0f);
        
-       Plugin::setup_controls ();
+       // Plugin::setup_controls ();
 }
 
 VSTPlugin::VSTPlugin (const VSTPlugin &other)
@@ -94,8 +95,8 @@ VSTPlugin::VSTPlugin (const VSTPlugin &other)
                throw failed_constructor();
        }
        _plugin = _fst->plugin;
-
-       Plugin::setup_controls ();
+       
+       // Plugin::setup_controls ();
 }
 
 VSTPlugin::~VSTPlugin ()
@@ -158,43 +159,27 @@ VSTPlugin::get_state()
                }
 
                /* save it to a file */
-
-               Glib::ustring path = Glib::build_filename (get_user_ardour_path (), "vst");
-               struct stat sbuf;
-
+               
                sys::path user_vst_directory(user_config_directory());
-       
                user_vst_directory /= "vst";
-               path = user_vst_directory.to_string();
 
-               if (stat (path.c_str(), &sbuf)) {
-                       if (errno == ENOENT) {
-                               if (g_mkdir_with_parents (path.c_str(), 0600)) {
-                                       error << string_compose (_("cannot create VST chunk directory: %1"),
-                                                                strerror (errno))
-                                             << endmsg;
-                                       return *root;
-                               }
-
-                       } else {
-
-                               warning << string_compose (_("cannot check VST chunk directory: %1"), strerror (errno))
-                                       << endmsg;
-                               return *root;
-                       }
-
-               } else if (!S_ISDIR (sbuf.st_mode)) {
-                       error << string_compose (_("%1 exists but is not a directory"), path)
-                             << endmsg;
+               try {
+                       sys::create_directories (user_vst_directory);   
+               }
+               catch (const sys::filesystem_error& ex)
+               {
+                       error << "Could not create user configuration directory" << endmsg;
                        return *root;
                }
                
-               path = Glib::build_filename (path, "something");
+               sys::path file (user_vst_directory);
+               
+               file /= "something";
                
                /* store information */
 
                XMLNode* chunk_node = new XMLNode (X_("chunk"));
-               chunk_node->add_property ("path", path);
+               chunk_node->add_property ("path", file.to_string());
                
                root->add_child_nocopy (*chunk_node);
                
@@ -348,10 +333,10 @@ VSTPlugin::save_preset (string name)
 }
 
 string
-VSTPlugin::describe_parameter (uint32_t param)
+VSTPlugin::describe_parameter (Evoral::Parameter param)
 {
        char name[64];
-       _plugin->dispatcher (_plugin, effGetParamName, param, 0, name, 0);
+       _plugin->dispatcher (_plugin, effGetParamName, param.id(), 0, name, 0);
        return name;
 }
 
@@ -369,13 +354,13 @@ VSTPlugin::signal_latency () const
 #endif
 }
 
-set<uint32_t>
+set<Evoral::Parameter>
 VSTPlugin::automatable () const
 {
-       set<uint32_t> ret;
+       set<Evoral::Parameter> ret;
 
        for (uint32_t i = 0; i < parameter_count(); ++i){
-               ret.insert (ret.end(), i);
+               ret.insert (ret.end(), Evoral::Parameter(PluginAutomation, 0, i));
        }
 
        return ret;
@@ -474,11 +459,9 @@ VSTPlugin::has_editor () const
 void
 VSTPlugin::print_parameter (uint32_t param, char *buf, uint32_t len) const
 {
-       char lab[9];
        char *first_nonws;
 
-       _plugin->dispatcher (_plugin, effGetParamLabel, param, 0, lab, 0);
-       _plugin->dispatcher (_plugin, effGetParamDisplay, param, 0, buf, 0);
+       _plugin->dispatcher (_plugin, 7 /* effGetParamDisplay */, param, 0, buf, 0);
 
        if (buf[0] == '\0') {
                return;
index c040dbbacfa08209036b1f2be14a8b44193a706b..ceed75b920a34ecc8194707f80bb08fbdb49281a 100755 (executable)
@@ -2,5 +2,5 @@
 
 . ../gtk2_ardour/ardev_common.sh
 
-export LD_LIBRARY_PATH=gtk2_ardour:$LD_LIBRARY_PATH
-exec wine ./vst/ardour_vst.exe.so "$@"
+export LD_LIBRARY_PATH=../gtk2_ardour:$LD_LIBRARY_PATH
+exec wine $TOP/vst/ardour_vst.exe.so "$@"