MonitorSection: fade input in/out for AFL/PFL

This slowly un/mutes the direct monitor signal when listen state
changes.

Listen sends already fade in as well. However un-soloing still
hard-removes the listen send path.
This commit is contained in:
Robin Gareus 2021-02-04 00:10:42 +01:00
parent fcf1f0fad4
commit 1610b0baae
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 8 additions and 7 deletions

View File

@ -789,6 +789,7 @@ private:
bool _in_configure_processors;
bool _initial_io_setup;
bool _in_sidechain_setup;
gain_t _monitor_gain;
/** true if we've made a note of a custom meter position in these variables */
bool _custom_meter_position_noted;

View File

@ -131,6 +131,7 @@ Route::Route (Session& sess, string name, PresentationInfo::Flag flag, DataType
, _in_configure_processors (false)
, _initial_io_setup (false)
, _in_sidechain_setup (false)
, _monitor_gain (0)
, _custom_meter_position_noted (false)
, _pinmgr_proxy (0)
, _patch_selector_dialog (0)
@ -696,14 +697,13 @@ Route::run_route (samplepos_t start_sample, samplepos_t end_sample, pframes_t nf
/* filter captured data before meter sees it */
filter_input (bufs);
if (is_monitor() && _session.listening() && !_session.is_auditioning()) {
if (is_monitor()) {
/* control/monitor bus ignores input ports when something is
feeding the listen "stream". data will "arrive" into the
route from the intreturn processor element.
*/
bufs.silence (nframes, 0);
* feeding the listen "stream". data will "arrive" into the
* route from the intreturn processor element.
*/
gain_t monitor_target_gain = _session.listening() && !_session.is_auditioning() ? 0. : 1.;
_monitor_gain = Amp::apply_gain (bufs, _session.nominal_sample_rate (), nframes, _monitor_gain, monitor_target_gain);
}
snapshot_out_of_band_data (nframes);