summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-19 00:57:56 +0200
committerRobin Gareus <robin@gareus.org>2016-04-19 00:57:56 +0200
commit428c82b1bc4dd527f8c65e94170c55f4291f7a45 (patch)
treec208e3a9633b164e9f107181cdc990541b868186 /libs
parent26532364bbd2e591f9dcc2a28b0eb22a88a90472 (diff)
fix plugin silence runs (e.g. during audition)
* use max of in+out buffers * special case Mixbus * clear delay-lines
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/plugin_insert.cc23
1 files changed, 18 insertions, 5 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index 2fdbeaf220..bb120d3fad 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -764,12 +764,25 @@ PluginInsert::silence (framecnt_t nframes)
return;
}
- ChanMapping in_map (natural_input_streams ());
- ChanMapping out_map (natural_output_streams ());
+ _delaybuffers.flush ();
- // TODO run sidechain (delaylines)
- for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
- (*i)->connect_and_run (_session.get_scratch_buffers ((*i)->get_info()->n_inputs, true), in_map, out_map, nframes, 0);
+#ifdef MIXBUS
+ if (is_channelstrip ()) {
+ if (_configured_in.n_audio() > 0) {
+ ChanCount maxbuf = ChanCount::min (_configured_in, ChanCount (DataType::AUDIO, 2));
+ ChanMapping mb_in_map (ChanCount::min (_configured_in, ChanCount (DataType::AUDIO, 2)));
+ ChanMapping mb_out_map (ChanCount::min (_configured_out, ChanCount (DataType::AUDIO, 2)));
+ _plugins.front()->connect_and_run (_session.get_scratch_buffers (maxbuf, true), mb_in_map, mb_out_map, nframes, 0);
+ }
+ } else
+#endif
+ {
+ ChanMapping in_map (natural_input_streams ());
+ ChanMapping out_map (natural_output_streams ());
+ ChanCount maxbuf = ChanCount::max (natural_input_streams (), natural_output_streams());
+ for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
+ (*i)->connect_and_run (_session.get_scratch_buffers (maxbuf, true), in_map, out_map, nframes, 0);
+ }
}
}