" + tr ( "Expert" );
break;
case SL_NOT_SET:
@@ -529,7 +529,7 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
// if no information is given, leave the tool tip empty, otherwise add header
if ( !strToolTip.isEmpty() )
{
- strToolTip.prepend ( "
Musician Profile
" );
+ strToolTip.prepend ( "
" + tr ( "Musician Profile" ) + "
" );
}
plblCountryFlag->setToolTip ( strToolTip );
@@ -746,7 +746,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
if ( strServerName.isEmpty() )
{
// no connection or connection was reset: show default title
- pGroupBox->setTitle ( "Server" );
+ pGroupBox->setTitle ( tr ( "Server" ) );
}
else
{
@@ -755,13 +755,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
// list was received, the connection was successful and the title is updated
// with the correct server name. Make sure to choose a "try to connect" title
// which is most striking (we use filled blocks and upper case letters).
- QByteArray baBlock;
- baBlock.append ( 0xE2 );
- baBlock.append ( 0x96 );
- baBlock.append ( 0x88 );
- QString sBlocks = QString().fromUtf8 ( baBlock ).repeated ( 5 );
-
- pGroupBox->setTitle ( sBlocks + " T R Y I N G T O C O N N E C T " + sBlocks );
+ pGroupBox->setTitle ( u8"\u2588\u2588\u2588\u2588\u2588 " + tr ( "T R Y I N G T O C O N N E C T" ) + u8" \u2588\u2588\u2588\u2588\u2588" );
}
}
diff --git a/src/audiomixerboard.h b/src/audiomixerboard.h
index b73fbbaa..9cbefc1c 100644
--- a/src/audiomixerboard.h
+++ b/src/audiomixerboard.h
@@ -52,7 +52,7 @@ public:
void SetChannelInfos ( const CChannelInfo& cChanInfo );
void Show() { pFrame->show(); }
void Hide() { pFrame->hide(); }
- bool IsVisible() { return plblLabel->isVisible(); }
+ bool IsVisible() { return !pFrame->isHidden(); }
bool IsSolo() { return pcbSolo->isChecked(); }
bool IsMute() { return pcbMute->isChecked(); }
void SetGUIDesign ( const EGUIDesign eNewDesign );
diff --git a/src/chatdlg.cpp b/src/chatdlg.cpp
index 1a06c53e..f2fd1769 100755
--- a/src/chatdlg.cpp
+++ b/src/chatdlg.cpp
@@ -34,14 +34,14 @@ CChatDlg::CChatDlg ( QWidget* parent, Qt::WindowFlags f ) :
// Add help text to controls -----------------------------------------------
// chat window
- txvChatWindow->setWhatsThis ( tr ( "Chat Window: The chat window "
- "shows a history of all chat messages." ) );
+ txvChatWindow->setWhatsThis ( "" + tr ( "Chat Window" ) + ": " + tr (
+ "The chat window shows a history of all chat messages." ) );
txvChatWindow->setAccessibleName ( tr ( "Chat history" ) );
// input message text
- edtLocalInputText->setWhatsThis ( tr ( "Input Message Text: Enter "
- "the chat message text in the edit box and press enter to send the "
+ edtLocalInputText->setWhatsThis ( "" + tr ( "Input Message Text" ) + ": " + tr (
+ "Enter the chat message text in the edit box and press enter to send the "
"message to the server which distributes the message to all connected "
"clients. Your message will then show up in the chat window." ) );
diff --git a/src/client.cpp b/src/client.cpp
index 515bc012..1259e3ee 100755
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -29,7 +29,8 @@
CClient::CClient ( const quint16 iPortNumber,
const QString& strConnOnStartupAddress,
const int iCtrlMIDIChannel,
- const bool bNoAutoJackConnect ) :
+ const bool bNoAutoJackConnect,
+ const QString& strNClientName ) :
vstrIPAddress ( MAX_NUM_SERVER_ADDR_ITEMS, "" ),
ChannelInfo (),
vecStoredFaderTags ( MAX_NUM_STORED_FADER_SETTINGS, "" ),
@@ -38,6 +39,7 @@ CClient::CClient ( const quint16 iPortNumber,
vecStoredFaderIsMute ( MAX_NUM_STORED_FADER_SETTINGS, false ),
iNewClientFaderLevel ( 100 ),
bConnectDlgShowAllMusicians ( true ),
+ strClientName ( strNClientName ),
vecWindowPosMain (), // empty array
vecWindowPosSettings (), // empty array
vecWindowPosChat (), // empty array
@@ -59,7 +61,7 @@ CClient::CClient ( const quint16 iPortNumber,
bIsInitializationPhase ( true ),
bMuteOutStream ( false ),
Socket ( &Channel, iPortNumber ),
- Sound ( AudioCallback, this, iCtrlMIDIChannel, bNoAutoJackConnect ),
+ Sound ( AudioCallback, this, iCtrlMIDIChannel, bNoAutoJackConnect, strNClientName ),
iAudioInFader ( AUD_FADER_IN_MIDDLE ),
bReverbOnLeftChan ( false ),
iReverbLevel ( 0 ),
@@ -945,7 +947,7 @@ vecsMultChanAudioSndCrd = vecsStereoSndCrdTMP; // TEST just copy the stereo data
void CClient::ProcessAudioDataIntern ( CVector& vecsStereoSndCrd )
{
- int i, j;
+ int i, j, iUnused;
unsigned char* pCurCodedData;
@@ -957,7 +959,7 @@ void CClient::ProcessAudioDataIntern ( CVector& vecsStereoSndCrd )
if ( iReverbLevel != 0 )
{
// calculate attenuation amplification factor
- const double dRevLev = static_cast ( iReverbLevel ) / AUD_REVERB_MAX / 2;
+ const double dRevLev = static_cast ( iReverbLevel ) / AUD_REVERB_MAX / 4;
if ( eAudioChannelConf == CC_STEREO )
{
@@ -1094,19 +1096,19 @@ void CClient::ProcessAudioDataIntern ( CVector& vecsStereoSndCrd )
{
if ( bMuteOutStream )
{
- opus_custom_encode ( CurOpusEncoder,
- &vecZeros[i * iNumAudioChannels * iOPUSFrameSizeSamples],
- iOPUSFrameSizeSamples,
- &vecCeltData[0],
- iCeltNumCodedBytes );
+ iUnused = opus_custom_encode ( CurOpusEncoder,
+ &vecZeros[i * iNumAudioChannels * iOPUSFrameSizeSamples],
+ iOPUSFrameSizeSamples,
+ &vecCeltData[0],
+ iCeltNumCodedBytes );
}
else
{
- opus_custom_encode ( CurOpusEncoder,
- &vecsStereoSndCrd[i * iNumAudioChannels * iOPUSFrameSizeSamples],
- iOPUSFrameSizeSamples,
- &vecCeltData[0],
- iCeltNumCodedBytes );
+ iUnused = opus_custom_encode ( CurOpusEncoder,
+ &vecsStereoSndCrd[i * iNumAudioChannels * iOPUSFrameSizeSamples],
+ iOPUSFrameSizeSamples,
+ &vecCeltData[0],
+ iCeltNumCodedBytes );
}
}
@@ -1150,11 +1152,11 @@ void CClient::ProcessAudioDataIntern ( CVector& vecsStereoSndCrd )
// OPUS decoding
if ( CurOpusDecoder != nullptr )
{
- opus_custom_decode ( CurOpusDecoder,
- pCurCodedData,
- iCeltNumCodedBytes,
- &vecsStereoSndCrd[i * iNumAudioChannels * iOPUSFrameSizeSamples],
- iOPUSFrameSizeSamples );
+ iUnused = opus_custom_decode ( CurOpusDecoder,
+ pCurCodedData,
+ iCeltNumCodedBytes,
+ &vecsStereoSndCrd[i * iNumAudioChannels * iOPUSFrameSizeSamples],
+ iOPUSFrameSizeSamples );
}
}
@@ -1204,6 +1206,8 @@ fflush(pFileDelay);
// update socket buffer size
Channel.UpdateSocketBufferSize();
+
+ Q_UNUSED ( iUnused )
}
int CClient::EstimatedOverallDelay ( const int iPingTimeMs )
diff --git a/src/client.h b/src/client.h
index 3dbbd0b6..dd2eacb2 100755
--- a/src/client.h
+++ b/src/client.h
@@ -107,7 +107,8 @@ public:
CClient ( const quint16 iPortNumber,
const QString& strConnOnStartupAddress,
const int iCtrlMIDIChannel,
- const bool bNoAutoJackConnect );
+ const bool bNoAutoJackConnect,
+ const QString& strNClientName );
void Start();
void Stop();
@@ -285,6 +286,7 @@ public:
CVector vecStoredFaderIsMute;
int iNewClientFaderLevel;
bool bConnectDlgShowAllMusicians;
+ QString strClientName;
// window position/state settings
QByteArray vecWindowPosMain;
@@ -399,7 +401,7 @@ public slots:
void OnJittBufSizeChanged ( int iNewJitBufSize );
void OnReqChanInfo() { Channel.SetRemoteInfo ( ChannelInfo ); }
void OnNewConnection();
- void OnCLDisconnection ( CHostAddress InetAddr ) { if ( InetAddr == Channel.GetAddress() ) { Stop(); } }
+ void OnCLDisconnection ( CHostAddress InetAddr ) { if ( InetAddr == Channel.GetAddress() ) { emit Disconnected(); } }
void OnCLPingReceived ( CHostAddress InetAddr,
int iMs );
diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp
index 1a5dc9f1..2b30023d 100755
--- a/src/clientdlg.cpp
+++ b/src/clientdlg.cpp
@@ -48,10 +48,10 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
// Add help text to controls -----------------------------------------------
// input level meter
- QString strInpLevH = tr ( "Input Level Meter: The input level "
+ QString strInpLevH = "" + tr ( "Input Level Meter" ) + ": " + tr ( "The input level "
"indicators show the input level of the two stereo channels "
- "of the current selected audio input. "
- "Make sure not to clip the input signal to avoid distortions of the "
+ "of the current selected audio input." ) + " " +
+ tr ( "Make sure not to clip the input signal to avoid distortions of the "
"audio signal." );
QString strInpLevHTT = tr ( "If the " ) + APP_NAME +
@@ -60,13 +60,13 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
"meter should flicker. If this is not the case, you have "
"probably selected the wrong input channel (e.g. line in instead "
"of the microphone input) or set the input gain too low in the "
- "(Windows) audio mixer. For a proper usage of the " ) + APP_NAME +
- tr ( " software, "
+ "(Windows) audio mixer." ) + " " + tr ( "For a proper usage of the " ) +
+ APP_NAME + tr ( " software, "
"you should not hear your singing/instrument in the loudspeaker or "
"your headphone when the " ) + APP_NAME +
tr ( " software is not connected. This can "
"be achieved by muting your input audio channel in the Playback "
- "mixer (not the Recording mixer!)." ) + TOOLTIP_COM_END_TEXT;
+ "mixer (not the Recording mixer!)." ) + TOOLTIP_COM_END_TEXT;
QString strInpLevHAccText = tr ( "Input level meter" );
QString strInpLevHAccDescr = tr ( "Simulates an analog LED level meter." );
@@ -84,8 +84,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
lbrInputLevelR->setToolTip ( strInpLevHTT );
// connect/disconnect button
- butConnect->setWhatsThis ( tr ( "Connect / Disconnect Button:"
- " Push this button to connect a server. A dialog where you can "
+ butConnect->setWhatsThis ( "" + tr ( "Connect/Disconnect Button" ) + ": " +
+ tr ( "Push this button to connect a server. A dialog where you can "
"select a server will open. If you are connected, pressing this "
"button will end the session." ) );
@@ -98,14 +98,15 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
"and disconnecting the " ) + APP_NAME + tr ( " software." ) );
// local audio input fader
- QString strAudFader = tr ( "Local Audio Input Fader: With the "
- "audio fader, the relative levels of the left and right local audio "
+ QString strAudFader = "" + tr ( "Local Audio Input Fader" ) + ": " +
+ tr ( "With the audio fader, the relative levels of the left and right local audio "
"channels can be changed. For a mono signal it acts like a panning "
"between the two channels. If, e.g., a microphone is connected to "
"the right input channel and an instrument is connected to the left "
"input channel which is much louder than the microphone, move the "
- "audio fader in a direction where the label above the fader shows "
- "L -x, where x is the current attenuation indicator." );
+ "audio fader in a direction where the label above the fader shows " ) +
+ "" + tr ( "L" ) + " -x" + tr ( ", where" ) + " x " +
+ tr ( "is the current attenuation indicator." );
lblAudioPan->setWhatsThis ( strAudFader );
lblAudioPanValue->setWhatsThis ( strAudFader );
@@ -114,14 +115,14 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
sldAudioPan->setAccessibleName ( tr ( "Local audio input fader (left/right)" ) );
// reverberation level
- QString strAudReverb = tr ( "Reverberation Level: A reverberation "
- "effect can be applied to one local mono audio channel or to both "
- "channels in stereo mode. The mone channel selection and the "
+ QString strAudReverb = "" + tr ( "Reverberation Level" ) + ": " +
+ tr ( "A reverberation effect can be applied to one local mono audio channel or to both "
+ "channels in stereo mode. The mono channel selection and the "
"reverberation level can be modified. If, e.g., "
"the microphone signal is fed into the right audio channel of the "
"sound card and a reverberation effect shall be applied, set the "
"channel selector to right and move the fader upwards until the "
- "desired reverberation level is reached. "
+ "desired reverberation level is reached." ) + " " + tr (
"The reverberation effect requires significant CPU so that it should "
"only be used on fast PCs. If the reverberation level fader is set to "
"minimum (which is the default setting), the reverberation effect is "
@@ -133,8 +134,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
sldAudioReverb->setAccessibleName ( tr ( "Reverberation effect level setting" ) );
// reverberation channel selection
- QString strRevChanSel = tr ( "Reverberation Channel Selection: "
- "With these radio buttons the audio input channel on which the "
+ QString strRevChanSel = "" + tr ( "Reverberation Channel Selection" ) + ": " +
+ tr ( "With these radio buttons the audio input channel on which the "
"reverberation effect is applied can be chosen. Either the left "
"or right input channel can be selected." );
@@ -144,8 +145,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
rbtReverbSelR->setAccessibleName ( tr ( "Right channel selection for reverberation" ) );
// delay LED
- QString strLEDDelay = tr ( "Delay Status LED: "
- "The delay status LED indicator shows the current audio delay "
+ QString strLEDDelay = "" + tr ( "Delay Status LED" ) + ": " +
+ tr ( "The delay status LED indicator shows the current audio delay "
"status. If the light is green, the delay is perfect for a jam "
"session. If the light is yellow, a session is still possible but "
"it may be harder to play. If the light is red, the delay is too "
@@ -160,20 +161,20 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
ledDelay->setAccessibleName ( tr ( "Delay status LED indicator" ) );
// buffers LED
- QString strLEDBuffers = tr ( "Buffers Status LED: "
- "The buffers status LED indicator shows the current audio/streaming "
+ QString strLEDBuffers = "" + tr ( "Buffers Status LED" ) + ": " +
+ tr ( "The buffers status LED indicator shows the current audio/streaming "
"status. If the light is green, there are no buffer overruns/underruns "
"and the audio stream is not interrupted. If the light is red, the "
- "audio stream is interrupted caused by one of the following problems:"
+ "audio stream is interrupted caused by one of the following problems:" ) +
"
"
- "
The network jitter buffer is not large enough for the current "
- "network/audio interface jitter.
"
- "
The sound card buffer delay (buffer size) is set to a too small "
- "value.
"
- "
The upload or download stream rate is too high for the current "
- "available internet bandwidth.
"
- "
The CPU of the client or server is at 100%.
"
- "
" );
+ "
" + tr ( "The network jitter buffer is not large enough for the current "
+ "network/audio interface jitter." ) + "
"
+ "
" + tr ( "The sound card buffer delay (buffer size) is set to a too small "
+ "value." ) + "
"
+ "
" + tr ( "The upload or download stream rate is too high for the current "
+ "available internet bandwidth." ) + "
"
+ "
" + tr ( "The CPU of the client or server is at 100%." ) + "
"
+ "";
lblBuffers->setWhatsThis ( strLEDBuffers );
ledBuffers->setWhatsThis ( strLEDBuffers );
@@ -200,7 +201,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
OnTimerStatus();
// init connection button text
- butConnect->setText ( CON_BUT_CONNECTTEXT );
+ butConnect->setText ( tr ( "C&onnect" ) );
// init input level meter bars
lbrInputLevelL->setValue ( 0 );
@@ -252,7 +253,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
// View menu --------------------------------------------------------------
- pViewMenu = new QMenu ( "&View", this );
+ pViewMenu = new QMenu ( tr ( "&View" ), this );
pViewMenu->addAction ( tr ( "&Connection Setup..." ), this,
SLOT ( OnOpenConnectionSetupDialog() ) );
@@ -283,7 +284,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
pMenu = new QMenuBar ( this );
pMenu->addMenu ( pViewMenu );
- pMenu->addMenu ( new CHelpMenu ( this ) );
+ pMenu->addMenu ( new CHelpMenu ( true, this ) );
// Now tell the layout about the menu
layout()->setMenuBar ( pMenu );
@@ -323,7 +324,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
{
// default icon and name for no flag selected
CurFlagIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
- sCurCountryName = "None";
+ sCurCountryName = tr ( "None" );
}
else
{
@@ -606,20 +607,20 @@ void CClientDlg::UpdateAudioFaderSlider()
// attenuated
if ( iCurAudInFader == AUD_FADER_IN_MIDDLE )
{
- lblAudioPanValue->setText ( "Center" );
+ lblAudioPanValue->setText ( tr ( "Center" ) );
}
else
{
if ( iCurAudInFader > AUD_FADER_IN_MIDDLE )
{
// attenuation on right channel
- lblAudioPanValue->setText ( "R -" +
+ lblAudioPanValue->setText ( tr ( "R" ) + " -" +
QString().setNum ( iCurAudInFader - AUD_FADER_IN_MIDDLE ) );
}
else
{
// attenuation on left channel
- lblAudioPanValue->setText ( "L -" +
+ lblAudioPanValue->setText ( tr ( "L" ) + " -" +
QString().setNum ( AUD_FADER_IN_MIDDLE - iCurAudInFader ) );
}
}
@@ -734,16 +735,6 @@ void CClientDlg::OnConnectDisconBut()
}
}
-void CClientDlg::OnDisconnected()
-{
- // channel is now disconnected, clear mixer board (remove all faders) and
- // reset the delay LED (since this is only updated on an active connection)
- MainMixerBoard->HideAll();
- ledDelay->Reset();
-
- UpdateDisplay();
-}
-
void CClientDlg::OnCentralServerAddressTypeChanged()
{
// if the server list is shown and the server type was changed, update the list
@@ -812,18 +803,18 @@ void CClientDlg::SetMyWindowTitle ( const int iNumClients )
if ( iNumClients == 0 )
{
// only application name
- setWindowTitle ( APP_NAME );
+ setWindowTitle ( pClient->strClientName );
}
else
{
if ( iNumClients == 1 )
{
- setWindowTitle ( QString ( APP_NAME ) + " (1 user)" );
+ setWindowTitle ( QString ( pClient->strClientName ) + " (1 " + tr ( "user" ) + ")" );
}
else
{
- setWindowTitle ( QString ( APP_NAME ) +
- QString ( " (%1 users)" ).arg ( iNumClients ) );
+ setWindowTitle ( QString ( pClient->strClientName ) +
+ QString ( " (%1 " + tr ( "users" ) + ")" ).arg ( iNumClients ) );
}
}
@@ -1060,7 +1051,7 @@ void CClientDlg::Connect ( const QString& strSelectedAddress,
}
// change connect button text to "disconnect"
- butConnect->setText ( CON_BUT_DISCONNECTTEXT );
+ butConnect->setText ( tr ( "D&isconnect" ) );
// set server name in audio mixer group box title
MainMixerBoard->SetServerName ( strMixerBoardLabel );
@@ -1084,7 +1075,7 @@ void CClientDlg::Disconnect()
}
// change connect button text to "connect"
- butConnect->setText ( CON_BUT_CONNECTTEXT );
+ butConnect->setText ( tr ( "C&onnect" ) );
// reset server name in audio mixer group box title
MainMixerBoard->SetServerName ( "" );
diff --git a/src/clientdlg.h b/src/clientdlg.h
index 8c870878..ccff42c8 100755
--- a/src/clientdlg.h
+++ b/src/clientdlg.h
@@ -51,10 +51,6 @@
/* Definitions ****************************************************************/
-// text strings for connection button for connect and disconnect
-#define CON_BUT_CONNECTTEXT "C&onnect"
-#define CON_BUT_DISCONNECTTEXT "D&isconnect"
-
// update time for GUI controls
#define LEVELMETER_UPDATE_TIME_MS 100 // ms
#define BUFFER_LED_UPDATE_TIME_MS 300 // ms
@@ -102,7 +98,7 @@ protected:
QTimer TimerStatus;
QTimer TimerPing;
- virtual void closeEvent ( QCloseEvent* Event );
+ virtual void closeEvent ( QCloseEvent* Event );
void UpdateDisplay();
QMenu* pViewMenu;
@@ -201,7 +197,7 @@ public slots:
{ MainMixerBoard->SetChannelLevels ( vecLevelList ); }
void OnConnectDlgAccepted();
- void OnDisconnected();
+ void OnDisconnected() { Disconnect(); }
void OnCentralServerAddressTypeChanged();
void OnGUIDesignChanged()
diff --git a/src/clientdlgbase.ui b/src/clientdlgbase.ui
index 3794e7a4..6f30a5e8 100755
--- a/src/clientdlgbase.ui
+++ b/src/clientdlgbase.ui
@@ -249,7 +249,7 @@
- 16
+ 1988
@@ -265,7 +265,7 @@
- 16
+ 1988
@@ -548,43 +548,13 @@
-
-
- QFrame::NoFrame
+
+
+
+ 0
+ 0
+
-
- 0
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
- 0
- 0
-
-
-
-
-
-
-
diff --git a/src/clientsettingsdlg.cpp b/src/clientsettingsdlg.cpp
index c3263123..0e18604c 100755
--- a/src/clientsettingsdlg.cpp
+++ b/src/clientsettingsdlg.cpp
@@ -34,34 +34,34 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// Add help text to controls -----------------------------------------------
// jitter buffer
- QString strJitterBufferSize = tr ( "Jitter Buffer Size: The jitter "
- "buffer compensates for network and sound card timing jitters. The "
+ QString strJitterBufferSize = "" + tr ( "Jitter Buffer Size" ) + ": " + tr (
+ "The jitter buffer compensates for network and sound card timing jitters. The "
"size of this jitter buffer has therefore influence on the quality of "
"the audio stream (how many dropouts occur) and the overall delay "
- "(the longer the buffer, the higher the delay). "
+ "(the longer the buffer, the higher the delay)." ) + " " + tr (
"The jitter buffer size can be manually chosen for the local client "
"and the remote server. For the local jitter buffer, dropouts in the "
"audio stream are indicated by the light on the bottom "
"of the jitter buffer size faders. If the light turns to red, a buffer "
- "overrun/underrun took place and the audio stream is interrupted. "
+ "overrun/underrun took place and the audio stream is interrupted." ) + " " + tr (
"The jitter buffer setting is therefore a trade-off between audio "
- "quality and overall delay. "
+ "quality and overall delay." ) + " " + tr (
"An auto setting of the jitter buffer size setting is available. If "
"the check Auto is enabled, the jitter buffers of the local client and "
"the remote server are set automatically "
"based on measurements of the network and sound card timing jitter. If "
- "the Auto check is enabled, the jitter buffer size faders are "
+ "the Auto check is enabled, the jitter buffer size faders are "
"disabled (they cannot be moved with the mouse)." );
QString strJitterBufferSizeTT = tr ( "In case the auto setting of the "
"jitter buffer is enabled, the network buffers of the local client and "
"the remote server are set to a conservative "
- "value to minimize the audio dropout probability. To tweak the "
- "audio delay/latency it is recommended to disable the auto setting "
- "functionality and to lower the jitter buffer size manually by "
+ "value to minimize the audio dropout probability. To tweak the "
+ "audio delay/latency it is recommended to disable the auto setting "
+ "functionality and to lower the jitter buffer size manually by "
"using the sliders until your personal acceptable limit of the amount "
"of dropouts is reached. The LED indicator will visualize the audio "
- "dropouts of the local jitter buffer by a red light" ) +
+ "dropouts of the local jitter buffer by a red light." ) +
TOOLTIP_COM_END_TEXT;
lblNetBuf->setWhatsThis ( strJitterBufferSize );
@@ -80,11 +80,11 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
ledNetw->setToolTip ( strJitterBufferSizeTT );
// sound card device
- cbxSoundcard->setWhatsThis ( tr ( "Sound Card Device: The ASIO "
- "driver (sound card) can be selected using " ) + APP_NAME +
+ cbxSoundcard->setWhatsThis ( "" + tr ( "Sound Card Device" ) + ": " +
+ tr ( "The ASIO driver (sound card) can be selected using " ) + APP_NAME +
tr ( " under the Windows operating system. Under MacOS/Linux, no sound "
"card selection is possible. If the selected ASIO driver is not valid "
- "an error message is shown and the previous valid driver is selected. "
+ "an error message is shown and the previous valid driver is selected." ) + " " + tr (
"If the driver is selected during an active connection, the connection "
"is stopped, the driver is changed and the connection is started again "
"automatically." ) );
@@ -93,19 +93,19 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
#ifdef _WIN32
// set Windows specific tool tip
- cbxSoundcard->setToolTip ( tr ( "In case the ASIO4ALL driver is used, "
+ cbxSoundcard->setToolTip ( tr ( "In case the ASIO4ALL driver is used, "
"please note that this driver usually introduces approx. 10-30 ms of "
"additional audio delay. Using a sound card with a native ASIO driver "
- "is therefore recommended. If you are using the kX ASIO "
+ "is therefore recommended." ) + " " + tr ( "If you are using the kX ASIO "
"driver, make sure to connect the ASIO inputs in the kX DSP settings "
"panel." ) + TOOLTIP_COM_END_TEXT );
#endif
// sound card input/output channel mapping
- QString strSndCrdChanMapp = tr ( "Sound Card Channel Mapping: "
- "In case the selected sound card device offers more than one "
+ QString strSndCrdChanMapp = "" + tr ( "Sound Card Channel Mapping" ) + ": " +
+ tr ( "In case the selected sound card device offers more than one "
"input or output channel, the Input Channel Mapping and Output "
- "Channel Mapping settings are visible. "
+ "Channel Mapping settings are visible." ) + " " + tr (
"For each " ) + APP_NAME + tr ( " input/output channel (Left and "
"Right channel) a different actual sound card channel can be "
"selected." );
@@ -122,8 +122,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
cbxROutChan->setAccessibleName ( tr ( "Right output channel selection combo box" ) );
// enable OPUS64
- chbEnableOPUS64->setWhatsThis ( tr ( "Enable Small Network Buffers: If enabled, "
- "the support for very small network audio packets is activated. Very small "
+ chbEnableOPUS64->setWhatsThis ( "" + tr ( "Enable Small Network Buffers" ) + ": " + tr (
+ "If enabled, the support for very small network audio packets is activated. Very small "
"network packets are only actually used if the sound card buffer delay is smaller than " ) +
QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) + tr ( " samples. The "
"smaller the network buffers, the smaller the audio latency. But at the same time "
@@ -132,35 +132,35 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
chbEnableOPUS64->setAccessibleName ( tr ( "Enable small network buffers check box" ) );
// sound card buffer delay
- QString strSndCrdBufDelay = tr ( "Sound Card Buffer Delay: The "
- "buffer delay setting is a fundamental setting of the " ) +
+ QString strSndCrdBufDelay = "" + tr ( "Sound Card Buffer Delay" ) + ": " +
+ tr ( "The buffer delay setting is a fundamental setting of the " ) +
APP_NAME + tr ( " software. This setting has influence on many "
- "connection properties. "
- "Three buffer sizes are supported:"
- "
"
- "
64 samples: This is the preferred setting since it gives lowest "
- "latency but does not work with all sound cards.
"
- "
128 samples: This setting should work on most of the available "
- "sound cards.
"
- "
256 samples: This setting should only be used if only a very slow "
- "computer or a slow internet connection is available.
" + tr ( "64 samples: This is the preferred setting since it gives lowest "
+ "latency but does not work with all sound cards." ) + "
"
+ "
" + tr ( "128 samples: This setting should work on most of the available "
+ "sound cards." ) + "
"
+ "
" + tr ( "256 samples: This setting should only be used if only a very slow "
+ "computer or a slow internet connection is available." ) + "
"
+ "
" + tr (
"Some sound card driver do not allow the buffer delay to be changed "
"from within the " ) + APP_NAME +
tr ( " software. In this case the buffer delay setting "
"is disabled. To change the actual buffer delay, this "
"setting has to be changed in the sound card driver. On Windows, press "
"the ASIO Setup button to open the driver settings panel. On Linux, "
- "use the Jack configuration tool to change the buffer size. "
+ "use the Jack configuration tool to change the buffer size." ) + " " + tr (
"If no buffer size is selected and all settings are disabled, an "
"unsupported buffer size is used by the driver. The " ) + APP_NAME +
tr ( " software will still work with this setting but with restricted "
- "performannce. "
+ "performance." ) + " " + tr (
"The actual buffer delay has influence on the connection status, the "
"current upload rate and the overall delay. The lower the buffer size, "
"the higher the probability of red light in the status indicator (drop "
"outs) and the higher the upload rate and the lower the overall "
- "delay. "
+ "delay." ) + " " + tr (
"The buffer setting is therefore a trade-off between audio "
"quality and overall delay." );
@@ -185,19 +185,19 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
butDriverSetup->setToolTip ( strSndCrdBufDelayTT );
// fancy skin
- chbGUIDesignFancy->setWhatsThis ( tr ( "Fancy Skin: If enabled, "
- "a fancy skin will be applied to the main window." ) );
+ chbGUIDesignFancy->setWhatsThis ( "" + tr ( "Fancy Skin" ) + ": " + tr (
+ "If enabled, a fancy skin will be applied to the main window." ) );
chbGUIDesignFancy->setAccessibleName ( tr ( "Fancy skin check box" ) );
// display channel levels
- chbDisplayChannelLevels->setWhatsThis ( tr ( "Display Channel Levels: "
- "If enabled, each client channel will display a pre-fader level bar." ) );
+ chbDisplayChannelLevels->setWhatsThis ( "" + tr ( "Display Channel Levels" ) + ": " +
+ tr ( "If enabled, each client channel will display a pre-fader level bar." ) );
chbDisplayChannelLevels->setAccessibleName ( tr ( "Display channel levels check box" ) );
// audio channels
- QString strAudioChannels = tr ( "Audio Channels: "
+ QString strAudioChannels = "" + tr ( "Audio Channels" ) + ": " + tr (
"Select the number of audio channels to be used. There are three "
"modes available. The mono and stereo modes use one and two "
"audio channels respectively. In the mono-in/stereo-out mode "
@@ -206,10 +206,10 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
"sound card puts the instrument on one input channel and the "
"microphone on the other channel. In that case the two input signals "
"can be mixed to one mono channel but the server mix can be heard in "
- "stereo. "
+ "stereo." ) + " " + tr (
"Enabling the stereo streaming mode will increase the "
"stream data rate. Make sure that the current upload rate does not "
- "exceed the available bandwidth of your internet connection. "
+ "exceed the available bandwidth of your internet connection." ) + " " + tr (
"In case of the stereo streaming mode, no audio channel selection "
"for the reverberation effect will be available on the main window "
"since the effect is applied on both channels in this case." );
@@ -219,7 +219,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
cbxAudioChannels->setAccessibleName ( tr ( "Audio channels combo box" ) );
// audio quality
- QString strAudioQuality = tr ( "Audio Quality: "
+ QString strAudioQuality = "" + tr ( "Audio Quality" ) + ": " + tr (
"Select the desired audio quality. A low, normal or high audio "
"quality can be selected. The higher the audio quality, the higher "
"the audio stream data rate. Make sure that the current "
@@ -231,8 +231,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
cbxAudioQuality->setAccessibleName ( tr ( "Audio quality combo box" ) );
// new client fader level
- QString strNewClientLevel = tr ( "New Client Level: The "
- "new client level setting defines the fader level of a new "
+ QString strNewClientLevel = "" + tr ( "New Client Level" ) + ": " +
+ tr ( "The new client level setting defines the fader level of a new "
"connected client in percent. I.e. if a new client connects "
"to the current server, it will get the specified initial "
"fader level if no other fader level of a previous connection "
@@ -243,8 +243,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
edtNewClientLevel->setAccessibleName ( tr ( "New client level edit box" ) );
// central server address
- QString strCentrServAddr = tr ( "Central Server Address: The "
- "central server address is the IP address or URL of the central server "
+ QString strCentrServAddr = "" + tr ( "Central Server Address" ) + ": " +
+ tr ( "The central server address is the IP address or URL of the central server "
"at which the server list of the connection dialog is managed. With the "
"central server address type either the local region can be selected of "
"the default central servers or a manual address can be specified." );
@@ -257,15 +257,15 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) );
// current connection status parameter
- QString strConnStats = tr ( "Current Connection Status "
- "Parameter: The ping time is the time required for the audio "
+ QString strConnStats = "" + tr ( "Current Connection Status "
+ "Parameter" ) + ": " + tr ( "The ping time is the time required for the audio "
"stream to travel from the client to the server and backwards. This "
"delay is introduced by the network. This delay should be as low as "
"20-30 ms. If this delay is higher (e.g., 50-60 ms), your distance to "
"the server is too large or your internet connection is not "
- "sufficient. "
+ "sufficient." ) + " " + tr (
"The overall delay is calculated from the current ping time and the "
- "delay which is introduced by the current buffer settings. "
+ "delay which is introduced by the current buffer settings." ) + " " + tr (
"The upstream rate depends on the current audio packet size and the "
"audio compression setting. Make sure that the upstream rate is not "
"higher than the available rate (check the upstream capabilities of "
@@ -285,7 +285,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// init driver button
#ifdef _WIN32
- butDriverSetup->setText ( "ASIO Setup" );
+ butDriverSetup->setText ( tr ( "ASIO Setup" ) );
#else
// no use for this button for MacOS/Linux right now -> hide it
butDriverSetup->hide();
@@ -332,23 +332,23 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
// "Audio Channels" combo box
cbxAudioChannels->clear();
- cbxAudioChannels->addItem ( "Mono" ); // CC_MONO
- cbxAudioChannels->addItem ( "Mono-in/Stereo-out" ); // CC_MONO_IN_STEREO_OUT
- cbxAudioChannels->addItem ( "Stereo" ); // CC_STEREO
+ cbxAudioChannels->addItem ( tr ( "Mono" ) ); // CC_MONO
+ cbxAudioChannels->addItem ( tr ( "Mono-in/Stereo-out" ) ); // CC_MONO_IN_STEREO_OUT
+ cbxAudioChannels->addItem ( tr ( "Stereo" ) ); // CC_STEREO
cbxAudioChannels->setCurrentIndex ( static_cast ( pClient->GetAudioChannels() ) );
// "Audio Quality" combo box
cbxAudioQuality->clear();
- cbxAudioQuality->addItem ( "Low" ); // AQ_LOW
- cbxAudioQuality->addItem ( "Normal" ); // AQ_NORMAL
- cbxAudioQuality->addItem ( "High" ); // AQ_HIGH
+ cbxAudioQuality->addItem ( tr ( "Low" ) ); // AQ_LOW
+ cbxAudioQuality->addItem ( tr ( "Normal" ) ); // AQ_NORMAL
+ cbxAudioQuality->addItem ( tr ( "High" ) ); // AQ_HIGH
cbxAudioQuality->setCurrentIndex ( static_cast ( pClient->GetAudioQuality() ) );
// central server address type combo box
cbxCentServAddrType->clear();
- cbxCentServAddrType->addItem ( "Manual" ); // AT_MANUAL
- cbxCentServAddrType->addItem ( "Default" ); // AT_DEFAULT
- cbxCentServAddrType->addItem ( "Default (North America)" ); // AT_NORTH_AMERICA
+ cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL
+ cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT
+ cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA
cbxCentServAddrType->setCurrentIndex ( static_cast ( pClient->GetCentralServerAddressType() ) );
UpdateCentralServerDependency();
@@ -364,7 +364,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
rbtBufferDelayDefault->setText ( GenSndCrdBufferDelayString (
FRAME_SIZE_FACTOR_DEFAULT * SYSTEM_FRAME_SIZE_SAMPLES,
- ", preferred" ) );
+ ", " + tr ( "preferred" ) ) );
rbtBufferDelaySafe->setText ( GenSndCrdBufferDelayString (
FRAME_SIZE_FACTOR_SAFE * SYSTEM_FRAME_SIZE_SAMPLES ) );
@@ -454,11 +454,11 @@ void CClientSettingsDlg::UpdateJitterBufferFrame()
// update slider value and text
const int iCurNumNetBuf = pClient->GetSockBufNumFrames();
sldNetBuf->setValue ( iCurNumNetBuf );
- lblNetBuf->setText ( "Size: " + QString().setNum ( iCurNumNetBuf ) );
+ lblNetBuf->setText ( tr ( "Size: " ) + QString().setNum ( iCurNumNetBuf ) );
const int iCurNumNetBufServer = pClient->GetServerSockBufNumFrames();
sldNetBufServer->setValue ( iCurNumNetBufServer );
- lblNetBufServer->setText ( "Size: " + QString().setNum ( iCurNumNetBufServer ) );
+ lblNetBufServer->setText ( tr ( "Size: " ) + QString().setNum ( iCurNumNetBufServer ) );
// if auto setting is enabled, disable slider control
const bool bIsAutoSockBufSize = pClient->GetDoAutoSockBufSize();
@@ -515,12 +515,12 @@ void CClientSettingsDlg::UpdateSoundCardFrame()
if ( bPreferredChecked || bDefaultChecked || bSafeChecked )
{
// default title text
- grbSoundCrdBufDelay->setTitle ( "Buffer Delay" );
+ grbSoundCrdBufDelay->setTitle ( tr ( "Buffer Delay" ) );
}
else
{
// special title text with buffer size information added
- grbSoundCrdBufDelay->setTitle ( "Buffer Delay: " +
+ grbSoundCrdBufDelay->setTitle ( tr ( "Buffer Delay: " ) +
GenSndCrdBufferDelayString ( iCurActualBufSize ) );
}
}
@@ -633,7 +633,7 @@ void CClientSettingsDlg::OnSoundcardActivated ( int iSndDevIdx )
QString ( tr ( "The selected audio device could not be used "
"because of the following error: " ) ) + strError +
QString ( tr ( " The previous driver will be selected." ) ),
- "Ok", nullptr );
+ tr ( "Ok" ), nullptr );
// recover old selection
cbxSoundcard->setCurrentIndex ( pClient->GetSndCrdDev() );
diff --git a/src/connectdlg.cpp b/src/connectdlg.cpp
index fc5ddc27..b3aa823e 100755
--- a/src/connectdlg.cpp
+++ b/src/connectdlg.cpp
@@ -44,13 +44,13 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
// Add help text to controls -----------------------------------------------
// server list
- lvwServers->setWhatsThis ( tr ( "Server List: The server list shows "
- "a list of available servers which are registered at the central "
- "server. Select a server from the list and press the connect button to "
+ lvwServers->setWhatsThis ( "" + tr ( "Server List" ) + ": " + tr (
+ "The server list shows a list of available servers which are registered at the "
+ "central server. Select a server from the list and press the connect button to "
"connect to this server. Alternatively, double click a server from "
"the list to connect to it. If a server is occupied, a list of the "
"connected musicians is available by expanding the list item. "
- "Permanent servers are shown in bold font. "
+ "Permanent servers are shown in bold font." ) + " " + tr (
"Note that it may take some time to retrieve the server list from the "
"central server. If no valid central server address is specified in "
"the settings, no server list will be available." ) );
@@ -58,12 +58,12 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
lvwServers->setAccessibleName ( tr ( "Server list view" ) );
// server address
- QString strServAddrH = tr ( "Server Address: The IP address or URL "
- "of the server running the " ) + APP_NAME + tr ( " server software "
- "must be set here. An optional port number can be added after the IP "
- "address or URL using a comma as a separator, e.g, "
+ QString strServAddrH = "" + tr ( "Server Address" ) + ": " + tr (
+ "The IP address or URL of the server running the " ) + APP_NAME + tr (
+ " server software must be set here. An optional port number can be added after the IP "
+ "address or URL using a colon as a separator, e.g, "
"example.org:" ) +
- QString().setNum ( LLCON_DEFAULT_PORT_NUMBER ) + tr ( ". A list of "
+ QString().setNum ( LLCON_DEFAULT_PORT_NUMBER ) + tr ( ". A list of "
"the most recent used server IP addresses or URLs is available for "
"selection." );
@@ -75,13 +75,13 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
"IP address or URL. It also stores old URLs in the combo box list." ) );
// filter
- edtFilter->setWhatsThis ( tr ( "Filter: The server list is filered "
- "by the given text. Note that the filter is case insensitive." ) );
+ edtFilter->setWhatsThis ( "" + tr ( "Filter" ) + ": " + tr ( "The server "
+ "list is filered by the given text. Note that the filter is case insensitive." ) );
edtFilter->setAccessibleName ( tr ( "Filter edit box" ) );
// show all mucisians
- chbExpandAll->setWhatsThis ( tr ( "Show All Musicians: If you check "
- "this check box, the musicians of all servers are shown. If you "
+ chbExpandAll->setWhatsThis ( "" + tr ( "Show All Musicians" ) + ": " + tr (
+ "If you check this check box, the musicians of all servers are shown. If you "
"uncheck the check box, all list view items are collapsed.") );
chbExpandAll->setAccessibleName ( tr ( "Show all musicians check box" ) );
diff --git a/src/global.h b/src/global.h
index 97823ef6..defc3489 100755
--- a/src/global.h
+++ b/src/global.h
@@ -105,8 +105,10 @@ LED bar: lbr
#define DEFAULT_SERVER_ADDRESS "jamulus.fischvolk.de"
#define DEFAULT_SERVER_NAME "Central Server"
-// download URL
-#define SOFTWARE_DOWNLOAD_URL "http://sourceforge.net/projects/llcon/files"
+// getting started and software manual URL
+#define CLIENT_GETTING_STARTED_URL "https://github.com/corrados/jamulus/wiki/Software-Manual"
+#define SERVER_GETTING_STARTED_URL "https://github.com/corrados/jamulus/wiki/Running-a-Server"
+#define SOFTWARE_MANUAL_URL "https://github.com/corrados/jamulus/blob/master/src/res/homepage/manual.md"
// determining server internal address uses well-known host and port
// (Google DNS, or something else reliable)
@@ -218,15 +220,12 @@ LED bar: lbr
#define SERVLIST_TIME_PERMSERV_MINUTES 1440 // minutes, 1440 = 60 min * 24 h
// registration response timeout
-#define REGISTER_SERVER_TIME_OUT_MS 500 // ms
+#define REGISTER_SERVER_TIME_OUT_MS 500 // ms
// defines the maximum number of times to retry server registration
// when no response is received within the timeout (before reverting
// to SERVLIST_REGIST_INTERV_MINUTES)
-#define REGISTER_SERVER_RETRY_LIMIT 5 // count
-
-// length of the moving average buffer for response time measurement
-#define TIME_MOV_AV_RESPONSE_SECONDS 30 // seconds
+#define REGISTER_SERVER_RETRY_LIMIT 5 // count
// Maximum length of fader tag and text message strings (Since for chat messages
@@ -264,6 +263,8 @@ typedef unsigned __int64 uint64_t;
typedef unsigned __int32 uint32_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int8 uint8_t;
+#elif defined ( ANDROID )
+// don't redfine types for android as these ones below don't work
#else
typedef long long int64_t;
typedef int int32_t;
diff --git a/src/main.cpp b/src/main.cpp
index 7d4a09e5..385b5fef 100755
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -33,49 +33,54 @@
#include "settings.h"
#include "testbench.h"
#include "util.h"
+#ifdef ANDROID
+# include
+#endif
// Implementation **************************************************************
int main ( int argc, char** argv )
{
+
QTextStream& tsConsole = *( ( new ConsoleWriterFactory() )->get() );
QString strArgument;
double rDbleArgument;
// initialize all flags and string which might be changed by command line
// arguments
-
#if defined( SERVER_BUNDLE ) && ( defined( __APPLE__ ) || defined( __MACOSX ) )
// if we are on MacOS and we are building a server bundle, starts Jamulus in server mode
- bool bIsClient = false;
+ bool bIsClient = false;
#else
- bool bIsClient = true;
+ bool bIsClient = true;
#endif
-
- bool bUseGUI = true;
- bool bStartMinimized = false;
- bool bShowComplRegConnList = false;
- bool bDisconnectAllClients = false;
- bool bUseDoubleSystemFrameSize = true; // default is 128 samples frame size
- bool bShowAnalyzerConsole = false;
- bool bCentServPingServerInList = false;
- bool bNoAutoJackConnect = false;
- int iNumServerChannels = DEFAULT_USED_NUM_CHANNELS;
- int iMaxDaysHistory = DEFAULT_DAYS_HISTORY;
- int iCtrlMIDIChannel = INVALID_MIDI_CH;
- quint16 iPortNumber = LLCON_DEFAULT_PORT_NUMBER;
- ELicenceType eLicenceType = LT_NO_LICENCE;
- QString strConnOnStartupAddress = "";
- QString strIniFileName = "";
- QString strHTMLStatusFileName = "";
- QString strServerName = "";
- QString strLoggingFileName = "";
- QString strHistoryFileName = "";
- QString strRecordingDirName = "";
- QString strCentralServer = "";
- QString strServerInfo = "";
- QString strWelcomeMessage = "";
+ bool bUseGUI = true;
+ bool bStartMinimized = false;
+ bool bShowComplRegConnList = false;
+ bool bDisconnectAllClientsOnQuit = false;
+ bool bUseDoubleSystemFrameSize = true; // default is 128 samples frame size
+ bool bShowAnalyzerConsole = false;
+ bool bCentServPingServerInList = false;
+ bool bNoAutoJackConnect = false;
+ bool bUseTranslation = true;
+ bool bCustomPortNumberGiven = false;
+ int iNumServerChannels = DEFAULT_USED_NUM_CHANNELS;
+ int iMaxDaysHistory = DEFAULT_DAYS_HISTORY;
+ int iCtrlMIDIChannel = INVALID_MIDI_CH;
+ quint16 iPortNumber = LLCON_DEFAULT_PORT_NUMBER;
+ ELicenceType eLicenceType = LT_NO_LICENCE;
+ QString strConnOnStartupAddress = "";
+ QString strIniFileName = "";
+ QString strHTMLStatusFileName = "";
+ QString strServerName = "";
+ QString strLoggingFileName = "";
+ QString strHistoryFileName = "";
+ QString strRecordingDirName = "";
+ QString strCentralServer = "";
+ QString strServerInfo = "";
+ QString strWelcomeMessage = "";
+ QString strClientName = APP_NAME;
// QT docu: argv()[0] is the program name, argv()[1] is the first
// argument and argv()[argc()-1] is the last argument.
@@ -195,6 +200,18 @@ int main ( int argc, char** argv )
}
+ // Disconnect all clients on quit --------------------------------------
+ if ( GetFlagArgument ( argv,
+ i,
+ "-d",
+ "--discononquit" ) )
+ {
+ bDisconnectAllClientsOnQuit = true;
+ tsConsole << "- disconnect all clients on quit" << endl;
+ continue;
+ }
+
+
// Disabling auto Jack connections -------------------------------------
if ( GetFlagArgument ( argv,
i,
@@ -207,6 +224,18 @@ int main ( int argc, char** argv )
}
+ // Disable translations ------------------------------------------------
+ if ( GetFlagArgument ( argv,
+ i,
+ "-t",
+ "--notranslation" ) )
+ {
+ bUseTranslation = false;
+ tsConsole << "- translations disabled" << endl;
+ continue;
+ }
+
+
// Show all registered servers in the server list ----------------------
// Undocumented debugging command line argument: Show all registered
// servers in the server list regardless if a ping to the server is
@@ -222,20 +251,6 @@ int main ( int argc, char** argv )
}
- // Disconnect all clients (emergency mode) -----------------------------
- // Undocumented debugging command line argument: Needed to disconnect
- // an unwanted client.
- if ( GetFlagArgument ( argv,
- i,
- "--disconnectall", // no short form
- "--disconnectall" ) )
- {
- bDisconnectAllClients = true;
- tsConsole << "- disconnect all clients" << endl;
- continue;
- }
-
-
// Show analyzer console -----------------------------------------------
// Undocumented debugging command line argument: Show the analyzer
// console to debug network buffer properties.
@@ -293,7 +308,8 @@ int main ( int argc, char** argv )
65535,
rDbleArgument ) )
{
- iPortNumber = static_cast ( rDbleArgument );
+ iPortNumber = static_cast ( rDbleArgument );
+ bCustomPortNumberGiven = true;
tsConsole << "- selected port number: " << iPortNumber << endl;
continue;
}
@@ -327,7 +343,22 @@ int main ( int argc, char** argv )
}
- // HTML status file ----------------------------------------------------
+ // Client Name ---------------------------------------------------------
+ if ( GetStringArgument ( tsConsole,
+ argc,
+ argv,
+ i,
+ "--clientname",
+ "--clientname",
+ strArgument ) )
+ {
+ strClientName = QString ( APP_NAME ) + " " + strArgument;
+ tsConsole << "- client name: " << strClientName << endl;
+ continue;
+ }
+
+
+ // Server history file name --------------------------------------------
if ( GetStringArgument ( tsConsole,
argc,
argv,
@@ -473,17 +504,41 @@ int main ( int argc, char** argv )
strCentralServer = DEFAULT_SERVER_ADDRESS;
}
+ // adjust default port number for client: use different default port than the server since
+ // if the client is started before the server, the server would get a socket bind error
+ if ( bIsClient && !bCustomPortNumberGiven )
+ {
+ iPortNumber += 10; // increment by 10
+ }
- // Application/GUI setup ---------------------------------------------------
- // Application object
- if ( !bUseGUI && !strHistoryFileName.isEmpty() )
+ // display a warning if in server no GUI mode and a history file is requested
+ if ( !bIsClient && !bUseGUI && !strHistoryFileName.isEmpty() )
{
tsConsole << "Qt5 requires a windowing system to paint a JPEG image; image will use SVG" << endl;
}
+
+
+ // Application/GUI setup ---------------------------------------------------
+ // Application object
QCoreApplication* pApp = bUseGUI
? new QApplication ( argc, argv )
: new QCoreApplication ( argc, argv );
+#ifdef ANDROID
+ // special Android coded needed for record audio permission handling
+ auto result = QtAndroid::checkPermission ( QString ( "android.permission.RECORD_AUDIO" ) );
+
+ if ( result == QtAndroid::PermissionResult::Denied )
+ {
+ QtAndroid::PermissionResultMap resultHash = QtAndroid::requestPermissionsSync ( QStringList ( { "android.permission.RECORD_AUDIO" } ) );
+
+ if ( resultHash["android.permission.RECORD_AUDIO"] == QtAndroid::PermissionResult::Denied )
+ {
+ return 0;
+ }
+ }
+#endif
+
#ifdef _WIN32
// set application priority class -> high priority
SetPriorityClass ( GetCurrentProcess(), HIGH_PRIORITY_CLASS );
@@ -498,16 +553,16 @@ int main ( int argc, char** argv )
// init resources
Q_INIT_RESOURCE(resources);
+ // load translations
+ QTranslator myappTranslator;
-// TODO translation loading does not yet work
-// // load translations
-// if ( bUseGUI )
-// {
-// QTranslator myappTranslator;
-// bool ret = myappTranslator.load ( "src/res/translation_" + QLocale::system().name() );
-//qDebug() << "translation successfully loaded: " << ret << " " << "src/res/translation_" + QLocale::system().name();
-// pApp->installTranslator ( &myappTranslator );
-// }
+ if ( bUseGUI && bUseTranslation )
+ {
+ if ( myappTranslator.load ( ":/translations/translation.qm" ) )
+ {
+ pApp->installTranslator ( &myappTranslator );
+ }
+ }
// TEST -> activate the following line to activate the test bench,
@@ -523,7 +578,8 @@ int main ( int argc, char** argv )
CClient Client ( iPortNumber,
strConnOnStartupAddress,
iCtrlMIDIChannel,
- bNoAutoJackConnect );
+ bNoAutoJackConnect,
+ strClientName );
// load settings from init-file
CSettings Settings ( &Client, strIniFileName );
@@ -568,7 +624,7 @@ int main ( int argc, char** argv )
strWelcomeMessage,
strRecordingDirName,
bCentServPingServerInList,
- bDisconnectAllClients,
+ bDisconnectAllClientsOnQuit,
bUseDoubleSystemFrameSize,
eLicenceType );
if ( bUseGUI )
@@ -636,44 +692,45 @@ int main ( int argc, char** argv )
QString UsageArguments ( char **argv )
{
return
- "Usage: " + QString ( argv[0] ) + " [option] [argument]\n"
+ "Usage: " + QString ( argv[0] ) + " [option] [optional argument]\n"
"\nRecognized options:\n"
- " -a, --servername server name, required for HTML status (server\n"
- " only)\n"
- " -c, --connect connect to given server address on startup\n"
- " (client only)\n"
- " -e, --centralserver address of the central server (server only)\n"
- " -F, --fastupdate use 64 samples frame size mode (server only)\n"
- " -g, --pingservers ping servers in list to keep NAT port open\n"
- " (central server only)\n"
" -h, -?, --help display this help text and exit\n"
" -i, --inifile initialization file name\n"
- " -j, --nojackconnect disable auto Jack connections (client only)\n"
+ " -n, --nogui disable GUI\n"
+ " -p, --port set your local port number\n"
+ " -t, --notranslation disable translation (use englisch language)\n"
+ " -v, --version output version information and exit\n"
+ "\nServer only:\n"
+ " -a, --servername server name, required for HTML status\n"
+ " -d, --discononquit disconnect all clients on quit\n"
+ " -D, --histdays number of days of history to display\n"
+ " -e, --centralserver address of the central server\n"
+ " -F, --fastupdate use 64 samples frame size mode\n"
+ " -g, --pingservers ping servers in list to keep NAT port open\n"
+ " (central server only)\n"
" -l, --log enable logging, set file name\n"
" -L, --licence a licence must be accepted on a new\n"
- " connection (server only)\n"
- " -m, --htmlstatus enable HTML status file, set file name (server\n"
- " only)\n"
- " -n, --nogui disable GUI\n"
+ " connection\n"
+ " -m, --htmlstatus enable HTML status file, set file name\n"
" -o, --serverinfo infos of the server(s) in the format:\n"
" [name];[city];[country as QLocale ID]; ...\n"
" [server1 address];[server1 name]; ...\n"
" [server1 city]; ...\n"
" [server1 country as QLocale ID]; ...\n"
- " [server2 address]; ... (server only)\n"
- " -p, --port local port number (server only)\n"
+ " [server2 address]; ...\n"
" -R, --recording enables recording and sets directory to contain\n"
- " recorded jams (server only)\n"
+ " recorded jams\n"
" -s, --server start server\n"
- " -u, --numchannels maximum number of channels (server only)\n"
- " -v, --version output version information and exit\n"
- " -w, --welcomemessage welcome message on connect (server only)\n"
- " -y, --history enable connection history and set file\n"
- " name (server only)\n"
- " -D, --histdays number of days of history to display (server only)\n"
- " -z, --startminimized start minimizied (server only)\n"
- " --ctrlmidich MIDI controller channel to listen (client only)"
- "\nExample: " + QString ( argv[0] ) + " -l -inifile myinifile.ini\n";
+ " -u, --numchannels maximum number of channels\n"
+ " -w, --welcomemessage welcome message on connect\n"
+ " -y, --history enable connection history and set file name\n"
+ " -z, --startminimized start minimizied\n"
+ "\nClient only:\n"
+ " -c, --connect connect to given server address on startup\n"
+ " -j, --nojackconnect disable auto Jack connections\n"
+ " --ctrlmidich MIDI controller channel to listen\n"
+ " --clientname client name (window title and jack client name)\n"
+ "\nExample: " + QString ( argv[0] ) + " -s -inifile myinifile.ini\n";
}
bool GetFlagArgument ( char** argv,
diff --git a/src/multicolorledbar.cpp b/src/multicolorledbar.cpp
index 0cd94af4..b67efea4 100755
--- a/src/multicolorledbar.cpp
+++ b/src/multicolorledbar.cpp
@@ -48,8 +48,7 @@ CMultiColorLEDBar::CMultiColorLEDBar ( QWidget* parent, Qt::WindowFlags f ) :
// create LED object
vecpLEDs[iLEDIdx] = new cLED ( parent );
- // add LED to layout with spacer (do not add spacer on the bottom of the
- // first LED)
+ // add LED to layout with spacer (do not add spacer on the bottom of the first LED)
if ( iLEDIdx < NUM_STEPS_LED_BAR - 1 )
{
pLEDLayout->addStretch();
@@ -77,7 +76,7 @@ CMultiColorLEDBar::CMultiColorLEDBar ( QWidget* parent, Qt::WindowFlags f ) :
// according to QScrollArea description: "When using a scroll area to display the
// contents of a custom widget, it is important to ensure that the size hint of
// the child widget is set to a suitable value."
- pProgressBar->setMinimumSize ( QSize ( 1, 1 ) );
+ pProgressBar->setMinimumSize ( QSize ( 19, 1 ) ); // 15px + 2 * 1px + 2 * 1px = 19px
pLEDMeter->setMinimumSize ( QSize ( 1, 1 ) );
// update the meter type (using the default value of the meter type)
diff --git a/src/recorder/jamrecorder.cpp b/src/recorder/jamrecorder.cpp
index 1055efdc..2c817919 100755
--- a/src/recorder/jamrecorder.cpp
+++ b/src/recorder/jamrecorder.cpp
@@ -314,22 +314,31 @@ void CJamRecorder::Init( const CServer* server,
throw std::runtime_error( (recordBaseDir.absolutePath() + " is a directory but cannot be written to").toStdString() );
}
- QObject::connect((const QObject *)server, SIGNAL ( Stopped() ),
- this, SLOT( OnEnd() ),
- Qt::ConnectionType::QueuedConnection);
+ QObject::connect( (const QObject *)server, SIGNAL ( Stopped() ),
+ this, SLOT( OnEnd() ),
+ Qt::ConnectionType::QueuedConnection );
- QObject::connect((const QObject *)server, SIGNAL ( ClientDisconnected(int) ),
- this, SLOT( OnDisconnected(int) ),
- Qt::ConnectionType::QueuedConnection);
+ QObject::connect( (const QObject *)server, SIGNAL ( ClientDisconnected ( int ) ),
+ this, SLOT( OnDisconnected ( int ) ),
+ Qt::ConnectionType::QueuedConnection );
qRegisterMetaType>();
- QObject::connect((const QObject *)server, SIGNAL ( AudioFrame(const int, const QString, const CHostAddress, const int, const CVector) ),
- this, SLOT( OnFrame(const int, const QString, const CHostAddress, const int, const CVector) ),
- Qt::ConnectionType::QueuedConnection);
+ QObject::connect( (const QObject *)server, SIGNAL ( AudioFrame( const int, const QString, const CHostAddress, const int, const CVector ) ),
+ this, SLOT( OnFrame (const int, const QString, const CHostAddress, const int, const CVector ) ),
+ Qt::ConnectionType::QueuedConnection );
+
+ QObject::connect( QCoreApplication::instance(),
+ SIGNAL ( aboutToQuit() ),
+ this, SLOT( OnAboutToQuit() ) );
iServerFrameSizeSamples = _iServerFrameSizeSamples;
+
+ thisThread = new QThread();
+ moveToThread ( thisThread );
+ thisThread->start();
}
+
/**
* @brief CJamRecorder::OnStart Start up tasks when the first client connects
*/
@@ -337,7 +346,7 @@ void CJamRecorder::OnStart() {
// Ensure any previous cleaning up has been done.
OnEnd();
- currentSession = new CJamSession(recordBaseDir);
+ currentSession = new CJamSession( recordBaseDir );
isRecording = true;
}
@@ -346,7 +355,7 @@ void CJamRecorder::OnStart() {
*/
void CJamRecorder::OnEnd()
{
- if (isRecording)
+ if ( isRecording )
{
isRecording = false;
currentSession->End();
@@ -372,6 +381,13 @@ void CJamRecorder::OnEnd()
}
}
+void CJamRecorder::OnAboutToQuit()
+{
+ OnEnd();
+
+ thisThread->exit();
+}
+
/**
* @brief CJamRecorder::SessionDirToReaper Replica of CJamRecorder::OnEnd() but using the directory contents to construct the CReaperProject object
* @param strSessionDirName
@@ -409,11 +425,11 @@ void CJamRecorder::SessionDirToReaper(QString& strSessionDirName, int serverFram
*/
void CJamRecorder::OnDisconnected(int iChID)
{
- if (!isRecording)
+ if ( !isRecording )
{
qWarning() << "CJamRecorder::OnDisconnected: channel" << iChID << "disconnected but not recording";
}
- if (currentSession == nullptr)
+ if ( currentSession == nullptr )
{
qWarning() << "CJamRecorder::OnDisconnected: channel" << iChID << "disconnected but no currentSession";
return;
@@ -434,7 +450,7 @@ void CJamRecorder::OnDisconnected(int iChID)
void CJamRecorder::OnFrame(const int iChID, const QString name, const CHostAddress address, const int numAudioChannels, const CVector data)
{
// Make sure we are ready
- if (!isRecording)
+ if ( !isRecording )
{
OnStart();
}
diff --git a/src/recorder/jamrecorder.h b/src/recorder/jamrecorder.h
index cc49705d..eb5a0581 100755
--- a/src/recorder/jamrecorder.h
+++ b/src/recorder/jamrecorder.h
@@ -132,13 +132,16 @@ private:
QList jamClientConnections;
};
-class CJamRecorder : public QThread
+class CJamRecorder : public QObject
{
Q_OBJECT
public:
- CJamRecorder(const QString recordingDirName) :
- recordBaseDir (recordingDirName), isRecording (false) {}
+ CJamRecorder ( const QString recordingDirName ) :
+ recordBaseDir ( recordingDirName ),
+ isRecording ( false )
+ {
+ }
void Init( const CServer* server, const int _iServerFrameSizeSamples );
@@ -155,16 +158,21 @@ public slots:
*/
void OnEnd();
+ /**
+ * @brief Raised when application is stopping
+ */
+ void OnAboutToQuit();
+
/**
* @brief Raised when an existing client leaves the server.
* @param iChID channel number of client
*/
- void OnDisconnected(int iChID);
+ void OnDisconnected ( int iChID );
/**
- * @brief Raised when a frame of data fis available to process
+ * @brief Raised when a frame of data is available to process
*/
- void OnFrame(const int iChID, const QString name, const CHostAddress address, const int numAudioChannels, const CVector data);
+ void OnFrame ( const int iChID, const QString name, const CHostAddress address, const int numAudioChannels, const CVector data );
private:
QDir recordBaseDir;
@@ -172,6 +180,8 @@ private:
bool isRecording;
CJamSession* currentSession;
int iServerFrameSizeSamples;
+
+ QThread* thisThread;
};
}
diff --git a/src/res/instruments/bassoon.png b/src/res/instruments/bassoon.png
new file mode 100644
index 00000000..d002ab67
Binary files /dev/null and b/src/res/instruments/bassoon.png differ
diff --git a/src/res/instruments/bassoon.svg b/src/res/instruments/bassoon.svg
new file mode 100644
index 00000000..ed6d31a3
--- /dev/null
+++ b/src/res/instruments/bassoon.svg
@@ -0,0 +1,227 @@
+
+
+
+
diff --git a/src/res/instruments/bongo.png b/src/res/instruments/bongo.png
new file mode 100644
index 00000000..3864cc70
Binary files /dev/null and b/src/res/instruments/bongo.png differ
diff --git a/src/res/instruments/bongo.svg b/src/res/instruments/bongo.svg
new file mode 100644
index 00000000..3a5f42fc
--- /dev/null
+++ b/src/res/instruments/bongo.svg
@@ -0,0 +1,142 @@
+
+
+
diff --git a/src/res/instruments/congas.png b/src/res/instruments/congas.png
new file mode 100644
index 00000000..48f696ef
Binary files /dev/null and b/src/res/instruments/congas.png differ
diff --git a/src/res/instruments/congas.svg b/src/res/instruments/congas.svg
new file mode 100644
index 00000000..db68fdf0
--- /dev/null
+++ b/src/res/instruments/congas.svg
@@ -0,0 +1,139 @@
+
+
+
diff --git a/src/res/instruments/harp.png b/src/res/instruments/harp.png
new file mode 100644
index 00000000..6b32f308
Binary files /dev/null and b/src/res/instruments/harp.png differ
diff --git a/src/res/instruments/harp.svg b/src/res/instruments/harp.svg
new file mode 100644
index 00000000..04f7b027
--- /dev/null
+++ b/src/res/instruments/harp.svg
@@ -0,0 +1,465 @@
+
+
+
+
diff --git a/src/res/instruments/oboe.png b/src/res/instruments/oboe.png
new file mode 100644
index 00000000..ab6e075a
Binary files /dev/null and b/src/res/instruments/oboe.png differ
diff --git a/src/res/instruments/oboe.svg b/src/res/instruments/oboe.svg
new file mode 100644
index 00000000..e00f40d5
--- /dev/null
+++ b/src/res/instruments/oboe.svg
@@ -0,0 +1,282 @@
+
+
+
+
diff --git a/src/res/instruments/viola.png b/src/res/instruments/viola.png
new file mode 100644
index 00000000..388c5558
Binary files /dev/null and b/src/res/instruments/viola.png differ
diff --git a/src/res/logopicture.png b/src/res/logopicture.png
deleted file mode 100755
index 30f3d7c0..00000000
Binary files a/src/res/logopicture.png and /dev/null differ
diff --git a/src/res/logopicture.xcf b/src/res/logopicture.xcf
deleted file mode 100755
index 3b0b8b35..00000000
Binary files a/src/res/logopicture.xcf and /dev/null differ
diff --git a/src/res/translation/translation_de_DE.qm b/src/res/translation/translation_de_DE.qm
new file mode 100644
index 00000000..296f9faf
Binary files /dev/null and b/src/res/translation/translation_de_DE.qm differ
diff --git a/src/res/translation/translation_de_DE.ts b/src/res/translation/translation_de_DE.ts
new file mode 100644
index 00000000..4e38a76f
--- /dev/null
+++ b/src/res/translation/translation_de_DE.ts
@@ -0,0 +1,2334 @@
+
+
+
+
+ CAboutDlg
+
+
+
+ Die
+
+
+
+
+ Software ermöglicht Musikern über das Internet in Echtzeit zu jammen.
+
+
+
+
+ Server, der die Audiodaten von allen
+
+
+
+
+ Es gibt einen
+
+
+
+
+ Teilnehmern sammelt, zusammen mischt und wieder an alle verbundenen Teilnehmer zurück schickt.
+
+
+
+
+ verwendet die folgenden Bibliotheken, Ressourcen oder Codeschnipsel:
+
+
+
+
+ Qt plattformübergreifender Anwendungsrahmen
+
+
+
+
+ Halleffekt von Perry R. Cook und Gary P. Scavone
+
+
+
+
+ Einige Bilder sind von
+
+
+
+
+ Die Bilder der Länderflaggen sind von Mark James
+
+
+
+
+ Die Details über die Codebeiträge findet man in der
+
+
+
+
+ Github Liste der Mitwirkenden
+
+
+
+
+ Über
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unter der GNU General Public License (GPL)
+
+
+
+ CAboutDlgBase
+
+
+
+ Über
+
+
+
+
+
+
+
+
+
+ Copyright (C) 2005-2020 Volker Fischer und andere
+
+
+
+
+ Ü&ber
+
+
+
+
+ Bib&liotheken
+
+
+
+
+ &Mitwirkende
+
+
+
+
+ Überse&tzung
+
+
+
+
+
+
+
+
+ CAnalyzerConsole
+
+
+
+
+
+
+
+
+
+
+
+
+ CAudioMixerBoard
+
+
+
+
+
+
+
+
+ V E R B I N D U N G S A U F B A U
+
+
+
+ CChannelFader
+
+
+
+ Kanalpegel
+
+
+
+
+ Zeigt den Audiopegel vor dem Lautstärkeregler des Kanals. Allen verbundenen Teilnehmern am Server wird ein Audiopegel zugewiesen.
+
+
+
+
+ Eingangspegel des aktuellen Teilnehmerkanals am Server
+
+
+
+
+ Kanalregler
+
+
+
+
+ Regelt die Lautstärke des Kanals. Für alle Teilnehmer, die gerade am Server verbunden sind, wird ein Lautstärkeregler angezeigt. Damit kann man seinen eigenen lokalen Mix erstellen.
+
+
+
+
+ Lokale Mixerpegeleinstellung des aktuellen Kanals am Server
+
+
+
+
+ Mit dem Mute-Schalter kann man den Kanal stumm schalten.
+
+
+
+
+ Mute Schalter
+
+
+
+
+ Bei aktiviertem Solo Status hört man nur diesen Kanal. Alle anderen Kanäle sind stumm geschaltet. Es ist möglich mehrere Kanäle auf Solo zu stellen. Dann hört man nur die Kanäle, die auf Solo gestellt wurden.
+
+
+
+
+ Solo Schalter
+
+
+
+
+ Kanalbeschriftung
+
+
+
+
+ Mit der Kanalbeschriftung wird der verbundene Teilnehmen identifiziert. Der Name, ein Bild des Instruments und eine Flagge des eigenen Landes kann im eigenen Profil ausgewählt werden.
+
+
+
+
+ Mixerkanal Instrumentenbild
+
+
+
+
+ Mixerkanalbeschriftung
+
+
+
+
+ Mixerkanal Landesflagge
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Standort
+
+
+
+
+
+
+ Spielstärke
+
+
+
+
+ Anfänger
+
+
+
+
+ Mittlere Spielstärke
+
+
+
+
+ Experte
+
+
+
+
+ Profil des Musikers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CChatDlg
+
+
+
+ Chatfenster
+
+
+
+
+ Das Chatfenster zeigt den Verlauf aller Chatnachrichten.
+
+
+
+
+ Chatverlauf
+
+
+
+
+ Chatnachricht Eingabefeld
+
+
+
+
+ Tippe die Chatnachricht in dieses Feld und drücke anschließend die Eingabetaste um die Nachricht an den Server zu schicken. Der Server verteilt die Nachrichti anschließend an alle Teilnehmer. Die eigene Nachricht wird dann im Chatfenster angezeigt.
+
+
+
+
+ Chatnachrichteneingabefeld
+
+
+
+ CChatDlgBase
+
+
+
+ Chat
+
+
+
+
+ &Löschen
+
+
+
+
+ &Schließen
+
+
+
+ CClientDlg
+
+
+
+ Eingangspegelanzeige
+
+
+
+
+ Die Eingangspegelanzeige zeigt den Pegel der beiden Stereokanäle der selektierten Audiohardware an.
+
+
+
+
+ Man sollte darauf achten, dass das Signal nicht zu stark ausgesteuert ist, um Verzerrungen des Signal zu vermeiden.
+
+
+
+
+ Wenn die
+
+
+
+
+ Software verbunden ist und die spielst dein Instrument, dann sollte die Eingangspegelanzeige flackern. Wenn das nicht der Fall ist, dann ist wahrscheinlich der falsche Eingangskanal ausgewählt (z.B. der Line-In-Kanal anstatt des Mikrofonkanals) oder der Eingangsregler im (Windows) Systemmixer ist zu niedrig eingestellt.
+
+
+
+
+ Um die
+
+
+
+
+ Software optimal zu nutzen, sollte man sein eigenes Instrument oder Gesant nicht im Lautsprecher oder Kopfhörer hören, wenn die
+
+
+
+
+ Software nicht verbunden ist. Das kann man erreichen, indem man den Eingangskanal im Wiedergabemixer stumm schaltet.
+
+
+
+
+ Eingangspegelanzeige
+
+
+
+
+ Simuliert eine analoge LED-Signalpegelanzeige.
+
+
+
+
+ Verbinden-/Trennschalter
+
+
+
+
+ Drücke diesen Knopf um sich mit dem Server zu verbinden. Es wird ein Fenster angezeigt, in dem man den Server auswählen kann. Wenn man gerade verbunden ist und den Knopf drückt, dann wird die Verbindung getrennt und die Session wird beendet.
+
+
+
+
+ Schalter zum Verbinden und Trennen
+
+
+
+
+ Wenn man diesen Knopf drückt, dann wird die Beschriftung des Knopfes von Verbinden zu Trennen geändert, das heißt, dass er eine Umschaltfunktion hat zum Verbinden und Trennen der
+
+
+
+
+
+ Software.
+
+
+
+
+ Lokaler Eingangspegelregler
+
+
+
+
+ Lokaler Eingangsregler
+
+
+
+
+ Halleffekt Pegelregler
+
+
+
+
+ Auswahl linker Kanal für Halleffekt
+
+
+
+
+ Auswahl rechter Kanal für Halleffekt
+
+
+
+
+ Wenn diese LED rot leuchtet, dann wirst du keinen Spaß haben mit der
+
+
+
+
+ LED Stautuslampe für die Verzögerung
+
+
+
+
+ LED Statuslampe für den Netzwerkpuffer
+
+
+
+
+
+ &Verbinden
+
+
+
+
+ &Ansicht
+
+
+
+
+ &Konfiguration der Verbindung...
+
+
+
+
+ Mein &Profil...
+
+
+
+
+ C&hat...
+
+
+
+
+ &Einstellungen...
+
+
+
+
+
+
+
+
+
+ &Beenden
+
+
+
+
+ Keine
+
+
+
+
+ Mitte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mit diesem Einstellregler kann der relative Pegel vom linken und rechten Eingangskanal verändert werden. Für ein Mono-Signal verhält sich der Regler wie ein Pan-Regler. Wenn, z.B., ein Mikrofon am rechten Kanal angeschlossen ist und das Instrument am linken Eingangskanal ist viel lauter als das Mikrofon, dann kann man den Lautstärkeunterschied mit diesem Regler kompensieren indem man den Regler in eine Richtung verschiebt, so dass über dem Regler
+
+
+
+
+ angezeigt wird, wobei
+
+
+
+
+ die aktuelle Dämpfung anzeigt.
+
+
+
+
+ Halleffektregler
+
+
+
+
+ Der Halleffekt kann auf einen selektierten Mono-Audiokanal oder auf beide Stereoaudiokanäle angewendet werden. Die Mono-Kanalselektion und die Hallstärke können eingestellt werden. Wenn z.B. ein Mikrofonsignal auf dem rechten Kanal anliegt und ein Halleffekt soll auf das Mikrofonsignal angewendet werden, dann muss die Hallkanalselektion auf rechts eingestellt werden und der Hallregler muss erhöht werden, bis die gewünschte Stärke des Halleffekts erreicht ist.
+
+
+
+
+ Die Berechnung des Halleffekts benötigt etwas Rechenleistung, so dass der Halleffekt nur bei schnellen Computern angewendet werden sollte. Wenn der Hallregler ganz nach unten gezogen ist, dann ist der Halleffekt ausgeschaltet und verbraucht keine Rechenleistung mehr.
+
+
+
+
+ Halleffekt Kanalselektion
+
+
+
+
+ Mit diesen Knöpfen kann ausgewählt werden, auf welches Eingangssignal der Halleffekt angewendet werden soll. Entweder der rechte oder linke Eingangskanal kann ausgewählt werden.
+
+
+
+
+ Status LED für die Verzögerung
+
+
+
+
+ Die Status-LED für die Verzögerung zeigt eine Bewertung der Gesamtverzögerung des Audiosignals. Wenn die LED grün leuchtet, dann ist die Verzögerung gering genug für das Jammen. Wenn die LED gelb anzeigt kann man noch spielen aber es wird schwieriger Lieder mit hohem Tempo zu spielen. Wenn die LED rot anzeigt, dann ist die Verzögerung zu hoch zum Jammen.
+
+
+
+
+ Status LED für den Netzwerkpuffer
+
+
+
+
+ Die Status-LED für den Netzwerkpuffer zeigt den aktuellen Status des Netzwerkstroms. Wenn die LED grün ist, dann gibt es keine Pufferprobleme. Wenn die LED rot anzeigt, dann ist der Netzwerkstrom kurz unterbrochen. Dies kann folgende Ursachen haben:
+
+
+
+
+ Der Netzwerkpuffer ist nicht groß genug eingestellt für die aktuellen Netzwerkbedingungen.
+
+
+
+
+ Der Soundkartenpuffer ist zu klein eingestellt.
+
+
+
+
+ Die Upload-Rate der Internetverbindung ist zu klein für den Netzwerkdatenstrom.
+
+
+
+
+ Die CPU des Computers ist voll ausgelastet.
+
+
+
+
+ Teilnehmer
+
+
+
+
+ Teilnehmer
+
+
+
+
+ &Trennen
+
+
+
+ CClientDlgBase
+
+
+
+ Verzögerung
+
+
+
+
+ Puffer
+
+
+
+
+ Eingang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Einstellungen
+
+
+
+
+ Chat
+
+
+
+
+ Stummschalten
+
+
+
+
+ &Verbinden
+
+
+
+
+
+
+
+
+
+ Mitte
+
+
+
+
+ Halleffekt
+
+
+
+
+ Links
+
+
+
+
+ Rechts
+
+
+
+ CClientSettingsDlg
+
+
+
+ Netzwerkpuffergröße
+
+
+
+
+ Der Netzwerkpuffer kompensiert die Netzwerk- und Soundkarten-Timing-Schwankungen. Die Größe des Netzwerkpuffers hat Auswirkungen auf die Qualität des Audiosignals (wie viele Aussetzer auftreten) und die Gesamtverzögerung (je länger der Puffer, desto größer ist die Verzögerung).
+
+
+
+
+ Die Netzwerkpuffergröße kann manuell verstellt werden, jeweils getrennt für die Applikation und den Server. Für den lokalen Netzwerkpuffer werden die Aussetzer durch die LED-Anzeige unter den Reglern angezeigt. Wenn die Lampe rot anzeigt, dann hat ein Pufferüberlauf oder ein Leerlauf des Puffers stattgefunden und der Audiodatenstrom wurde kurz unterbrochen.
+
+
+
+
+ Die Netzwerkpuffergröße ist deshalb ein Kompromiss zwischen Audioqualität und Gesamtverzögerung.
+
+
+
+
+ Die Netzwerkpuffergröße kann automatisch eingestellt werden. Wenn die Automatik aktiviert ist, dann werden die Netzwerkpuffer der Applikation und des Servers getrennt basierend auf Messungen der Netzwerkschwankungen eingestellt. Wenn die Automatik aktiviert ist, dann sind die beiden Regler gesperrt für die manuelle Verstellung (sie können nicht mit der Maus verändert werden).
+
+
+
+
+ Wenn die Automatik zum Einstellen der Netzwerkpuffer aktiviert ist, dann werden die Netzwerkpuffer der Applikation und des entfernten Servers auf einen konservativen Wert eingestellt, um eine möglichst gute Audioqualität zu garantieren. Um die Gesamtverzögerung zu optimieren, bietet es sich an, die Automatik zu deaktivieren und die Netzwerkpuffer etwas kleiner einzustellen. Die Werte sollte man so weit reduzieren, bis die Audioqualität gerade noch der persönlichen Akkzeptanz entspricht. Die LED-Anzeige hilft dabei die Audioaussetzer verursacht durch den lokalen Netzwerkpuffer zu visualisieren (wenn die LED rot leuchtet).
+
+
+
+
+ Lokale Netzwerkpuffergröße Schieberegler
+
+
+
+
+ Server Netzwerkpuffergröße Schieberegler
+
+
+
+
+ Automatik für die Netzwerkpuffergröße aktivieren
+
+
+
+
+ Netzwerkpuffer Status LED
+
+
+
+
+ Soundkartengerät
+
+
+
+
+ Der ASIO-Treiber (Soundkarte) kann ausgewählt werden mit der
+
+
+
+
+ Software unter Windows. Unter MacOS und Linux kann man die Soundkarte nicht auswählen. Wenn der selektierte ASIO-Treiber nicht gültig ist, dann wird eine Fehlermeldung angezeigt und der vorherige gültige Treiber wird wieder ausgewählt.
+
+
+
+
+ Wenn der Treiber während eine aktiven Verbindung ausgewählt wird, dann wird die Verbindung gestoppt, der neue Treiber ausgewählt und anschließend wird die Verbindung automatisch wiederhergestellt.
+
+
+
+
+ Soundkarten Auswahlbox
+
+
+
+
+ Falls der ASIO4All-Treiber verwendet wird, kann es sein, dass dieser Treiber zusätzliche 10-30 ms Verzögerung hinzufügt. Aus diesem Grund sollte man bevorzugt einen nativen ASIO-Treiber der Soundkarte verwenden, der mit dem Produkt mitgeliefert wurde.
+
+
+
+
+ Falls der kx ASIO-Treiber verwendet wird, dann muss man darauf achten, dass die ASIO-Eingänge im kx DSP-Einstellungsfenster verbunden sind.
+
+
+
+
+ Soundkarten Kanalzuweisung
+
+
+
+
+ Falls die ausgewählte Soundkarte mehr als zwei Eingangs- oder Ausgangskanäle unterstützt, dann werden die Steuerelemente für die Kanalzuweisung angezeigt.
+
+
+
+
+ Für jeden
+
+
+
+
+ Eingangs-/Ausgangskanal (linker und rechter Kanal) kann ein beliebiger Soundkartenkanal zugewiesen werden.
+
+
+
+
+ Linker Eingang Kanalauswahlbox
+
+
+
+
+ Rechter Eingang Kanalauswahlbox
+
+
+
+
+ Linker Ausgang Kanalauswahlbox
+
+
+
+
+ Rechter Ausgang Kanalauswahlbox
+
+
+
+
+ Aktiviere kleine Netzwerkpuffer
+
+
+
+
+ Falls aktiviert wird die Unterstützung für sehr kleine Netzwerk-Audiopakete aktiviert. Sehr kleine Netzwerkpakete werden nur dann verwendet, wenn der Soundkartenpuffer kleiner als
+
+
+
+
+ Samples ist. Je kleiner die Netzwerkpakete sind, desto kleiner ist auch die Audioverzögerung. Aber gleichzeitig wird dadurch die Netzwerklast erhöht und die Wahrscheinlichkeit für Audioaussetzer erhöht sich dadurch auch.
+
+
+
+
+ Aktiviere kleine Netzwerkpuffer Schalter
+
+
+
+
+ Soundkarten Puffergröße
+
+
+
+
+ Die Soundkartenpuffergröße ist eine fundamentale Einstellung der
+
+
+
+
+ Software. Diese Einstellung hat Einfluss auf viele andere Verbindungseigenschaften.
+
+
+
+
+ Drei Puffergrößen werden unterstützt
+
+
+
+
+ 64 Samples: Dies ist die bevorzugte Einstellung weil es die geringste Verzögerung hat. Diese Puffergröße funktioniert allerdings nicht mit allen Soundkarten.
+
+
+
+
+ 128 Samples: Diese Puffergröße sollte mit den meisten Soundkarten funktionieren.
+
+
+
+
+ 256 Samples: Diese Einstellung sollte nur dann verwendet werden, wenn man einen langsamen Computer oder eine langsame Internetverbindung hat.
+
+
+
+
+ Manche Soundkartentreiber unterstützen nicht das Verändern der Puffergröße innerhalb der
+
+
+
+
+ Software. In diesem Fall ist die Einstellungsmöglichkeit für die Puffergröße deaktiviert. Die Puffergröße muss man stattdessen direkt im Soundkartentreiber durchführen. Unter Windows kann man den ASIO-Einstellungen Knopf drücken um die Treibereinstellungen zu öffnen. Unter Linux benutzt man das Jack-Konfigurationsprogramm um die Puffergröße einzustellen.
+
+
+
+
+ Falls keiner der vorgegebenen Puffergrößen ausgeählt ist und alle Einstellungen deaktiviert sind, dann wird eine nicht unterstützte Puffergröße im Soundkartentreiber verwendet. Die
+
+
+
+
+ Software funktioniert trotzdem aber es könnte eine größere Verzögerung resultieren.
+
+
+
+
+ Die Puffergröße hat einen Einfluss auf den Verbindungsstatus, die aktuelle Upload-Rate und die Gesamtverzögerung. Je kleiner der Puffer, desto größer ist die Wahrscheinlichkeit für das Auftreten einer rot leuchtenden LED (was Audioaussetzer anzeigt), eine höheren Upload-Rate und eine niedrigere Gesamtverzögerung.
+
+
+
+
+ Die Puffergröße ist somit ein Kompromiss zwischen Audioqualität und Gesamtverzögerung.
+
+
+
+
+ Falls die Puffergröße nicht verstellt werden kann, dann hat der Soundkartentreiber die Einstellung gesperrt man kann es nicht innerhalb der
+
+
+
+
+ Software verändern. Unter Windows kann man den ASIO-Einstellungen Knopf drücken, um die Treibereinstellungen zu öffnen. Unter Linux kann man ein Jack-Konfigurationswerkzeug verwenden, um die Puffergröße zu verändern.
+
+
+
+
+ 128 Samples Einstellknopf
+
+
+
+
+ 256 Samples Einstellknopf
+
+
+
+
+ 512 Samples Einstellknopf
+
+
+
+
+ ASIO-Einstellungen Knopf
+
+
+
+
+ Schicke Oberfläche
+
+
+
+
+ Falls aktiviert wird eine schicke Oberfläche im Hauptfenster verwendet.
+
+
+
+
+ Schicke Oberfläche Schalter
+
+
+
+
+ Zeige Kanalsignalpegel
+
+
+
+
+ Falls aktiviert wird eine Signalpegelanzeige neben jedem Kanalfader angezeigt, welcher den Pegel vor dem Fader anzeigt.
+
+
+
+
+ Zeige Kanalpegel Schalter
+
+
+
+
+ Audiokanäle
+
+
+
+
+ Hiermit kann man die Anzahl an Audiokanälen auswählen. Es gibt drei Modi. Die Mono- und Stereomodi verwenden jeweils einen oder zwei Kanäle. Im Mono-In/Stereo-Out Modus wird ein Monosignal zum Server geschickt aber es kommt ein Stereo-Signal zurück vom Server. Dies is nützlich für den Fall, dass man an die Soundkarte ein Instrument an den einen Eingangskanal und ein Mikrofon an den anderen Eingangskanal angeschlossen hat. In diesem Fall können die beiden Signale zusammen gemischt werden und an den Server geschickt werden aber man kann das Stereo-Signal von den anderen Musikern hören.
+
+
+
+
+ Wenn man den Stereo-Modus verwendet, dann ist die Übertragungsrate etwas höher. Man muss sicher stellen, dass die Internetverbindung die höhere Rate übertragen kann.
+
+
+
+
+ Wenn der Stereo-Modus ausgewählt wurde, dann verschwindet die Kanalselektion für den Halleffekt im Hauptfenster, da der Effekt auf beide Stereokanäle angewendet wird.
+
+
+
+
+ Audiokanal Auswahlbox
+
+
+
+
+ Audioqualität
+
+
+
+
+ Wählt die gewünschte Audioqualität aus. Es wird eine niedrige, mittlere und hohe Audioqualität angeboten. Je höher die Audioqualität, desto höher ist die Netzwerkübertragungsrate. Man muss sicherstellen, dass die Internetverbindung die höhere Rate übertragen kann.
+
+
+
+
+ Audioqualität Auswahlbox
+
+
+
+
+ Pegel für neuen Teilnehmer
+
+
+
+
+ Der Pegel für neue Teilnehmer definiert die Fadereinstellung, wenn sich ein Teilnehmer neu mit dem Server verbindet. D.h. wenn ein neuer Fader erscheint, dann wird er auf den voreingestellten Pegel gesetzt. Eine Ausnahme bildet der Fall, dass der Teilnehmer vorher schon mal mit dem Server verbunden war und der Pegel gespeichert war.
+
+
+
+
+ Neuer Teilnehmer Pegel Einstellbox
+
+
+
+
+ Zentralserveradresse
+
+
+
+
+ Die Zentralserveradresse ist die IP-Adresse oder URL des Zentralservers, der die Serverlist organisiert und bereitstellt. Mit der Zentralserveradresse kann entweder die örtliche Region festgelegt werden (durch Auswahl des entsprechenden vorgegebenen Zentralservers) oder man gibt eine beliebige Adresse manuell ein.
+
+
+
+
+ Voreingestellter Zentralservertyp Auswahlbox
+
+
+
+
+ Zentralserveradresse Eingabefeld
+
+
+
+
+ Verbindungsstatus Parameter
+
+
+
+
+ Die Ping-Zeit ist die Zeit, die der Audiodatenstrom benötigt, um von der Applikation zum Server und zurück zu kommen. Diese Verzögerung wird vom Netzwerk hervorgerufen. Diese Verzögerung sollte so um die 20-30 ms sein. Falls die Verzögerung größer ist (z.B. 50-60 ms), der Abstand zum Server ist zu groß oder die Internetverbindung ist nicht ausreichend.
+
+
+
+
+ Die Gesamtverzögerung setzt sich zusammen aus der Ping-Zeit und die Verzögerung, die durch die Puffergrößen verursacht wird.
+
+
+
+
+ Die Upload-Rate hängt von der Soundkartenpuffergröße und die Audiokomprimierung ab. Man muss sicher stellen, dass die Upload-Rate immer kleiner ist als die Rate, die die Internetverbindung zur Verfügung stellt (man kann die Upload-Rate des Internetproviders z.B. mit speedtest.net überprüfen).
+
+
+
+
+ Wenn diese LED rot leuchtet, dann wirst du keinen Spaß haben mit der
+
+
+
+
+ Software.
+
+
+
+
+ ASIO-Einstellung
+
+
+
+
+
+
+
+
+
+ Mono-In/Stereo-Out
+
+
+
+
+
+
+
+
+
+ Niedrig
+
+
+
+
+ Normal
+
+
+
+
+ Hoch
+
+
+
+
+ Manuell
+
+
+
+
+ Standard
+
+
+
+
+ Standard (Nordamerika)
+
+
+
+
+ bevorzugt
+
+
+
+
+
+ Größe:
+
+
+
+
+ Puffergröße
+
+
+
+
+ Puffergröße:
+
+
+
+
+ Das ausgewählte Audiogerät kann aus folgendem Grund nicht verwendet werden:
+
+
+
+
+ Der vorherige Treiber wird wieder ausgewählt.
+
+
+
+
+
+
+
+
+ CClientSettingsDlgBase
+
+
+
+ Einstellungen
+
+
+
+
+ Soundkarte
+
+
+
+
+ Gerät
+
+
+
+
+ Eingangskanalzuweisung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ausgangskanalzuweisung
+
+
+
+
+ Aktiviere kleine Netzwerkpuffer
+
+
+
+
+ Puffergröße
+
+
+
+
+ (bevorzugt)
+
+
+
+
+ (standard)
+
+
+
+
+ (sicher)
+
+
+
+
+ Treibereinstellungen
+
+
+
+
+ Netzwerkpuffer
+
+
+
+
+
+
+
+
+
+ Lokal
+
+
+
+
+ Server
+
+
+
+
+
+ Größe
+
+
+
+
+ Sonstiges
+
+
+
+
+ Audiokanäle
+
+
+
+
+ Audioqualität
+
+
+
+
+ Pegel für neuen Teilnehmer
+
+
+
+
+
+
+
+
+
+ Schicke Oberfläche
+
+
+
+
+ Zeige Signalpegel
+
+
+
+
+ Zentralserveradresse:
+
+
+
+
+ Netzwerkrate
+
+
+
+
+
+
+ Wert
+
+
+
+
+ Ping-Zeit
+
+
+
+
+ Gesamtverzögerung
+
+
+
+ CConnectDlg
+
+
+
+ Severliste
+
+
+
+
+ Die Serverliste zeigt eine Liste von verfügbaren Server, die sich am Zentralserver registriert haben. Markiere einen Server von der Liste und drücke den Knopf Verbinden um eine Verbindung zu dem Server aufzubauen. Alternativ kann man auch den Server in der Liste direkt doppelklicken. Wenn ein Server belegt ist, dann wird eine Liste der verbundenen Musikern angezeigt. Server, die länger online sind (permanente Server) werden in Fettschrift dargestellt.
+
+
+
+
+ Es kann einen Moment dauern, bis die Serverliste vom Zentralserver empfangen wird. Falls keine gültige Zentralserveradresse in den Einstellungen angegeben ist, kann keine Liste angezeigt werden.
+
+
+
+
+ Serverliste Anzeige
+
+
+
+
+ Serveradresse
+
+
+
+
+ Die IP-Adresse oder URL des Servers, auf der die
+
+
+
+
+ Serversoftware läuft wird hier angegeben. Optional kann eine Portnummer angefügt werden. Diese wird hinter der IP-Adresse durch ein Doppelpunkt getrennt angegeben. Beispiel: example.org:
+
+
+
+
+ Eine Liste der letzten IP-Adressen oder URLs wird gespeichert und kann nachträglich wieder ausgewählt werden.
+
+
+
+
+ Serveradresse Eingabefeld
+
+
+
+
+ Enthält die aktuelle Server-IP-Adresse oder URL. Es speichert auch alte URLs in der Auswahlliste.
+
+
+
+
+ Filter
+
+
+
+
+ Die Serverliste kann mit dem eingegebenen Text gefiltert werden, d.h. es werden nur Einträge angezeigt, die dem Filtertext entsprechen. Die Groß- und Kleinschreibung des Filtertexts wird dabei nicht beachtet.
+
+
+
+
+ Filtereingabefeld
+
+
+
+
+ Zeige alle Teilnehmer
+
+
+
+
+ Ist diese Einstellung angehakt, dann werden alle Musiker auf allen Servern angezeigt. Wird der Haken entfernt, dann werden alle Listeneinträge eingeklappt und die verbundenen Musikernamen werden verborgen.
+
+
+
+
+ Zeige alle Teilnehmer Schalter
+
+
+
+ CConnectDlgBase
+
+
+
+ Verbindungseinstellung
+
+
+
+
+ Filter
+
+
+
+
+ Zeige alle Teilnehmer
+
+
+
+
+ Servername
+
+
+
+
+ Ping-Zeit
+
+
+
+
+ Teilnehmer
+
+
+
+
+ Standort
+
+
+
+
+ Servername/Adresse
+
+
+
+
+ A&bbrechen
+
+
+
+
+ &Verbinden
+
+
+
+ CHelpMenu
+
+
+
+ &Hilfe
+
+
+
+
+
+ &Erste Schritte...
+
+
+
+
+ Software&handbuch...
+
+
+
+
+ Konte&xthilfe
+
+
+
+
+ Ü&ber...
+
+
+
+ CLicenceDlg
+
+
+
+ Ich &stimme den Lizenzbedingungen zu
+
+
+
+
+ Einwilligen
+
+
+
+
+ Ablehnen
+
+
+
+
+ Durch das Verbinden mit diesem Server und das Akzeptieren des Lizenztextes willigst du folgenden Bedingungen ein:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CMusProfDlg
+
+
+
+ -Server. Dieses Schild wird auch bei allen anderen Teilnehmern, die mit dem gleichen Server verbunden sind, angezeigt. Wenn der Name leer gelassen wurde, dann wird die IP-Adresse stattdessen angezeigt.
+
+
+
+
+ Alias oder Name Eingabefeld
+
+
+
+
+ Instrumentenbild Knopf
+
+
+
+
+ Landesflagge Knopf
+
+
+
+
+ Stadt Eingabefeld
+
+
+
+
+ Fähigkeit Auswahlbox
+
+
+
+
+
+
+ Kein
+
+
+
+
+
+ Musikerprofil
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Land
+
+
+
+
+ Stadt
+
+
+
+
+ Können
+
+
+
+
+ &Schließen
+
+
+
+
+ Anfänger
+
+
+
+
+ Mittlere Spielstärke
+
+
+
+
+ Experte
+
+
+
+
+ Schreibe den Namen oder Alias hier rein so dass die anderen Musikern mit denen du spielst wissen wer du bist. Zusätzlich kannst du dein Instrument auswählen und eine Flagge des Landes auswählen in dem du dich befindest. Deine Stadt und deine Spielstärke des Instruments kannst du ebenso angeben.
+
+
+
+
+ Was man hier sieht wird auch am Fader im Mixer angezeigt, wenn du mit einem
+
+
+
+
+ Schlagzeug
+
+
+
+
+ Djembe
+
+
+
+
+ E-Gitarre
+
+
+
+
+ Akustikgitarre
+
+
+
+
+ E-Bass
+
+
+
+
+ Keyboard
+
+
+
+
+ Synthesizer
+
+
+
+
+ Flügel
+
+
+
+
+ Akkordeon
+
+
+
+
+ Gesang
+
+
+
+
+ Mikrofon
+
+
+
+
+ Mundharmonika
+
+
+
+
+ Trompete
+
+
+
+
+ Posaune
+
+
+
+
+ Waldhorn
+
+
+
+
+ Tuba
+
+
+
+
+ Saxophon
+
+
+
+
+ Klarinette
+
+
+
+
+ Flöte
+
+
+
+
+ Violine
+
+
+
+
+ Cello
+
+
+
+
+ Kontrabass
+
+
+
+
+ Recorder
+
+
+
+
+
+
+
+
+
+ Zuhörer
+
+
+
+
+ Gitarre+Gesang
+
+
+
+
+ Keyboard+Gesang
+
+
+
+
+
+
+
+
+
+ Fagott
+
+
+
+
+ Oboe
+
+
+
+
+ Harfe
+
+
+
+
+ Viola
+
+
+
+
+ Congas
+
+
+
+
+ Bongos
+
+
+
+ CServerDlg
+
+
+
+ Teilnehmerliste
+
+
+
+
+ Die Teilnehmerliste zeigt alle gerade mit dem Server verbunden Musiker an. Für jeden Teilnehmer werden zusätzliche Informationen wie die IP-Adresse und Namen angezeigt.
+
+
+
+
+ Teilnehmerliste
+
+
+
+
+ Starte minimiert beim Starten des Betriebssystems
+
+
+
+
+ Wenn diese Funktion angehakt ist, dann wird der
+
+
+
+
+ -Server automatisch mit dem Betriebssystemstart geladen und erscheint minimiert in der Systemleiste als Icon.
+
+
+
+
+ Zeige den Creative Commons Lizenzdialog
+
+
+
+
+ Falls aktiviert wird ein Create Commons BY-NC-SA 4.0 Lizenzdialog angezeigt, wenn ein neuer Teilnehmer versucht sich mit dem Server zu verbinden.
+
+
+
+
+ Veröffentliche meinen Server
+
+
+
+
+ Mit dieser Funktion wird der eigene Server in der Serverliste des Zentralservers registriert so dass alle anderen Applikationsnutzer den
+
+
+
+
+ -Server in der Liste sehen können und sich mit ihm verbinden können. Die Registrierung mit dem Zentralserver wird periodisch erneuert um sicherzugehen, dass alle registrierten Server auch wirklich erreichbar sind.
+
+
+
+
+ Registrierungsstatus
+
+
+
+
+ Wenn der eigene Server veröffentlicht wurde, dann zeigt der Registrierungsstatus and, ob die Registrierung erfolgreich war oder nicht.
+
+
+
+
+ Zentralserveradresse
+
+
+
+
+ Die Zentralserveradrees ist die IP-Adresse oder URL des Zentralservers bei dem man sich registrieren möchte. Mit dem Zentralservertyp legt man die Region fest, in der man sich befindet. Außerdem kann eine freie Adresse eingetragen werden.
+
+
+
+
+ Voreingestellter Zentralservertyp Auswahlbox
+
+
+
+
+ Zentralserveradresse Eingabefeld
+
+
+
+
+ Servername
+
+
+
+
+ Der Servername identifiziert deinen Server in der Serverliste. Falls kein Name angegeben wurde, dann wird die IP-Adresse stattdessen angezeigt.
+
+
+
+
+ Servername Eingabefeld
+
+
+
+
+ Standort Stadt
+
+
+
+
+ Hier kann man die Stadt angeben, in der sich der Server befindet. Falls eine Stadt angegeben wurde, dann wird die in der Serverliste angezeigt.
+
+
+
+
+ Stadt in der sich der Server befindet Eingabefeld
+
+
+
+
+ Standort Land
+
+
+
+
+ Hier kann man das Land eingeben, in dem sich der Server befindet. Falls ein Land angegeben wurde, dann wird das in der Serverliste angezeigt.
+
+
+
+
+ Land in dem sich der Server befindet Auswahlbox
+
+
+
+
+
+ &Beenden
+
+
+
+
+ &Ausblenden vom
+
+
+
+
+
+
+ -Server
+
+
+
+
+ Ö&ffne den
+
+
+
+
+ Server
+
+
+
+
+ Manuell
+
+
+
+
+ Standard
+
+
+
+
+ Standard (Nordamerika)
+
+
+
+
+
+
+
+
+
+ &Fenster
+
+
+
+
+ Nicht registriert
+
+
+
+
+ Ungültige Adresse
+
+
+
+
+ Registrierung angefordert
+
+
+
+
+ Registrierung fehlgeschlagen
+
+
+
+
+ Überprüfe Version des Servers
+
+
+
+
+ Registriert
+
+
+
+
+ Zentralserver voll
+
+
+
+
+ Unbekannter Wert
+
+
+
+ CServerDlgBase
+
+
+
+ Teilnehmer IP:Port
+
+
+
+
+
+ Name
+
+
+
+
+ Netzwerkpuffergröße
+
+
+
+
+ Starte minimiert beim Windows-Start
+
+
+
+
+ Zeige den Creative Commons BY-NC-SA 4.0 Lizenzdialog
+
+
+
+
+ Veröffentliche meinen Server in der Serverliste
+
+
+
+
+
+
+
+
+
+ Zentralserveradresse
+
+
+
+
+ Meine Serverinformationen
+
+
+
+
+ Standort: Stadt
+
+
+
+
+ Standort: Land
+
+
+
+
+
+
+
+
+ CSound
+
+
+
+ Der Jack-Server läuft nicht. Diese Software benötigt aber einen Jack-Server um zu funktionieren. Normalerweise wird der Jack-Server automatisch gestartet. Es scheint so, als hätte dieser Automatismus nicht funktioniert. Versuche den Jack-Server manuell zu starten.
+
+
+
+
+ Die Jack-Server-Samplerate ist verschieden zu der benötigen. Die benötigte Samplerate ist:
+
+
+
+
+ Do kannst ein Werkzeug wie <i><a href=http://qjackctl.sourceforge.net>QJackCtl</a></li> verwenden um die Samplerate umzustellen.
+
+
+
+
+ Versichere dich, dass die Frames/Perioden auf einen niedrigen Wert wie z.B.
+
+
+
+
+ eingestellt ist um eine niedrige Verzögerung zu erreichen.
+
+
+
+
+
+ Die Jack-Portregistrierung ist fehlgeschlagen.
+
+
+
+
+ Der Jack-Client kann nicht aktiviert werden.
+
+
+
+
+ Der Jack-Server wurde gestoppt. Diese Software benötigt aber einen aktiven Jack-Server um zu funktionieren. Versuche die Software neu zu starten um das Problem zu lösen.
+
+
+
+
+ CoreAudio Eingang AudioHardwareGetProperty Aufruf schlug fehl. Es scheint als wäre keine Soundkarte im System vorhanden.
+
+
+
+
+ CoreAudio Ausgang AudioHardwareGetProperty Aufruf schlug fehl. Es scheint, dass keine Soundkarte ist im System verfügbar.
+
+
+
+
+ Die aktuelle Eingangssamplerate von %1 Hz wird nicht unterstützt. Bitte öffne die Audio-MIDI-Setup-Applikation in Applikationen->Werkzeuge und versuche die Samplerate auf %2 Hz einzustellen.
+
+
+
+
+ Die aktuelle Ausgangssamplerate von %1 Hz wird nicht unterstützt. Bitte öffne die Audio-MIDI-Setup-Applikation in Applikationen->Werkzeuge und versuche die Samplerate auf %2 Hz einzustellen.
+
+
+
+
+ Das Audioeingangsstromformat von diesem Audiogerät ist nicht kompatibel mit dieser Software.
+
+
+
+
+ Das Audioausgangsstromformat von diesem Audiogerät ist nicht kompatibel mit dieser Software.
+
+
+
+
+ Die Puffergrößen vom aktuellen Eingangs- und Ausgangsaudiogerät kann nicht auf einen gemeinsamen Wert eingestellt werden. Bitte wähle ein anderes Eingangs-/Ausgangsgerät aus der Geräteliste aus.
+
+
+
+
+ Der Audiotreiber konnte nicht initialisiert werden.
+
+
+
+
+ Das Audiogerät unterstützt nicht die benötigte Samplerate. Die benötigte Samplerate ist:
+
+
+
+
+ Das Audiogerät unterstützt nicht die benötigte Samplerate. Dieser Fehler kann auftreten, wenn ein Audiogerät wie das Roland UA-25EX verwendet wird, bei dem die Samplerate per Schalter am Gerät verstellt werden muss. Falls das der Fall sein sollte, dann stelle bitte den Schalter auf
+
+
+
+
+ Hz am Gerät und starte die
+
+
+
+
+ Software neu.
+
+
+
+
+ Das Audiogerät unterstützt nicht die benötigte Anzahl an Kanälen. Die benötigte Anzahl an Kanälen für den Eingang und den Ausgang ist:
+
+
+
+
+
+ Das benötigte Audio Sampleformat ist nicht verfügbar.
+
+
+
+
+ Kein ASIO-Gerätetreiber wurde gefunden.
+
+
+
+
+ Die
+
+
+
+
+ Software benötigt aber ein ASIO Audiointerface um zu funktionieren. Dies ist keine Standard-Windowsschnittstelle und benötigt deshalb einen speziellen Treiber. Entweder die Soundkarte liefert einen nativen ASIO-Treiber mit (was empfohlen wird) oder man versucht es mit dem ASIO4All-Universaltreiber.
+
+
+
+
+ Fehler beim Schließen des Datenstroms: $s
+
+
+
+ CSoundBase
+
+
+
+ Ungültige Geräteauswahl.
+
+
+
+
+ Die Audiotreibereigenschaften haben sich geändert. Die neuen Einstellungen sind nicht mehr kompatibel zu dieser Software. Das ausgewählte Audiogerät konnte nicht benutzt werden wegen folgendem Fehler:
+
+
+
+
+ Bitte starte die Software neu.
+
+
+
+
+
+
+
+
+
+ Kein benutzbares
+
+
+
+
+ Audiogerät (Treiber) konnte gefunden werden.
+
+
+
+
+ Im folgenden wird eine Liste aller gefundenen Audiogeräte mit entsprechender Fehlermeldung angezeigt:
+
+
+
+
+ Willst du die ASIO-Treibereinstellungen öffnen?
+
+
+
+
+ konnte nicht gestartet werden wegen Problemen mit dem Audiogerät.
+
+
+
diff --git a/src/res/translation/translation_es_ES.qm b/src/res/translation/translation_es_ES.qm
new file mode 100644
index 00000000..1b23987e
Binary files /dev/null and b/src/res/translation/translation_es_ES.qm differ
diff --git a/src/res/translation/translation_es_ES.ts b/src/res/translation/translation_es_ES.ts
new file mode 100644
index 00000000..f7289637
--- /dev/null
+++ b/src/res/translation/translation_es_ES.ts
@@ -0,0 +1,2338 @@
+
+
+
+
+ CAboutDlg
+
+
+
+ El software
+
+
+
+ software permite a músicos realizar jam sessions en tiempo real por internet. Hay un
+
+
+
+
+ permite a músicos realizar jam sessions en tiempo real por internet.
+
+
+
+
+ servidor que recoge el audio de cada
+
+
+
+
+ Hay un
+
+
+
+
+ cliente, mezcla el audio y lo envía de vuelta a cada cliente.
+
+
+
+
+ utiliza las siguientes librerías, recursos o fragmentos de código:
+
+
+
+
+ Qt cross-platform application framework
+
+
+
+
+ Código de reverberación de audio de Perry R. Cook y Gary P. Scavone
+
+
+
+
+ Algunos pixmaps son del
+
+
+
+
+ Iconos de banderas nacionales de Mark James
+
+
+
+
+ Para más detalles sobre los contribuidores consulta la
+
+
+
+
+ lista de Contribuidores en Github
+
+
+
+
+ Acerca de
+
+
+
+
+ , Versión
+
+
+
+
+ Internet Jam Session Software
+
+
+
+
+ Bajo la GNU General Public License (GPL)
+
+
+
+ CAboutDlgBase
+
+
+
+ Acerca de
+
+
+
+
+ TextLabelVersion
+
+
+
+
+ Copyright (C) 2005-2020 Volker Fischer y otros
+
+
+
+
+ A&cerca de
+
+
+
+
+ &Librerías
+
+
+
+
+ &Contribuidores
+
+
+
+
+ &Traducción
+
+
+
+
+ &OK
+
+
+
+ CAnalyzerConsole
+
+
+
+ Analyzer Console
+
+
+
+
+ Tasa de Error de Cada Tamaño de Buffer
+
+
+
+ CAudioMixerBoard
+
+
+
+ Servidor
+
+
+
+
+ I N T E N T A N D O C O N E C T A R
+
+
+
+ CChannelFader
+
+
+
+ Nivel Canal
+
+
+
+
+ Muestra el nivel de audio pre-fader de este canal. Todos los clientes conectados al servidor tienen un nivel de audio asignado, el mismo para cada cliente.
+
+
+
+
+ Nivel de entrada del canal de audio actual en el servidor
+
+
+
+
+ Fader Mezclador
+
+
+
+
+ Ajusta el nivel de audio de este canal. Todos los clientes conectados al servidor tienen asignado un fader en el cliente, ajustando la mezcla local.
+
+
+
+
+ Ajuste local de la mezcla del canal de audio actual en el servidor
+
+
+
+
+ Activando Mute, se puede mutear el canal de audio.
+
+
+
+
+ Botón Mute
+
+
+
+
+ Activando Solo, todos los demás canales de audio excepto este se mutean. Es posible activar esta función para más de un canal.
+
+
+
+
+ Botón Solo
+
+
+
+
+ Etiqueta Fader
+
+
+
+
+ La etiqueta del fader identifica al cliente conectado. El nombre de la etiqueta, la imagen de tu instrumento y la bandera de tu país se pueden establecer en la ventana principal.
+
+
+
+
+ Imagen mezclador canal instrumento
+
+
+
+
+ Etiqueta mezclador canal (etiqueta fader)
+
+
+
+
+ Bandera país mezclador canal
+
+
+
+
+ MUTE
+
+
+
+
+ SOLO
+
+
+
+
+ Alias/Nombre
+
+
+
+
+ Instrumento
+
+
+
+
+ Ubicación
+
+
+
+
+
+
+ Nivel Habilidad
+
+
+
+
+ Principiante
+
+
+
+
+ Intermedio
+
+
+
+
+ Experto
+
+
+
+
+ Perfil Músico
+
+
+
+
+
+
+ Mute
+
+
+
+
+
+
+ Solo
+
+
+
+ CChatDlg
+
+
+
+ Ventana Chat
+
+
+
+
+ La ventana del chat muestra un historial de todos los mensajes.
+
+
+
+
+ Historial chat
+
+
+
+
+ Texto Mensaje
+
+
+
+
+ Teclea el mensaje en el campo y pulsa Enter para enviar el mensaje al servidor, el cual distribuye el mensaje a todos los clientes conectados. Tu mensaje se mostrará en la ventana del chat.
+
+
+
+
+ Campo nuevo texto chat
+
+
+
+ CChatDlgBase
+
+
+
+ Chat
+
+
+
+
+ Va&ciar
+
+
+
+
+ &Cerrar
+
+
+
+ CClientDlg
+
+
+
+ Indicador nivel entrada
+
+
+
+
+ Los indicadores de nivel de entrada muestran el nivel de entrada de los dos canales estéreo de la entrada de audio actualmente seleccionada.
+
+
+
+
+ Asegúrate de no clipear la señal de entrada para evitar distorsiones de la señal de audio.
+
+
+
+
+ Si el software
+
+
+
+
+ está conectado y tocas tu instrumento/cantas por el micrófono, el LED del indicador debería parpadear. Si no es así, seguramente has seleccionado el canal de entrada equivocado (por ej. line in en lugar de la entrada del micrófono) o está muy bajo el gain de entrada en el mezclador de audio (Windows).
+
+
+
+
+ Para un uso adecuado del software
+
+
+
+
+ , no deberías oír tu voz/instrumento por el altavoz o los auriculares cuando el software
+
+
+
+
+ no está conectado. Esto se puede hacer muteando tu entrada de audio en el mezclador de Reproducción (¡y no en el de Grabación!).
+
+
+
+
+ Indicador nivel entrada
+
+
+
+
+ Simula un indicador analógico de LEDs.
+
+
+
+
+ Botón Conexión/Desconexión
+
+
+
+
+ Pulsa este botón para conectar con un servidor. Se abrirá una ventana donde puedes seleccionar un servidor. Si estás conectado, este botón finalizará la sesión.
+
+
+
+
+ Botón de conexión y desconexión
+
+
+
+
+ Pulsando este botón cambia el texto del mismo de Conectar a Desconectar; esto es, tiene la función de conmutador para conectar y desconectar el software
+
+
+
+
+
+ .
+
+
+
+
+ Fader Entrada Audio Local
+
+
+
+
+ Fader entrada audio local (izq/dcho)
+
+
+
+
+ Nivel efecto reverberación
+
+
+
+
+ Selección canal izq para reverberación
+
+
+
+
+ Selección canal dcho para reverberación
+
+
+
+
+ Si este indicador LED se vuelve rojo, no te divertirás demasiado utilizando el
+
+
+
+
+ Indicador LED estado retardo
+
+
+
+
+ Indicador LED estado buffers
+
+
+
+
+
+ C&onectar
+
+
+
+
+ &Ver
+
+
+
+
+ &Configuración de Conexión...
+
+
+
+
+ Mi &Perfil...
+
+
+
+
+ C&hat...
+
+
+
+
+ &Configuración...
+
+
+
+
+ &Analyzer Console...
+
+
+
+
+ S&alir
+
+
+
+
+ Ninguno
+
+
+
+
+ Centro
+
+
+
+
+ R
+
+
+
+
+
+ L
+
+
+
+
+ Con el fader de audio, los niveles relativos de los canales locales de audio derecho e izquierdo pueden cambiarse. Para una señal mono actúa como paneo entre los dos canales. Por ej., si se conecta un miocrófono al canal derecho y un instrumento al izquierdo que suena mucho más alto que el micrófono, mueve el fader en una dirección donde la etiqueta sobre el fader muestra
+
+
+
+
+ , donde
+
+
+
+
+ es el indicador actual de atenuación.
+
+
+
+
+ Nivel Reverberación
+
+
+
+
+ Se puede aplicar un efecto de reverberación a un canal local de audio mono o a ambos canales en modo estéreo. Se puede modificar la selección de canales en modo mono y el nivel de reverberación. Por ej., si la señal del micrófono va por el canal derecho de la tarjeta de sonido y se desea aplicar reverberación, cambia el selector de canal a derecho y sube el fader hasta alcanzar el nivel de reverberación deseado.
+
+
+
+
+ El efecto de reverberación require un esfuerzo importante del procesador, por lo que solo debería usarse en ordenadores potentes. Si se deja el fader de reverberación al mínimo (la configuración por defecto), el efecto estará desactivado y no significará ninguna carga adicional para el procesador.
+
+
+
+
+ Selección Canal Reverberación
+
+
+
+
+ Con estos botones se puede escoger el canal de entrada de audio al que se aplica el efecto de reverberación. Se pueden elegir los canales de entrada izquierdo o derecho.
+
+
+
+
+ LED Estado Retardo
+
+
+
+
+ El indicador LED del estado del retardo muestra el estado actual del retardo del audio. Si está en verde, el retardo es perfecto para una jam session. Si está en amarillo, la sesión aún es posible, pero quizá sea más difícil tocar. Si está en rojo, el retardo es demasiado alto para tocar.
+
+
+
+
+ LED Estado Buffers
+
+
+
+
+ El indicador LED del estado de buffers muestra el estado actual del flujo de audio. Si está verde, no hay problemas de buffer y no se interrumpe el flujo de audio. Si está rojo, el flujo de audio se interrumpe, a causa de uno de los siguientes problemas:
+
+
+
+
+ El jitter buffer de red no es lo suficientemente grande para el jitter actual de la red/interfaz de audio.
+
+
+
+
+ El retardo de buffer de la tarjeta de audio (tamaño buffer) tiene un valor demasiado bajo.
+
+
+
+
+ La tasa de subida o bajada is demasiado alta para el ancho de banda disponible de internet.
+
+
+
+
+ El procesador del cliente o del servidor está al 100%.
+
+
+
+
+ usuario
+
+
+
+
+ usuarios
+
+
+
+
+ D&esconectar
+
+
+
+ CClientDlgBase
+
+
+
+ Retardo
+
+
+
+
+ Buffers
+
+
+
+
+ Entrada
+
+
+
+
+ L
+
+
+
+
+ R
+
+
+
+
+ Configuración
+
+
+
+
+ Chat
+
+
+
+
+ Mutearme Yo
+
+
+
+
+ C&onectar
+
+
+
+
+ Paneo
+
+
+
+
+ Centro
+
+
+
+
+ Reverb
+
+
+
+
+ Izq
+
+
+
+
+ Dcho
+
+
+
+ CClientSettingsDlg
+
+
+
+ Tamaño Jitter Buffer
+
+
+
+
+ El jitter buffer compensa el jitter de la red y la tarjeta de audio. El tamaño de este buffer tiene por tanto un impacto sobre la calidad del flujo de audio (el número de caídas de la señal) y el retardo total (a mayor buffer, mayor retardo).
+
+
+
+
+ El tamaño del jitter buffer se puede establecer para el cliente local y para el servidor remoto. Para el jitter buffer local, las caídas del flujo de audio se indican mediante la luz debajo de los faders del jitter buffer. Si la luz se vuelve roja, significa que ha habido una interrupción del flujo de audio.
+
+
+
+
+ Por tanto la configuración del jitter buffer es un compromiso entre calidad y retardo total.
+
+
+
+
+ Hay disponible una configuración automática del jitter buffer. Si se activa Auto, los jitter buffers del cliente local y del servidor remoto se configuran automáticamente basándose en mediciones del jitter de la red y la tarjeta de audio. Si se activa esta opción, los faders quedan deshabilitados (no pueden moverse con el ratón).
+
+
+
+
+ En caso de activar la configuración automática del jitter buffer, los buffers de red del cliente local y del servidor remoto se asignan a un valor conservador para minimizar la probabilidad de fallos de audio. Para ajustar el retardo de audio/latencia se recomienda desactivar la función automática y bajar los valores de jitter buffer manualmente utilizando los controles deslizantes hasta alcanzar un límite aceptable de caídas de audio. El indicador LED ofrece una visualización de las caídas de audio mediante una luz roja.
+
+
+
+
+ Control deslizante jitter buffer local
+
+
+
+
+ Control deslizante jitter buffer servidor
+
+
+
+
+ Interruptor auto jitter buffer
+
+
+
+
+ Indicador LED estado jitter buffer
+
+
+
+
+ Dispositivo de Audio
+
+
+
+
+ El driver ASIO (tarjeta de audio) se puede seleccionar utilizando
+
+
+
+
+ en el sistema operativo Windows. En MacOs/Linux no es posible seleccionar la tarjeta de audio. Si el driver ASIO no es válido se muestra un mensaje de error y se selecciona el driver válido anterior.
+
+
+
+
+ Si el driver se selecciona durante una conexión activa, la conexión se detiene, se cambia el driver y la conexión se reanuda automáticamente.
+
+
+
+
+ Selector de dispositivo de audio
+
+
+
+
+ En caso de utilizar el driver ASIO4ALL, por favor ten en cuenta que este driver normalmente introduce una latencia adicional de 10-30 ms. Por tanto se recomienda utilizar la tarjeta de audio con un driver nativo.
+
+
+
+
+ Si utilizas el driver kX ASIO, asegúrate de conectar las entradas ASIO en el panel de configuración de kX DSP.
+
+
+
+
+ Mapeo Canales Tarjeta Audio
+
+
+
+
+ Si el dispositivo de audio ofrece más de un canal de entrada o salida, son visibles las configuraciones para el Mapeo de Canales de Entrada y de Salida.
+
+
+
+
+ Para cada
+
+
+
+
+ canal de entrada/salida (canal Izquierdo y Derecho) se puede seleccionar un canal diferente de la tarjeta de audio.
+
+
+
+
+ Selección canal entrada izquierdo
+
+
+
+
+ Selección canal entrada derecho
+
+
+
+
+ Selección canal salida izquierdo
+
+
+
+
+ Selección canal salida derecho
+
+
+
+
+ Activar Buffers Red Pequeños
+
+
+
+
+ Si se activa, se habilita el soporte para paquetes de red de audio muy pequeños. Solo se utilizan estos paquetes pequeños si el retardo de buffer de la tarjeta de audio es menor de
+
+
+
+
+ muestras. Cuanto menores los buffers de red, menor la latencia de audio. Pero al mismo tiempo, aumenta la carga de red y la probabilidad de caídas de audio también aumenta.
+
+
+
+
+ Activar buffers de red pequeños
+
+
+
+
+ Retardo Buffer Tarjeta Audio
+
+
+
+
+ Este parámetro es una parte fundamental de la configuración del software
+
+
+
+
+ . Este parámetro tiene un impacto sobre muchas propiedades de la conexión.
+
+
+
+
+ Hay soporte para tres tamaños de buffer
+
+
+
+
+ 64 muestras: Es la configuración aconsejada puesto que ofrece la latencia más baja, aunque no funciona con todas las tarjetas de audio.
+
+
+
+
+ 128 muestras: Esta configuración debería de funcionar con la mayoría de tarjetas de audio.
+
+
+
+
+ 256 muestras: Esta configuración solo debería usarse con un ordenador muy lento o con una conexión a internet muy lenta.
+
+
+
+
+ Algunos drivers de tarjetas de audio no permiten cambiar el retardo de buffer desde el software
+
+
+
+
+ . En este caso la configuración del retardo de buffer se deshabilita. Para cambiarlo, esta configuración debe realizarse en el driver de la tarjeta de audio. En Windows, pulsa el botón de Configuración ASIO para acceder al panel de configuración. En Linux, utiliza la herramienta de configuración de Jack para cambiar el tamaño del buffer.
+
+
+
+
+ Si no hay ningún tamaño de buffer seleccionado y todas las configuraciones están deshabilitadas, el driver está utilizando un tamaño de buffer no soportado. El software
+
+
+
+
+ seguirá funcionando con esta configuración pero con un rendimiento limitado.
+
+
+
+
+ El retardo del buffer tiene un impacto en el estado de la conexión, la tasa de subida y el retardo total. Cuanto menor sea el retardo del buffer, mayor la probabilidad de que el indicador de estado esté en rojo (caídas de audio), mayor la tasa de subida y menor el retardo total.
+
+
+
+
+ Por tanto la configuración del buffer es un compromiso entre calidad de audio y retardo total.
+
+
+
+
+ Si la configuración de retardo de buffers se encuentra deshabilitada, es porque el driver de audio prohíbe la modificación de este parámetro desde dentro del software
+
+
+
+
+ . En Windows, pulsa el botón de Configuración ASIO para abrir el panel de configuración del driver. En Linux, utiliza la herramienta de configuración de Jack para cambiar el tamaño del buffer.
+
+
+
+
+ Configuración 128 muestras
+
+
+
+
+ Configuración 256 muestras
+
+
+
+
+ Configuración 512 muestras
+
+
+
+
+ Botón configuración ASIO
+
+
+
+
+ Interfaz Oscura
+
+
+
+
+ Si se activa, se aplicará un aspecto oscuro a la ventana principal.
+
+
+
+
+ Activar interfaz oscura
+
+
+
+
+ Mostrar Niveles Canales
+
+
+
+
+ Si se activa, cada canal de cliente mostrará una barra de nivel pre-fader.
+
+
+
+
+ Mostrar niveles canales
+
+
+
+
+ Canales Audio
+
+
+
+
+ Selecciona el número de canales de audio a utilizar. Hay tres modos disponibles. Los modos mono y estéreo utilizan uno y dos canales de audio respectivamente. En modo entrada-mono/salida-estéreo la señal de audio enviada al servidor es mono pero la señal que vuelve es estéreo. Esto es útil si la tarjeta de audio tiene un instrumento en un canal de entrada y un micrófono en el otro. En ese caso las dos señales de entrada pueden combinarse en un canal mono pero la mezcla del servidor se escucha en estéreo.
+
+
+
+
+ Activar el modo estéreo aumentará la tasa de envío de datos. Asegúrate de que la tasa de subida no excede el ancho de banda disponible en tu conexión a internet.
+
+
+
+
+ En el caso del modo estéreo, no estará disponible la selección de canal para el efecto de reverberación en la ventana principal puesto que en este caso el efecto se aplicará a ambos canales.
+
+
+
+
+ Selección canales audio
+
+
+
+
+ Calidad Audio
+
+
+
+
+ Selecciona la calidad de audio deseada. Se puede seleccionar una calidad baja, normal o alta. Cuanto mayor la calidad del audio, mayor la tasa de transferencia de datos de audio. Asegúrate de que la tasa de subida no excede el ancho de banda disponible en tu conexión a internet.
+
+
+
+
+ Selección calidad audio
+
+
+
+
+ Nivel Cliente Nuevo
+
+
+
+
+ La configuración del nivel de clientes nuevos define el nivel del fader para una nueva conexión expresado en un porcentaje. Esto es, si un cliente nuevo se conecta al servidor actual, su fader tomará el valor especificado si no se ha guardado ningún valor de una conexión anterior de ese cliente.
+
+
+
+
+ Campo para nivel nuevo cliente
+
+
+
+
+ Dirección Servidor Central
+
+
+
+
+ La dirección del servidor central es la dirección IP o URL del servidor central en el que se gestiona la lista de servidores en la ventana de conexión. Aquí se puede escoger la región local de entre los servidores centrales por defecto o se puede especificar una dirección manualmente.
+
+
+
+
+ Selección servidor central
+
+
+
+
+ Dirección servidor central
+
+
+
+
+ Parámetro Estado Conexión Actual
+
+
+
+
+ El ping es el tiempo que requiere el flujo de audio para viajar desde el cliente al servidor y volver. Este retardo lo determina la red. Esta cifra debería ser de unos 20-30 ms. Si este retardo es mayor (por ej. 50-60 ms), la distancia al servidor es demasiado grande o tu conexión a internet no es óptima.
+
+
+
+
+ El retardo total se calcula con el ping y el retardo ocasionado por la configuración de buffers.
+
+
+
+
+ La tasa de subida depende del tamaño actual de paquetes de audio y la configuración de compresión de audio. Asegúrate de que la tasa de subida no es mayor que la tasa disponible (comprueba la tasa de subida de tu conexión a internet, por ej. con speedtest.net).
+
+
+
+
+ Si este indicador LED se vuelve rojo, no te divertirás demasiado utilizando el software
+
+
+
+
+ .
+
+
+
+
+ Configuración ASIO
+
+
+
+
+ Mono
+
+
+
+
+ Mono-in/Estéreo-out
+
+
+
+
+ Estéreo
+
+
+
+
+ Baja
+
+
+
+
+ Normal
+
+
+
+
+ Alta
+
+
+
+
+ Manual
+
+
+
+
+ Por defecto
+
+
+
+
+ Por defecto (Norteamérica)
+
+
+
+
+ aconsejado
+
+
+
+
+
+ Tamaño:
+
+
+
+
+ Retardo Buffer
+
+
+
+
+ Retardo Buffer:
+
+
+
+
+ El dispositivo de audio seleccionado no puede utilizarse a causa del siguiente error:
+
+
+
+
+ Se utilizará el driver anterior.
+
+
+
+
+ Ok
+
+
+
+ CClientSettingsDlgBase
+
+
+
+ Configuración
+
+
+
+
+ Tarjeta Sonido
+
+
+
+
+ Dispositivo
+
+
+
+
+ Mapeo Canales Entrada
+
+
+
+
+
+ L
+
+
+
+
+
+ R
+
+
+
+
+ Mapeo Canales Salida
+
+
+
+
+ Activar Buffers Pequeños
+
+
+
+
+ Retardo Buffer
+
+
+
+
+ (aconsejado)
+
+
+
+
+ (por defecto)
+
+
+
+
+ (seguro)
+
+
+
+
+ Configuración Driver
+
+
+
+
+ Jitter Buffer
+
+
+
+
+ Auto
+
+
+
+
+ Local
+
+
+
+
+ Servidor
+
+
+
+
+
+ Valor
+
+
+
+
+ Varios
+
+
+
+
+ Canales Audio
+
+
+
+
+ Calidad Audio
+
+
+
+
+ Nivel Cliente Nuevo
+
+
+
+
+ %
+
+
+
+
+ Intfaz Oscura
+
+
+
+
+ Mostrar Nivel Canales
+
+
+
+
+ Dirección Servidor Central:
+
+
+
+
+ Tasa Muestreo Audio
+
+
+
+
+
+
+ val
+
+
+
+
+ Tiempo Ping
+
+
+
+
+ Retardo Total
+
+
+
+ CConnectDlg
+
+
+
+ Lista Servidores
+
+
+
+
+ La lista de servidores muestra una lista de servidores disponibles que se encuentran registrados en el servidor central. Escoge un servidor de la lista y pulsa el botón de conectar para conectarte a este servidor. También es posible realizar la conexión haciendo doble clic en un servidor de la lista. Si un servidor está ocupado, se puede desplegar una lista de los músicos conectados al pulsar el icono al lado del nombre. Los servidores permanentes se muestran en negrita.
+
+
+
+
+ Ten en cuenta que puede llevar un tiempo recuperar la lista de servidores del servidor central. Si no se especifica una dirección válida en la configuración, no habrá ninguna lista de servidores disponible.
+
+
+
+
+ Vista lista de servidores
+
+
+
+
+ Dirección Servidor
+
+
+
+
+ La dirección IP o URL del servidor ejecutando el software del servidor
+
+
+
+
+ debe introducirse aquí. Se puede añadir un número de puerto opcional detrás de la dirección IP o URL utilizando dos puntos como separador, por ej. ejemplo.org:
+
+
+
+
+ . Hay disponible una lista de las direcciones IP o URLs utilizadas más recientemente para su selección.
+
+
+
+
+ Selección dirección servidor
+
+
+
+
+ Contiene la dirección IP o URL actual del servidor. También guarda viejas URL en la lista.
+
+
+
+
+ Filtro
+
+
+
+
+ La lista de servidores se filtra con el texto introducido. El filtro no es sensible a mayúsculas/minúsculas.
+
+
+
+
+ Campo filtro
+
+
+
+
+ Mostrar Todos los Músicos
+
+
+
+
+ Si activas esta opción, se mostrarán los músicos de todos los servidores. Si lo desactivas, se colapsan todas las listas.
+
+
+
+
+ Selección Mostrar todos los músicos
+
+
+
+ CConnectDlgBase
+
+
+
+ Configuración Conexión
+
+
+
+
+ Filtro
+
+
+
+
+ Mostrar Todos los Músicos
+
+
+
+
+ Nombre Servidor
+
+
+
+
+ Tiempo Ping
+
+
+
+
+ Músicos
+
+
+
+
+ Ubicación
+
+
+
+
+ Nombre/Dirección Servidor
+
+
+
+
+ C&ancelar
+
+
+
+
+ &Conectar
+
+
+
+ CHelpMenu
+
+
+
+ &Ayuda
+
+
+
+
+
+ Cómo &Empezar...
+
+
+
+
+ Manual del &Software...
+
+
+
+
+ Qué es &Esto
+
+
+
+
+ &Acerca de...
+
+
+
+ CLicenceDlg
+
+
+
+ &Acepto los términos de la licencia arriba expuestos
+
+
+
+
+ Acepto
+
+
+
+
+ No Acepto
+
+
+
+
+ Al conectarte a este servidor y aceptar esta notificación, aceptas lo siguiente:
+
+
+
+
+ Ud. declara que todos los datos, audios u otras obras transmitidas a este servidor son la propiedad de Ud. y creadas por Ud. o sus licenciatarios, y que pone a disposición de terceras partes estos datos, audios u otras obras mediante la siguiente Licencia Creative Commons (para más información sobre esta licencia, ver
+
+
+
+
+ Ud. es libre de:
+
+
+
+
+ Compartir
+
+
+
+
+ copiar y redistribuir el material en cualquier medio o formato
+
+
+
+
+ Adaptar
+
+
+
+
+ remezclar, transformar y construir a partir del material
+
+
+
+
+ El licenciante no puede revocar estas libertades en tanto Ud. siga los términos de la licencia.
+
+
+
+
+ Bajo los siguientes términos:
+
+
+
+
+ Atribución
+
+
+
+
+ Ud. debe dar crédito de manera adecuada, brindar un enlace a la licencia, e indicar si se han realizado cambios. Puede hacerlo en cualquier forma razonable, pero no de forma tal que sugiera que Ud. o su uso tienen el apoyo de la licenciante.
+
+
+
+
+ No-Comercial
+
+
+
+
+ No puede utilizar el material con fines comerciales.
+
+
+
+
+ ShareAlike
+
+
+
+
+ Si remezcla, transforma o construye sobre el material, debe distribuir sus contribuciones bajo la misma licencia que el original.
+
+
+
+
+ Sin restricciones adicionales
+
+
+
+
+ No puede aplicar términos legales o medidas tecnológicas que restringan legalmente a otras personas de hacer cualquier cosa permitida por la licencia.
+
+
+
+ CMusProfDlg
+
+
+
+ Esta etiqueta también se mostrará a cada cliente conectado al mismo servidor que tú. Se se deja vacío, se muestra la dirección IP en su lugar.
+
+
+
+
+ Campo para alias o nombre
+
+
+
+
+ Botón imagen instrumento
+
+
+
+
+ Botón bandera país
+
+
+
+
+ Ciudad
+
+
+
+
+ Nivel de habilidad
+
+
+
+
+
+
+ Ninguno
+
+
+
+
+
+ Perfil Músico
+
+
+
+
+ Alias/Nombre
+
+
+
+
+ Instrumento
+
+
+
+
+ País
+
+
+
+
+ Ciudad
+
+
+
+
+ Habilidad
+
+
+
+
+ &Cerrar
+
+
+
+
+ Principiante
+
+
+
+
+ Intermedio
+
+
+
+
+ Experto
+
+
+
+
+ Escribe tu nombre o alias aquí para que los demás músicos con quien quieras tocar te reconozcan. Puedes además añadir una imagen del instrumento que tocas y la bandera del país donde vives. La ciudad donde vives y tu nivel de habilidad con el instrumento también pueden añadirse.
+
+
+
+
+ Lo que introduzcas aquí aparecerá en tu fader del mezclador cuando te conectes a un servidor
+
+
+
+
+ Batería
+
+
+
+
+ Djembé
+
+
+
+
+ Guitarra Eléctrica
+
+
+
+
+ Guitarra Acústica
+
+
+
+
+ Bajo Eléctrico
+
+
+
+
+ Teclado
+
+
+
+
+ Sintetizador
+
+
+
+
+ Piano de Cola
+
+
+
+
+ Acordeón
+
+
+
+
+ Voz
+
+
+
+
+ Micrófono
+
+
+
+
+ Armónica
+
+
+
+
+ Trompeta
+
+
+
+
+ Trombón
+
+
+
+
+ Trompa
+
+
+
+
+ Tuba
+
+
+
+
+ Saxofón
+
+
+
+
+ Clarinete
+
+
+
+
+ Flauta
+
+
+
+
+ Violín
+
+
+
+
+ Violonchelo
+
+
+
+
+ Contrabajo
+
+
+
+
+ Grabadora
+
+
+
+
+ Streamer
+
+
+
+
+ Oyente
+
+
+
+
+ Guitarra+Voz
+
+
+
+
+ Teclado+Voz
+
+
+
+
+ Bodhran
+
+
+
+
+ Fagot
+
+
+
+
+ Oboe
+
+
+
+
+ Arpa
+
+
+
+
+ Viola
+
+
+
+
+ Congas
+
+
+
+
+ Bongo
+
+
+
+ CServerDlg
+
+
+
+ Lista Clientes
+
+
+
+
+ La lista de clientes muestra todos los clientes actualmente conectados a este servidor. Alguna información sobre los clientes como la dirección IP y el nombre aparecen para cada cliente conectado.
+
+
+
+
+ Vista lista clientes conectados
+
+
+
+
+ Arranca Minimizado al Arrancar Sistema Operativo
+
+
+
+
+ Si se activa el arranque al arrancar el sistema operativo, el
+
+
+
+
+ servidor arrancará cuando arranque el sistema operativo y se minimizará automáticamente a un icono en la barra de tareas.
+
+
+
+
+ Mostrar Diálogo de Licencia Creative Commons
+
+
+
+
+ Si se activa, se mostrará un diálogo con la Licencia Creative Commons BY-NC-SA 4.0 cada vez que un cliente nuevo se conecte al servidor.
+
+
+
+
+ Mi Servidor es Público
+
+
+
+
+ Si se activa Mi Servidor es Público, este servidor se registra en el servidor central para que todos los usuarios de
+
+
+
+
+ puedan ver el servidor en la lista de servidores de la ventana de conexión y puedan conectarse a él. El registro del servidor se renueva periódicamente para asegurarse de que todos los servidores en la lista se encuentren realmente disponibles.
+
+
+
+
+ Estado Registro Servidor
+
+
+
+
+ Si se ha activado Mi Servidor es Público, esto mostrará si se ha registrado en el servidor central con éxito.
+
+
+
+
+ Dirección Servidor Central
+
+
+
+
+ La dirección del Servidor Central es la dirección IP o URL del servidor central en el que se ha registrado este servidor. Aquí se puede escoger la región local de entre los servidores centrales por defecto o se puede especificar una dirección manualmente.
+
+
+
+
+ Selección servidor central
+
+
+
+
+ Dirección servidor central
+
+
+
+
+ Nombre Servidor
+
+
+
+
+ El nombre del servidor identifica a tu servidor en la lista de conexión de servidores de los clientes. Si no se especifica un nombre, se muestra la dirección IP en su lugar.
+
+
+
+
+ Nombre del servidor
+
+
+
+
+ Ubicación Ciudad
+
+
+
+
+ Aquí se puede especificar la ciudad en donde se ubica el servidor. Si se introduce una ciudad, se mostrará en la lista de conexión de servidores de los clientes.
+
+
+
+
+ Ciudad en donde se encuentra en servidor
+
+
+
+
+ Ubicación país
+
+
+
+
+ Aquí se puede especificar el país en donde se ubica el servidor. Si se introduce un país, se mostrará en la lista de conexión de servidores de los clientes.
+
+
+
+
+ País en donde se encuentra el servidor
+
+
+
+
+
+ S&alir
+
+
+
+
+ &Ocultar servidor
+
+
+
+
+
+
+
+
+
+
+
+ &Abrir servidor
+
+
+
+
+
+
+
+
+
+ Manual
+
+
+
+
+ Por defecto
+
+
+
+
+ Por defecto (Norteamérica)
+
+
+
+
+ : Servidor
+
+
+
+
+ &Ventana
+
+
+
+
+ Sin registrar
+
+
+
+
+ Dirección no válida
+
+
+
+
+ Registro solicitado
+
+
+
+
+ Error de registro
+
+
+
+
+ Comprueba la versión del servidor
+
+
+
+
+ Registrado
+
+
+
+
+ Servidor Central lleno
+
+
+
+
+ Valor desconocido
+
+
+
+ CServerDlgBase
+
+
+
+ IP:Puerto cliente
+
+
+
+
+
+ Nombre
+
+
+
+
+ Tamaño Jitter Buffer
+
+
+
+
+ Arranca Minimizado al Arrancar Windows
+
+
+
+
+ Mostrar Diálogo de Licencia Creative Commons BY-NC-SA 4.0
+
+
+
+
+ Mi Servidor es Público (Registra Mi Servidor en la Lista de Servidores)
+
+
+
+
+ ESTADO
+
+
+
+
+ Dirección Servidor Central:
+
+
+
+
+ Info Mi Servidor
+
+
+
+
+ Ubicación: Ciudad
+
+
+
+
+ Ubicación: País
+
+
+
+
+ TextLabelNameVersion
+
+
+
+ CSound
+
+
+
+ El servidor Jack no está arrancado. Este software necesita el servidor Jack para funcionar. Normalmente, si el servidor no está arrancado este software lo arrancará automáticamente. Parece que este auto-arranque no ha funcionado. Intenta arrancar el servidor Jack manualmente.
+
+
+
+
+ La tasa de muestreo del servidor Jack es distinta a la requerida. La tasa de muestreo requerida es:
+
+
+
+
+ Puedes utilizar una herramiento como <i><a href=http://qjackctl.sourceforge.net>QJackCtl</a></i> para ajustar la tasa de muestreo del servidor Jack.
+
+
+
+
+ Asegúrate de establecer los Cuadros/Período en un valor bajo como
+
+
+
+
+ para conseguir un retardo bajo.
+
+
+
+
+
+ El registro de puertos de Jack falló.
+
+
+
+
+ No se puede activar el cliente Jack.
+
+
+
+
+ El servidor Jack se ha cerrado. Este software necesita el servidor Jack para funcionar. Intenta reiniciar el software para solucionar este problema.
+
+
+
+
+ CoreAudio input AudioHardwareGetProperty call failed. Parece ser que el sistema no tiene una tarjeta de sonido disponible.
+
+
+
+
+ CoreAudio output AudioHardwareGetProperty call failed. Parece ser que el sistema no tiene una tarjeta de sonido disponible.
+
+
+
+
+ La tasa de muestreo actual del dispositivo de audio de entrada de %1 Hz no está soportada. Por favor, abre Configuración-Audio-MIDI en Aplicaciones->Utilidades e intenta configurar una tasa de muestreo de %2 Hz.
+
+
+
+
+ La tasa de muestreo actual del dispositivo de audio de salida de %1 Hz no está soportada. Por favor, abre Configuración-Audio-MIDI en Aplicaciones->Utilidades e intenta configurar una tasa de muestreo de %2 Hz.
+
+
+
+
+ El formato de transmisión de audio de entrada para este dispositivo de audio no es compatible con este software.
+
+
+
+
+ El formato de transmisión de audio de salida para este dispositivo de audio no es compatible con este software.
+
+
+
+
+ Los tamaños de buffer del dispositivo actual de entrada/salida de audio no pueden establecerse en un valor común. Por favor, selecciona otros dispositivos de entrada/salida de audio en la configuración del sistema.
+
+
+
+
+ No se pudo iniciar el driver de audio.
+
+
+
+
+ El dispositivo de audio no soporta la tasa de muestreo requerida. La tasa de muestreo requerida es de:
+
+
+
+
+ El dispositivo de audio no permite establecer la tasa de muestreo requerida. Este error puede suceder si tienes un dispositivo de audio como el Roland UA-25EX en el que se configura mediante un interruptor físico en el dispositivo. Si es este el caso, por favor cambia la tasa de muestreo a
+
+
+
+
+ Hz en el dispositivo y reinicie el software
+
+
+
+
+ .
+
+
+
+
+ El dispositivo de audio no soporta el número de canales requerido. El número de canales requerido es de:
+
+
+
+
+
+ Formato de muestras de audio requerido no disponible.
+
+
+
+
+ No se ha encontrado un dispositivo ASIO (driver).
+
+
+
+
+ El software
+
+
+
+
+ requiere la interfaz de audio de baja latencia ASIO para funcionar correctamente. No es una interfaz estándar de Windows y por tanto se requiere un driver de audio especial. Tu tarjeta de audio podría tener un driver ASIO nativo (lo recomendado) o quizá quieras probar un driver alternativo como ASIO4All.
+
+
+
+
+ Error cerrando transmisión: $s
+
+
+
+ CSoundBase
+
+
+
+ Selección de dispositivo no válida.
+
+
+
+
+ Las propiedades del driver de audio han cambiado a un estado que es incompatible con este software. El dispositivo de audio seleccionado no se pudo utilizar a causa del siguiente error:
+
+
+
+
+ Por favor reinicie el software.
+
+
+
+
+ Cerrar
+
+
+
+
+ Ningún driver
+
+
+
+
+ de audio utilizable encontrado.
+
+
+
+
+ A continuación hay una lista de todos los drivers disponibles con el error asociado:
+
+
+
+
+ ¿Quieres abrir la configuración del driver ASIO?
+
+
+
+
+ no pudo arrancar debido a problemas con el dispositivo de audio.
+
+
+
diff --git a/src/res/translation/translation_fr_FR.qm b/src/res/translation/translation_fr_FR.qm
new file mode 100644
index 00000000..8d5adb43
Binary files /dev/null and b/src/res/translation/translation_fr_FR.qm differ
diff --git a/src/res/translation/translation_fr_FR.ts b/src/res/translation/translation_fr_FR.ts
new file mode 100644
index 00000000..084b6ad9
--- /dev/null
+++ b/src/res/translation/translation_fr_FR.ts
@@ -0,0 +1,2346 @@
+
+
+
+
+ CAboutDlg
+
+
+
+ Le logiciel
+
+
+
+ permet aux musiciens de faire des bœufs en temps réel sur internet. Il existe un
+
+
+
+
+ permet aux musiciens de faire des bœufs en temps réel sur internet.
+
+
+
+
+ qui collecte les données audio de chaque client
+
+
+
+
+ Il existe un serveur
+
+
+
+
+ , mixe les données audio et renvoie le mixage à chaque client.
+
+
+
+
+ utilise les bibliothèques, ressources ou extraits de code suivants :
+
+
+
+
+ Cadriciel d'application multiplateforme Qt
+
+
+
+
+ Code de réverbération audio par Perry R. Cook et Gary P. Scavone
+
+
+
+
+ Certaines images sont issues de
+
+
+
+
+ Icônes de drapeaux de pays par Mark James
+
+
+
+
+ Pour plus de détails sur les contributions, consultez la
+
+
+
+
+ liste de contributeurs sur github
+
+
+
+
+ À propos
+
+
+
+
+ , version
+
+
+
+
+ Logiciels de bœuf sur Internet
+
+
+
+
+ Sous la licence public général GNU (GPL)
+
+
+
+ CAboutDlgBase
+
+
+
+ À propos
+
+
+
+
+
+
+
+
+
+ Copyright (C) 2005-2020 Volker Fischer et autres
+
+
+
+
+ À &propos
+
+
+
+
+ Bib&liothèques
+
+
+
+
+ &Contributeurs
+
+
+
+
+ &Traduction
+
+
+
+ Auteur : Volker Fisher
+
+
+
+ Copyright (C) 2005-2020
+
+
+
+
+ &OK
+
+
+
+ CAnalyzerConsole
+
+
+
+ Console d'analyse
+
+
+
+
+ Taux d'erreur de chaque taille de tampon
+
+
+
+ CAudioMixerBoard
+
+
+
+ Serveur
+
+
+
+
+ T E N T A T I V E D E C O N N E X I O N
+
+
+
+ CChannelFader
+
+
+
+ Niveau de canal
+
+
+
+
+ Affiche le niveau audio pré-fader de ce canal. Tous les clients connectés au serveur se verront attribuer un niveau audio, la même valeur pour chaque client.
+
+
+
+
+ Niveau d'entrée du canal audio actuel sur le serveur
+
+
+
+
+ Charriot du mixeur
+
+
+
+
+ Règle le niveau audio de ce canal. Tous les clients connectés au serveur se verront attribuer un charriot audio à chaque client, ce qui permettra d'ajuster le mixage local.
+
+
+
+
+ Réglage du niveau de mixage local du canal audio actuel sur le serveur
+
+
+
+
+ En cochant la case Muet, le canal audio peut être mis en sourdine.
+
+
+
+
+ Bouton de sourdine
+
+
+
+
+ En cochant la case Solo, le canal audio peut être réglé sur solo, ce qui signifie que tous les autres canaux, à l'exception du canal actuel, sont mis en sourdine. Il est possible de mettre plus d'un canal en solo.
+
+
+
+
+ Bouton de solo
+
+
+
+
+ Étiquette de charriot
+
+
+
+
+ L'étiquette de charriot identifie le client connecté. Le nom du tag, la photo de votre instrument et un drapeau de votre pays peuvent être définis dans la fenêtre principale.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MUET
+
+
+
+
+ SOLO
+
+
+
+
+ Pseudo/nom
+
+
+
+
+ Instrument
+
+
+
+
+ Localisation
+
+
+
+
+
+
+ Niveau de compétence
+
+
+
+
+ Débutant
+
+
+
+
+ Intermédiaire
+
+
+
+
+ Expert
+
+
+
+
+ Profil de musicien
+
+
+
+
+
+
+ Muet
+
+
+
+
+
+
+ Solo
+
+
+
+ CChatDlg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CChatDlgBase
+
+
+
+ Tchate
+
+
+
+
+ N&ettoyer
+
+
+
+
+ &Fermer
+
+
+
+ CClientDlg
+
+
+
+ Indicateur de niveau d'entrée
+
+
+
+
+ Les indicateurs de niveau d'entrée indiquent le niveau d'entrée des deux canaux stéréo de l'entrée audio actuellement sélectionnée.
+
+
+
+
+ Veillez à ne pas clipper le signal d'entrée afin d'éviter les distorsions du signal audio.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bouton connecter/déconnecter
+
+
+
+
+ Appuyez sur ce bouton pour vous connecter à un serveur. Une boîte de dialogue vous permettant de sélectionner un serveur s'ouvrira. Si vous êtes connecté, l'appui sur ce bouton mettra fin à la session.
+
+
+
+
+ Bouton-bascule de connection/déconnexion
+
+
+
+
+ En cliquant sur ce bouton, la légende du bouton passe de Connecter à Déconnecter, c'est-à-dire qu'il met en œuvre une fonctionnalité de basculement pour connecter et déconnecter le logiciel
+
+
+
+
+
+ .
+
+
+
+
+ Chariot d'entrée audio locale
+
+
+
+
+ Chariot d'entrée audio locale (gauche/droite)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Si ce voyant devient rouge, vous n'aurez pas beaucoup de plaisir à utiliser le logiciel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Se c&onnecter
+
+
+
+
+ &Vue
+
+
+
+
+ Paramètres de &connexion...
+
+
+
+
+ Mon &profil
+
+
+
+
+ Tc&hate...
+
+
+
+
+ Paramètre&s...
+
+
+
+
+ Console d'&analyse
+
+
+
+
+ &Quitter
+
+
+
+
+ Aucun
+
+
+
+
+ Centre
+
+
+
+
+ D
+
+
+
+
+
+ G
+
+
+
+
+ Avec le chariot audio, les niveaux relatifs des canaux audio locaux gauche et droit peuvent être modifiés. Pour un signal mono, il agit comme un panoramique entre les deux canaux. Si, par exemple, un microphone est connecté au canal d'entrée droit et qu'un instrument est connecté au canal d'entrée gauche qui est beaucoup plus fort que le microphone, déplacez le fader audio dans une direction où l'étiquette au-dessus du chariot indique
+
+
+
+
+ , où
+
+
+
+
+ est l'indicateur d'atténuation actuel.
+
+
+
+
+ Niveau de réverbération
+
+
+
+
+ Un effet de réverbération peut être appliqué à un canal audio mono local ou aux deux canaux en mode stéréo. La sélection du canal mono et le niveau de réverbération peuvent être modifiés. Si, par exemple, le signal du microphone est envoyé dans le canal audio droit de la carte son et qu'un effet de réverbération doit être appliqué, réglez le sélecteur de canal à droite et déplacez le curseur vers le haut jusqu'à ce que le niveau de réverbération souhaité soit atteint.
+
+
+
+
+ L'effet de réverbération nécessite un processeur important, de sorte qu'il ne doit être utilisé que sur des PC rapides. Si le chariot de niveau de réverbération est réglé au minimum (qui est le réglage par défaut), l'effet de réverbération est désactivé et n'entraîne aucune utilisation supplémentaire du processeur.
+
+
+
+
+ Sélection de canal de réverbération
+
+
+
+
+ Ces boutons radio permettent de choisir le canal d'entrée audio sur lequel l'effet de réverbération est appliqué. Il est possible de sélectionner le canal d'entrée gauche ou droit.
+
+
+
+
+ Voyant d'état de délai
+
+
+
+
+ Le voyant d'état de délai indique l'état actuel du délai audio. Si le voyant est vert, le délai est parfait pour une session de bœuf. Si le voyant est jaune, une session est toujours possible mais elle peut être plus difficile à jouer. Si le voyant est rouge, le délai est trop important pour un bœuf.
+
+
+
+
+ Voyant d'état de tampon
+
+
+
+
+ Le voyant d'état des tampons indique l'état actuel de l'audio/du streaming. Si le voyant est vert, il n'y a pas de dépassement de mémoire tampon ni de sous-dépassement et le flux audio n'est pas interrompu. Si le voyant est rouge, le flux audio est interrompu en raison de l'un des problèmes suivants :
+
+
+
+
+ Le tampon de jitter réseau n'est pas assez grand pour le jitter actuel de l'interface réseau/audio.
+
+
+
+
+ Le délai du tampon de la carte son (taille du tampon) est réglé sur une valeur trop faible.
+
+
+
+
+ Le taux de flux montant ou descendant est trop élevé pour la bande passante Internet actuellement disponible.
+
+
+
+
+ Le processeur du client ou du serveur est à 100%.
+
+
+
+
+ utilisateur
+
+
+
+
+ utilisateurs
+
+
+
+
+ Dé&connecter
+
+
+
+ CClientDlgBase
+
+
+
+ Délai
+
+
+
+
+ Tampons
+
+
+
+
+ Entrée
+
+
+
+
+ G
+
+
+
+
+ D
+
+
+
+
+ Paramètres
+
+
+
+
+ Tchate
+
+
+
+
+ Me silencer
+
+
+
+
+ Se c&onnecter
+
+
+
+
+ Pan
+
+
+
+
+ Centre
+
+
+
+
+ Réverb
+
+
+
+
+ Gauche
+
+
+
+
+ Droite
+
+
+
+ CClientSettingsDlg
+
+
+
+ Taille du tampon de gigue
+
+
+
+
+ Le tampon de gigue compense les gigues de synchronisation du réseau et de l'interface audio. La taille de ce tampon de gigue a donc une influence sur la qualité du flux audio (combien de décrochages se produisent) et le délai global (plus le tampon est long, plus le délai est important).
+
+
+
+
+ La taille du tampon de gigue peut être choisie manuellement pour le client local et le serveur distant. Pour le tampon de gigue local, les désynchronisations dans le flux audio sont indiquées par le voyant situé en bas des chariots de taille du tampon de gigue. Si le voyant devient rouge, un dépassement de la taille de la mémoire tampon a eu lieu et le flux audio est interrompu.
+
+
+
+
+ Le réglage du tampon de gigue est donc un compromis entre la qualité audio et le délai global.
+
+
+
+
+ Un réglage automatique de la taille du tampon de gigue est disponible. Si la case Auto est activée, les tampons de gigue du client local et du serveur distant sont réglés automatiquement en fonction des mesures de la gigue de synchronisation du réseau et de la carte son. Si la case Auto est activée, les chariots de la taille du tampon de gigue sont désactivés (ils ne peuvent pas être déplacés avec la souris).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Activer les petits tampons de réseau
+
+
+
+
+ Si activée, la prise en charge des très petits paquets audio de réseau est activée. Les très petits paquets réseau ne sont réellement utilisés que si le délai de la mémoire tampon de la carte son est inférieur à
+
+
+
+
+ échantillons. Plus la mémoire tampon du réseau est petite, plus la latence audio est faible. Mais en même temps, la charge du réseau augmente et la probabilité de décrochage audio augmente également.
+
+
+
+
+ Cochez la case Activer les petits tampons de réseau
+
+
+
+
+ Délai de temporisation de l'interface audio
+
+
+
+
+ Le paramètre de délai de temporisation est un paramètre fondamental du logiciel
+
+
+
+
+ . Ce paramètre influence de nombreuses propriétés de connexion.
+
+
+
+
+ Trois tailles de tampon sont prises en charge
+
+
+
+
+ 64 échantillons : c'est le réglage préféré car il donne la latence la plus faible mais ne fonctionne pas avec toutes les interfaces audio.
+
+
+
+
+ 128 échantillons : ce réglage devrait fonctionner sur la plupart des interfaces audio disponibles.
+
+
+
+
+ 256 échantillons : ce paramètre ne doit être utilisé que si seul un ordinateur très lent ou une connexion internet lente est disponible.
+
+
+
+
+ Certains pilotes d'interface audio ne permettent pas de modifier le délai de la mémoire tampon à partir du logiciel
+
+
+
+
+ . Dans ce cas, le réglage du délai de mise en mémoire tampon est désactivé. Pour modifier le délai actuel de la mémoire tampon, ce paramètre doit être modifié dans le pilote de l'interface audio. Sous Windows, appuyez sur le bouton ASIO Setup pour ouvrir le panneau des paramètres du pilote. Sous Linux, utilisez l'outil de configuration Jack pour modifier la taille de la mémoire tampon.
+
+
+
+
+ Si aucune taille de tampon n'est sélectionnée et que tous les paramètres sont désactivés, une taille de tampon non prise en charge est utilisée par le pilote. Le logiciel
+
+
+
+
+ continuera toujours de fonctionner avec ce réglage, mais avec des performances limitées.
+
+
+
+
+ Le délai actuel de la mémoire tampon a une influence sur l'état de la connexion, le taux de téléchargement actuel et le délai global. Plus la taille de la mémoire tampon est faible, plus la probabilité d'un voyant rouge dans l'indicateur d'état (désynchronisations) est élevée, plus le taux de téléchargement est élevé et plus le délai global est faible.
+
+
+
+
+ Le réglage de la mémoire tampon est donc un compromis entre la qualité audio et le délai global.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Habillage fantaisie
+
+
+
+
+ Si activée, un habillage fantaisie sera appliqué à la fenêtre principale.
+
+
+
+
+ Cocher la case Habillage fantaisie
+
+
+
+
+ Afficher les niveaux des canaux
+
+
+
+
+ Si activée, chaque canal de client affichera une barre de niveau pré-fader.
+
+
+
+
+ Cocher la case Afficher les niveaux des canaux
+
+
+
+
+ Canaux audio
+
+
+
+
+ Sélectionnez le nombre de canaux audio à utiliser. Trois modes sont disponibles. Les modes mono et stéréo utilisent respectivement un et deux canaux audio. Dans le mode mono-in/stereo-out, le signal audio qui est envoyé au serveur est mono mais le signal de retour est stéréo. Ceci est utile dans le cas où l'interface audio place l'instrument sur un canal d'entrée et le microphone sur l'autre canal. Dans ce cas, les deux signaux d'entrée peuvent être mélangés dans un canal mono mais le mixage du serveur peut être entendu en stéréo.
+
+
+
+
+ L'activation du mode de streaming stéréo augmentera le débit de données du flux. Assurez-vous que le débit montant actuel ne dépasse pas la bande passante disponible de votre connexion internet.
+
+
+
+
+ Dans le cas du mode de streaming stéréo, aucune sélection de canal audio pour l'effet de réverbération ne sera disponible dans la fenêtre principale puisque l'effet est appliqué sur les deux canaux dans ce cas.
+
+
+
+
+
+
+
+
+
+ Qualité audio
+
+
+
+
+ Sélectionnez la qualité audio souhaitée. Une qualité audio faible, normale ou élevée peut être sélectionnée. Plus la qualité audio est élevée, plus le débit de données du flux audio est élevé. Assurez-vous que le débit montant actuel ne dépasse pas la bande passante disponible de votre connexion internet.
+
+
+
+
+
+
+
+
+
+ Niveau de nouveau client
+
+
+
+
+ Le paramètre de niveau de nouveau client définit le niveau de chariot d'un client nouvellement connecté en pourcentage. C'est-à-dire que si un nouveau client se connecte au serveur actuel, il aura le niveau de chariot initial spécifié si aucun autre niveau de chariot d'une connexion précédente de ce client n'était déjà stocké.
+
+
+
+
+
+
+
+
+
+ Adresse du serveur central
+
+
+
+
+ L'adresse du serveur central est l'adresse IP ou l'URL du serveur central sur lequel la liste des serveurs du dialogue de connexion est gérée. Avec le type d'adresse du serveur central, on peut soit sélectionner la région de localisation parmi les serveurs centraux par défaut, soit spécifier une adresse manuelle.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Paramètre de l'état de la connexion actuelle
+
+
+
+
+ Le temps de ping est le temps nécessaire pour que le flux audio voyage du client au serveur et vice-versa. Ce délai est introduit par le réseau. Ce délai doit être de 20 ou 30 ms. Si ce délai est supérieur (par exemple 50-60 ms), la distance qui vous sépare du serveur est trop importante ou votre connexion internet n'est pas suffisante.
+
+
+
+
+ Le délai global est calculé à partir du temps de ping actuel et du délai qui est introduit par les paramètres actuels de la mémoire tampon.
+
+
+
+
+ Le débit montant dépend de la taille actuelle du paquet audio et du réglage de la compression audio. Assurez-vous que le débit montant n'est pas supérieur au débit disponible (vérifiez les capacités montant de votre connexion internet en utilisant, par exemple, speedtest.net).
+
+
+
+
+ Si ce voyant devient rouge, vous n'aurez pas beaucoup de plaisir à utiliser le logiciel
+
+
+
+
+ .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Taille :
+
+
+
+
+ Délai de temporisation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ok
+
+
+
+ CClientSettingsDlgBase
+
+
+
+ Paramètres
+
+
+
+
+ Interface audio
+
+
+
+
+ Périphérique
+
+
+
+
+ Cartographie des canaux d'entrée
+
+
+
+
+
+ G
+
+
+
+
+
+ D
+
+
+
+
+ Cartographie des canaux de sortie
+
+
+
+
+ Activer les petits tampons de réseau
+
+
+
+
+ Délai de temporisation
+
+
+
+
+ (préféré)
+
+
+
+
+ (défaut)
+
+
+
+
+ (sûr)
+
+
+
+
+ Configuration du pilote
+
+
+
+
+ Tampon de gigue
+
+
+
+
+ Auto
+
+
+
+
+ Local
+
+
+
+
+ Serveur
+
+
+
+
+
+ Taille
+
+
+
+
+ Divers
+
+
+
+
+ Canaux audio
+
+
+
+
+ Qualité audio
+
+
+
+
+ Niveau de nouveau client
+
+
+
+
+ %
+
+
+
+
+ Habillage fantaisie
+
+
+
+
+ Afficher les niveaux des canaux
+
+
+
+
+ Adresse du serveur central :
+
+
+
+
+ Débit du flux audio
+
+
+
+
+
+
+ val
+
+
+
+
+ Temps de réponse
+
+
+
+
+ Délai global
+
+
+
+ CConnectDlg
+
+
+
+ Liste de serveurs
+
+
+
+
+ La liste de serveurs affiche une liste des serveurs disponibles qui sont enregistrés sur le serveur central. Sélectionnez un serveur dans la liste et appuyez sur le bouton de connexion pour vous connecter à ce serveur. Vous pouvez également double-cliquer sur un serveur de la liste pour vous y connecter. Si un serveur est occupé, une liste des musiciens connectés est disponible en développant l'élément de la liste. Les serveurs permanents sont indiqués en caractères gras.
+
+
+
+
+ Notez que ça peut prendre un certain temps pour récupérer la liste des serveurs depuis le serveur central. Si aucune adresse de serveur central valide n'est spécifiée dans les paramètres, aucune liste de serveurs ne sera disponible.
+
+
+
+
+ Vue de la liste de serveurs
+
+
+
+
+ Adresse du serveur
+
+
+
+
+ L'adresse IP ou l'URL du serveur qui exécute le logiciel serveur
+
+
+
+
+ doit être paramétré ici. Un numéro optionnel de port peut être ajouté après l'adresse IP ou l'URL en utilisant deux points en tant que séparateur, par exemple, exemple.org :
+
+
+
+
+ Une liste des adresses IP ou URL de serveur les plus récentes est disponible pour la sélection.
+
+
+
+
+ Boîte d'édition de l'adresse du serveur
+
+
+
+
+
+
+
+
+
+ Filtre
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Afficher tous les musiciens
+
+
+
+
+ Si vous cochez cette case, les musiciens de tous les serveurs sont affichés. Si vous décochez la case, tous les éléments de la vue en liste sont regroupés.
+
+
+
+
+ Cochez la case Afficher tous les musiciens
+
+
+
+ CConnectDlgBase
+
+
+
+ Paramètres de connexion
+
+
+
+
+ Filtre
+
+
+
+
+ Afficher tous les musiciens
+
+
+
+
+ Nom du serveur
+
+
+
+
+ Temps de réponse
+
+
+
+
+ Musiciens
+
+
+
+
+ Localisation
+
+
+
+
+ Nom du serveur / adresse
+
+
+
+
+ &Annuler
+
+
+
+
+ Se &connecter
+
+
+
+ CHelpMenu
+
+
+
+ &Aide
+
+
+
+
+
+ Premier pa&s...
+
+
+
+
+ &Manuel du logiciel...
+
+
+
+
+ C'es&t quoi ça
+
+
+
+
+ À &propos
+
+
+
+ CLicenceDlg
+
+
+
+ J'&accepte les conditions de licence ci-dessus
+
+
+
+
+ Accepter
+
+
+
+
+ Décliner
+
+
+
+
+ En vous connectant à ce serveur et en acceptant le présent avis, vous acceptez ce qui suit :
+
+
+
+
+ Vous acceptez que toutes les données, sons ou autres œuvres transmises à ce serveur soient détenus et créés par vous ou vos ayant-droits, et que vous rendiez ces données, sons ou autres œuvres disponibles via la licence Creative Commons suivante (pour plus d'informations sur cette licence, voir
+
+
+
+
+ Vous êtes libres de :
+
+
+
+
+ Partager
+
+
+
+
+ copier et redistribuer le matériel sur tout support ou format
+
+
+
+
+ Adapter
+
+
+
+
+ remixer, transformer et développer à partir du matériel
+
+
+
+
+ Le donneur de licence ne peut pas révoquer ces libertés tant que vous respectez les conditions de la licence.
+
+
+
+
+ Dans les conditions suivantes :
+
+
+
+
+ Attribution
+
+
+
+
+ Vous devez donner un crédit approprié, fournir un lien vers la licence et indiquer si des modifications ont été apportées. Vous pouvez le faire de toute manière raisonnable, mais pas d'une manière qui suggère que le donneur de licence vous cautionne ou cautionne votre utilisation.
+
+
+
+
+ Non commercial
+
+
+
+
+ Vous ne pouvez pas utiliser le matériel à des fins commerciales.
+
+
+
+
+ Partager à l'identique
+
+
+
+
+ Si vous remixez, transformez ou développez à partir du matériel, vous devez distribuer vos contributions sous la même licence que l'original.
+
+
+
+
+ Aucune restriction supplémentaire
+
+
+
+
+ Vous ne pouvez pas appliquer des termes juridiques ou des mesures technologiques qui empêchent légalement d'autres personnes de faire ce que la licence autorise.
+
+
+
+ CMusProfDlg
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bouton d'image d'instrument
+
+
+
+
+ Bouton de drapeau de pays
+
+
+
+
+ Boîte d'édition de la ville
+
+
+
+
+ Boîte combo de niveau de compétence
+
+
+
+
+
+
+ Aucune
+
+
+
+
+
+ Profil de musicien
+
+
+
+
+ Pseudo/nom
+
+
+
+
+ Instrument
+
+
+
+
+ Pays
+
+
+
+
+ Ville
+
+
+
+
+ Compétence
+
+
+
+
+ &Fermer
+
+
+
+
+ Débutant
+
+
+
+
+ Intermédiaire
+
+
+
+
+ Expert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Batterie
+
+
+
+
+ Djembé
+
+
+
+
+ Guitare électrique
+
+
+
+
+ Guitare accoustique
+
+
+
+
+ Guitare basse
+
+
+
+
+ Clavier
+
+
+
+
+ Synthétiseur
+
+
+
+
+ Piano à queue
+
+
+
+
+ Accordéon
+
+
+
+
+ Voix
+
+
+
+
+ Microphone
+
+
+
+
+ Harmonica
+
+
+
+
+ Trompette
+
+
+
+
+ Trombone
+
+
+
+
+ Cor d'harmonie
+
+
+
+
+ Tuba
+
+
+
+
+ Saxophone
+
+
+
+
+ Clarinette
+
+
+
+
+ Flute
+
+
+
+
+ Violon
+
+
+
+
+ Violoncelle
+
+
+
+
+ Contrebasse
+
+
+
+
+ Enregistreur
+
+
+
+
+ Diffuseur
+
+
+
+
+ Auditeur
+
+
+
+
+ Guitare+voix
+
+
+
+
+ Clavier+voix
+
+
+
+
+ Bodhran
+
+
+
+
+ Basson
+
+
+
+
+ Hautbois
+
+
+
+
+ Harpe
+
+
+
+
+ Alto
+
+
+
+
+ Congas
+
+
+
+
+ Bongo
+
+
+
+ CServerDlg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nom du serveur
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ &Quitter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CServerDlgBase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Taille du tampon de gigue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adresse du serveur central :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CSound
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Le logiciel
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CSoundBase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/res/translation/translation_pt_PT.qm b/src/res/translation/translation_pt_PT.qm
new file mode 100644
index 00000000..b6fd9264
Binary files /dev/null and b/src/res/translation/translation_pt_PT.qm differ
diff --git a/src/res/translation/translation_pt_PT.ts b/src/res/translation/translation_pt_PT.ts
new file mode 100644
index 00000000..a8d45ac7
--- /dev/null
+++ b/src/res/translation/translation_pt_PT.ts
@@ -0,0 +1,2346 @@
+
+
+
+
+ CAboutDlg
+
+
+
+ O
+
+
+
+ permite aos músicos realizar jam sessions em tempo real pela Internet. Existe um servidor
+
+
+
+
+
+
+
+
+
+ que reúne os dados de áudio de cada cliente
+
+
+
+
+
+
+
+
+
+ , que mistura os dados de áudio e envia a mistura de volta para cada cliente.
+
+
+
+
+ utiliza as seguintes bibliotecas, recursos ou partes de código:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sobre o
+
+
+
+
+ , Versão
+
+
+
+
+ Programa de Jam Sessions pela Internet
+
+
+
+
+ Sob a Licença Pública Geral GNU (GPL)
+
+
+
+ CAboutDlgBase
+
+
+
+ Sobre
+
+
+
+
+ TextLabelVersion
+
+
+
+
+ Copyright (C) 2005-2020 Volker Fischer e outros
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Autor: Volker Fischer
+
+
+
+ Copyright (C) 2005-2020
+
+
+
+
+ &OK
+
+
+
+ CAnalyzerConsole
+
+
+
+ Consola de Análise
+
+
+
+
+ Taxa de Erros de Cada Tamanho de Buffer
+
+
+
+ CAudioMixerBoard
+
+
+
+ Servidor
+
+
+
+
+ T E N T A N D O L I G A R
+
+
+
+ CChannelFader
+
+
+
+ Nível do Canal
+
+
+
+
+ Mostra o nível de áudio pré-fader deste canal. Todos os clientes ligados ao servidor terão atribuído um nível de áudio, o mesmo valor para cada cliente.
+
+
+
+
+ Nível de entrada deste canal de áudio do servidor
+
+
+
+
+ Fader da Mistura
+
+
+
+
+ Ajusta o nível de áudio deste canal. Por cada cliente ligado ao servidor será atribuído um fader de áudio em todos os clientes, podendo cada um ajustar a sua mistura local.
+
+
+
+
+ Configuração do nível de mistura local deste canal de áudio do servidor
+
+
+
+
+ Com a caixa de seleção Mute, o canal de áudio pode ser silenciado.
+
+
+
+
+ Botão Mute
+
+
+
+
+ Com a caixa de seleção Solo, o canal de áudio pode ser definido como solo, o que significa que todos os outros canais, exceto o canal atual, serão silenciados. É possível definir mais que um canal no modo solo.
+
+
+
+
+ Botão Solo
+
+
+
+
+ Identificador do Fader
+
+
+
+
+ O Identificador do fader identifica o cliente ligado. O nome no identificador, a imagem do instrumento e a bandeira do país podem ser definidos no Meu Perfil.
+
+
+
+
+ Imagem do instrumento do canal da mistura
+
+
+
+
+ Identificação do canal da mistura (identificador do fader)
+
+
+
+
+ Bandeira do país do canal da mistura
+
+
+
+
+ MUTE
+
+
+
+
+ SOLO
+
+
+
+
+ Nome/Alcunha
+
+
+
+
+ Instrumento
+
+
+
+
+ Localização
+
+
+
+
+
+
+ Nível de Habilidade
+
+
+
+
+ Principiante
+
+
+
+
+ Intermediário
+
+
+
+
+ Avançado
+
+
+
+
+ Perfil do músico
+
+
+
+
+
+
+ Mute
+
+
+
+
+
+
+ Solo
+
+
+
+ CChatDlg
+
+
+
+ Janela de Mensagens
+
+
+
+
+ A janela de mensagens mostra um histórico de todas as mensagens enviadas durante a sessão.
+
+
+
+
+ Histórico de Mensagens
+
+
+
+
+ Texto da Mensagem
+
+
+
+
+ Introduza o texto da mensagem no campo de introdução e pressione Enter para enviar a mensagem ao servidor, que distribui a mensagem a todos os clientes ligados. A sua mensagem será exibida na janela de mensagens.
+
+
+
+
+ Campo de edição de texto da mensagem
+
+
+
+ CChatDlgBase
+
+
+
+ Mensagens
+
+
+
+
+ &Limpar
+
+
+
+
+ &Fechar
+
+
+
+ CClientDlg
+
+
+
+ Medidor do Nível de Entrada
+
+
+
+
+ Os indicadores do nível de entrada mostram o nível dos dois canais stereo da entrada de áudio selecionada.
+
+
+
+
+ Certifique-se de não clipar o sinal de entrada para evitar distorções no sinal de áudio.
+
+
+
+
+ Se o cliente
+
+
+
+
+ , não deve ouvir a sua voz/instrumento diretamente nas colunas ou nos headphones enquanto o cliente
+
+
+
+
+ estiver ligado a um servidor e tocar o seu instrumento/cantar no microfone, os LEDs do medidor do nível de entrada devem piscar. Se tal não acontecer, provavelmente selecionou o canal de entrada errado (por exemplo, entrada de linha em vez da entrada do microfone) ou ajustou o ganho da entrada muito baixo no misturador de áudio (Windows) ou na placa de som.
+
+
+
+
+ Para um uso adequado do cliente
+
+
+
+
+ não estiver ligado a um servidor. Isso pode ser feito silenciando (mute) o canal da entrada de áudio no dispositivo de reprodução (não no dispositivo de captura!)
+
+
+
+
+ Medidor do nível de entrada
+
+
+
+
+ Simula um medidor de nível analógico LED.
+
+
+
+
+ Botão de Ligar/Desligar
+
+
+
+
+ Pressione este botão para se ligar a um servidor. Uma janela será aberta onde pode selecionar um servidor. Se já estiver ligado a um servidor, pressionar este botão encerrará a sessão.
+
+
+
+
+ Botão de alternação entre ligar e desligar
+
+
+
+
+ Clicar nesse botão altera a legenda do botão de Ligar para Desligar, ou seja, implementa uma funcionalidade de alternação para conectar e desconectar o cliente
+
+
+
+
+
+ .
+
+
+
+
+ Fader da Entrada Local de Áudio
+
+
+
+
+ Fader de entrada local de áudio (esquerdo/direito)
+
+
+
+
+ Ajuste do nível do efeito de reverberação
+
+
+
+
+ Seleção do canal esquerdo para reverberação
+
+
+
+
+ Seleção do canal direito para reverberação
+
+
+
+
+ Se este indicador LED ficar vermelho, não se vai divertir muito ao usar o
+
+
+
+
+ Indicador LED do estado de latência
+
+
+
+
+ Indicador LED do estado dos buffers
+
+
+
+
+
+ &Ligar
+
+
+
+
+ &Ver
+
+
+
+
+ &Configuração da ligação ...
+
+
+
+
+ Meu &Perfil...
+
+
+
+
+ &Mensagens...
+
+
+
+
+ &Definições...
+
+
+
+
+ Consola de &Análise...
+
+
+
+
+ &Sair
+
+
+
+
+ Nenhum
+
+
+
+
+ Centro
+
+
+
+
+ R
+
+
+
+
+
+ L
+
+
+
+
+ Com o fader de áudio, os níveis relativos dos canais locais esquerdo e direito podem ser alterados. Para um sinal mono, atua como uma panorâmica entre os dois canais. Se, por exemplo, um microfone estiver ligado no canal direito e um instrumento estiver ligado no canal esquerdo, mais alto que o microfone, mova o fader de áudio numa direção em que a etiqueta acima do fader mostre
+
+
+
+
+ , onde
+
+
+
+
+ é o indicador de atenuação atual.
+
+
+
+
+ Nível de Reverberação
+
+
+
+
+ Um efeito de reverberação pode ser aplicado a um canal local de áudio mono ou a ambos os canais no modo estéreo. A seleção do canal mono e o nível de reverberação podem ser modificados. Se, por exemplo, o sinal do microfone for alimentado no canal de áudio direito da placa de som, e for aplicado um efeito de reverberação, ajuste o seletor de canal para a direita e mova o fader para cima até que o nível de reverberação desejado seja atingido.
+
+
+
+
+ O efeito de reverberação requer uma utilização do CPU significativa, de forma a que só deve ser usado em PCs rápidos. Se o atenuador do nível de reverberação estiver definido como mínimo (que é a configuração padrão), o efeito de reverberação será desativado e não causará nenhum uso adicional do CPU.
+
+
+
+
+ Seleção do Canal de Reverberação
+
+
+
+
+ Com estes botões de seleção, pode ser escolhido o canal de entrada de áudio no qual o efeito de reverberação é aplicado. Pode ser selecionado o canal de entrada esquerdo ou direito.
+
+
+
+
+ LED do Estado da Latência
+
+
+
+
+ O indicador LED do estado da latência mostra o estado atual do atraso do áudio. Se a luz estiver verde, o atraso é perfeito para uma jam session. Se a luz estiver amarela, uma sessão ainda é possível, mas pode ser mais difícil tocar sincronizado. Se a luz estiver vermelha, o atraso é demasiado grande para uma sessão de jamming.
+
+
+
+
+ LED do Estado dos Buffers
+
+
+
+
+ O indicador LED do estado dos buffers mostra o estado atual do áudio/transmissão. Se a luz estiver verde, não haverá buffer em excesso/déficit e o fluxo de áudio não será interrompido. Se a luz estiver vermelha, o fluxo de áudio é interrompido devido a um dos seguintes problemas:
+
+
+
+
+ O jitter buffer da rede não é grande o suficiente para o jitter atual da interface de rede/áudio.
+
+
+
+
+ O atraso do buffer da placa de som (buffer size) está definido para um valor demasiado baixo.
+
+
+
+
+ A taxa de upload ou download é muito alta para a largura de banda disponível na ligação à Internet.
+
+
+
+
+ O CPU do cliente ou servidor está a 100%.
+
+
+
+
+ utilizador
+
+
+
+
+ utilizadores
+
+
+
+
+ Desl&igar
+
+
+
+ CClientDlgBase
+
+
+
+ Latência
+
+
+
+
+ Buffers
+
+
+
+
+ Entrada
+
+
+
+
+ L
+
+
+
+
+ R
+
+
+
+
+ Definições
+
+
+
+
+ Mensagens
+
+
+
+
+ Silenciar-me
+
+
+
+
+ &Ligar
+
+
+
+
+ Pan
+
+
+
+
+ Centro
+
+
+
+
+ Reverberação
+
+
+
+
+ Esquerdo
+
+
+
+
+ Direito
+
+
+
+ CClientSettingsDlg
+
+
+
+ Tamanho do Jitter Buffer
+
+
+
+
+ O jitter buffer (ou buffer de instabilidade) compensa os desvios de temporização da rede e da placa de som. O tamanho desse jitter buffer influencia, portanto, a qualidade do fluxo de áudio (quantas interrupções ocorrem) e a latência geral (quanto maior o buffer, maior a latência).
+
+
+
+
+ O tamanho do jitter buffer pode ser escolhido manualmente para o cliente local e o servidor remoto. Para o jitter buffer local, as interrupções no fluxo de áudio são indicadas pela luz na parte inferior dos faders do jitter buffer. Se a luz ficar vermelha, ocorreu um excesso/déficit do buffer e o fluxo de áudio é interrompido.
+
+
+
+
+ A configuração do jitter buffer é, portanto, uma troca entre a qualidade do áudio e o atraso geral.
+
+
+
+
+ Está disponível uma configuração automática do tamanho do jitter buffer. Se a opção Auto estiver ativada, os jitter buffers do cliente local e do servidor remoto serão configurados automaticamente com base nas medições da instabilidade de sincronização da rede e da placa de som. Se a opção Auto estiver ativada, os faders do jitter buffer serão desativados (não poderão ser movidos manualmente).
+
+
+
+
+ Caso a configuração automática do jitter buffer estiver ativada, os buffers de rede do cliente local e do servidor remoto são configurados com um valor conservador para minimizar a probabilidade de perda de áudio. Para ajustar o atraso/latência do áudio, é recomendável desativar a funcionalidade de configuração automática e diminuir o tamanho do jitter buffer manualmente usando os controles deslizantes até que a quantidade de perdas de áudio lhe sejam pessoalmente aceitáveis. O indicador LED representará as interrupções de áudio do jitter buffer local através de uma luz vermelha.
+
+
+
+
+ Controle deslizante do jitter buffer local
+
+
+
+
+ Controle deslizante do jitter buffer do servidor
+
+
+
+
+ Interruptor do jitter buffer automático
+
+
+
+
+ Indicador LED de estado do jitter buffer
+
+
+
+
+ Dispositivo da Placa de Som
+
+
+
+
+ O driver ASIO (placa de som) pode ser selecionado usando o
+
+
+
+
+ no Windows. No MacOS/Linux, não é possível seleccionar a placa de som. Se o driver ASIO selecionado não for válido, uma mensagem de erro será exibida e o driver válido anterior será selecionado.
+
+
+
+
+ Se o driver for selecionado durante uma ligação ativa, a ligação será interrompida, o driver será alterado e a ligação reiniciada automaticamente.
+
+
+
+
+ Seletor de dispositivo da placa de som
+
+
+
+
+ Caso o driver ASIO4ALL seja usado, note que esse driver geralmente introduz aprox. 10-30 ms de atraso de áudio adicional. Dado isto, é recomendável usar uma placa de som com um driver ASIO nativo.
+
+
+
+
+ Se estiver a usar o driver kX ASIO, certifique-se de ligar as entradas ASIO no painel de configurações do kX DSP.
+
+
+
+
+ Mapeamento de Canais da Placa de Som
+
+
+
+
+ Caso o dispositivo selecionado da placa de som ofereça mais que um canal de entrada ou saída, as configurações de Mapeamento de canais de entrada e de saída estarão visíveis.
+
+
+
+
+ Para cada canal de entrada/saída do
+
+
+
+
+ (canal esquerdo e direito), um canal real da placa de som pode ser selecionado.
+
+
+
+
+ Seletor de canal de entrada esquerdo
+
+
+
+
+ Seletor de canal de entrada direito
+
+
+
+
+ Seletor de canal de saída esquerdo
+
+
+
+
+ Seletor de canal de saída direito
+
+
+
+
+ Activar Buffers de Rede Pequenos
+
+
+
+
+ Se ativado, o suporte para pacotes de áudio de rede muito pequenos é ativado. Pacotes de rede muito pequenos serão apenas realmente usados se o atraso do buffer da placa de som for menor que
+
+
+
+
+ amostras. Quanto menor o buffer da rede, menor a latência do áudio. Mas, ao mesmo tempo, a carga da rede e a probabilidade de interrupção do áudio também aumentam.
+
+
+
+
+ Caixa de activação de buffers de rede pequenos
+
+
+
+
+ Atraso do Buffer da Placa de Som
+
+
+
+
+ A configuração do atraso do buffer (buffer delay) é uma configuração fundamental do cliente
+
+
+
+
+ . Esta configuração tem influência em muitas propriedades da ligação.
+
+
+
+
+ Três tamanhos de buffer são suportados
+
+
+
+
+ 64 amostras: esta é a configuração preferida, pois oferece menor latência, mas não funciona com todas as placas de som.
+
+
+
+
+ 128 amostras: esta configuração deve funcionar na maioria das placas de som disponíveis.
+
+
+
+
+ 256 amostras: esta configuração deve ser usada se apenas estiver disponível um computador muito lento ou uma ligação lenta à Internet.
+
+
+
+
+ Alguns drivers da placa de som não permitem que o atraso do buffer seja alterado pelo cliente
+
+
+
+
+ . Nesse caso, a configuração de atraso do buffer estará desativada. Para alterar o atraso do buffer, essa configuração deve ser alterada no driver da placa de som. No Windows, pressione o botão Configuração do Driver para abrir o painel de configurações do driver. No Linux, use a ferramenta de configuração Jack para alterar o atraso do buffer.
+
+
+
+
+ Se nenhum atraso do buffer estiver selecionado e todas as configurações estiverem desativadas, um atraso do buffer não suportado será usado pelo driver. O cliente
+
+
+
+
+ ainda funcionará com essa configuração, mas com desempenho restrito.
+
+
+
+
+ O atraso do buffer influencia o estado da ligação, a taxa de upload atual e a latência geral. Quanto menor o atraso do buffer, maior a probabilidade de a luz vermelha no indicador de estado (interrupções), maior a taxa de upload e menor a latência geral.
+
+
+
+
+ A configuração do buffer é, portanto, uma troca entre qualidade de áudio e latência geral.
+
+
+
+
+ Se as configurações de atraso do buffer estiverem desativadas, é porque o driver de áudio proibe modificar essa configuração a partir do cliente
+
+
+
+
+ . No Windows, pressione o botão <i>Configuração do Driver</i> para abrir o painel de configurações do driver. No Linux, use a ferramenta de configuração <i>Jack</i> para alterar o atraso do buffer.
+
+
+
+
+ Botão de configuração de 128 amostras
+
+
+
+
+ Botão de configuração de 256 amostras
+
+
+
+
+ Botão de configuração de 512 amostras
+
+
+
+
+ Botão de configuração do ASIO
+
+
+
+
+ Skin Sofisticada
+
+
+
+
+ Se ativada, uma skin sofisticada será aplicada à janela principal.
+
+
+
+
+ Caixa de ativação da skin sofisticada
+
+
+
+
+ Mostrar Níveis de Canais
+
+
+
+
+ Se ativado, cada canal de cliente exibirá uma barra de nível pré-fader.
+
+
+
+
+ Caixa de activação para exibir níveis de canais
+
+
+
+
+ Canais de Áudio
+
+
+
+
+ Selecione o número de canais de áudio a serem usados. Existem três modos disponíveis. Os modos mono e estéreo usam um e dois canais de áudio, respectivamente. No modo Entrada Mono/Saída Estéreo, o sinal de áudio enviado ao servidor é mono, mas o sinal de retorno é estéreo. Isso é útil quando a placa de som coloca o instrumento e o microfone em canais diferentes. Nesse caso, os dois sinais de entrada podem ser misturados num canal mono, mas a mistura do servidor pode ser ouvida em estéreo.
+
+
+
+
+ Ativar o modo de transmissão estéreo aumenta a taxa do fluxo de dados. Verifique que a taxa de transmissão não excede a largura de banda disponível da sua ligação à Internet.
+
+
+
+
+ No modo de transmissão estéreo, nenhuma seleção de canal de áudio para o efeito de reverberação estará disponível na janela principal, pois o efeito é aplicado em ambos os canais.
+
+
+
+
+ Seletor de canais áudio
+
+
+
+
+ Qualidade de Áudio
+
+
+
+
+ Selecione a qualidade de áudio desejada. Pode ser selecionada uma qualidade de áudio baixa, normal ou alta. Quanto maior a qualidade do áudio, maior a taxa de dados do fluxo de áudio. Verifique que a taxa de transmissão não excede a largura de banda disponível da sua ligação à Internet.
+
+
+
+
+ Seletor de qualidade áudio
+
+
+
+
+ Nível de Novo Cliente
+
+
+
+
+ A configuração de nível de novo cliente define, em percentagem, o nível do fader de um novo cliente ligado. Por exemplo, se um cliente novo se ligar ao servidor atual, o seu canal terá o nível inicial do fader especificado, excepto quando um diferente nível do fader de uma ligação anterior desse mesmo cliente já tenha sido definido.
+
+
+
+
+ Caixa de edição no nível de novo cliente
+
+
+
+
+ Endereço do servidor central
+
+
+
+
+ O endereço do servidor central é o endereço IP ou URL do servidor central a partir do qual é gerida a lista de servidores do diálogo de ligação. Com a configuração do endereço do servidor central, é possível selecionar um dos servidores centrais padrão ou especificar um endereço manual.
+
+
+
+
+ Seletor de servidor central padrão
+
+
+
+
+ Caixa de edição do endereço do servidor central
+
+
+
+
+ Parâmetros do Estado da Ligação
+
+
+
+
+ A latência da ligação é o tempo necessário para o fluxo de áudio viajar do cliente para o servidor e vice-versa. Esta latência é introduzida pela rede. Esta latência deve ser tão baixa quanto 20-30 ms. Se esta latência for maior (por exemplo, 50-60 ms), a distância até ao servidor é muito grande ou sua ligação à Internet não é suficiente.
+
+
+
+
+ A latência geral é calculada a partir da latência da ligação atual e do atraso introduzido pelas configurações do buffer.
+
+
+
+
+ A taxa de transmissão depende do tamanho do pacote de áudio e da configuração de compactação de áudio. Verifique se a taxa de transmissão não é maior que a taxa disponível (verifique a taxa de upload da sua ligação à Internet usando, por exemplo, o speedtest.net).
+
+
+
+
+ Se este indicador LED ficar vermelho, não se irá divertir muito ao usar o
+
+
+
+
+ .
+
+
+
+
+ Configuração ASIO
+
+
+
+
+ Mono
+
+
+
+
+ Entrada Mono/Saída Estéreo
+
+
+
+
+ Estéreo
+
+
+
+
+ Baixa
+
+
+
+
+ Normal
+
+
+
+
+ Alta
+
+
+
+
+ Manual
+
+
+
+
+ Servidor Padrão
+
+
+
+
+ Servidor Padrão (America do Norte)
+
+
+
+
+
+
+
+
+
+
+ Tamanho:
+
+
+
+
+ Atraso do buffer
+
+
+
+
+ Atraso do buffer:
+
+
+
+
+ O dispositivo de áudio selecionado não pôde ser usado devido ao seguinte erro:
+
+
+
+
+ O driver anterior será selecionado.
+
+
+
+
+ Ok
+
+
+
+ CClientSettingsDlgBase
+
+
+
+ Definições
+
+
+
+
+ Placa de Som
+
+
+
+
+ Dispositivo
+
+
+
+
+ Mapeamento do Canal de Entrada
+
+
+
+
+
+ L
+
+
+
+
+
+ R
+
+
+
+
+ Mapeamento do Canal de Saída
+
+
+
+
+ Activar Buffers de Rede Pequenos
+
+
+
+
+ Atraso do buffer
+
+
+
+
+ (preferido)
+
+
+
+
+ (padrão)
+
+
+
+
+ (seguro)
+
+
+
+
+ Configuração do Driver
+
+
+
+
+ Jitter Buffer
+
+
+
+
+ Auto
+
+
+
+
+ Local
+
+
+
+
+ Servidor
+
+
+
+
+
+ Tamanho
+
+
+
+
+ Outras Config.
+
+
+
+
+ Canais de Áudio
+
+
+
+
+ Qualidade de Áudio
+
+
+
+
+ Nível de Novo Cliente
+
+
+
+
+ %
+
+
+
+
+ Skin Sofisticada
+
+
+
+
+ Mostrar Níveis de Canais
+
+
+
+
+ Endereço do Servidor Central:
+
+
+
+
+ Taxa de Transmissão de Áudio
+
+
+
+
+
+
+ val
+
+
+
+
+ Latência da Ligação
+
+
+
+
+ Latência Geral
+
+
+
+ CConnectDlg
+
+
+
+ Lista de servidores
+
+
+
+
+ A lista de servidores mostra a os servidores disponíveis registados no servidor central. Selecione um servidor da lista e pressione o botão Ligar para se ligar a este servidor. Como alternativa, clique duas vezes num servidor da lista para se ligar ao mesmo. Se um servidor estiver ocupado, uma lista dos músicos ligados estará disponível expandindo o item da lista. Os servidores permanentes são mostrados em negrito.
+
+
+
+
+ Observe que pode demorar algum tempo para obter a lista de servidores do servidor central. Se nenhum endereço de servidor central válido for especificado nas definições, nenhuma lista de servidores estará disponível.
+
+
+
+
+ Vista da lista de servidores
+
+
+
+
+ Endereço do servidor
+
+
+
+
+ O endereço IP ou URL do servidor executando o servidor
+
+
+
+
+ deve ser definido aqui. Um número de porta opcional pode ser adicionado após o endereço IP ou URL usando o caractere dois pontos como separador, por exemplo, example.org:
+
+
+
+
+ . Uma lista dos endereços IP ou URLs dos servidores usados recentemente está disponível para seleção.
+
+
+
+
+ Caixa de edição do endereço do servidor
+
+
+
+
+ Contém o endereço IP ou URL do servidor atual. Também armazena URLs antigos na lista do seletor.
+
+
+
+
+ Filtro
+
+
+
+
+ A lista de servidores é filtrada pelo texto fornecido. Note que o filtro não diferencia maiúsculas de minúsculas.
+
+
+
+
+ Caixa de edição do filtro
+
+
+
+
+ Mostrar Todos os Músicos
+
+
+
+
+ Se marcar esta caixa de seleção, os músicos de todos os servidores serão mostrados. Se desmarcar a caixa de seleção, todos os itens em exibição na lista serão recolhidos.
+
+
+
+
+ Caixa de seleção para mostrar músicos
+
+
+
+ CConnectDlgBase
+
+
+
+ Configuração da Ligação
+
+
+
+
+ Filtro
+
+
+
+
+ Mostrar Todos os Músicos
+
+
+
+
+ Nome do Servidor
+
+
+
+
+ Latência
+
+
+
+
+ Músicos
+
+
+
+
+ Localização
+
+
+
+
+ Nome/Endereço do Servidor
+
+
+
+
+ &Cancelar
+
+
+
+
+ &Ligar
+
+
+
+ CHelpMenu
+
+
+
+
+
+
+
+
+
+ Como Começa&r...
+
+
+
+
+ &Manual do Programa...
+
+
+
+
+ O que é &isto
+
+
+
+
+ &Sobre...
+
+
+
+ CLicenceDlg
+
+
+
+ Eu &aceito os termos da licença acima
+
+
+
+
+ Aceitar
+
+
+
+
+ Rejeitar
+
+
+
+
+ Ao ligar-se a este servidor e concordar com este aviso, está a concordar com o seguinte:
+
+
+
+
+ Você concorda que todos os dados, sons ou outros trabalhos transmitidos para este servidor pertencem e são criados por você ou por seus licenciadores, e que você está disponibilizando esses dados, sons ou outros trabalhos através da seguinte licença Creative Commons (para obter mais informações sobre esta licença, consulte
+
+
+
+
+ Você tem o direito de:
+
+
+
+
+ Compartilhar
+
+
+
+
+ copiar e redistribuir o material em qualquer suporte ou formato
+
+
+
+
+ Adaptar
+
+
+
+
+ remisturar, transformar, e criar a partir do material
+
+
+
+
+ O licenciante não pode revogar estes direitos desde que você respeite os termos da licença.
+
+
+
+
+ De acordo com os termos seguintes:
+
+
+
+
+ Atribuição
+
+
+
+
+ Você deve atribuir o devido crédito, fornecer um link para a licença, e indicar se foram feitas alterações. Você pode fazê-lo de qualquer forma razoável, mas não de uma forma que sugira que o licenciante o apoia ou aprova o seu uso.
+
+
+
+
+ NãoComercial
+
+
+
+
+ Você não pode usar o material para fins comerciais.
+
+
+
+
+ CompartilhaIgual
+
+
+
+
+ Se você remisturar, transformar, ou criar a partir do material, tem de distribuir as suas contribuições ao abrigo da mesma licença que o original.
+
+
+
+
+ Sem restrições adicionais
+
+
+
+
+ Você não pode aplicar termos jurídicos ou medidas de caráter tecnológico que restrinjam legalmente outros de fazerem algo que a licença permita.
+
+
+
+ CMusProfDlg
+
+
+
+ . Esta identificação também será exibida em cada cliente ligado ao mesmo servidor que você. Se o nome estiver vazio, o endereço IP será mostrado.
+
+
+
+
+ Caixa de edição do nome ou pseudônimo
+
+
+
+
+ Botão da imagem do instrumento
+
+
+
+
+ Botão da bandeira do país
+
+
+
+
+ Caixa de edição da cidade
+
+
+
+
+ Caixa do nível de habilidade
+
+
+
+
+
+
+ Nenhum
+
+
+
+
+
+ Perfil do músico
+
+
+
+
+ Nome/Alcunha
+
+
+
+
+ Instrumento
+
+
+
+
+ País
+
+
+
+
+ Cidade
+
+
+
+
+ Habilidade
+
+
+
+
+ &Fechar
+
+
+
+
+ Principiante
+
+
+
+
+ Intermediário
+
+
+
+
+ Avançado
+
+
+
+
+ Defina o seu nome ou um pseudônimo aqui para que os outros músicos com quem quer tocar saibam quem você é. Além disso, pode definir uma imagem do instrumento que toca e uma bandeira do país em que vive. A cidade em que vive e o nível de habilidade com o seu instrumento também podem ser adicionados.
+
+
+
+
+ O que definir aqui aparecerá por baixo do seu fader na secção de mistura quando estiver ligado a um servidor
+
+
+
+
+ Bateria
+
+
+
+
+ Djembe
+
+
+
+
+ Guitarra Elétrica
+
+
+
+
+ Guitarra Acústica
+
+
+
+
+ Baixo
+
+
+
+
+ Teclado
+
+
+
+
+ Sintetizador
+
+
+
+
+ Piano de Cauda
+
+
+
+
+ Acordeão
+
+
+
+
+ Voz
+
+
+
+
+ Microfone
+
+
+
+
+ Harmónica
+
+
+
+
+ Trompete
+
+
+
+
+ Trombone
+
+
+
+
+ Trompa Francesa
+
+
+
+
+ Tuba
+
+
+
+
+ Saxofone
+
+
+
+
+ Clarinete
+
+
+
+
+ Flauta
+
+
+
+
+ Violino
+
+
+
+
+ Violoncelo
+
+
+
+
+ Contrabaixo
+
+
+
+
+ Gravador
+
+
+
+
+ Streamer
+
+
+
+
+ Ouvinte
+
+
+
+
+ Guitarra+Voz
+
+
+
+
+ Teclado+Voz
+
+
+
+
+ Bodhrán
+
+
+
+
+ Fagote
+
+
+
+
+ Oboé
+
+
+
+
+ Harpa
+
+
+
+
+ Viola de Arco
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CServerDlg
+
+
+
+ Lista de Clientes
+
+
+
+
+ A lista de clientes mostra todos os clientes que estão atualmente ligados a este servidor. Algumas informações sobre os clientes, como o endereço IP e o nome, são fornecidas para cada cliente ligado.
+
+
+
+
+ Lista de clientes ligados
+
+
+
+
+ Iniciar Minimizado com o Sistema Operativo
+
+
+
+
+ Se a caixa de seleção Iniciar Minimizado com o Sistema Operativo estiver marcada, o servidor
+
+
+
+
+ será iniciado quando o sistema operativo for iniciado, e minimizado automaticamente para um ícone da barra de tarefas do sistema.
+
+
+
+
+ Mostrar Diálogo da Licença Creative Commons
+
+
+
+
+ Se ativada, uma caixa de diálogo Creative Commons BY-NC-SA 4.0 será exibida sempre que um novo utilizador se ligar ao servidor.
+
+
+
+
+ Tornar Servidor Público
+
+
+
+
+ Se a caixa de seleção Tornar Servidor Público estiver marcada, esse servidor irá registar-se no servidor central para que todos os utilizadores do
+
+
+
+
+ possam ver o servidor na lista do diálogo de ligação e ligar-se a ele. O registo do servidor é renovado periodicamente para garantir que todos os servidores na lista de diálogo de ligação estejam realmente disponíveis.
+
+
+
+
+ Estado de Registo do Servidor
+
+
+
+
+ Se a caixa de seleção Tornar Servidor Público estiver marcada, isto mostrará o sucesso ou insucesso do registo no servidor central.
+
+
+
+
+ Endereço do servidor central
+
+
+
+
+ O endereço do servidor central é o endereço IP ou o URL do servidor central no qual esse servidor será registado. Com o menu dos servidores centrais, é possível selecionar um dos servidores centrais padrão ou especificar um endereço manual.
+
+
+
+
+ Seletor do servidor central padrão
+
+
+
+
+ Caixa de edição do endereço do servidor central
+
+
+
+
+ Nome do Servidor
+
+
+
+
+ O nome do servidor identifica o servidor na lista do diálogo de ligação exibido nos clientes. Se nenhum nome for fornecido, o endereço IP será mostrado.
+
+
+
+
+ Caixa de edição do nome do servidor
+
+
+
+
+ ;Localização: Cidade
+
+
+
+
+ A cidade onde este servidor está localizado pode ser definida aqui. Se um nome de cidade for inserido, este será mostrado na lista do diálogo de ligação dos clientes.
+
+
+
+
+ Caixa de edição da cidade onde o servidor se encontra
+
+
+
+
+ Localização: País
+
+
+
+
+ O país em que este servidor está localizado pode ser definido aqui. Se um país for inserido, ele será mostrado na lista do diálogo de logação dos clientes.
+
+
+
+
+ Seletor do país onde o servidor de encontra
+
+
+
+
+
+ &Sair
+
+
+
+
+ &Esconder servidor
+
+
+
+
+
+
+
+
+
+
+
+ &Abrir servidor
+
+
+
+
+
+
+
+
+
+ Manual
+
+
+
+
+ Servidor Padrão
+
+
+
+
+ Servidor Padrão (America do Norte)
+
+
+
+
+ - Servidor
+
+
+
+
+ &Janela
+
+
+
+
+ Não Registado
+
+
+
+
+ Endereço incorrecto
+
+
+
+
+ Registo solicitado
+
+
+
+
+ Falha no registo
+
+
+
+
+ Verifique versão do servidor
+
+
+
+
+ Registado
+
+
+
+
+ Servidor Central Cheio
+
+
+
+
+ Valor desconhecido
+
+
+
+ CServerDlgBase
+
+
+
+ IP do Cliente:Porta
+
+
+
+
+
+ Nome do Servidor
+
+
+
+
+ Tamanho do Jitter Buffer
+
+
+
+
+ Iniciar Minimizado com o Sistema Operativo
+
+
+
+
+ Mostrar Diálogo da Licença Creative Commons BY-NC-SA 4.0
+
+
+
+
+ Tornar Servidor Público (Registar na Lista de Servidores)
+
+
+
+
+ ESTADO
+
+
+
+
+ Endereço do Servidor Central:
+
+
+
+
+ Informação do Servidor
+
+
+
+
+ Localização: Cidade
+
+
+
+
+ Localização: País
+
+
+
+
+ TextLabelNameVersion
+
+
+
+ CSound
+
+
+
+ O servidor Jack não está em execução. Este programa requer um servidor Jack para ser executado. Normalmente, se o servidor Jack não estiver em execução, este programa iniciará automaticamente o servidor Jack. Parece que esse início automático não funcionou. Tente iniciar o servidor Jack manualmente.
+
+
+
+
+ A taxa de amostragem (sample rate) do servidor Jack é diferente da necessária. A taxa de amostragem necessária é:
+
+
+
+
+ Pode usar uma ferramenta como <i><a href=http://qjackctl.sourceforge.net>QJackCtl</a></i> para ajustar a taxa de amostragem do servidor Jack.
+
+
+
+
+ Certifique-se de definir Frames/Período para um valor baixo como
+
+
+
+
+ para obter uma latência baixa.
+
+
+
+
+
+ O registo da porta Jack falhou.
+
+
+
+
+ Não é possível ativar o cliente Jack.
+
+
+
+
+ O servidor Jack foi desligado. Este programa requer um servidor Jack para ser executado. Tente reiniciar o programa para resolver o problema.
+
+
+
+
+ A entrada do CoreAudio falhou na chamada AudioHardwareGetProperty. Parece que nenhuma placa de som está disponível no sistema.
+
+
+
+
+ A saída do CoreAudio falhou na chamada AudioHardwareGetProperty. Parece que nenhuma placa de som está disponível no sistema.
+
+
+
+
+ A taxa de amostragem (sample rate) de %1 Hz do dispositivo de entrada de áudio atual não é suportada. Por favor, abra o Audio-MIDI-Setup em Applications-> Utilities e tente definir uma taxa de amostragem de %2 Hz.
+
+
+
+
+ A taxa de amostragem (sample rate) de %1 Hz do dispositivo de saída de áudio atual não é suportada. Por favor, abra o Audio-MIDI-Setup em Applications-> Utilities e tente definir uma taxa de amostragem de %2 Hz.
+
+
+
+
+ O formato do fluxo de entrada de áudio para este dispositivo de áudio não é compatível com este programa.
+
+
+
+
+ O formato do fluxo de saída de áudio para este dispositivo de áudio não é compatível com este programa.
+
+
+
+
+ Os tamanhos de buffer do dispositivo de áudio de entrada e saída atual não podem ser definidos para um valor comum. Por favor, escolha outros dispositivos de áudio de entrada/saída nas configurações do seu sistema.
+
+
+
+
+ O driver de áudio não pôde ser inicializado.
+
+
+
+
+ O dispositivo de áudio não suporta a taxa de amostragem (sample rate) necessária. A taxa de amostragem necessária é:
+
+
+
+
+ O dispositivo de áudio não suporta definir a taxa de amostragem (sample rate) necessária. Este erro pode ocorrer se você tiver uma interface de áudio como o Roland UA-25EX, onde se define a taxa de amostragem através de um interruptor de hardware no dispositivo de áudio. Se for esse o caso, altere a taxa de amostragem para
+
+
+
+
+ Hz no dispositivo e reinicie o cliente
+
+
+
+
+ .
+
+
+
+
+ O dispositivo de áudio não suporta o número necessário de canais. O número necessário de canais para entrada e saída é:
+
+
+
+
+
+ Formato de amostra de áudio necessário não disponível.
+
+
+
+
+ Nenhum dispositivo de áudio ASIO (driver) encontrado
+
+
+
+
+ O programa
+
+
+
+
+ requer que a interface de áudio de baixa latência ASIO funcione corretamente. Esta não é uma interface de áudio padrão do Windows e, portanto, é necessário um driver de áudio especial. Ou a sua placa de som possui um driver ASIO nativo (recomendado), ou pode usar drivers alternativos, como o driver ASIO4All.
+
+
+
+
+
+
+
+
+ CSoundBase
+
+
+
+ Seleção de dispositivo inválida.
+
+
+
+
+ As propriedades do driver de áudio foram alteradas para um estado incompatível com este programa. O dispositivo de áudio selecionado não pôde ser usado devido ao seguinte erro:
+
+
+
+
+ Por favor reinicie o programa.
+
+
+
+
+ Fechar
+
+
+
+
+ Nenhum dispositivo de áudio (driver)
+
+
+
+
+ utilizável encontrado.
+
+
+
+
+ De seguida verá uma lista de todos os drivers disponíveis com a mensagem de erro associada:
+
+
+
+
+ Deseja abrir as configurações do driver ASIO?
+
+
+
+
+ não pôde ser iniciado devido a problemas na interface de áudio.
+
+
+
diff --git a/src/res/translation_de_DE.ts b/src/res/translation_de_DE.ts
deleted file mode 100644
index 157e0be3..00000000
--- a/src/res/translation_de_DE.ts
+++ /dev/null
@@ -1,1446 +0,0 @@
-
-
-
-
- CAboutDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CAboutDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CAnalyzerConsole
-
-
-
-
-
-
-
-
-
-
-
-
- CChannelFader
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CChatDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CChatDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CClientDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- &Einstellungen
-
-
-
-
-
-
-
-
-
-
-
-
-
- CClientDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CClientSettingsDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CClientSettingsDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CConnectDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CConnectDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CHelpMenu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CLicenceDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CMusProfDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CServerDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CServerDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSound
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSoundBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/res/translation_fr_FR.ts b/src/res/translation_fr_FR.ts
deleted file mode 100644
index 96aba445..00000000
--- a/src/res/translation_fr_FR.ts
+++ /dev/null
@@ -1,1446 +0,0 @@
-
-
-
-
- CAboutDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CAboutDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CAnalyzerConsole
-
-
-
-
-
-
-
-
-
-
-
-
- CChannelFader
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CChatDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CChatDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CClientDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CClientDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CClientSettingsDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CClientSettingsDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CConnectDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CConnectDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CHelpMenu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CLicenceDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CMusProfDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CServerDlg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CServerDlgBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSound
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSoundBase
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/resources.qrc b/src/resources.qrc
index 77f355ec..51b5fe74 100755
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -1,4 +1,16 @@
+
+ res/translation/translation_de_DE.qm
+
+
+ res/translation/translation_fr_FR.qm
+
+
+ res/translation/translation_pt_PT.qm
+
+
+ res/translation/translation_es_ES.qm
+ res/CLEDDisabledSmall.pngres/CLEDGreenArrow.png
@@ -50,10 +62,15 @@
res/instruments/instrguitarvocal.pngres/instruments/instrkeyboardvocal.pngres/instruments/bodhran.png
+ res/instruments/bassoon.png
+ res/instruments/oboe.png
+ res/instruments/harp.png
+ res/instruments/viola.png
+ res/instruments/congas.png
+ res/instruments/bongo.pngres/fronticon.png
- res/logopicture.pngres/mainicon.png
diff --git a/src/server.cpp b/src/server.cpp
index 69288057..061b7325 100755
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -231,27 +231,28 @@ CServer::CServer ( const int iNewMaxNumChan,
const QString& strNewWelcomeMessage,
const QString& strRecordingDirName,
const bool bNCentServPingServerInList,
- const bool bNDisconnectAllClients,
+ const bool bNDisconnectAllClientsOnQuit,
const bool bNUseDoubleSystemFrameSize,
const ELicenceType eNLicenceType ) :
- bUseDoubleSystemFrameSize ( bNUseDoubleSystemFrameSize ),
- iMaxNumChannels ( iNewMaxNumChan ),
- Socket ( this, iPortNumber ),
- Logging ( iMaxDaysHistory ),
- JamRecorder ( strRecordingDirName ),
- bEnableRecording ( !strRecordingDirName.isEmpty() ),
- bWriteStatusHTMLFile ( false ),
- HighPrecisionTimer ( bNUseDoubleSystemFrameSize ),
- ServerListManager ( iPortNumber,
- strCentralServer,
- strServerInfo,
- iNewMaxNumChan,
- bNCentServPingServerInList,
- &ConnLessProtocol ),
- bAutoRunMinimized ( false ),
- strWelcomeMessage ( strNewWelcomeMessage ),
- eLicenceType ( eNLicenceType ),
- bDisconnectAllClients ( bNDisconnectAllClients )
+ bUseDoubleSystemFrameSize ( bNUseDoubleSystemFrameSize ),
+ iMaxNumChannels ( iNewMaxNumChan ),
+ Socket ( this, iPortNumber ),
+ Logging ( iMaxDaysHistory ),
+ JamRecorder ( strRecordingDirName ),
+ bEnableRecording ( !strRecordingDirName.isEmpty() ),
+ bWriteStatusHTMLFile ( false ),
+ HighPrecisionTimer ( bNUseDoubleSystemFrameSize ),
+ ServerListManager ( iPortNumber,
+ strCentralServer,
+ strServerInfo,
+ iNewMaxNumChan,
+ bNCentServPingServerInList,
+ &ConnLessProtocol ),
+ bAutoRunMinimized ( false ),
+ strWelcomeMessage ( strNewWelcomeMessage ),
+ eLicenceType ( eNLicenceType ),
+ bDisconnectAllClientsOnQuit ( bNDisconnectAllClientsOnQuit ),
+ pSignalHandler ( CSignalHandler::getSingletonP() )
{
int iOpusError;
int i;
@@ -400,11 +401,10 @@ CServer::CServer ( const int iNewMaxNumChan,
QString().number( static_cast ( iPortNumber ) ) );
}
- // Enable jam recording (if requested)
+ // Enable jam recording (if requested) - kicks off the thread
if ( bEnableRecording )
{
JamRecorder.Init ( this, iServerFrameSizeSamples );
- JamRecorder.start();
}
// enable all channels (for the server all channel must be enabled the
@@ -468,6 +468,14 @@ CServer::CServer ( const int iNewMaxNumChan,
SIGNAL ( SvrRegStatusChanged() ),
this, SLOT ( OnSvrRegStatusChanged() ) );
+ QObject::connect ( QCoreApplication::instance(),
+ SIGNAL ( aboutToQuit() ),
+ this, SLOT ( OnAboutToQuit() ) );
+
+ QObject::connect ( pSignalHandler,
+ SIGNAL ( ShutdownSignal ( int ) ),
+ this, SLOT ( OnShutdown ( int ) ) );
+
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
connectChannelSignalsToServerSlots();
@@ -804,14 +812,6 @@ void CServer::SendProtMessage ( int iChID, CVector vecMessage )
void CServer::OnNewConnection ( int iChID,
CHostAddress RecHostAddr )
{
- // in the special case that all clients shall be disconnected, just send the
- // disconnect message and leave this function
- if ( bDisconnectAllClients )
- {
- ConnLessProtocol.CreateCLDisconnection ( RecHostAddr );
- return;
- }
-
// on a new connection we query the network transport properties for the
// audio packets (to use the correct network block size and audio
// compression properties, etc.)
@@ -910,6 +910,39 @@ void CServer::OnCLDisconnection ( CHostAddress InetAddr )
}
}
+void CServer::OnAboutToQuit()
+{
+ // if enabled, disconnect all clients on quit
+ if ( bDisconnectAllClientsOnQuit )
+ {
+ Mutex.lock();
+ {
+ for ( int i = 0; i < iMaxNumChannels; i++ )
+ {
+ if ( vecChannels[i].IsConnected() )
+ {
+ ConnLessProtocol.CreateCLDisconnection ( vecChannels[i].GetAddress() );
+ }
+ }
+ }
+ Mutex.unlock(); // release mutex
+ }
+
+ Stop();
+
+ // if server was registered at the central server, unregister on shutdown
+ if ( GetServerListEnabled() )
+ {
+ UnregisterSlaveServer();
+ }
+}
+
+void CServer::OnShutdown ( int )
+{
+ // This should trigger OnAboutToQuit
+ QCoreApplication::instance()->exit();
+}
+
void CServer::Start()
{
// only start if not already running
@@ -944,7 +977,7 @@ void CServer::Stop()
void CServer::OnTimer()
{
- int i, j;
+ int i, j, iUnused;
int iClientFrameSizeSamples;
OpusCustomDecoder* CurOpusDecoder;
OpusCustomEncoder* CurOpusEncoder;
@@ -1099,11 +1132,11 @@ JitterMeas.Measure();
// OPUS decode received data stream
if ( CurOpusDecoder != nullptr )
{
- opus_custom_decode ( CurOpusDecoder,
- pCurCodedData,
- iCeltNumCodedBytes,
- &vecvecsData[i][iB * SYSTEM_FRAME_SIZE_SAMPLES * vecNumAudioChannels[i]],
- iClientFrameSizeSamples );
+ iUnused = opus_custom_decode ( CurOpusDecoder,
+ pCurCodedData,
+ iCeltNumCodedBytes,
+ &vecvecsData[i][iB * SYSTEM_FRAME_SIZE_SAMPLES * vecNumAudioChannels[i]],
+ iClientFrameSizeSamples );
}
}
@@ -1247,11 +1280,11 @@ JitterMeas.Measure();
opus_custom_encoder_ctl ( CurOpusEncoder,
OPUS_SET_BITRATE ( CalcBitRateBitsPerSecFromCodedBytes ( iCeltNumCodedBytes, iClientFrameSizeSamples ) ) );
- opus_custom_encode ( CurOpusEncoder,
- &vecsSendData[iB * SYSTEM_FRAME_SIZE_SAMPLES * vecNumAudioChannels[i]],
- iClientFrameSizeSamples,
- &vecbyCodedData[0],
- iCeltNumCodedBytes );
+ iUnused = opus_custom_encode ( CurOpusEncoder,
+ &vecsSendData[iB * SYSTEM_FRAME_SIZE_SAMPLES * vecNumAudioChannels[i]],
+ iClientFrameSizeSamples,
+ &vecbyCodedData[0],
+ iCeltNumCodedBytes );
}
// send separate mix to current clients
@@ -1277,6 +1310,8 @@ opus_custom_encoder_ctl ( CurOpusEncoder,
// does not consume any significant CPU when no client is connected.
Stop();
}
+
+ Q_UNUSED ( iUnused )
}
/// @brief Mix all audio data from all clients together.
diff --git a/src/server.h b/src/server.h
index 6060dd07..97fa404c 100755
--- a/src/server.h
+++ b/src/server.h
@@ -36,6 +36,7 @@
#endif
#include "global.h"
#include "buffer.h"
+#include "signalhandler.h"
#include "socket.h"
#include "channel.h"
#include "util.h"
@@ -177,7 +178,7 @@ public:
const QString& strNewWelcomeMessage,
const QString& strRecordingDirName,
const bool bNCentServPingServerInList,
- const bool bNDisconnectAllClients,
+ const bool bNDisconnectAllClientsOnQuit,
const bool bNUseDoubleSystemFrameSize,
const ELicenceType eNLicenceType );
@@ -370,7 +371,9 @@ protected:
// messaging
QString strWelcomeMessage;
ELicenceType eLicenceType;
- bool bDisconnectAllClients;
+ bool bDisconnectAllClientsOnQuit;
+
+ CSignalHandler* pSignalHandler;
signals:
void Started();
@@ -457,6 +460,10 @@ public slots:
void OnCLDisconnection ( CHostAddress InetAddr );
+ void OnAboutToQuit();
+
+ void OnShutdown ( int );
+
#if QT_VERSION < 0x50000 // MOC does not expand macros in Qt 4, so we cannot use QT_VERSION_CHECK(5, 0, 0)
// CODE TAG: MAX_NUM_CHANNELS_TAG
// make sure we have MAX_NUM_CHANNELS connections!!!
diff --git a/src/serverdlg.cpp b/src/serverdlg.cpp
index 0fbdf8c5..7df039ed 100755
--- a/src/serverdlg.cpp
+++ b/src/serverdlg.cpp
@@ -42,28 +42,28 @@ CServerDlg::CServerDlg ( CServer* pNServP,
// Add help text to controls -----------------------------------------------
// client list
- lvwClients->setWhatsThis ( tr ( "Client List: The client list "
- "shows all clients which are currently connected to this server. Some "
- "information about the clients like the IP address and name are given "
- "for each connected client." ) );
+ lvwClients->setWhatsThis ( "" + tr ( "Client List" ) + ": " + tr (
+ "The client list shows all clients which are currently connected to this "
+ "server. Some information about the clients like the IP address and name "
+ "are given for each connected client." ) );
lvwClients->setAccessibleName ( tr ( "Connected clients list view" ) );
// start minimized on operating system start
- chbStartOnOSStart->setWhatsThis ( tr ( "Start Minimized on Operating "
- "System Start: If the start minimized on operating system start "
+ chbStartOnOSStart->setWhatsThis ( "" + tr ( "Start Minimized on Operating "
+ "System Start" ) + ": " + tr ( "If the start minimized on operating system start "
"check box is checked, the " ) + APP_NAME + tr ( " server will be "
"started when the operating system starts up and is automatically "
"minimized to a system task bar icon." ) );
// CC licence dialog switch
- chbUseCCLicence->setWhatsThis ( tr ( "Show Creative Commons Licence "
- "Dialog: If enabled, a Creative Commons BY-NC-SA 4.0 Licence "
+ chbUseCCLicence->setWhatsThis ( "" + tr ( "Show Creative Commons Licence "
+ "Dialog" ) + ": " + tr ( "If enabled, a Creative Commons BY-NC-SA 4.0 Licence "
"dialog is shown each time a new user connects the server." ) );
// Make My Server Public flag
- chbRegisterServer->setWhatsThis ( tr ( "Make My Server Public: If "
- "the Make My Server Public check box is checked, this server registers "
+ chbRegisterServer->setWhatsThis ( "" + tr ( "Make My Server Public" ) + ": " +
+ tr ( "If the Make My Server Public check box is checked, this server registers "
"itself at the central server so that all " ) + APP_NAME +
tr ( " users can see the server in the connect dialog server list and "
"connect to it. The registering of the server is renewed periodically "
@@ -71,13 +71,13 @@ CServerDlg::CServerDlg ( CServer* pNServP,
"actually available." ) );
// register server status label
- lblRegSvrStatus->setWhatsThis ( tr ( "Register Server Status: If "
- "the Make My Server Public check box is checked, this will show "
+ lblRegSvrStatus->setWhatsThis ( "" + tr ( "Register Server Status" ) + ": " +
+ tr ( "If the Make My Server Public check box is checked, this will show "
"the success of registration with the central server." ) );
// central server address
- QString strCentrServAddr = tr ( "Central Server Address: The "
- "Central server address is the IP address or URL of the central server "
+ QString strCentrServAddr = "" + tr ( "Central Server Address" ) + ": " +
+ tr ( "The Central server address is the IP address or URL of the central server "
"at which this server is registered. With the central server address "
"type either the local region can be selected of the default central "
"servers or a manual address can be specified." );
@@ -90,7 +90,7 @@ CServerDlg::CServerDlg ( CServer* pNServP,
edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) );
// server name
- QString strServName = tr ( "Server Name: The server name identifies "
+ QString strServName = "" + tr ( "Server Name" ) + ": " + tr ( "The server name identifies "
"your server in the connect dialog server list at the clients. If no "
"name is given, the IP address is shown instead." );
@@ -100,18 +100,17 @@ CServerDlg::CServerDlg ( CServer* pNServP,
edtServerName->setAccessibleName ( tr ( "Server name line edit" ) );
// location city
- QString strLocCity = tr ( "Location City: The city in which this "
+ QString strLocCity = "" + tr ( "Location City" ) + ": " + tr ( "The city in which this "
"server is located can be set here. If a city name is entered, it "
"will be shown in the connect dialog server list at the clients." );
lblLocationCity->setWhatsThis ( strLocCity );
edtLocationCity->setWhatsThis ( strLocCity );
- edtLocationCity->setAccessibleName ( tr (
- "City where the server is located line edit" ) );
+ edtLocationCity->setAccessibleName ( tr ( "City where the server is located line edit" ) );
// location country
- QString strLocCountry = tr ( "Location country: The country in "
+ QString strLocCountry = "" + tr ( "Location country" ) + ": " + tr ( "The country in "
"which this server is located can be set here. If a country is "
"entered, it will be shown in the connect dialog server list at the "
"clients." );
@@ -189,9 +188,9 @@ lvwClients->setMinimumHeight ( 140 );
// central server address type combo box
cbxCentServAddrType->clear();
- cbxCentServAddrType->addItem ( "Manual" ); // AT_MANUAL
- cbxCentServAddrType->addItem ( "Default" ); // AT_DEFAULT
- cbxCentServAddrType->addItem ( "Default (North America)" ); // AT_NORTH_AMERICA
+ cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL
+ cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT
+ cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA
cbxCentServAddrType->setCurrentIndex ( static_cast ( pServer->GetCentralServerAddressType() ) );
// update server name line edit
@@ -273,7 +272,7 @@ lvwClients->setMinimumHeight ( 140 );
// View menu --------------------------------------------------------------
- QMenu* pViewMenu = new QMenu ( "&Window", this );
+ QMenu* pViewMenu = new QMenu ( tr ( "&Window" ), this );
pViewMenu->addAction ( tr ( "E&xit" ), this,
SLOT ( close() ), QKeySequence ( Qt::CTRL + Qt::Key_Q ) );
@@ -283,7 +282,7 @@ lvwClients->setMinimumHeight ( 140 );
pMenu = new QMenuBar ( this );
pMenu->addMenu ( pViewMenu );
- pMenu->addMenu ( new CHelpMenu ( this ) );
+ pMenu->addMenu ( new CHelpMenu ( false, this ) );
// Now tell the layout about the menu
layout()->setMenuBar ( pMenu );
@@ -343,18 +342,6 @@ lvwClients->setMinimumHeight ( 140 );
Timer.start ( GUI_CONTRL_UPDATE_TIME );
}
-void CServerDlg::closeEvent ( QCloseEvent* Event )
-{
- // if server was registered at the central server, unregister on shutdown
- if ( pServer->GetServerListEnabled() )
- {
- pServer->UnregisterSlaveServer();
- }
-
- // default implementation of this event handler routine
- Event->accept();
-}
-
void CServerDlg::OnStartOnOSStartStateChanged ( int value )
{
const bool bCurAutoStartMinState = ( value == Qt::Checked );
@@ -447,6 +434,12 @@ void CServerDlg::OnLocationCountryActivated ( int iCntryListItem )
void CServerDlg::OnCentServAddrTypeActivated ( int iTypeIdx )
{
+ // if server was registered, unregister first
+ if ( pServer->GetServerListEnabled() )
+ {
+ pServer->UnregisterSlaveServer();
+ }
+
// apply new setting to the server and update it
pServer->SetCentralServerAddressType ( static_cast ( iTypeIdx ) );
pServer->UpdateServerList();
diff --git a/src/serverdlg.h b/src/serverdlg.h
index febb44ef..da06e0c4 100755
--- a/src/serverdlg.h
+++ b/src/serverdlg.h
@@ -58,7 +58,6 @@ public:
protected:
virtual void changeEvent ( QEvent* pEvent );
- virtual void closeEvent ( QCloseEvent* Event );
void UpdateGUIDependencies();
void UpdateSystemTrayIcon ( const bool bIsActive );
diff --git a/src/serverlist.cpp b/src/serverlist.cpp
index c9127059..dc79c603 100755
--- a/src/serverlist.cpp
+++ b/src/serverlist.cpp
@@ -31,7 +31,8 @@ CServerListManager::CServerListManager ( const quint16 iNPortNum,
const int iNumChannels,
const bool bNCentServPingServerInList,
CProtocol* pNConLProt )
- : iNumPredefinedServers ( 0 ),
+ : tsConsoleStream ( *( ( new ConsoleWriterFactory() )->get() ) ),
+ iNumPredefinedServers ( 0 ),
eCentralServerAddressType ( AT_MANUAL ), // must be AT_MANUAL for the "no GUI" case
bCentServPingServerInList ( bNCentServPingServerInList ),
pConnLessProtocol ( pNConLProt ),
@@ -307,6 +308,8 @@ void CServerListManager::OnTimerPingServerInList()
void CServerListManager::OnTimerPollList()
{
+ CVector vecRemovedHostAddr;
+
QMutexLocker locker ( &Mutex );
// Check all list entries except of the very first one (which is the central
@@ -319,6 +322,7 @@ void CServerListManager::OnTimerPollList()
if ( ServerList[iIdx].RegisterTime.elapsed() > ( SERVLIST_TIME_OUT_MINUTES * 60000 ) )
{
// remove this list entry
+ vecRemovedHostAddr.Add ( ServerList[iIdx].HostAddr );
ServerList.removeAt ( iIdx );
}
else
@@ -327,16 +331,27 @@ void CServerListManager::OnTimerPollList()
iIdx++;
}
}
+
+ locker.unlock();
+
+ foreach ( const CHostAddress HostAddr, vecRemovedHostAddr )
+ {
+ tsConsoleStream << "Expired entry for " << HostAddr.toString() << endl;
+ }
}
void CServerListManager::CentralServerRegisterServer ( const CHostAddress& InetAddr,
const CHostAddress& LInetAddr,
const CServerCoreInfo& ServerInfo )
{
- QMutexLocker locker ( &Mutex );
-
if ( bIsCentralServer && bEnabled )
{
+ tsConsoleStream << "Requested to register entry for "
+ << InetAddr.toString() << " (" << LInetAddr.toString() << ")"
+ << ": " << ServerInfo.strName << endl;
+
+ QMutexLocker locker ( &Mutex );
+
const int iCurServerListSize = ServerList.size();
// define invalid index used as a flag
@@ -394,10 +409,13 @@ void CServerListManager::CentralServerRegisterServer ( const CHostAddress& In
void CServerListManager::CentralServerUnregisterServer ( const CHostAddress& InetAddr )
{
- QMutexLocker locker ( &Mutex );
-
if ( bIsCentralServer && bEnabled )
{
+ tsConsoleStream << "Requested to unregister entry for "
+ << InetAddr.toString() << endl;
+
+ QMutexLocker locker ( &Mutex );
+
const int iCurServerListSize = ServerList.size();
// Find the server to unregister in the list. The very first list entry
@@ -587,7 +605,6 @@ void CServerListManager::SlaveServerRegisterServer ( const bool bIsRegister )
void CServerListManager::SetSvrRegStatus ( ESvrRegStatus eNSvrRegStatus )
{
// output regirstation result/update on the console
- QTextStream& tsConsoleStream = *( ( new ConsoleWriterFactory() )->get() );
tsConsoleStream << "Server Registration Status update: " << svrRegStatusToString ( eNSvrRegStatus ) << endl;
// store the state and inform the GUI about the new status
diff --git a/src/serverlist.h b/src/serverlist.h
index 2c77055f..decf9d72 100755
--- a/src/serverlist.h
+++ b/src/serverlist.h
@@ -186,6 +186,7 @@ protected:
QTimer TimerCLRegisterServerResp;
QMutex Mutex;
+ QTextStream& tsConsoleStream;
QList ServerList;
diff --git a/src/signalhandler.cpp b/src/signalhandler.cpp
new file mode 100755
index 00000000..4c37d018
--- /dev/null
+++ b/src/signalhandler.cpp
@@ -0,0 +1,183 @@
+/******************************************************************************\
+ * Copyright (c) 2020
+ *
+ * Author(s):
+ * Peter L Jones
+ *
+ ******************************************************************************
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ******************************************************************************
+ *
+ * This code contains some ideas derived from QCtrlSignals
+ * https://github.com/Skycoder42/QCtrlSignals.git
+ * - mostly the singleton and emitSignal code, plus some of the structure
+ * - virtually everything else is common knowledge across SourceForge answers
+ *
+ * BSD 3-Clause License
+ *
+ * Copyright (c) 2016, Felix Barz
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * * Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+\******************************************************************************/
+
+#include "signalhandler.h"
+
+class CSignalHandlerSingleton : public CSignalHandler {
+public:
+ inline CSignalHandlerSingleton() : CSignalHandler() {}
+};
+Q_GLOBAL_STATIC ( CSignalHandlerSingleton, singleton )
+
+CSignalHandler::CSignalHandler() : pSignalBase ( CSignalBase::withSignalHandler ( this ) ) {}
+
+CSignalHandler::~CSignalHandler() = default;
+
+CSignalHandler* CSignalHandler::getSingletonP() { return singleton; }
+
+bool CSignalHandler::emitSignal ( int sigNum )
+{
+ return QMetaObject::invokeMethod( singleton, "ShutdownSignal", Qt::QueuedConnection, Q_ARG( int, sigNum ) );
+}
+
+#ifndef _WIN32
+void CSignalHandler::OnSocketNotify( int socket )
+{
+ int sigNum;
+ if ( ::read ( socket, &sigNum, sizeof ( int ) ) == sizeof ( int ) )
+ {
+ emitSignal ( sigNum );
+ }
+}
+#endif
+
+// ----------------------------------------------------------
+
+CSignalBase::CSignalBase ( CSignalHandler* pSignalHandler ) :
+ pSignalHandler ( pSignalHandler )
+{
+}
+
+CSignalBase::~CSignalBase() = default;
+
+CSignalBase* CSignalBase::withSignalHandler ( CSignalHandler* pSignalHandler )
+{
+#ifdef _WIN32
+ return new CSignalWin ( pSignalHandler );
+#else
+ return new CSignalUnix ( pSignalHandler );
+#endif
+}
+
+#ifdef _WIN32
+CSignalWin::CSignalWin ( CSignalHandler* nPSignalHandler ) :
+ CSignalBase ( nPSignalHandler ),
+ lock ( QReadWriteLock::Recursive )
+{
+ SetConsoleCtrlHandler ( signalHandler, true );
+}
+
+CSignalWin::~CSignalWin() {
+ SetConsoleCtrlHandler ( signalHandler, false );
+}
+
+QReadWriteLock* CSignalWin::getLock() const
+{
+ return &lock;
+}
+
+BOOL WINAPI CSignalWin::signalHandler ( _In_ DWORD sigNum )
+{
+ auto self = getSelf();
+ QReadLocker lock ( self->getLock() );
+ return self->pSignalHandler->emitSignal ( static_cast( sigNum ) );
+}
+
+#else
+int CSignalUnix::socketPair[2];
+
+CSignalUnix::CSignalUnix ( CSignalHandler* nPSignalHandler ) :
+ CSignalBase ( nPSignalHandler )
+{
+ if ( ::socketpair ( AF_UNIX, SOCK_STREAM, 0, socketPair ) == 0 )
+ {
+ socketNotifier = new QSocketNotifier ( socketPair[ 1 ], QSocketNotifier::Read );
+
+ QObject::connect ( socketNotifier, &QSocketNotifier::activated, nPSignalHandler, &CSignalHandler::OnSocketNotify );
+
+ socketNotifier->setEnabled ( true );
+
+ setSignalHandled ( SIGINT, true );
+ setSignalHandled ( SIGTERM, true );
+ }
+}
+
+CSignalUnix::~CSignalUnix() {
+ setSignalHandled ( SIGINT, false );
+ setSignalHandled ( SIGTERM, false );
+}
+
+QReadWriteLock* CSignalUnix::getLock() const { return nullptr; }
+
+bool CSignalUnix::setSignalHandled ( int sigNum, bool state )
+{
+ struct sigaction sa;
+ sigemptyset ( &sa.sa_mask );
+
+ if ( state )
+ {
+ sa.sa_handler = CSignalUnix::signalHandler;
+ sa.sa_flags |= SA_RESTART;
+ }
+ else
+ {
+ sa.sa_handler = SIG_DFL;
+ }
+
+ return ::sigaction ( sigNum, &sa, nullptr ) == 0;
+}
+
+void CSignalUnix::signalHandler ( int sigNum )
+{
+ const auto res = ::write ( socketPair[ 0 ], &sigNum, sizeof ( int ) );
+ Q_UNUSED ( res );
+}
+#endif
diff --git a/src/signalhandler.h b/src/signalhandler.h
new file mode 100755
index 00000000..1263ee6a
--- /dev/null
+++ b/src/signalhandler.h
@@ -0,0 +1,177 @@
+/******************************************************************************\
+ * Copyright (c) 2020
+ *
+ * Author(s):
+ * Peter L Jones
+ *
+ ******************************************************************************
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ ******************************************************************************
+ *
+ * This code contains some ideas derived from QCtrlSignals
+ * https://github.com/Skycoder42/QCtrlSignals.git
+ * - mostly the singleton and emitSignal code, plus some of the structure
+ * - virtually everything else is common knowledge across SourceForge answers
+ *
+ * BSD 3-Clause License
+ *
+ * Copyright (c) 2016, Felix Barz
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * * Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+\******************************************************************************/
+
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#ifdef _WIN32
+#include
+#include
+#include
+#include
+#include
+#else
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#endif
+
+class CSignalBase;
+
+class CSignalHandler : public QObject
+{
+ Q_OBJECT
+
+ friend class CSignalBase;
+ friend class CSignalHandlerSingleton;
+
+public:
+ static CSignalHandler* getSingletonP();
+
+ bool emitSignal ( int );
+
+#ifndef _WIN32
+public slots:
+ void OnSocketNotify ( int socket );
+#endif
+
+signals:
+ void ShutdownSignal ( int sigNum );
+
+private:
+ QScopedPointer pSignalBase;
+
+ explicit CSignalHandler();
+ ~CSignalHandler() override;
+};
+
+// ----------------------------------------------------------
+
+class CSignalBase
+{
+ Q_DISABLE_COPY ( CSignalBase )
+
+public:
+ static CSignalBase* withSignalHandler ( CSignalHandler* );
+ virtual ~CSignalBase();
+
+ virtual QReadWriteLock* getLock() const = 0;
+
+ QSet sHandledSigNums;
+
+protected:
+ CSignalBase ( CSignalHandler* );
+
+ CSignalHandler* pSignalHandler;
+
+ template
+ static T *getSelf()
+ {
+ return static_cast( CSignalHandler::getSingletonP()->pSignalBase.data() );
+ }
+
+};
+
+#ifdef _WIN32
+
+class CSignalWin : public CSignalBase
+{
+public:
+ CSignalWin ( CSignalHandler* );
+ ~CSignalWin() override;
+
+ virtual QReadWriteLock* getLock() const override;
+
+private:
+ mutable QReadWriteLock lock;
+
+ static BOOL WINAPI signalHandler ( _In_ DWORD sigNum );
+};
+
+#else
+
+class CSignalUnix : public CSignalBase
+{
+public:
+ CSignalUnix ( CSignalHandler* );
+ ~CSignalUnix() override;
+
+ virtual QReadWriteLock* getLock() const override;
+
+private:
+ QSocketNotifier* socketNotifier = nullptr;
+ bool setSignalHandled ( int sigNum, bool state );
+
+ static int socketPair[2];
+ static void signalHandler ( int sigNum );
+};
+
+#endif
diff --git a/src/socket.cpp b/src/socket.cpp
index f4cdf5f1..ebcddb5d 100755
--- a/src/socket.cpp
+++ b/src/socket.cpp
@@ -65,11 +65,9 @@ void CSocket::Init ( const quint16 iPortNumber )
}
else
{
- // Per definition use the port number plus ten for the client to make
- // it possible to run server and client on the same computer. If the
- // port is not available, try "NUM_SOCKET_PORTS_TO_TRY" times with
- // incremented port numbers.
- quint16 iClientPortIncrement = 10; // start value: port nubmer plus ten
+ // if the port is not available, try "NUM_SOCKET_PORTS_TO_TRY" times
+ // with incremented port numbers
+ quint16 iClientPortIncrement = 0;
bSuccess = false; // initialization for while loop
while ( !bSuccess && ( iClientPortIncrement <= NUM_SOCKET_PORTS_TO_TRY ) )
diff --git a/src/soundbase.cpp b/src/soundbase.cpp
index 56ae94b2..bdc1c833 100755
--- a/src/soundbase.cpp
+++ b/src/soundbase.cpp
@@ -30,14 +30,12 @@ CSoundBase::CSoundBase ( const QString& strNewSystemDriverTechniqueName,
const bool bNewIsCallbackAudioInterface,
void (*fpNewProcessCallback) ( CVector& psData, void* pParg ),
void* pParg,
- const int iNewCtrlMIDIChannel,
- const bool bNewNoAutoJackConnect ) :
- fpProcessCallback ( fpNewProcessCallback ),
- pProcessCallbackArg ( pParg ), bRun ( false ),
- bIsCallbackAudioInterface ( bNewIsCallbackAudioInterface ),
+ const int iNewCtrlMIDIChannel ) :
+ fpProcessCallback ( fpNewProcessCallback ),
+ pProcessCallbackArg ( pParg ), bRun ( false ),
+ bIsCallbackAudioInterface ( bNewIsCallbackAudioInterface ),
strSystemDriverTechniqueName ( strNewSystemDriverTechniqueName ),
- iCtrlMIDIChannel ( iNewCtrlMIDIChannel ),
- bNoAutoJackConnect ( bNewNoAutoJackConnect )
+ iCtrlMIDIChannel ( iNewCtrlMIDIChannel )
{
// initializations for the sound card names (default)
lNumDevs = 1;
@@ -143,10 +141,10 @@ QString CSoundBase::SetDev ( const int iNewDev )
nullptr, APP_NAME, QString ( tr ( "The audio driver properties "
"have changed to a state which is incompatible to this "
"software. The selected audio device could not be used "
- "because of the following error: " ) ) +
+ "because of the following error:" ) + " " ) +
strErrorMessage +
- QString ( tr ( "
" + tr (
"In the following there is a list of all available drivers "
- "with the associated error message:
" );
+ "with the associated error message:" ) + "
";
for ( int i = 0; i < lNumDevs; i++ )
{
@@ -204,7 +202,7 @@ QString CSoundBase::SetDev ( const int iNewDev )
// to be able to access the ASIO driver setup for changing, e.g., the sample rate, we
// offer the user under Windows that we open the driver setups of all registered
// ASIO drivers
- sErrorMessage = sErrorMessage + tr ( " Do you want to open the ASIO driver setups?" );
+ sErrorMessage = sErrorMessage + " " + tr ( "Do you want to open the ASIO driver setups?" );
if ( QMessageBox::Yes == QMessageBox::information ( nullptr, APP_NAME, sErrorMessage, QMessageBox::Yes|QMessageBox::No ) )
{
diff --git a/src/soundbase.h b/src/soundbase.h
index 2a3bb6d2..f11d434c 100755
--- a/src/soundbase.h
+++ b/src/soundbase.h
@@ -51,8 +51,7 @@ public:
const bool bNewIsCallbackAudioInterface,
void (*fpNewProcessCallback) ( CVector& psData, void* pParg ),
void* pParg,
- const int iNewCtrlMIDIChannel,
- const bool bNewNoAutoJackConnect );
+ const int iNewCtrlMIDIChannel );
virtual int Init ( const int iNewPrefMonoBufferSize );
virtual void Start();
@@ -98,6 +97,27 @@ protected:
virtual void UnloadCurrentDriver() {}
QVector LoadAndInitializeFirstValidDriver ( const bool bOpenDriverSetup = false );
+ static void GetSelCHAndAddCH ( const int iSelCH, const int iNumInChan,
+ int& iSelCHOut, int& iSelAddCHOut )
+ {
+ // we have a mixed channel setup, definitions:
+ // - mixed channel setup only for 4 physical inputs:
+ // SelCH == 4: Ch 0 + Ch 2
+ // SelCh == 5: Ch 0 + Ch 3
+ // SelCh == 6: Ch 1 + Ch 2
+ // SelCh == 7: Ch 1 + Ch 3
+ if ( iSelCH >= iNumInChan )
+ {
+ iSelAddCHOut = ( ( iSelCH - iNumInChan ) % 2 ) + 2;
+ iSelCHOut = ( iSelCH - iNumInChan ) / 2;
+ }
+ else
+ {
+ iSelAddCHOut = -1; // set it to an invalid number
+ iSelCHOut = iSelCH;
+ }
+ }
+
// function pointer to callback function
void (*fpProcessCallback) ( CVector& psData, void* arg );
void* pProcessCallbackArg;
@@ -121,7 +141,6 @@ protected:
bool bIsCallbackAudioInterface;
QString strSystemDriverTechniqueName;
int iCtrlMIDIChannel;
- bool bNoAutoJackConnect;
CVector vecsAudioSndCrdStereo;
diff --git a/src/util.cpp b/src/util.cpp
index d7d6bc7e..44ceb1fd 100755
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -348,16 +348,14 @@ CAboutDlg::CAboutDlg ( QWidget* parent ) : QDialog ( parent )
{
setupUi ( this );
- // set the text for the about dialog html text control
- txvCredits->setOpenExternalLinks ( true );
- txvCredits->setText (
- "
" // general description of software
- "" + tr ( "The " ) + APP_NAME +
+ // general description of software
+ txvAbout->setText (
+ "
" + tr ( "The " ) + APP_NAME +
tr ( " software enables musicians to perform real-time jam sessions "
- "over the internet. There is a " ) + APP_NAME + tr ( " "
+ "over the internet." ) + " " + tr ( "There is a " ) + APP_NAME + tr ( " "
"server which collects the audio data from each " ) +
APP_NAME + tr ( " client, mixes the audio data and sends the mix back "
- "to each client." ) + "
"
+ "to each client." ) + "
"
"
" // GPL header text
"This program is free software; you can redistribute it and/or modify "
"it under the terms of the GNU General Public License as published by "
@@ -370,27 +368,48 @@ CAboutDlg::CAboutDlg ( QWidget* parent ) : QDialog ( parent )
"License along with his program; if not, write to the Free Software "
"Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 "
"USA"
- "
"
- "
" + APP_NAME + // libraries used by this compilation
+ "
" );
+
+ // libraries used by this compilation
+ txvLibraries->setText ( APP_NAME +
tr ( " uses the following libraries, resources or code snippets:" ) +
- ""
- "
" );
// set version number in about dialog
lblVersion->setText ( GetVersionAndNameStr() );
@@ -406,7 +425,7 @@ QString CAboutDlg::GetVersionAndNameStr ( const bool bWithHtml )
// name, short description and GPL hint
if ( bWithHtml )
{
- strVersionText += "
";
- }
-
return strVersionText;
}
@@ -462,9 +471,9 @@ CLicenceDlg::CLicenceDlg ( QWidget* parent ) : QDialog ( parent )
QVBoxLayout* pLayout = new QVBoxLayout ( this );
QHBoxLayout* pSubLayout = new QHBoxLayout;
QTextBrowser* txvLicence = new QTextBrowser ( this );
- QCheckBox* chbAgree = new QCheckBox ( "I &agree to the above licence terms", this );
- butAccept = new QPushButton ( "Accept", this );
- QPushButton* butDecline = new QPushButton ( "Decline", this );
+ QCheckBox* chbAgree = new QCheckBox ( tr ( "I &agree to the above licence terms" ), this );
+ butAccept = new QPushButton ( tr ( "Accept" ), this );
+ QPushButton* butDecline = new QPushButton ( tr ( "Decline" ), this );
pSubLayout->addStretch();
pSubLayout->addWidget ( chbAgree );
@@ -486,10 +495,10 @@ CLicenceDlg::CLicenceDlg ( QWidget* parent ) : QDialog ( parent )
"You agree that all data, sounds, or other works transmitted to this server "
"are owned and created by you or your licensors, and that you are making these "
"data, sounds or other works available via the following Creative Commons "
- "License (for more information on this license, see "
+ "License (for more information on this license, see " ) +
""
- "http://creativecommons.org/licenses/by-nc-sa/4.0):" ) + "" +
- "