Improve the readability of Session::import_audiofile
[ardour.git] / libs / ardour / vst_plugin.cc
index ed78b0942d005834d42ea52eff34bf5b7d9541c0..ac0e6849f93f4827670003d8ae9590d834b896fe 100644 (file)
 
 #include <vst/aeffectx.h>
 
-#include <ardour/ardour.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 <pbd/stl_delete.h>
 
@@ -119,7 +120,7 @@ void
 VSTPlugin::set_parameter (uint32_t which, float val)
 {
        _plugin->setParameter (_plugin, which, val);
-       ParameterChanged (which, val); /* EMIT SIGNAL */
+       //ParameterChanged (which, val); /* EMIT SIGNAL */
 }
 
 float
@@ -158,8 +159,11 @@ VSTPlugin::get_state()
                string path;
                struct stat sbuf;
 
-               path = getenv ("HOME");
-               path += "/.ardour/vst";
+               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) {
@@ -172,9 +176,8 @@ VSTPlugin::get_state()
 
                        } else {
 
-                               error << string_compose (_("cannot check VST chunk directory: %1"),
-                                                 strerror (errno))
-                                     << endmsg;
+                               warning << string_compose (_("cannot check VST chunk directory: %1"), strerror (errno))
+                                       << endmsg;
                                return *root;
                        }
 
@@ -348,8 +351,12 @@ VSTPlugin::describe_parameter (uint32_t param)
 }
 
 nframes_t
-VSTPlugin::latency () const
+VSTPlugin::signal_latency () const
 {
+       if (_user_latency) {
+               return _user_latency;
+       }
+
        return _plugin->initialDelay;
 }
 
@@ -366,19 +373,21 @@ VSTPlugin::automatable () const
 }
 
 int
-VSTPlugin::connect_and_run (vector<Sample*>& bufs, uint32_t maxbuf, int32_t& in_index, int32_t& out_index, nframes_t nframes, nframes_t offset)
+VSTPlugin::connect_and_run (BufferSet& bufs, uint32_t& in_index, uint32_t& out_index, nframes_t nframes, nframes_t offset)
 {
        float *ins[_plugin->numInputs];
        float *outs[_plugin->numOutputs];
        int32_t i;
 
+       const uint32_t nbufs = bufs.count().n_audio();
+
        for (i = 0; i < (int32_t) _plugin->numInputs; ++i) {
-               ins[i] = bufs[min((uint32_t) in_index,maxbuf - 1)] + offset;
+               ins[i] = bufs.get_audio(min((uint32_t) in_index, nbufs - 1)).data() + offset;
                in_index++;
        }
 
        for (i = 0; i < (int32_t) _plugin->numOutputs; ++i) {
-               outs[i] = bufs[min((uint32_t) out_index,maxbuf - 1)] + offset;
+               outs[i] = bufs.get_audio(min((uint32_t) out_index, nbufs - 1)).data() + offset;
 
                /* unbelievably, several VST plugins still rely on Cubase
                   behaviour and do not silence the buffer in processReplacing 
@@ -499,3 +508,15 @@ VSTPluginInfo::load (Session& session)
                return PluginPtr ((Plugin*) 0);
        }
 }
+
+void
+VSTPlugin::store_state (ARDOUR::PluginState& s)
+{
+
+}
+
+void
+VSTPlugin::restore_state (ARDOUR::PluginState& s)
+{
+
+}