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
1 changed files with 10 additions and 2 deletions

View File

@ -358,6 +358,14 @@ void CChannelFader::SetFaderLevel ( const double dLevel,
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 )
@ -440,7 +448,7 @@ void CChannelFader::SetMute ( const bool bState )
if ( bState )
{
// 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
{
@ -448,7 +456,7 @@ void CChannelFader::SetMute ( const bool bState )
if ( !bOtherChannelIsSolo || IsSolo() )
{
// 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.
// To get a smoother experience, we adjust the previous level as soon as the mute is