fix when grouping faders and one fader is on max -> retain ratio if the faders are moved down again

This commit is contained in:
Volker Fischer 2020-07-01 15:20:28 +02:00
parent e0dd12ee29
commit 695f205848

View file

@ -358,6 +358,14 @@ void CChannelFader::SetFaderLevel ( const double dLevel,
SendFaderLevelToServer ( dLevel, bIsGroupUpdate ); SendFaderLevelToServer ( dLevel, bIsGroupUpdate );
} }
else if ( dLevel >= 0 )
{
// If the level is above the maximum, we have to store it for the purpose
// of group fader movement. If you move a fader which has lower volume than
// this one and this clips at max, we want to retain the ratio between this
// fader and the others in the group.
dPreviousFaderLevel = dLevel;
}
} }
void CChannelFader::SetPanValue ( const int iPan ) void CChannelFader::SetPanValue ( const int iPan )
@ -440,7 +448,7 @@ void CChannelFader::SetMute ( const bool bState )
if ( bState ) if ( bState )
{ {
// mute channel -> send gain of 0 // mute channel -> send gain of 0
emit gainValueChanged ( 0, bIsMyOwnFader, false, false, -1 ); emit gainValueChanged ( 0, bIsMyOwnFader, false, false, -1 ); // set level ratio to in invalid value
} }
else else
{ {
@ -448,7 +456,7 @@ void CChannelFader::SetMute ( const bool bState )
if ( !bOtherChannelIsSolo || IsSolo() ) if ( !bOtherChannelIsSolo || IsSolo() )
{ {
// mute was unchecked, get current fader value and apply // mute was unchecked, get current fader value and apply
emit gainValueChanged ( CalcFaderGain ( GetFaderLevel() ), bIsMyOwnFader, false, false, -1 ); emit gainValueChanged ( CalcFaderGain ( GetFaderLevel() ), bIsMyOwnFader, false, false, -1 ); // set level ratio to in invalid value
// TODO When mute or solo is activated, the group synchronization does not work anymore. // TODO When mute or solo is activated, the group synchronization does not work anymore.
// To get a smoother experience, we adjust the previous level as soon as the mute is // To get a smoother experience, we adjust the previous level as soon as the mute is