diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index b136026..e58fde8 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -391,6 +391,7 @@ Route::maybe_declick (BufferSet&, framecnt_t, int)
  * @param start_frame Initial transport frame
  * @param end_frame Final transport frame
  * @param nframes Number of frames to output (to ports)
+ * @param with_visible_processors true to run visible processors, false to not run them; Fader (Amp) is always run
  *
  * Note that (end_frame - start_frame) may not be equal to nframes when the
  * transport speed isn't 1.0 (eg varispeed).
@@ -398,7 +399,7 @@ Route::maybe_declick (BufferSet&, framecnt_t, int)
 void
 Route::process_output_buffers (BufferSet& bufs,
 			       framepos_t start_frame, framepos_t end_frame, pframes_t nframes,
-			       bool /*with_processors*/, int declick,
+			       bool with_visible_processors, int declick,
                                bool gain_automation_ok)
 {
 	bool monitor = should_monitor ();
@@ -485,6 +486,10 @@ Route::process_output_buffers (BufferSet& bufs,
 			break;
 		}
 
+		if (!with_visible_processors && (*i)->display_to_user() && boost::dynamic_pointer_cast<Amp> (*i) == 0) {
+			continue;
+		}
+
 #ifndef NDEBUG
 		/* if it has any inputs, make sure they match */
 		if ((*i)->input_streams() != ChanCount::ZERO) {
@@ -548,7 +553,11 @@ Route::passthru (framepos_t start_frame, framepos_t end_frame, pframes_t nframes
 	}
 
 	write_out_of_band_data (bufs, start_frame, end_frame, nframes);
-	process_output_buffers (bufs, start_frame, end_frame, nframes, true, declick, true);
+	process_output_buffers (
+		bufs, start_frame, end_frame, nframes,
+		(!_session.get_record_enabled() || !Config->get_do_not_record_plugins()),
+		declick, true
+		);
 }
 
 void
@@ -558,7 +567,11 @@ Route::passthru_silence (framepos_t start_frame, framepos_t end_frame, pframes_t
 
 	bufs.set_count (_input->n_ports());
 	write_out_of_band_data (bufs, start_frame, end_frame, nframes);
-	process_output_buffers (bufs, start_frame, end_frame, nframes, true, declick, false);
+	process_output_buffers (
+		bufs, start_frame, end_frame, nframes,
+		(!_session.get_record_enabled() || !Config->get_do_not_record_plugins()),
+		declick, false
+		);
 }
 
 void
