add initial midi sidechain if plugin has one.
authorRobin Gareus <robin@gareus.org>
Tue, 26 Jul 2016 02:17:10 +0000 (04:17 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 26 Jul 2016 02:20:18 +0000 (04:20 +0200)
libs/ardour/ardour/plugin_insert.h
libs/ardour/plugin_insert.cc

index 564feb0c63cf5fddc0707b0345e2f27940e239de..d38523a77de889fabbd3d94b286fd8b850e9ff5c 100644 (file)
@@ -156,7 +156,7 @@ class LIBARDOUR_API PluginInsert : public Processor
        void set_strict_io  (bool b);
        void set_custom_cfg (bool b);
        bool set_preset_out (const ChanCount&);
-       bool add_sidechain  (uint32_t n_audio = 1);
+       bool add_sidechain  (uint32_t n_audio = 1, uint32_t n_midi = 0);
        bool del_sidechain ();
        void set_sidechain_latency (uint32_t, uint32_t);
        boost::shared_ptr<SideChain> sidechain () const { return _sidechain; }
index 7fb799d4923e22cbf24c0f606b744702d0ddf588..a7e512713df73cfb4fa1ffa6debad362ce4b732c 100644 (file)
@@ -85,8 +85,8 @@ PluginInsert::PluginInsert (Session& s, boost::shared_ptr<Plugin> plug)
                add_plugin (plug);
                create_automatable_parameters ();
                const ChanCount& sc (sidechain_input_pins ());
-               if (sc.n_audio () > 0) {
-                       add_sidechain (sc.n_audio ());
+               if (sc.n_audio () > 0 || sc.n_midi () > 0) {
+                       add_sidechain (sc.n_audio (), sc.n_midi ());
                }
        }
 }
@@ -190,14 +190,14 @@ PluginInsert::set_preset_out (const ChanCount& c)
 }
 
 bool
-PluginInsert::add_sidechain (uint32_t n_audio)
+PluginInsert::add_sidechain (uint32_t n_audio, uint32_t n_midi)
 {
        // caller must hold process lock
        if (_sidechain) {
                return false;
        }
        std::ostringstream n;
-       if (n_audio > 0) {
+       if (n_audio > 0 || n_midi > 0) {
                n << "Sidechain " << Session::next_name_id ();
        } else {
                n << "TO BE RESET FROM XML";
@@ -206,7 +206,10 @@ PluginInsert::add_sidechain (uint32_t n_audio)
        _sidechain = boost::shared_ptr<SideChain> (sc);
        _sidechain->activate ();
        for (uint32_t n = 0; n < n_audio; ++n) {
-               _sidechain->input()->add_port ("", owner()); // add a port, don't connect.
+               _sidechain->input()->add_port ("", owner(), DataType::AUDIO); // add a port, don't connect.
+       }
+       for (uint32_t n = 0; n < n_midi; ++n) {
+               _sidechain->input()->add_port ("", owner(), DataType::MIDI); // add a port, don't connect.
        }
        PluginConfigChanged (); /* EMIT SIGNAL */
        return true;