- /* we were quiet last time, and we're still supposed to be quiet.
- Silence the outputs, and make sure the buffers are quiet too,
- */
+ if (!result_required) {
+ /* if !result_required, then the buffers won't actually
+ * be used. This means we don't actually need to silence
+ * them, because we've already filled the output ports
+ * with silence.
+ *
+ * but we just noted that result_required is true,
+ * and so we do need to run the amp to ensure
+ * that the buffers are silenced.
+ */
+ need_amp = false;
+ }
+ }
+
+ if (need_amp) {
+
+ bufs.set_count (output_buffers().count ());
+
+ if (_role != Main) {
+
+ /* inserts, external and internal sends have
+ * automatable gain and the Amp::run() method has
+ * already been executed by the time we get here.
+ *
+ * XXX we do not expose the automatable gain for
+ * Inserts as of September 2015.
+ */
+
+ } else {
+
+ /* main outs have no automatable gain, the amp is just
+ * used for ramping gain changes caused by monitoring
+ * state changes.
+ */
+
+ _amp->set_gain (tgain, this);
+ _amp->run (bufs, 0, 0, nframes, false);