VST report audioMasterPinConnected according to Pin Management
authorRobin Gareus <robin@gareus.org>
Tue, 12 Apr 2016 22:52:47 +0000 (00:52 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 12 Apr 2016 22:52:47 +0000 (00:52 +0200)
libs/ardour/plugin_insert.cc
libs/ardour/session_vst.cc

index ee8016c6af9b7db46cc75ce1c99a2cdec7dff1a0..a1c2e4b165c029d0360f92846ed62365dd0f1da6 100644 (file)
@@ -2437,6 +2437,11 @@ PluginInsert::add_plugin (boost::shared_ptr<Plugin> plugin)
                        }
                }
        }
+
+       boost::shared_ptr<VSTPlugin> vst = boost::dynamic_pointer_cast<VSTPlugin> (plugin);
+       if (vst) {
+               vst->set_insert (this, _plugins.size ());
+       }
        _plugins.push_back (plugin);
 }
 
index c6978eddc704c7a1273d47d57b5b80abda1de560..0e16ac1ebe8ca9ec8b6cd0e64fbe9b88f5ed3b17 100644 (file)
@@ -26,6 +26,7 @@
 #include "ardour/debug.h"
 #include "ardour/session.h"
 #include "ardour/tempo.h"
+#include "ardour/plugin_insert.h"
 #include "ardour/windows_vst_plugin.h"
 #include "ardour/vestige/aeffectx.h"
 #include "ardour/vst_types.h"
@@ -124,11 +125,25 @@ intptr_t Session::vst_callback (
                }
                switch (value) {
                        case 0:
+                               if (plug->plugin_insert ()) {
+                                       bool valid;
+                                       const ChanMapping& map (plug->plugin_insert ()->input_map (plug->plugin_number ()));
+                                       map.get (DataType::AUDIO, index, &valid);
+                                       return valid ? 0 : 1;
+                               }
                                if (index < plug->plugin()->numInputs) {
                                        return 0;
                                }
                                break;
                        case 1:
+#if 0 // investigate, the outputs *are* connected to scratch buffers
+                               if (plug->plugin_insert ()) {
+                                       bool valid;
+                                       const ChanMapping& map (plug->plugin_insert ()->output_map (plug->plugin_number ()));
+                                       map.get (DataType::AUDIO, index, &valid);
+                                       return valid ? 0 : 1;
+                               }
+#endif
                                if (index < plug->plugin()->numOutputs) {
                                        return 0;
                                }