summaryrefslogtreecommitdiff
path: root/libs/ardour/plugin_insert.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-06-16 15:08:10 +0200
committerRobin Gareus <robin@gareus.org>2016-06-16 15:08:25 +0200
commita9c09af816b3d7da40221ac4a2bb4c6074708d89 (patch)
tree83335b2ddbb497bc48d85fd311cc090ba1d4fad0 /libs/ardour/plugin_insert.cc
parent321615e8eabc9c0085979af8af842d16433b1d1c (diff)
set latency of sidechain port
Diffstat (limited to 'libs/ardour/plugin_insert.cc')
-rw-r--r--libs/ardour/plugin_insert.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index 291ccbfc54..38c3b684ed 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -67,6 +67,8 @@ const string PluginInsert::port_automation_node_name = "PortAutomation";
PluginInsert::PluginInsert (Session& s, boost::shared_ptr<Plugin> plug)
: Processor (s, (plug ? plug->name() : string ("toBeRenamed")))
+ , _sc_playback_latency (0)
+ , _sc_capture_latency (0)
, _signal_analysis_collected_nframes(0)
, _signal_analysis_collect_nframes_max(0)
, _configured (false)
@@ -215,11 +217,31 @@ PluginInsert::del_sidechain ()
return false;
}
_sidechain.reset ();
+ _sc_playback_latency = 0;
+ _sc_capture_latency = 0;
PluginConfigChanged (); /* EMIT SIGNAL */
return true;
}
void
+PluginInsert::set_sidechain_latency (uint32_t capture, uint32_t playback)
+{
+ if (_sidechain &&
+ (_sc_playback_latency != playback || _sc_capture_latency != capture)) {
+ _sc_capture_latency = capture;
+ _sc_playback_latency = playback;
+ LatencyRange pl; pl.min = pl.max = playback;
+ LatencyRange cl; cl.min = cl.max = capture;
+ DEBUG_TRACE (DEBUG::Latency, string_compose ("%1: capture %2 playback; %3\n", _sidechain->name (), capture, playback));
+ PortSet& ps (_sidechain->input ()->ports ());
+ for (PortSet::iterator p = ps.begin(); p != ps.end(); ++p) {
+ p->set_private_latency_range (pl, true);
+ p->set_private_latency_range (cl, false);
+ }
+ }
+}
+
+void
PluginInsert::control_list_automation_state_changed (Evoral::Parameter which, AutoState s)
{
if (which.type() != PluginAutomation)