summaryrefslogtreecommitdiff
path: root/libs/ardour/vst_plugin.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/vst_plugin.cc')
-rw-r--r--libs/ardour/vst_plugin.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc
index 7fb5289f9c..a270c5ba91 100644
--- a/libs/ardour/vst_plugin.cc
+++ b/libs/ardour/vst_plugin.cc
@@ -49,12 +49,14 @@
#include "ardour/vst_plugin.h"
#include "ardour/buffer_set.h"
#include "ardour/audio_buffer.h"
+#include "ardour/midi_buffer.h"
#include "pbd/stl_delete.h"
#include "i18n.h"
#include <locale.h>
+using namespace std;
using namespace ARDOUR;
using namespace PBD;
using std::min;
@@ -192,7 +194,7 @@ VSTPlugin::get_state()
}
int
-VSTPlugin::set_state(const XMLNode& node)
+VSTPlugin::set_state(const XMLNode& node, int)
{
LocaleGuard lg (X_("POSIX"));
@@ -204,7 +206,7 @@ VSTPlugin::set_state(const XMLNode& node)
const XMLProperty* prop;
if ((prop = node.property ("current-program")) != 0) {
- _fst->current_program = atoi (prop->value());
+ _fst->current_program = atoi (prop->value().c_str());
}
XMLNode* child;
@@ -392,11 +394,13 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
const uint32_t nbufs = bufs.count().n_audio();
+ int in_index = 0;
for (i = 0; i < (int32_t) _plugin->numInputs; ++i) {
ins[i] = bufs.get_audio(min((uint32_t) in_index, nbufs - 1)).data() + offset;
in_index++;
}
+ int out_index = 0;
for (i = 0; i < (int32_t) _plugin->numOutputs; ++i) {
outs[i] = bufs.get_audio(min((uint32_t) out_index, nbufs - 1)).data() + offset;
@@ -410,6 +414,11 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
}
+ if (bufs.count().n_midi() > 0) {
+ VstEvents* v = bufs.get_vst_midi (0);
+ _plugin->dispatcher (_plugin, effProcessEvents, 0, 0, v, 0);
+ }
+
/* we already know it can support processReplacing */
_plugin->processReplacing (_plugin, ins, outs, nframes);