diff options
author | Robin Gareus <robin@gareus.org> | 2016-04-19 00:57:56 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-04-19 00:57:56 +0200 |
commit | 428c82b1bc4dd527f8c65e94170c55f4291f7a45 (patch) | |
tree | c208e3a9633b164e9f107181cdc990541b868186 /libs | |
parent | 26532364bbd2e591f9dcc2a28b0eb22a88a90472 (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.cc | 23 |
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); + } } } |