summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-19 20:39:40 +0200
committerRobin Gareus <robin@gareus.org>2016-04-19 20:39:40 +0200
commit24282065aa53e35421514fd43cad78485afd82ed (patch)
tree5841e11eb036555e00a0bec2edd92fb0db67d305 /libs
parent3715602ea7ddf1eb58cd2b5d99d6b40ab63fd926 (diff)
clear [midi] plugin audio output buffers before running plugin.
some samplers don't zero the output buffers if they're not configured or no samples are loaded.
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/plugin_insert.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index 443e1b565e..a58a25fb9f 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -635,10 +635,18 @@ PluginInsert::connect_and_run (BufferSet& bufs, pframes_t nframes, framecnt_t of
for (uint32_t out = 0; out < bufs.count().get (*t); ++out) {
bool valid;
uint32_t in_idx = thru_map.get (*t, out, &valid);
+ uint32_t m = out + natural_input_streams ().get (*t);
if (valid) {
- uint32_t m = out + natural_input_streams ().get (*t);
_delaybuffers.delay (*t, out, inplace_bufs.get (*t, m), bufs.get (*t, in_idx), nframes, offset, offset);
used_outputs.set (*t, out, 1); // mark as used
+ } else {
+ used_outputs.get (*t, out, &valid);
+ if (valid) {
+ /* the plugin is expected to write here, but may not :(
+ * (e.g. drumgizmo w/o kit loaded)
+ */
+ inplace_bufs.get (*t, m).silence (nframes);
+ }
}
}
}