diff --git a/src/client.cpp b/src/client.cpp
index a877af2c..8487ee07 100755
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -31,7 +31,7 @@ CClient::CClient ( const quint16 iPortNumber ) : bRun ( false ),
iSndCrdStereoBlockSizeSam ( 2 * MIN_SND_CRD_BLOCK_SIZE_SAMPLES ),
Sound ( MIN_SND_CRD_BLOCK_SIZE_SAMPLES * 2 /* stereo */ ),
Socket ( &Channel, iPortNumber ),
- iAudioInFader ( AUD_FADER_IN_MAX / 2 ),
+ iAudioInFader ( AUD_FADER_IN_MIDDLE ),
iReverbLevel ( 0 ),
bReverbOnLeftChan ( false ),
iNetwBufSizeFactIn ( DEF_NET_BLOCK_SIZE_FACTOR ),
@@ -298,27 +298,40 @@ void CClient::run()
}
}
- // mix both signals depending on the fading setting
- const double dAttFact =
- (double) ( AUD_FADER_IN_MIDDLE - abs ( AUD_FADER_IN_MIDDLE - iAudioInFader ) ) /
- AUD_FADER_IN_MIDDLE;
-
- if ( iAudioInFader > AUD_FADER_IN_MIDDLE )
+ // mix both signals depending on the fading setting, convert
+ // from double to short
+ if ( iAudioInFader == AUD_FADER_IN_MIDDLE )
{
+ // just mix channels together
for ( i = 0, j = 0; i < iMonoBlockSizeSam; i++, j += 2 )
{
- // attenuation on right channel
vecsNetwork[i] =
- Double2Short ( vecdAudioStereo[j] + dAttFact * vecdAudioStereo[j + 1] );
+ Double2Short ( vecdAudioStereo[j] + vecdAudioStereo[j + 1] );
}
}
else
{
- for ( i = 0, j = 0; i < iMonoBlockSizeSam; i++, j += 2 )
+ const double dAttFact =
+ (double) ( AUD_FADER_IN_MIDDLE - abs ( AUD_FADER_IN_MIDDLE - iAudioInFader ) ) /
+ AUD_FADER_IN_MIDDLE;
+
+ if ( iAudioInFader > AUD_FADER_IN_MIDDLE )
{
- // attenuation on left channel
- vecsNetwork[i] =
- Double2Short ( vecdAudioStereo[j + 1] + dAttFact * vecdAudioStereo[j] );
+ for ( i = 0, j = 0; i < iMonoBlockSizeSam; i++, j += 2 )
+ {
+ // attenuation on right channel
+ vecsNetwork[i] =
+ Double2Short ( vecdAudioStereo[j] + dAttFact * vecdAudioStereo[j + 1] );
+ }
+ }
+ else
+ {
+ for ( i = 0, j = 0; i < iMonoBlockSizeSam; i++, j += 2 )
+ {
+ // attenuation on left channel
+ vecsNetwork[i] =
+ Double2Short ( vecdAudioStereo[j + 1] + dAttFact * vecdAudioStereo[j] );
+ }
}
}
diff --git a/src/llconclientdlg.cpp b/src/llconclientdlg.cpp
index 1edd53df..49925d8b 100755
--- a/src/llconclientdlg.cpp
+++ b/src/llconclientdlg.cpp
@@ -116,9 +116,8 @@ CLlconClientDlg::CLlconClientDlg ( CClient* pNCliP, QWidget* parent,
// init slider controls ---
// audio in fader
SliderAudInFader->setRange ( AUD_FADER_IN_MIN, AUD_FADER_IN_MAX );
- const int iCurAudInFader = pClient->GetAudioInFader();
- SliderAudInFader->setValue ( iCurAudInFader );
SliderAudInFader->setTickInterval ( AUD_FADER_IN_MAX / 9 );
+ UpdateAudioFaderSlider();
// audio reverberation
SliderAudReverb->setRange ( 0, AUD_REVERB_MAX );
@@ -230,6 +229,41 @@ void CLlconClientDlg::closeEvent ( QCloseEvent * Event )
Event->accept();
}
+void CLlconClientDlg::UpdateAudioFaderSlider()
+{
+ // update slider and label of audio fader
+ const int iCurAudInFader = pClient->GetAudioInFader();
+ SliderAudInFader->setValue ( iCurAudInFader );
+
+ // show in label the center position and what channel is
+ // attenuated
+ if ( iCurAudInFader == AUD_FADER_IN_MIDDLE )
+ {
+ TextLabelAudFader->setText ( "Center" );
+ }
+ else
+ {
+ if ( iCurAudInFader > AUD_FADER_IN_MIDDLE )
+ {
+ // attenuation on right channel
+ TextLabelAudFader->setText ( "R -" +
+ QString().setNum ( iCurAudInFader - AUD_FADER_IN_MIDDLE ) );
+ }
+ else
+ {
+ // attenuation on left channel
+ TextLabelAudFader->setText ( "L -" +
+ QString().setNum ( AUD_FADER_IN_MIDDLE - iCurAudInFader ) );
+ }
+ }
+}
+
+void CLlconClientDlg::OnSliderAudInFader ( int value )
+{
+ pClient->SetAudioInFader ( value );
+ UpdateAudioFaderSlider();
+}
+
void CLlconClientDlg::OnConnectDisconBut()
{
// start/stop client, set button text
diff --git a/src/llconclientdlg.h b/src/llconclientdlg.h
index f007511e..1953bab8 100755
--- a/src/llconclientdlg.h
+++ b/src/llconclientdlg.h
@@ -75,6 +75,7 @@ public:
protected:
void ShowChatWindow();
+ void UpdateAudioFaderSlider();
CClient* pClient;
bool bConnected;
@@ -97,7 +98,7 @@ public slots:
void OnTimerStatus() { UpdateDisplay(); }
void OnOpenGeneralSettings();
void OnOpenChatDialog() { ShowChatWindow(); }
- void OnSliderAudInFader ( int value ) { pClient->SetAudioInFader ( value ); }
+ void OnSliderAudInFader ( int value );
void OnSliderAudReverb ( int value ) { pClient->SetReverbLevel ( value ); }
void OnRevSelL() { pClient->SetReverbOnLeftChan ( true ); }
void OnRevSelR() { pClient->SetReverbOnLeftChan ( false ); }
diff --git a/src/llconclientdlgbase.ui b/src/llconclientdlgbase.ui
index 6ba8d552..61287050 100755
--- a/src/llconclientdlgbase.ui
+++ b/src/llconclientdlgbase.ui
@@ -19,12 +19,6 @@
true
-
- 9
-
-
- 6
-
-
@@ -34,18 +28,25 @@
QFrame::Raised
-
- 9
-
6
+
+ 9
+
+
+ 9
+
+
+ 9
+
+
+ 9
+
-
-
- 5
- 5
+
0
0
@@ -66,26 +67,42 @@
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
-
+
0
-
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
0
-
-
- 1
- 3
+
0
0
@@ -101,9 +118,7 @@
-
-
- 1
- 3
+
0
0
@@ -120,18 +135,25 @@
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
-
- 7
- 3
+
0
0
@@ -147,9 +169,7 @@
-
-
- 7
- 3
+
0
0
@@ -168,12 +188,21 @@
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
@@ -191,12 +220,21 @@
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
@@ -218,12 +256,21 @@
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
@@ -254,18 +301,25 @@
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
-
- 7
- 1
+
0
0
@@ -287,9 +341,7 @@
-
-
- 0
- 0
+
0
0
@@ -319,20 +371,38 @@
Reverb
-
- 9
-
6
+
+ 9
+
+
+ 9
+
+
+ 9
+
+
+ 9
+
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
@@ -348,12 +418,21 @@
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
@@ -439,28 +518,44 @@
Audio Mixer
-
- 9
-
-
- 6
-
-
-
- 0
-
-
- 6
-
+
-
+
+
+
+ 50
+ 0
+
+
+
+ Level
+
+
+ Qt::AlignCenter
+
+
+ false
+
+
+
-
-
- 0
-
6
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
-
@@ -527,9 +622,7 @@ Fader
-
-
- 7
- 5
+
0
0
diff --git a/src/settings.cpp b/src/settings.cpp
index 8cc6e5d0..8be4cbfc 100755
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -61,7 +61,7 @@ void CSettings::ReadIniFile ( const QString& sFileName )
pClient->strName = GetIniSetting ( IniXMLDocument, "client", "name" );
// audio fader
- if ( GetNumericIniSet ( IniXMLDocument, "client", "audfad", 0, AUD_FADER_IN_MAX, iValue ) )
+ if ( GetNumericIniSet ( IniXMLDocument, "client", "audfad", AUD_FADER_IN_MIN, AUD_FADER_IN_MAX, iValue ) )
{
pClient->SetAudioInFader ( iValue );
}