diff options
author | Robin Gareus <robin@gareus.org> | 2016-07-26 04:17:10 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-07-26 04:20:18 +0200 |
commit | 7cc2e8c969e7b778af90f3b45a4c3fa3cbc90ef6 (patch) | |
tree | b5aefa397337a088842d818030223a46b5565181 | |
parent | 78b7e076908606fdd8d3a0a94af0fa5aed48d693 (diff) |
add initial midi sidechain if plugin has one.
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 2 | ||||
-rw-r--r-- | libs/ardour/plugin_insert.cc | 13 |
2 files changed, 9 insertions, 6 deletions
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 564feb0c63..d38523a77d 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -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; } diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 7fb799d492..a7e512713d 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -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; |