commit
b337adc24a
24 changed files with 6412 additions and 593 deletions
|
@ -13,9 +13,13 @@
|
||||||
|
|
||||||
- support Mac CoreAudio aggregated devices (Ticket #138)
|
- support Mac CoreAudio aggregated devices (Ticket #138)
|
||||||
|
|
||||||
|
- added translations: french by trebmuh, portuguese by Snayler (Ticket #77)
|
||||||
|
|
||||||
- bug fix: for mono capture jack audio interface Jamulus complains it cannot make connections (Ticket #137)
|
- bug fix: for mono capture jack audio interface Jamulus complains it cannot make connections (Ticket #137)
|
||||||
|
|
||||||
|
|
||||||
|
TODO re-design About dialog
|
||||||
|
|
||||||
TODO implement panning for channels (Ticket #52, #145)
|
TODO implement panning for channels (Ticket #52, #145)
|
||||||
|
|
||||||
TODO WIP support internationalization
|
TODO WIP support internationalization
|
||||||
|
|
|
@ -15,7 +15,9 @@ QT += widgets \
|
||||||
xml
|
xml
|
||||||
|
|
||||||
TRANSLATIONS = src/res/translation/translation_de_DE.ts \
|
TRANSLATIONS = src/res/translation/translation_de_DE.ts \
|
||||||
src/res/translation/translation_fr_FR.ts
|
src/res/translation/translation_fr_FR.ts \
|
||||||
|
src/res/translation/translation_pt_PT.ts \
|
||||||
|
src/res/translation/translation_es_ES.ts
|
||||||
|
|
||||||
INCLUDEPATH += src
|
INCLUDEPATH += src
|
||||||
|
|
||||||
|
|
|
@ -58,13 +58,13 @@ void CSound::OpenJack ( const bool bNoAutoJackConnect,
|
||||||
if ( jack_get_sample_rate ( pJackClient ) != SYSTEM_SAMPLE_RATE_HZ )
|
if ( jack_get_sample_rate ( pJackClient ) != SYSTEM_SAMPLE_RATE_HZ )
|
||||||
{
|
{
|
||||||
throw CGenErr ( tr ( "The Jack server sample rate is different from "
|
throw CGenErr ( tr ( "The Jack server sample rate is different from "
|
||||||
"the required one. The required sample rate is: <b>" ) +
|
"the required one. The required sample rate is:" ) + " <b>" +
|
||||||
QString().setNum ( SYSTEM_SAMPLE_RATE_HZ ) + tr ( " Hz</b>. You can "
|
QString().setNum ( SYSTEM_SAMPLE_RATE_HZ ) + " Hz</b>. " + tr ( "You can "
|
||||||
"use a tool like <i><a href=""http://qjackctl.sourceforge.net"">QJackCtl</a></i> "
|
"use a tool like <i><a href=""http://qjackctl.sourceforge.net"">QJackCtl</a></i> "
|
||||||
"to adjust the Jack server sample rate.<br>Make sure to set the "
|
"to adjust the Jack server sample rate." ) + "<br>" + tr ( "Make sure to set the "
|
||||||
"<b>Frames/Period</b> to a low value like <b>" ) +
|
"Frames/Period to a low value like " ) +
|
||||||
QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) +
|
QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) +
|
||||||
tr ( "</b> to achieve a low delay." ) );
|
tr ( " to achieve a low delay." ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// create four ports (two for input, two for output -> stereo)
|
// create four ports (two for input, two for output -> stereo)
|
||||||
|
|
|
@ -122,20 +122,10 @@
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="lblAuthorNames">
|
|
||||||
<property name="text">
|
|
||||||
<string>Author: Volker Fischer</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="lblCopyright">
|
<widget class="QLabel" name="lblCopyright">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Copyright (C) 2005-2020</string>
|
<string>Copyright (C) 2005-2020 Volker Fischer and others</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="wordWrap">
|
<property name="wordWrap">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
|
|
|
@ -41,11 +41,11 @@ CChannelFader::CChannelFader ( QWidget* pNW,
|
||||||
pFader = new QSlider ( Qt::Vertical, pLevelsBox );
|
pFader = new QSlider ( Qt::Vertical, pLevelsBox );
|
||||||
|
|
||||||
pMuteSoloBox = new QWidget ( pFrame );
|
pMuteSoloBox = new QWidget ( pFrame );
|
||||||
pcbMute = new QCheckBox ( "Mute", pMuteSoloBox );
|
pcbMute = new QCheckBox ( tr ( "Mute" ), pMuteSoloBox );
|
||||||
pcbSolo = new QCheckBox ( "Solo", pMuteSoloBox );
|
pcbSolo = new QCheckBox ( tr ( "Solo" ), pMuteSoloBox );
|
||||||
|
|
||||||
pLabelInstBox = new QGroupBox ( pFrame );
|
pLabelInstBox = new QGroupBox ( pFrame );
|
||||||
plblLabel = new QLabel ( "", pFrame );
|
plblLabel = new QLabel ( "", pFrame );
|
||||||
plblInstrument = new QLabel ( pFrame );
|
plblInstrument = new QLabel ( pFrame );
|
||||||
plblCountryFlag = new QLabel ( pFrame );
|
plblCountryFlag = new QLabel ( pFrame );
|
||||||
|
|
||||||
|
@ -107,29 +107,29 @@ CChannelFader::CChannelFader ( QWidget* pNW,
|
||||||
Reset();
|
Reset();
|
||||||
|
|
||||||
// add help text to controls
|
// add help text to controls
|
||||||
plbrChannelLevel->setWhatsThis ( tr ( "<b>Channel Level:</b> Displays the "
|
plbrChannelLevel->setWhatsThis ( "<b>" + tr ( "Channel Level" ) + ":</b> " +
|
||||||
"pre-fader audio level of this channel. All connected clients at the "
|
tr ( "Displays the pre-fader audio level of this channel. All connected clients at the "
|
||||||
"server will be assigned an audio level, the same value for each client." ) );
|
"server will be assigned an audio level, the same value for each client." ) );
|
||||||
plbrChannelLevel->setAccessibleName ( tr ( "Input level of the current audio "
|
plbrChannelLevel->setAccessibleName ( tr ( "Input level of the current audio "
|
||||||
"channel at the server" ) );
|
"channel at the server" ) );
|
||||||
|
|
||||||
pFader->setWhatsThis ( tr ( "<b>Mixer Fader:</b> Adjusts the audio level of "
|
pFader->setWhatsThis ( "<b>" + tr ( "Mixer Fader" ) + ":</b> " + tr (
|
||||||
"this channel. All connected clients at the server will be assigned "
|
"Adjusts the audio level of this channel. All connected clients at the server "
|
||||||
"an audio fader at each client, adjusting the local mix." ) );
|
"will be assigned an audio fader at each client, adjusting the local mix." ) );
|
||||||
pFader->setAccessibleName ( tr ( "Local mix level setting of the current audio "
|
pFader->setAccessibleName ( tr ( "Local mix level setting of the current audio "
|
||||||
"channel at the server" ) );
|
"channel at the server" ) );
|
||||||
|
|
||||||
pcbMute->setWhatsThis ( tr ( "<b>Mute:</b> With the Mute checkbox, the "
|
pcbMute->setWhatsThis ( "<b>" + tr ( "Mute" ) + ":</b> " + tr (
|
||||||
"audio channel can be muted." ) );
|
"With the Mute checkbox, the audio channel can be muted." ) );
|
||||||
pcbMute->setAccessibleName ( tr ( "Mute button" ) );
|
pcbMute->setAccessibleName ( tr ( "Mute button" ) );
|
||||||
|
|
||||||
pcbSolo->setWhatsThis ( tr ( "<b>Solo:</b> With the Solo checkbox, the "
|
pcbSolo->setWhatsThis ( "<b>" + tr ( "Solo" ) + ":</b> " + tr ( "With the Solo checkbox, the "
|
||||||
"audio channel can be set to solo which means that all other channels "
|
"audio channel can be set to solo which means that all other channels "
|
||||||
"except of the current channel are muted. It is possible to set more than "
|
"except of the current channel are muted. It is possible to set more than "
|
||||||
"one channel to solo." ) );
|
"one channel to solo." ) );
|
||||||
pcbSolo->setAccessibleName ( tr ( "Solo button" ) );
|
pcbSolo->setAccessibleName ( tr ( "Solo button" ) );
|
||||||
|
|
||||||
QString strFaderText = tr ( "<b>Fader Tag:</b> The fader tag "
|
QString strFaderText = "<b>" + tr ( "Fader Tag" ) + ":</b> " + tr ( "The fader tag "
|
||||||
"identifies the connected client. The tag name, the picture of your "
|
"identifies the connected client. The tag name, the picture of your "
|
||||||
"instrument and a flag of your country can be set in the main window." );
|
"instrument and a flag of your country can be set in the main window." );
|
||||||
|
|
||||||
|
@ -439,13 +439,13 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
|
||||||
// alias/name
|
// alias/name
|
||||||
if ( !strReceivedName.isEmpty() )
|
if ( !strReceivedName.isEmpty() )
|
||||||
{
|
{
|
||||||
strToolTip += "<h4>Alias/Name</h4>" + strReceivedName;
|
strToolTip += "<h4>" + tr ( "Alias/Name" ) + "</h4>" + strReceivedName;
|
||||||
}
|
}
|
||||||
|
|
||||||
// instrument
|
// instrument
|
||||||
if ( !CInstPictures::IsNotUsedInstrument ( iTTInstrument ) )
|
if ( !CInstPictures::IsNotUsedInstrument ( iTTInstrument ) )
|
||||||
{
|
{
|
||||||
strToolTip += "<h4>Instrument</h4>" +
|
strToolTip += "<h4>" + tr ( "Instrument" ) + "</h4>" +
|
||||||
CInstPictures::GetName ( iTTInstrument );
|
CInstPictures::GetName ( iTTInstrument );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -453,7 +453,7 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
|
||||||
if ( ( eTTCountry != QLocale::AnyCountry ) ||
|
if ( ( eTTCountry != QLocale::AnyCountry ) ||
|
||||||
( !cChanInfo.strCity.isEmpty() ) )
|
( !cChanInfo.strCity.isEmpty() ) )
|
||||||
{
|
{
|
||||||
strToolTip += "<h4>Location</h4>";
|
strToolTip += "<h4>" + tr ( "Location" ) + "</h4>";
|
||||||
|
|
||||||
if ( !cChanInfo.strCity.isEmpty() )
|
if ( !cChanInfo.strCity.isEmpty() )
|
||||||
{
|
{
|
||||||
|
@ -475,15 +475,15 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
|
||||||
switch ( cChanInfo.eSkillLevel )
|
switch ( cChanInfo.eSkillLevel )
|
||||||
{
|
{
|
||||||
case SL_BEGINNER:
|
case SL_BEGINNER:
|
||||||
strToolTip += "<h4>Skill Level</h4>Beginner";
|
strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Beginner" );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SL_INTERMEDIATE:
|
case SL_INTERMEDIATE:
|
||||||
strToolTip += "<h4>Skill Level</h4>Intermediate";
|
strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Intermediate" );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SL_PROFESSIONAL:
|
case SL_PROFESSIONAL:
|
||||||
strToolTip += "<h4>Skill Level</h4>Expert";
|
strToolTip += "<h4>" + tr ( "Skill Level" ) + "</h4>" + tr ( "Expert" );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SL_NOT_SET:
|
case SL_NOT_SET:
|
||||||
|
@ -494,7 +494,7 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
|
||||||
// if no information is given, leave the tool tip empty, otherwise add header
|
// if no information is given, leave the tool tip empty, otherwise add header
|
||||||
if ( !strToolTip.isEmpty() )
|
if ( !strToolTip.isEmpty() )
|
||||||
{
|
{
|
||||||
strToolTip.prepend ( "<h3>Musician Profile</h3>" );
|
strToolTip.prepend ( "<h3>" + tr ( "Musician Profile" ) + "</h3>" );
|
||||||
}
|
}
|
||||||
|
|
||||||
plblCountryFlag->setToolTip ( strToolTip );
|
plblCountryFlag->setToolTip ( strToolTip );
|
||||||
|
@ -704,7 +704,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
|
||||||
if ( strServerName.isEmpty() )
|
if ( strServerName.isEmpty() )
|
||||||
{
|
{
|
||||||
// no connection or connection was reset: show default title
|
// no connection or connection was reset: show default title
|
||||||
pGroupBox->setTitle ( "Server" );
|
pGroupBox->setTitle ( tr ( "Server" ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -713,7 +713,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
|
||||||
// list was received, the connection was successful and the title is updated
|
// 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
|
// 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).
|
// which is most striking (we use filled blocks and upper case letters).
|
||||||
pGroupBox->setTitle ( u8"\u2588\u2588\u2588\u2588\u2588 T R Y I N G T O C O N N E C T \u2588\u2588\u2588\u2588\u2588" );
|
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" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,14 +34,14 @@ CChatDlg::CChatDlg ( QWidget* parent, Qt::WindowFlags f ) :
|
||||||
|
|
||||||
// Add help text to controls -----------------------------------------------
|
// Add help text to controls -----------------------------------------------
|
||||||
// chat window
|
// chat window
|
||||||
txvChatWindow->setWhatsThis ( tr ( "<b>Chat Window:</b> The chat window "
|
txvChatWindow->setWhatsThis ( "<b>" + tr ( "Chat Window" ) + ":</b> " + tr (
|
||||||
"shows a history of all chat messages." ) );
|
"The chat window shows a history of all chat messages." ) );
|
||||||
|
|
||||||
txvChatWindow->setAccessibleName ( tr ( "Chat history" ) );
|
txvChatWindow->setAccessibleName ( tr ( "Chat history" ) );
|
||||||
|
|
||||||
// input message text
|
// input message text
|
||||||
edtLocalInputText->setWhatsThis ( tr ( "<b>Input Message Text:</b> Enter "
|
edtLocalInputText->setWhatsThis ( "<b>" + tr ( "Input Message Text" ) + ":</b> " + tr (
|
||||||
"the chat message text in the edit box and press enter to send the "
|
"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 "
|
"message to the server which distributes the message to all connected "
|
||||||
"clients. Your message will then show up in the chat window." ) );
|
"clients. Your message will then show up in the chat window." ) );
|
||||||
|
|
||||||
|
|
|
@ -48,10 +48,10 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||||
|
|
||||||
// Add help text to controls -----------------------------------------------
|
// Add help text to controls -----------------------------------------------
|
||||||
// input level meter
|
// input level meter
|
||||||
QString strInpLevH = tr ( "<b>Input Level Meter:</b> The input level "
|
QString strInpLevH = "<b>" + tr ( "Input Level Meter" ) + ":</b> " + tr ( "The input level "
|
||||||
"indicators show the input level of the two stereo channels "
|
"indicators show the input level of the two stereo channels "
|
||||||
"of the current selected audio input.<br>"
|
"of the current selected audio input." ) + "<br>" +
|
||||||
"Make sure not to clip the input signal to avoid distortions of the "
|
tr ( "Make sure not to clip the input signal to avoid distortions of the "
|
||||||
"audio signal." );
|
"audio signal." );
|
||||||
|
|
||||||
QString strInpLevHTT = tr ( "If the " ) + APP_NAME +
|
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 "
|
"meter should flicker. If this is not the case, you have "
|
||||||
"probably selected the wrong input channel (e.g. line in instead "
|
"probably selected the wrong input channel (e.g. line in instead "
|
||||||
"of the microphone input) or set the input gain too low in the "
|
"of the microphone input) or set the input gain too low in the "
|
||||||
"(Windows) audio mixer.<br>For a proper usage of the " ) + APP_NAME +
|
"(Windows) audio mixer." ) + "<br>" + tr ( "For a proper usage of the " ) +
|
||||||
tr ( " software, "
|
APP_NAME + tr ( " software, "
|
||||||
"you should not hear your singing/instrument in the loudspeaker or "
|
"you should not hear your singing/instrument in the loudspeaker or "
|
||||||
"your headphone when the " ) + APP_NAME +
|
"your headphone when the " ) + APP_NAME +
|
||||||
tr ( " software is not connected. This can "
|
tr ( " software is not connected. This can "
|
||||||
"be achieved by muting your input audio channel in the Playback "
|
"be achieved by muting your input audio channel in the Playback "
|
||||||
"mixer (<b>not</b> the Recording mixer!)." ) + TOOLTIP_COM_END_TEXT;
|
"mixer (not the Recording mixer!)." ) + TOOLTIP_COM_END_TEXT;
|
||||||
|
|
||||||
QString strInpLevHAccText = tr ( "Input level meter" );
|
QString strInpLevHAccText = tr ( "Input level meter" );
|
||||||
QString strInpLevHAccDescr = tr ( "Simulates an analog LED level meter." );
|
QString strInpLevHAccDescr = tr ( "Simulates an analog LED level meter." );
|
||||||
|
@ -84,8 +84,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||||
lbrInputLevelR->setToolTip ( strInpLevHTT );
|
lbrInputLevelR->setToolTip ( strInpLevHTT );
|
||||||
|
|
||||||
// connect/disconnect button
|
// connect/disconnect button
|
||||||
butConnect->setWhatsThis ( tr ( "<b>Connect / Disconnect Button:"
|
butConnect->setWhatsThis ( "<b>" + tr ( "Connect/Disconnect Button" ) + ":</b> " +
|
||||||
"</b> Push this button to connect a server. A dialog where you can "
|
tr ( "Push this button to connect a server. A dialog where you can "
|
||||||
"select a server will open. If you are connected, pressing this "
|
"select a server will open. If you are connected, pressing this "
|
||||||
"button will end the session." ) );
|
"button will end the session." ) );
|
||||||
|
|
||||||
|
@ -98,14 +98,15 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||||
"and disconnecting the " ) + APP_NAME + tr ( " software." ) );
|
"and disconnecting the " ) + APP_NAME + tr ( " software." ) );
|
||||||
|
|
||||||
// local audio input fader
|
// local audio input fader
|
||||||
QString strAudFader = tr ( "<b>Local Audio Input Fader:</b> With the "
|
QString strAudFader = "<b>" + tr ( "Local Audio Input Fader" ) + ":</b> " +
|
||||||
"audio fader, the relative levels of the left and right local audio "
|
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 "
|
"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 "
|
"between the two channels. If, e.g., a microphone is connected to "
|
||||||
"the right input channel and an instrument is connected to the left "
|
"the right input channel and an instrument is connected to the left "
|
||||||
"input channel which is much louder than the microphone, move the "
|
"input channel which is much louder than the microphone, move the "
|
||||||
"audio fader in a direction where the label above the fader shows "
|
"audio fader in a direction where the label above the fader shows " ) +
|
||||||
"<i>L -x</i>, where <i>x</i> is the current attenuation indicator." );
|
"<i>" + tr ( "L" ) + " -x</i>" + tr ( ", where" ) + " <i>x</i> " +
|
||||||
|
tr ( "is the current attenuation indicator." );
|
||||||
|
|
||||||
lblAudioPan->setWhatsThis ( strAudFader );
|
lblAudioPan->setWhatsThis ( strAudFader );
|
||||||
lblAudioPanValue->setWhatsThis ( strAudFader );
|
lblAudioPanValue->setWhatsThis ( strAudFader );
|
||||||
|
@ -114,14 +115,14 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||||
sldAudioPan->setAccessibleName ( tr ( "Local audio input fader (left/right)" ) );
|
sldAudioPan->setAccessibleName ( tr ( "Local audio input fader (left/right)" ) );
|
||||||
|
|
||||||
// reverberation level
|
// reverberation level
|
||||||
QString strAudReverb = tr ( "<b>Reverberation Level:</b> A reverberation "
|
QString strAudReverb = "<b>" + tr ( "Reverberation Level" ) + ":</b> " +
|
||||||
"effect can be applied to one local mono audio channel or to both "
|
tr ( "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 "
|
"channels in stereo mode. The mone channel selection and the "
|
||||||
"reverberation level can be modified. If, e.g., "
|
"reverberation level can be modified. If, e.g., "
|
||||||
"the microphone signal is fed into the right audio channel of the "
|
"the microphone signal is fed into the right audio channel of the "
|
||||||
"sound card and a reverberation effect shall be applied, set the "
|
"sound card and a reverberation effect shall be applied, set the "
|
||||||
"channel selector to right and move the fader upwards until the "
|
"channel selector to right and move the fader upwards until the "
|
||||||
"desired reverberation level is reached.<br>"
|
"desired reverberation level is reached." ) + "<br>" + tr (
|
||||||
"The reverberation effect requires significant CPU so that it should "
|
"The reverberation effect requires significant CPU so that it should "
|
||||||
"only be used on fast PCs. If the reverberation level fader is set to "
|
"only be used on fast PCs. If the reverberation level fader is set to "
|
||||||
"minimum (which is the default setting), the reverberation effect is "
|
"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" ) );
|
sldAudioReverb->setAccessibleName ( tr ( "Reverberation effect level setting" ) );
|
||||||
|
|
||||||
// reverberation channel selection
|
// reverberation channel selection
|
||||||
QString strRevChanSel = tr ( "<b>Reverberation Channel Selection:</b> "
|
QString strRevChanSel = "<b>" + tr ( "Reverberation Channel Selection" ) + ":</b> " +
|
||||||
"With these radio buttons the audio input channel on which the "
|
tr ( "With these radio buttons the audio input channel on which the "
|
||||||
"reverberation effect is applied can be chosen. Either the left "
|
"reverberation effect is applied can be chosen. Either the left "
|
||||||
"or right input channel can be selected." );
|
"or right input channel can be selected." );
|
||||||
|
|
||||||
|
@ -144,8 +145,8 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||||
rbtReverbSelR->setAccessibleName ( tr ( "Right channel selection for reverberation" ) );
|
rbtReverbSelR->setAccessibleName ( tr ( "Right channel selection for reverberation" ) );
|
||||||
|
|
||||||
// delay LED
|
// delay LED
|
||||||
QString strLEDDelay = tr ( "<b>Delay Status LED:</b> "
|
QString strLEDDelay = "<b>" + tr ( "Delay Status LED" ) + ":</b> " +
|
||||||
"The delay status LED indicator shows the current audio delay "
|
tr ( "The delay status LED indicator shows the current audio delay "
|
||||||
"status. If the light is green, the delay is perfect for a jam "
|
"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 "
|
"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 "
|
"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" ) );
|
ledDelay->setAccessibleName ( tr ( "Delay status LED indicator" ) );
|
||||||
|
|
||||||
// buffers LED
|
// buffers LED
|
||||||
QString strLEDBuffers = tr ( "<b>Buffers Status LED:</b> "
|
QString strLEDBuffers = "<b>" + tr ( "Buffers Status LED" ) + ":</b> " +
|
||||||
"The buffers status LED indicator shows the current audio/streaming "
|
tr ( "The buffers status LED indicator shows the current audio/streaming "
|
||||||
"status. If the light is green, there are no buffer overruns/underruns "
|
"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 "
|
"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:" ) +
|
||||||
"<ul>"
|
"<ul>"
|
||||||
"<li>The network jitter buffer is not large enough for the current "
|
"<li>" + tr ( "The network jitter buffer is not large enough for the current "
|
||||||
"network/audio interface jitter.</li>"
|
"network/audio interface jitter." ) + "</li>"
|
||||||
"<li>The sound card buffer delay (buffer size) is set to a too small "
|
"<li>" + tr ( "The sound card buffer delay (buffer size) is set to a too small "
|
||||||
"value.</li>"
|
"value." ) + "</li>"
|
||||||
"<li>The upload or download stream rate is too high for the current "
|
"<li>" + tr ( "The upload or download stream rate is too high for the current "
|
||||||
"available internet bandwidth.</li>"
|
"available internet bandwidth." ) + "</li>"
|
||||||
"<li>The CPU of the client or server is at 100%.</li>"
|
"<li>" + tr ( "The CPU of the client or server is at 100%." ) + "</li>"
|
||||||
"</ul>" );
|
"</ul>";
|
||||||
|
|
||||||
lblBuffers->setWhatsThis ( strLEDBuffers );
|
lblBuffers->setWhatsThis ( strLEDBuffers );
|
||||||
ledBuffers->setWhatsThis ( strLEDBuffers );
|
ledBuffers->setWhatsThis ( strLEDBuffers );
|
||||||
|
@ -200,7 +201,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||||
OnTimerStatus();
|
OnTimerStatus();
|
||||||
|
|
||||||
// init connection button text
|
// init connection button text
|
||||||
butConnect->setText ( CON_BUT_CONNECTTEXT );
|
butConnect->setText ( tr ( "C&onnect" ) );
|
||||||
|
|
||||||
// init input level meter bars
|
// init input level meter bars
|
||||||
lbrInputLevelL->setValue ( 0 );
|
lbrInputLevelL->setValue ( 0 );
|
||||||
|
@ -252,7 +253,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||||
|
|
||||||
|
|
||||||
// View menu --------------------------------------------------------------
|
// View menu --------------------------------------------------------------
|
||||||
pViewMenu = new QMenu ( "&View", this );
|
pViewMenu = new QMenu ( tr ( "&View" ), this );
|
||||||
|
|
||||||
pViewMenu->addAction ( tr ( "&Connection Setup..." ), this,
|
pViewMenu->addAction ( tr ( "&Connection Setup..." ), this,
|
||||||
SLOT ( OnOpenConnectionSetupDialog() ) );
|
SLOT ( OnOpenConnectionSetupDialog() ) );
|
||||||
|
@ -323,7 +324,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
|
||||||
{
|
{
|
||||||
// default icon and name for no flag selected
|
// default icon and name for no flag selected
|
||||||
CurFlagIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
|
CurFlagIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
|
||||||
sCurCountryName = "None";
|
sCurCountryName = tr ( "None" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -603,20 +604,20 @@ void CClientDlg::UpdateAudioFaderSlider()
|
||||||
// attenuated
|
// attenuated
|
||||||
if ( iCurAudInFader == AUD_FADER_IN_MIDDLE )
|
if ( iCurAudInFader == AUD_FADER_IN_MIDDLE )
|
||||||
{
|
{
|
||||||
lblAudioPanValue->setText ( "Center" );
|
lblAudioPanValue->setText ( tr ( "Center" ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( iCurAudInFader > AUD_FADER_IN_MIDDLE )
|
if ( iCurAudInFader > AUD_FADER_IN_MIDDLE )
|
||||||
{
|
{
|
||||||
// attenuation on right channel
|
// attenuation on right channel
|
||||||
lblAudioPanValue->setText ( "R -" +
|
lblAudioPanValue->setText ( tr ( "R" ) + " -" +
|
||||||
QString().setNum ( iCurAudInFader - AUD_FADER_IN_MIDDLE ) );
|
QString().setNum ( iCurAudInFader - AUD_FADER_IN_MIDDLE ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// attenuation on left channel
|
// attenuation on left channel
|
||||||
lblAudioPanValue->setText ( "L -" +
|
lblAudioPanValue->setText ( tr ( "L" ) + " -" +
|
||||||
QString().setNum ( AUD_FADER_IN_MIDDLE - iCurAudInFader ) );
|
QString().setNum ( AUD_FADER_IN_MIDDLE - iCurAudInFader ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -815,12 +816,12 @@ void CClientDlg::SetMyWindowTitle ( const int iNumClients )
|
||||||
{
|
{
|
||||||
if ( iNumClients == 1 )
|
if ( iNumClients == 1 )
|
||||||
{
|
{
|
||||||
setWindowTitle ( QString ( pClient->strClientName ) + " (1 user)" );
|
setWindowTitle ( QString ( pClient->strClientName ) + " (1 " + tr ( "user" ) + ")" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setWindowTitle ( QString ( pClient->strClientName ) +
|
setWindowTitle ( QString ( pClient->strClientName ) +
|
||||||
QString ( " (%1 users)" ).arg ( iNumClients ) );
|
QString ( " (%1 " + tr ( "users" ) + ")" ).arg ( iNumClients ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1057,7 +1058,7 @@ void CClientDlg::Connect ( const QString& strSelectedAddress,
|
||||||
}
|
}
|
||||||
|
|
||||||
// change connect button text to "disconnect"
|
// 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
|
// set server name in audio mixer group box title
|
||||||
MainMixerBoard->SetServerName ( strMixerBoardLabel );
|
MainMixerBoard->SetServerName ( strMixerBoardLabel );
|
||||||
|
@ -1081,7 +1082,7 @@ void CClientDlg::Disconnect()
|
||||||
}
|
}
|
||||||
|
|
||||||
// change connect button text to "connect"
|
// 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
|
// reset server name in audio mixer group box title
|
||||||
MainMixerBoard->SetServerName ( "" );
|
MainMixerBoard->SetServerName ( "" );
|
||||||
|
|
|
@ -51,10 +51,6 @@
|
||||||
|
|
||||||
|
|
||||||
/* Definitions ****************************************************************/
|
/* 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
|
// update time for GUI controls
|
||||||
#define LEVELMETER_UPDATE_TIME_MS 100 // ms
|
#define LEVELMETER_UPDATE_TIME_MS 100 // ms
|
||||||
#define BUFFER_LED_UPDATE_TIME_MS 300 // ms
|
#define BUFFER_LED_UPDATE_TIME_MS 300 // ms
|
||||||
|
|
|
@ -34,34 +34,34 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
|
||||||
|
|
||||||
// Add help text to controls -----------------------------------------------
|
// Add help text to controls -----------------------------------------------
|
||||||
// jitter buffer
|
// jitter buffer
|
||||||
QString strJitterBufferSize = tr ( "<b>Jitter Buffer Size:</b> The jitter "
|
QString strJitterBufferSize = "<b>" + tr ( "Jitter Buffer Size" ) + ":</b> " + tr (
|
||||||
"buffer compensates for network and sound card timing jitters. The "
|
"The jitter buffer compensates for network and sound card timing jitters. The "
|
||||||
"size of this jitter buffer has therefore influence on the quality of "
|
"size of this jitter buffer has therefore influence on the quality of "
|
||||||
"the audio stream (how many dropouts occur) and the overall delay "
|
"the audio stream (how many dropouts occur) and the overall delay "
|
||||||
"(the longer the buffer, the higher the delay).<br>"
|
"(the longer the buffer, the higher the delay)." ) + "<br>" + tr (
|
||||||
"The jitter buffer size can be manually chosen for the local client "
|
"The jitter buffer size can be manually chosen for the local client "
|
||||||
"and the remote server. For the local jitter buffer, dropouts in the "
|
"and the remote server. For the local jitter buffer, dropouts in the "
|
||||||
"audio stream are indicated by the light on the bottom "
|
"audio stream are indicated by the light on the bottom "
|
||||||
"of the jitter buffer size faders. If the light turns to red, a buffer "
|
"of the jitter buffer size faders. If the light turns to red, a buffer "
|
||||||
"overrun/underrun took place and the audio stream is interrupted.<br>"
|
"overrun/underrun took place and the audio stream is interrupted." ) + "<br>" + tr (
|
||||||
"The jitter buffer setting is therefore a trade-off between audio "
|
"The jitter buffer setting is therefore a trade-off between audio "
|
||||||
"quality and overall delay.<br>"
|
"quality and overall delay." ) + "<br>" + tr (
|
||||||
"An auto setting of the jitter buffer size setting is available. If "
|
"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 check Auto is enabled, the jitter buffers of the local client and "
|
||||||
"the remote server are set automatically "
|
"the remote server are set automatically "
|
||||||
"based on measurements of the network and sound card timing jitter. If "
|
"based on measurements of the network and sound card timing jitter. If "
|
||||||
"the <i>Auto</i> 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)." );
|
"disabled (they cannot be moved with the mouse)." );
|
||||||
|
|
||||||
QString strJitterBufferSizeTT = tr ( "In case the auto setting of the "
|
QString strJitterBufferSizeTT = tr ( "In case the auto setting of the "
|
||||||
"jitter buffer is enabled, the network buffers of the local client and "
|
"jitter buffer is enabled, the network buffers of the local client and "
|
||||||
"the remote server are set to a conservative "
|
"the remote server are set to a conservative "
|
||||||
"value to minimize the audio dropout probability. To <b>tweak the "
|
"value to minimize the audio dropout probability. To tweak the "
|
||||||
"audio delay/latency</b> it is recommended to disable the auto setting "
|
"audio delay/latency it is recommended to disable the auto setting "
|
||||||
"functionality and to <b>lower the jitter buffer size manually</b> by "
|
"functionality and to lower the jitter buffer size manually by "
|
||||||
"using the sliders until your personal acceptable limit of the amount "
|
"using the sliders until your personal acceptable limit of the amount "
|
||||||
"of dropouts is reached. The LED indicator will visualize the audio "
|
"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;
|
TOOLTIP_COM_END_TEXT;
|
||||||
|
|
||||||
lblNetBuf->setWhatsThis ( strJitterBufferSize );
|
lblNetBuf->setWhatsThis ( strJitterBufferSize );
|
||||||
|
@ -80,11 +80,11 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
|
||||||
ledNetw->setToolTip ( strJitterBufferSizeTT );
|
ledNetw->setToolTip ( strJitterBufferSizeTT );
|
||||||
|
|
||||||
// sound card device
|
// sound card device
|
||||||
cbxSoundcard->setWhatsThis ( tr ( "<b>Sound Card Device:</b> The ASIO "
|
cbxSoundcard->setWhatsThis ( "<b>" + tr ( "Sound Card Device" ) + ":</b> " +
|
||||||
"driver (sound card) can be selected using " ) + APP_NAME +
|
tr ( "The ASIO driver (sound card) can be selected using " ) + APP_NAME +
|
||||||
tr ( " under the Windows operating system. Under MacOS/Linux, no sound "
|
tr ( " under the Windows operating system. Under MacOS/Linux, no sound "
|
||||||
"card selection is possible. If the selected ASIO driver is not valid "
|
"card selection is possible. If the selected ASIO driver is not valid "
|
||||||
"an error message is shown and the previous valid driver is selected.<br>"
|
"an error message is shown and the previous valid driver is selected." ) + "<br>" + tr (
|
||||||
"If the driver is selected during an active connection, the connection "
|
"If the driver is selected during an active connection, the connection "
|
||||||
"is stopped, the driver is changed and the connection is started again "
|
"is stopped, the driver is changed and the connection is started again "
|
||||||
"automatically." ) );
|
"automatically." ) );
|
||||||
|
@ -93,19 +93,19 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// set Windows specific tool tip
|
// set Windows specific tool tip
|
||||||
cbxSoundcard->setToolTip ( tr ( "In case the <b>ASIO4ALL</b> 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 "
|
"please note that this driver usually introduces approx. 10-30 ms of "
|
||||||
"additional audio delay. Using a sound card with a native ASIO driver "
|
"additional audio delay. Using a sound card with a native ASIO driver "
|
||||||
"is therefore recommended.<br>If you are using the <b>kX ASIO</b> "
|
"is therefore recommended." ) + "<br>" + tr ( "If you are using the kX ASIO "
|
||||||
"driver, make sure to connect the ASIO inputs in the kX DSP settings "
|
"driver, make sure to connect the ASIO inputs in the kX DSP settings "
|
||||||
"panel." ) + TOOLTIP_COM_END_TEXT );
|
"panel." ) + TOOLTIP_COM_END_TEXT );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// sound card input/output channel mapping
|
// sound card input/output channel mapping
|
||||||
QString strSndCrdChanMapp = tr ( "<b>Sound Card Channel Mapping:</b> "
|
QString strSndCrdChanMapp = "<b>" + tr ( "Sound Card Channel Mapping" ) + ":</b> " +
|
||||||
"In case the selected sound card device offers more than one "
|
tr ( "In case the selected sound card device offers more than one "
|
||||||
"input or output channel, the Input Channel Mapping and Output "
|
"input or output channel, the Input Channel Mapping and Output "
|
||||||
"Channel Mapping settings are visible.<br>"
|
"Channel Mapping settings are visible." ) + "<br>" + tr (
|
||||||
"For each " ) + APP_NAME + tr ( " input/output channel (Left and "
|
"For each " ) + APP_NAME + tr ( " input/output channel (Left and "
|
||||||
"Right channel) a different actual sound card channel can be "
|
"Right channel) a different actual sound card channel can be "
|
||||||
"selected." );
|
"selected." );
|
||||||
|
@ -122,8 +122,8 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
|
||||||
cbxROutChan->setAccessibleName ( tr ( "Right output channel selection combo box" ) );
|
cbxROutChan->setAccessibleName ( tr ( "Right output channel selection combo box" ) );
|
||||||
|
|
||||||
// enable OPUS64
|
// enable OPUS64
|
||||||
chbEnableOPUS64->setWhatsThis ( tr ( "<b>Enable Small Network Buffers:</b> If enabled, "
|
chbEnableOPUS64->setWhatsThis ( "<b>" + tr ( "Enable Small Network Buffers" ) + ":</b> " + tr (
|
||||||
"the support for very small network audio packets is activated. Very small "
|
"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 " ) +
|
"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 "
|
QString().setNum ( DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES ) + tr ( " samples. The "
|
||||||
"smaller the network buffers, the smaller the audio latency. But at the same time "
|
"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" ) );
|
chbEnableOPUS64->setAccessibleName ( tr ( "Enable small network buffers check box" ) );
|
||||||
|
|
||||||
// sound card buffer delay
|
// sound card buffer delay
|
||||||
QString strSndCrdBufDelay = tr ( "<b>Sound Card Buffer Delay:</b> The "
|
QString strSndCrdBufDelay = "<b>" + tr ( "Sound Card Buffer Delay" ) + ":</b> " +
|
||||||
"buffer delay setting is a fundamental setting of the " ) +
|
tr ( "The buffer delay setting is a fundamental setting of the " ) +
|
||||||
APP_NAME + tr ( " software. This setting has influence on many "
|
APP_NAME + tr ( " software. This setting has influence on many "
|
||||||
"connection properties.<br>"
|
"connection properties." ) + "<br>" + tr (
|
||||||
"Three buffer sizes are supported:"
|
"Three buffer sizes are supported" ) +
|
||||||
"<ul>"
|
":<ul>"
|
||||||
"<li>64 samples: This is the preferred setting since it gives lowest "
|
"<li>" + tr ( "64 samples: This is the preferred setting since it gives lowest "
|
||||||
"latency but does not work with all sound cards.</li>"
|
"latency but does not work with all sound cards." ) + "</li>"
|
||||||
"<li>128 samples: This setting should work on most of the available "
|
"<li>" + tr ( "128 samples: This setting should work on most of the available "
|
||||||
"sound cards.</li>"
|
"sound cards." ) + "</li>"
|
||||||
"<li>256 samples: This setting should only be used if only a very slow "
|
"<li>" + tr ( "256 samples: This setting should only be used if only a very slow "
|
||||||
"computer or a slow internet connection is available.</li>"
|
"computer or a slow internet connection is available." ) + "</li>"
|
||||||
"</ul>"
|
"</ul>" + tr (
|
||||||
"Some sound card driver do not allow the buffer delay to be changed "
|
"Some sound card driver do not allow the buffer delay to be changed "
|
||||||
"from within the " ) + APP_NAME +
|
"from within the " ) + APP_NAME +
|
||||||
tr ( " software. In this case the buffer delay setting "
|
tr ( " software. In this case the buffer delay setting "
|
||||||
"is disabled. To change the actual buffer delay, this "
|
"is disabled. To change the actual buffer delay, this "
|
||||||
"setting has to be changed in the sound card driver. On Windows, press "
|
"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, "
|
"the ASIO Setup button to open the driver settings panel. On Linux, "
|
||||||
"use the Jack configuration tool to change the buffer size.<br>"
|
"use the Jack configuration tool to change the buffer size." ) + "<br>" + tr (
|
||||||
"If no buffer size is selected and all settings are disabled, an "
|
"If no buffer size is selected and all settings are disabled, an "
|
||||||
"unsupported buffer size is used by the driver. The " ) + APP_NAME +
|
"unsupported buffer size is used by the driver. The " ) + APP_NAME +
|
||||||
tr ( " software will still work with this setting but with restricted "
|
tr ( " software will still work with this setting but with restricted "
|
||||||
"performannce.<br>"
|
"performannce." ) + "<br>" + tr (
|
||||||
"The actual buffer delay has influence on the connection status, the "
|
"The actual buffer delay has influence on the connection status, the "
|
||||||
"current upload rate and the overall delay. The lower the buffer size, "
|
"current upload rate and the overall delay. The lower the buffer size, "
|
||||||
"the higher the probability of red light in the status indicator (drop "
|
"the higher the probability of red light in the status indicator (drop "
|
||||||
"outs) and the higher the upload rate and the lower the overall "
|
"outs) and the higher the upload rate and the lower the overall "
|
||||||
"delay.<br>"
|
"delay." ) + "<br>" + tr (
|
||||||
"The buffer setting is therefore a trade-off between audio "
|
"The buffer setting is therefore a trade-off between audio "
|
||||||
"quality and overall delay." );
|
"quality and overall delay." );
|
||||||
|
|
||||||
|
@ -185,19 +185,19 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
|
||||||
butDriverSetup->setToolTip ( strSndCrdBufDelayTT );
|
butDriverSetup->setToolTip ( strSndCrdBufDelayTT );
|
||||||
|
|
||||||
// fancy skin
|
// fancy skin
|
||||||
chbGUIDesignFancy->setWhatsThis ( tr ( "<b>Fancy Skin:</b> If enabled, "
|
chbGUIDesignFancy->setWhatsThis ( "<b>" + tr ( "Fancy Skin" ) + ":</b> " + tr (
|
||||||
"a fancy skin will be applied to the main window." ) );
|
"If enabled, a fancy skin will be applied to the main window." ) );
|
||||||
|
|
||||||
chbGUIDesignFancy->setAccessibleName ( tr ( "Fancy skin check box" ) );
|
chbGUIDesignFancy->setAccessibleName ( tr ( "Fancy skin check box" ) );
|
||||||
|
|
||||||
// display channel levels
|
// display channel levels
|
||||||
chbDisplayChannelLevels->setWhatsThis ( tr ( "<b>Display Channel Levels:</b> "
|
chbDisplayChannelLevels->setWhatsThis ( "<b>" + tr ( "Display Channel Levels" ) + ":</b> " +
|
||||||
"If enabled, each client channel will display a pre-fader level bar." ) );
|
tr ( "If enabled, each client channel will display a pre-fader level bar." ) );
|
||||||
|
|
||||||
chbDisplayChannelLevels->setAccessibleName ( tr ( "Display channel levels check box" ) );
|
chbDisplayChannelLevels->setAccessibleName ( tr ( "Display channel levels check box" ) );
|
||||||
|
|
||||||
// audio channels
|
// audio channels
|
||||||
QString strAudioChannels = tr ( "<b>Audio Channels:</b> "
|
QString strAudioChannels = "<b>" + tr ( "Audio Channels" ) + ":</b> " + tr (
|
||||||
"Select the number of audio channels to be used. There are three "
|
"Select the number of audio channels to be used. There are three "
|
||||||
"modes available. The mono and stereo modes use one and two "
|
"modes available. The mono and stereo modes use one and two "
|
||||||
"audio channels respectively. In the mono-in/stereo-out mode "
|
"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 "
|
"sound card puts the instrument on one input channel and the "
|
||||||
"microphone on the other channel. In that case the two input signals "
|
"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 "
|
"can be mixed to one mono channel but the server mix can be heard in "
|
||||||
"stereo.<br>"
|
"stereo." ) + "<br>" + tr (
|
||||||
"Enabling the stereo streaming mode will increase the "
|
"Enabling the stereo streaming mode will increase the "
|
||||||
"stream data rate. Make sure that the current upload rate does not "
|
"stream data rate. Make sure that the current upload rate does not "
|
||||||
"exceed the available bandwidth of your internet connection.<br>"
|
"exceed the available bandwidth of your internet connection." ) + "<br>" + tr (
|
||||||
"In case of the stereo streaming mode, no audio channel selection "
|
"In case of the stereo streaming mode, no audio channel selection "
|
||||||
"for the reverberation effect will be available on the main window "
|
"for the reverberation effect will be available on the main window "
|
||||||
"since the effect is applied on both channels in this case." );
|
"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" ) );
|
cbxAudioChannels->setAccessibleName ( tr ( "Audio channels combo box" ) );
|
||||||
|
|
||||||
// audio quality
|
// audio quality
|
||||||
QString strAudioQuality = tr ( "<b>Audio Quality:</b> "
|
QString strAudioQuality = "<b>" + tr ( "Audio Quality" ) + ":</b> " + tr (
|
||||||
"Select the desired audio quality. A low, normal or high audio "
|
"Select the desired audio quality. A low, normal or high audio "
|
||||||
"quality can be selected. The higher the audio quality, the higher "
|
"quality can be selected. The higher the audio quality, the higher "
|
||||||
"the audio stream data rate. Make sure that the current "
|
"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" ) );
|
cbxAudioQuality->setAccessibleName ( tr ( "Audio quality combo box" ) );
|
||||||
|
|
||||||
// new client fader level
|
// new client fader level
|
||||||
QString strNewClientLevel = tr ( "<b>New Client Level:</b> The "
|
QString strNewClientLevel = "<b>" + tr ( "New Client Level" ) + ":</b> " +
|
||||||
"new client level setting defines the fader level of a new "
|
tr ( "The new client level setting defines the fader level of a new "
|
||||||
"connected client in percent. I.e. if a new client connects "
|
"connected client in percent. I.e. if a new client connects "
|
||||||
"to the current server, it will get the specified initial "
|
"to the current server, it will get the specified initial "
|
||||||
"fader level if no other fader level of a previous connection "
|
"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" ) );
|
edtNewClientLevel->setAccessibleName ( tr ( "New client level edit box" ) );
|
||||||
|
|
||||||
// central server address
|
// central server address
|
||||||
QString strCentrServAddr = tr ( "<b>Central Server Address:</b> The "
|
QString strCentrServAddr = "<b>" + tr ( "Central Server Address" ) + ":</b> " +
|
||||||
"central server address is the IP address or URL of the central server "
|
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 "
|
"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 "
|
"central server address type either the local region can be selected of "
|
||||||
"the default central servers or a manual address can be specified." );
|
"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" ) );
|
edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) );
|
||||||
|
|
||||||
// current connection status parameter
|
// current connection status parameter
|
||||||
QString strConnStats = tr ( "<b>Current Connection Status "
|
QString strConnStats = "<b>" + tr ( "Current Connection Status "
|
||||||
"Parameter:</b> The ping time is the time required for the audio "
|
"Parameter" ) + ":</b> " + tr ( "The ping time is the time required for the audio "
|
||||||
"stream to travel from the client to the server and backwards. This "
|
"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 "
|
"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 "
|
"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 "
|
"the server is too large or your internet connection is not "
|
||||||
"sufficient.<br>"
|
"sufficient." ) + "<br>" + tr (
|
||||||
"The overall delay is calculated from the current ping time and the "
|
"The overall delay is calculated from the current ping time and the "
|
||||||
"delay which is introduced by the current buffer settings.<br>"
|
"delay which is introduced by the current buffer settings." ) + "<br>" + tr (
|
||||||
"The upstream rate depends on the current audio packet size and the "
|
"The upstream rate depends on the current audio packet size and the "
|
||||||
"audio compression setting. Make sure that the upstream rate is not "
|
"audio compression setting. Make sure that the upstream rate is not "
|
||||||
"higher than the available rate (check the upstream capabilities of "
|
"higher than the available rate (check the upstream capabilities of "
|
||||||
|
@ -285,7 +285,7 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
|
||||||
|
|
||||||
// init driver button
|
// init driver button
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
butDriverSetup->setText ( "ASIO Setup" );
|
butDriverSetup->setText ( tr ( "ASIO Setup" ) );
|
||||||
#else
|
#else
|
||||||
// no use for this button for MacOS/Linux right now -> hide it
|
// no use for this button for MacOS/Linux right now -> hide it
|
||||||
butDriverSetup->hide();
|
butDriverSetup->hide();
|
||||||
|
@ -332,23 +332,23 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
|
||||||
|
|
||||||
// "Audio Channels" combo box
|
// "Audio Channels" combo box
|
||||||
cbxAudioChannels->clear();
|
cbxAudioChannels->clear();
|
||||||
cbxAudioChannels->addItem ( "Mono" ); // CC_MONO
|
cbxAudioChannels->addItem ( tr ( "Mono" ) ); // CC_MONO
|
||||||
cbxAudioChannels->addItem ( "Mono-in/Stereo-out" ); // CC_MONO_IN_STEREO_OUT
|
cbxAudioChannels->addItem ( tr ( "Mono-in/Stereo-out" ) ); // CC_MONO_IN_STEREO_OUT
|
||||||
cbxAudioChannels->addItem ( "Stereo" ); // CC_STEREO
|
cbxAudioChannels->addItem ( tr ( "Stereo" ) ); // CC_STEREO
|
||||||
cbxAudioChannels->setCurrentIndex ( static_cast<int> ( pClient->GetAudioChannels() ) );
|
cbxAudioChannels->setCurrentIndex ( static_cast<int> ( pClient->GetAudioChannels() ) );
|
||||||
|
|
||||||
// "Audio Quality" combo box
|
// "Audio Quality" combo box
|
||||||
cbxAudioQuality->clear();
|
cbxAudioQuality->clear();
|
||||||
cbxAudioQuality->addItem ( "Low" ); // AQ_LOW
|
cbxAudioQuality->addItem ( tr ( "Low" ) ); // AQ_LOW
|
||||||
cbxAudioQuality->addItem ( "Normal" ); // AQ_NORMAL
|
cbxAudioQuality->addItem ( tr ( "Normal" ) ); // AQ_NORMAL
|
||||||
cbxAudioQuality->addItem ( "High" ); // AQ_HIGH
|
cbxAudioQuality->addItem ( tr ( "High" ) ); // AQ_HIGH
|
||||||
cbxAudioQuality->setCurrentIndex ( static_cast<int> ( pClient->GetAudioQuality() ) );
|
cbxAudioQuality->setCurrentIndex ( static_cast<int> ( pClient->GetAudioQuality() ) );
|
||||||
|
|
||||||
// central server address type combo box
|
// central server address type combo box
|
||||||
cbxCentServAddrType->clear();
|
cbxCentServAddrType->clear();
|
||||||
cbxCentServAddrType->addItem ( "Manual" ); // AT_MANUAL
|
cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL
|
||||||
cbxCentServAddrType->addItem ( "Default" ); // AT_DEFAULT
|
cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT
|
||||||
cbxCentServAddrType->addItem ( "Default (North America)" ); // AT_NORTH_AMERICA
|
cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA
|
||||||
cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pClient->GetCentralServerAddressType() ) );
|
cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pClient->GetCentralServerAddressType() ) );
|
||||||
UpdateCentralServerDependency();
|
UpdateCentralServerDependency();
|
||||||
|
|
||||||
|
@ -454,11 +454,11 @@ void CClientSettingsDlg::UpdateJitterBufferFrame()
|
||||||
// update slider value and text
|
// update slider value and text
|
||||||
const int iCurNumNetBuf = pClient->GetSockBufNumFrames();
|
const int iCurNumNetBuf = pClient->GetSockBufNumFrames();
|
||||||
sldNetBuf->setValue ( iCurNumNetBuf );
|
sldNetBuf->setValue ( iCurNumNetBuf );
|
||||||
lblNetBuf->setText ( "Size: " + QString().setNum ( iCurNumNetBuf ) );
|
lblNetBuf->setText ( tr ( "Size: " ) + QString().setNum ( iCurNumNetBuf ) );
|
||||||
|
|
||||||
const int iCurNumNetBufServer = pClient->GetServerSockBufNumFrames();
|
const int iCurNumNetBufServer = pClient->GetServerSockBufNumFrames();
|
||||||
sldNetBufServer->setValue ( iCurNumNetBufServer );
|
sldNetBufServer->setValue ( iCurNumNetBufServer );
|
||||||
lblNetBufServer->setText ( "Size: " + QString().setNum ( iCurNumNetBufServer ) );
|
lblNetBufServer->setText ( tr ( "Size: " ) + QString().setNum ( iCurNumNetBufServer ) );
|
||||||
|
|
||||||
// if auto setting is enabled, disable slider control
|
// if auto setting is enabled, disable slider control
|
||||||
const bool bIsAutoSockBufSize = pClient->GetDoAutoSockBufSize();
|
const bool bIsAutoSockBufSize = pClient->GetDoAutoSockBufSize();
|
||||||
|
@ -515,12 +515,12 @@ void CClientSettingsDlg::UpdateSoundCardFrame()
|
||||||
if ( bPreferredChecked || bDefaultChecked || bSafeChecked )
|
if ( bPreferredChecked || bDefaultChecked || bSafeChecked )
|
||||||
{
|
{
|
||||||
// default title text
|
// default title text
|
||||||
grbSoundCrdBufDelay->setTitle ( "Buffer Delay" );
|
grbSoundCrdBufDelay->setTitle ( tr ( "Buffer Delay" ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// special title text with buffer size information added
|
// special title text with buffer size information added
|
||||||
grbSoundCrdBufDelay->setTitle ( "Buffer Delay: " +
|
grbSoundCrdBufDelay->setTitle ( tr ( "Buffer Delay: " ) +
|
||||||
GenSndCrdBufferDelayString ( iCurActualBufSize ) );
|
GenSndCrdBufferDelayString ( iCurActualBufSize ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -633,7 +633,7 @@ void CClientSettingsDlg::OnSoundcardActivated ( int iSndDevIdx )
|
||||||
QString ( tr ( "The selected audio device could not be used "
|
QString ( tr ( "The selected audio device could not be used "
|
||||||
"because of the following error: " ) ) + strError +
|
"because of the following error: " ) ) + strError +
|
||||||
QString ( tr ( " The previous driver will be selected." ) ),
|
QString ( tr ( " The previous driver will be selected." ) ),
|
||||||
"Ok", nullptr );
|
tr ( "Ok" ), nullptr );
|
||||||
|
|
||||||
// recover old selection
|
// recover old selection
|
||||||
cbxSoundcard->setCurrentIndex ( pClient->GetSndCrdDev() );
|
cbxSoundcard->setCurrentIndex ( pClient->GetSndCrdDev() );
|
||||||
|
|
|
@ -44,13 +44,13 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
|
||||||
|
|
||||||
// Add help text to controls -----------------------------------------------
|
// Add help text to controls -----------------------------------------------
|
||||||
// server list
|
// server list
|
||||||
lvwServers->setWhatsThis ( tr ( "<b>Server List:</b> The server list shows "
|
lvwServers->setWhatsThis ( "<b>" + tr ( "Server List" ) + ":</b> " + tr (
|
||||||
"a list of available servers which are registered at the central "
|
"The server list shows a list of available servers which are registered at the "
|
||||||
"server. Select a server from the list and press the connect button to "
|
"central server. Select a server from the list and press the connect button to "
|
||||||
"connect to this server. Alternatively, double click a server from "
|
"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 "
|
"the list to connect to it. If a server is occupied, a list of the "
|
||||||
"connected musicians is available by expanding the list item. "
|
"connected musicians is available by expanding the list item. "
|
||||||
"Permanent servers are shown in bold font.<br>"
|
"Permanent servers are shown in bold font." ) + "<br>" + tr (
|
||||||
"Note that it may take some time to retrieve the server list from the "
|
"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 "
|
"central server. If no valid central server address is specified in "
|
||||||
"the settings, no server list will be available." ) );
|
"the settings, no server list will be available." ) );
|
||||||
|
@ -58,12 +58,12 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
|
||||||
lvwServers->setAccessibleName ( tr ( "Server list view" ) );
|
lvwServers->setAccessibleName ( tr ( "Server list view" ) );
|
||||||
|
|
||||||
// server address
|
// server address
|
||||||
QString strServAddrH = tr ( "<b>Server Address:</b> The IP address or URL "
|
QString strServAddrH = "<b>" + tr ( "Server Address" ) + ":</b> " + tr (
|
||||||
"of the server running the " ) + APP_NAME + tr ( " server software "
|
"The IP address or URL of the server running the " ) + APP_NAME + tr (
|
||||||
"must be set here. An optional port number can be added after the IP "
|
" 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, <i>"
|
"address or URL using a comma as a separator, e.g, "
|
||||||
"example.org:" ) +
|
"example.org:" ) +
|
||||||
QString().setNum ( LLCON_DEFAULT_PORT_NUMBER ) + tr ( "</i>. 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 "
|
"the most recent used server IP addresses or URLs is available for "
|
||||||
"selection." );
|
"selection." );
|
||||||
|
|
||||||
|
@ -75,13 +75,13 @@ CConnectDlg::CConnectDlg ( const bool bNewShowCompleteRegList,
|
||||||
"IP address or URL. It also stores old URLs in the combo box list." ) );
|
"IP address or URL. It also stores old URLs in the combo box list." ) );
|
||||||
|
|
||||||
// filter
|
// filter
|
||||||
edtFilter->setWhatsThis ( tr ( "<b>Filter:</b> The server list is filered "
|
edtFilter->setWhatsThis ( "<b>" + tr ( "Filter" ) + ":</b> " + tr ( "The server "
|
||||||
"by the given text. Note that the filter is case insensitive." ) );
|
"list is filered by the given text. Note that the filter is case insensitive." ) );
|
||||||
edtFilter->setAccessibleName ( tr ( "Filter edit box" ) );
|
edtFilter->setAccessibleName ( tr ( "Filter edit box" ) );
|
||||||
|
|
||||||
// show all mucisians
|
// show all mucisians
|
||||||
chbExpandAll->setWhatsThis ( tr ( "<b>Show All Musicians:</b> If you check "
|
chbExpandAll->setWhatsThis ( "<b>" + tr ( "Show All Musicians" ) + ":</b> " + tr (
|
||||||
"this check box, the musicians of all servers are shown. If you "
|
"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.") );
|
"uncheck the check box, all list view items are collapsed.") );
|
||||||
chbExpandAll->setAccessibleName ( tr ( "Show all musicians check box" ) );
|
chbExpandAll->setAccessibleName ( tr ( "Show all musicians check box" ) );
|
||||||
|
|
||||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load diff
BIN
src/res/translation/translation_es_ES.qm
Normal file
BIN
src/res/translation/translation_es_ES.qm
Normal file
Binary file not shown.
2254
src/res/translation/translation_es_ES.ts
Normal file
2254
src/res/translation/translation_es_ES.ts
Normal file
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
BIN
src/res/translation/translation_pt_PT.qm
Normal file
BIN
src/res/translation/translation_pt_PT.qm
Normal file
Binary file not shown.
2262
src/res/translation/translation_pt_PT.ts
Normal file
2262
src/res/translation/translation_pt_PT.ts
Normal file
File diff suppressed because it is too large
Load diff
|
@ -5,6 +5,12 @@
|
||||||
<qresource prefix="/translations" lang="fr">
|
<qresource prefix="/translations" lang="fr">
|
||||||
<file alias="translation.qm">res/translation/translation_fr_FR.qm</file>
|
<file alias="translation.qm">res/translation/translation_fr_FR.qm</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
<qresource prefix="/translations" lang="pt">
|
||||||
|
<file alias="translation.qm">res/translation/translation_pt_PT.qm</file>
|
||||||
|
</qresource>
|
||||||
|
<qresource prefix="/translations" lang="es">
|
||||||
|
<file alias="translation.qm">res/translation/translation_es_ES.qm</file>
|
||||||
|
</qresource>
|
||||||
<qresource prefix="/png/LEDs">
|
<qresource prefix="/png/LEDs">
|
||||||
<file>res/CLEDDisabledSmall.png</file>
|
<file>res/CLEDDisabledSmall.png</file>
|
||||||
<file>res/CLEDGreenArrow.png</file>
|
<file>res/CLEDGreenArrow.png</file>
|
||||||
|
|
|
@ -42,28 +42,28 @@ CServerDlg::CServerDlg ( CServer* pNServP,
|
||||||
|
|
||||||
// Add help text to controls -----------------------------------------------
|
// Add help text to controls -----------------------------------------------
|
||||||
// client list
|
// client list
|
||||||
lvwClients->setWhatsThis ( tr ( "<b>Client List:</b> The client list "
|
lvwClients->setWhatsThis ( "<b>" + tr ( "Client List" ) + ":</b> " + tr (
|
||||||
"shows all clients which are currently connected to this server. Some "
|
"The client list shows all clients which are currently connected to this "
|
||||||
"information about the clients like the IP address and name are given "
|
"server. Some information about the clients like the IP address and name "
|
||||||
"for each connected client." ) );
|
"are given for each connected client." ) );
|
||||||
|
|
||||||
lvwClients->setAccessibleName ( tr ( "Connected clients list view" ) );
|
lvwClients->setAccessibleName ( tr ( "Connected clients list view" ) );
|
||||||
|
|
||||||
// start minimized on operating system start
|
// start minimized on operating system start
|
||||||
chbStartOnOSStart->setWhatsThis ( tr ( "<b>Start Minimized on Operating "
|
chbStartOnOSStart->setWhatsThis ( "<b>" + tr ( "Start Minimized on Operating "
|
||||||
"System Start:</b> If the start minimized on operating system start "
|
"System Start" ) + ":</b> " + tr ( "If the start minimized on operating system start "
|
||||||
"check box is checked, the " ) + APP_NAME + tr ( " server will be "
|
"check box is checked, the " ) + APP_NAME + tr ( " server will be "
|
||||||
"started when the operating system starts up and is automatically "
|
"started when the operating system starts up and is automatically "
|
||||||
"minimized to a system task bar icon." ) );
|
"minimized to a system task bar icon." ) );
|
||||||
|
|
||||||
// CC licence dialog switch
|
// CC licence dialog switch
|
||||||
chbUseCCLicence->setWhatsThis ( tr ( "<b>Show Creative Commons Licence "
|
chbUseCCLicence->setWhatsThis ( "<b>" + tr ( "Show Creative Commons Licence "
|
||||||
"Dialog:</b> If enabled, a Creative Commons BY-NC-SA 4.0 Licence "
|
"Dialog" ) + ":</b> " + tr ( "If enabled, a Creative Commons BY-NC-SA 4.0 Licence "
|
||||||
"dialog is shown each time a new user connects the server." ) );
|
"dialog is shown each time a new user connects the server." ) );
|
||||||
|
|
||||||
// Make My Server Public flag
|
// Make My Server Public flag
|
||||||
chbRegisterServer->setWhatsThis ( tr ( "<b>Make My Server Public:</b> If "
|
chbRegisterServer->setWhatsThis ( "<b>" + tr ( "Make My Server Public" ) + ":</b> " +
|
||||||
"the Make My Server Public check box is checked, this server registers "
|
tr ( "If the Make My Server Public check box is checked, this server registers "
|
||||||
"itself at the central server so that all " ) + APP_NAME +
|
"itself at the central server so that all " ) + APP_NAME +
|
||||||
tr ( " users can see the server in the connect dialog server list and "
|
tr ( " users can see the server in the connect dialog server list and "
|
||||||
"connect to it. The registering of the server is renewed periodically "
|
"connect to it. The registering of the server is renewed periodically "
|
||||||
|
@ -71,13 +71,13 @@ CServerDlg::CServerDlg ( CServer* pNServP,
|
||||||
"actually available." ) );
|
"actually available." ) );
|
||||||
|
|
||||||
// register server status label
|
// register server status label
|
||||||
lblRegSvrStatus->setWhatsThis ( tr ( "<b>Register Server Status:</b> If "
|
lblRegSvrStatus->setWhatsThis ( "<b>" + tr ( "Register Server Status" ) + ":</b> " +
|
||||||
"the Make My Server Public check box is checked, this will show "
|
tr ( "If the Make My Server Public check box is checked, this will show "
|
||||||
"the success of registration with the central server." ) );
|
"the success of registration with the central server." ) );
|
||||||
|
|
||||||
// central server address
|
// central server address
|
||||||
QString strCentrServAddr = tr ( "<b>Central Server Address:</b> The "
|
QString strCentrServAddr = "<b>" + tr ( "Central Server Address" ) + ":</b> " +
|
||||||
"Central server address is the IP address or URL of the central server "
|
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 "
|
"at which this server is registered. With the central server address "
|
||||||
"type either the local region can be selected of the default central "
|
"type either the local region can be selected of the default central "
|
||||||
"servers or a manual address can be specified." );
|
"servers or a manual address can be specified." );
|
||||||
|
@ -90,7 +90,7 @@ CServerDlg::CServerDlg ( CServer* pNServP,
|
||||||
edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) );
|
edtCentralServerAddress->setAccessibleName ( tr ( "Central server address line edit" ) );
|
||||||
|
|
||||||
// server name
|
// server name
|
||||||
QString strServName = tr ( "<b>Server Name:</b> The server name identifies "
|
QString strServName = "<b>" + tr ( "Server Name" ) + ":</b> " + tr ( "The server name identifies "
|
||||||
"your server in the connect dialog server list at the clients. If no "
|
"your server in the connect dialog server list at the clients. If no "
|
||||||
"name is given, the IP address is shown instead." );
|
"name is given, the IP address is shown instead." );
|
||||||
|
|
||||||
|
@ -100,18 +100,17 @@ CServerDlg::CServerDlg ( CServer* pNServP,
|
||||||
edtServerName->setAccessibleName ( tr ( "Server name line edit" ) );
|
edtServerName->setAccessibleName ( tr ( "Server name line edit" ) );
|
||||||
|
|
||||||
// location city
|
// location city
|
||||||
QString strLocCity = tr ( "<b>Location City:</b> The city in which this "
|
QString strLocCity = "<b>" + tr ( "Location City" ) + ":</b> " + tr ( "The city in which this "
|
||||||
"server is located can be set here. If a city name is entered, it "
|
"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." );
|
"will be shown in the connect dialog server list at the clients." );
|
||||||
|
|
||||||
lblLocationCity->setWhatsThis ( strLocCity );
|
lblLocationCity->setWhatsThis ( strLocCity );
|
||||||
edtLocationCity->setWhatsThis ( strLocCity );
|
edtLocationCity->setWhatsThis ( strLocCity );
|
||||||
|
|
||||||
edtLocationCity->setAccessibleName ( tr (
|
edtLocationCity->setAccessibleName ( tr ( "City where the server is located line edit" ) );
|
||||||
"City where the server is located line edit" ) );
|
|
||||||
|
|
||||||
// location country
|
// location country
|
||||||
QString strLocCountry = tr ( "<b>Location country:</b> The country in "
|
QString strLocCountry = "<b>" + tr ( "Location country" ) + ":</b> " + tr ( "The country in "
|
||||||
"which this server is located can be set here. If a country is "
|
"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 "
|
"entered, it will be shown in the connect dialog server list at the "
|
||||||
"clients." );
|
"clients." );
|
||||||
|
@ -189,9 +188,9 @@ lvwClients->setMinimumHeight ( 140 );
|
||||||
|
|
||||||
// central server address type combo box
|
// central server address type combo box
|
||||||
cbxCentServAddrType->clear();
|
cbxCentServAddrType->clear();
|
||||||
cbxCentServAddrType->addItem ( "Manual" ); // AT_MANUAL
|
cbxCentServAddrType->addItem ( tr ( "Manual" ) ); // AT_MANUAL
|
||||||
cbxCentServAddrType->addItem ( "Default" ); // AT_DEFAULT
|
cbxCentServAddrType->addItem ( tr ( "Default" ) ); // AT_DEFAULT
|
||||||
cbxCentServAddrType->addItem ( "Default (North America)" ); // AT_NORTH_AMERICA
|
cbxCentServAddrType->addItem ( tr ( "Default (North America)" ) ); // AT_NORTH_AMERICA
|
||||||
cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pServer->GetCentralServerAddressType() ) );
|
cbxCentServAddrType->setCurrentIndex ( static_cast<int> ( pServer->GetCentralServerAddressType() ) );
|
||||||
|
|
||||||
// update server name line edit
|
// update server name line edit
|
||||||
|
@ -273,7 +272,7 @@ lvwClients->setMinimumHeight ( 140 );
|
||||||
|
|
||||||
|
|
||||||
// View menu --------------------------------------------------------------
|
// View menu --------------------------------------------------------------
|
||||||
QMenu* pViewMenu = new QMenu ( "&Window", this );
|
QMenu* pViewMenu = new QMenu ( tr ( "&Window" ), this );
|
||||||
|
|
||||||
pViewMenu->addAction ( tr ( "E&xit" ), this,
|
pViewMenu->addAction ( tr ( "E&xit" ), this,
|
||||||
SLOT ( close() ), QKeySequence ( Qt::CTRL + Qt::Key_Q ) );
|
SLOT ( close() ), QKeySequence ( Qt::CTRL + Qt::Key_Q ) );
|
||||||
|
|
|
@ -141,10 +141,10 @@ QString CSoundBase::SetDev ( const int iNewDev )
|
||||||
nullptr, APP_NAME, QString ( tr ( "The audio driver properties "
|
nullptr, APP_NAME, QString ( tr ( "The audio driver properties "
|
||||||
"have changed to a state which is incompatible to this "
|
"have changed to a state which is incompatible to this "
|
||||||
"software. The selected audio device could not be used "
|
"software. The selected audio device could not be used "
|
||||||
"because of the following error: <b>" ) ) +
|
"because of the following error:" ) + " <b>" ) +
|
||||||
strErrorMessage +
|
strErrorMessage +
|
||||||
QString ( tr ( "</b><br><br>Please restart the software." ) ),
|
QString ( "</b><br><br>" + tr ( "Please restart the software." ) ),
|
||||||
"Close", nullptr );
|
tr ( "Close" ), nullptr );
|
||||||
|
|
||||||
_exit ( 0 );
|
_exit ( 0 );
|
||||||
}
|
}
|
||||||
|
@ -186,11 +186,11 @@ QString CSoundBase::SetDev ( const int iNewDev )
|
||||||
if ( !vsErrorList.isEmpty() )
|
if ( !vsErrorList.isEmpty() )
|
||||||
{
|
{
|
||||||
// create error message with all details
|
// create error message with all details
|
||||||
QString sErrorMessage = tr ( "<b>No usable " ) +
|
QString sErrorMessage = "<b>" + tr ( "No usable " ) +
|
||||||
strSystemDriverTechniqueName + tr ( " audio device "
|
strSystemDriverTechniqueName + tr ( " audio device "
|
||||||
"(driver) found.</b><br><br>"
|
"(driver) found." ) + "</b><br><br>" + tr (
|
||||||
"In the following there is a list of all available drivers "
|
"In the following there is a list of all available drivers "
|
||||||
"with the associated error message:<ul>" );
|
"with the associated error message:" ) + "<ul>";
|
||||||
|
|
||||||
for ( int i = 0; i < lNumDevs; i++ )
|
for ( int i = 0; i < lNumDevs; i++ )
|
||||||
{
|
{
|
||||||
|
@ -202,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
|
// 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
|
// offer the user under Windows that we open the driver setups of all registered
|
||||||
// ASIO drivers
|
// ASIO drivers
|
||||||
sErrorMessage = sErrorMessage + tr ( "<br/>Do you want to open the ASIO driver setups?" );
|
sErrorMessage = sErrorMessage + "<br/>" + tr ( "Do you want to open the ASIO driver setups?" );
|
||||||
|
|
||||||
if ( QMessageBox::Yes == QMessageBox::information ( nullptr, APP_NAME, sErrorMessage, QMessageBox::Yes|QMessageBox::No ) )
|
if ( QMessageBox::Yes == QMessageBox::information ( nullptr, APP_NAME, sErrorMessage, QMessageBox::Yes|QMessageBox::No ) )
|
||||||
{
|
{
|
||||||
|
|
45
src/util.cpp
45
src/util.cpp
|
@ -462,9 +462,9 @@ CLicenceDlg::CLicenceDlg ( QWidget* parent ) : QDialog ( parent )
|
||||||
QVBoxLayout* pLayout = new QVBoxLayout ( this );
|
QVBoxLayout* pLayout = new QVBoxLayout ( this );
|
||||||
QHBoxLayout* pSubLayout = new QHBoxLayout;
|
QHBoxLayout* pSubLayout = new QHBoxLayout;
|
||||||
QTextBrowser* txvLicence = new QTextBrowser ( this );
|
QTextBrowser* txvLicence = new QTextBrowser ( this );
|
||||||
QCheckBox* chbAgree = new QCheckBox ( "I &agree to the above licence terms", this );
|
QCheckBox* chbAgree = new QCheckBox ( tr ( "I &agree to the above licence terms" ), this );
|
||||||
butAccept = new QPushButton ( "Accept", this );
|
butAccept = new QPushButton ( tr ( "Accept" ), this );
|
||||||
QPushButton* butDecline = new QPushButton ( "Decline", this );
|
QPushButton* butDecline = new QPushButton ( tr ( "Decline" ), this );
|
||||||
|
|
||||||
pSubLayout->addStretch();
|
pSubLayout->addStretch();
|
||||||
pSubLayout->addWidget ( chbAgree );
|
pSubLayout->addWidget ( chbAgree );
|
||||||
|
@ -486,10 +486,10 @@ CLicenceDlg::CLicenceDlg ( QWidget* parent ) : QDialog ( parent )
|
||||||
"You agree that all data, sounds, or other works transmitted to this server "
|
"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 "
|
"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 "
|
"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 " ) +
|
||||||
"<i><a href=""http://creativecommons.org/licenses/by-nc-sa/4.0"">"
|
"<i><a href=""http://creativecommons.org/licenses/by-nc-sa/4.0"">"
|
||||||
"http://creativecommons.org/licenses/by-nc-sa/4.0</a></i>):" ) + "</big></p>" +
|
"http://creativecommons.org/licenses/by-nc-sa/4.0</a></i>):</big></p>"
|
||||||
"<h3>Attribution-NonCommercial-ShareAlike 4.0</h3>" +
|
"<h3>Attribution-NonCommercial-ShareAlike 4.0</h3>"
|
||||||
"<p>" + tr ( "You are free to:" ) +
|
"<p>" + tr ( "You are free to:" ) +
|
||||||
"<ul>"
|
"<ul>"
|
||||||
"<li><b>" + tr ( "Share" ) + "</b> - " +
|
"<li><b>" + tr ( "Share" ) + "</b> - " +
|
||||||
|
@ -539,22 +539,22 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
|
||||||
- label with combo box for skill level
|
- label with combo box for skill level
|
||||||
- OK button
|
- OK button
|
||||||
*/
|
*/
|
||||||
setWindowTitle ( "Musician Profile" );
|
setWindowTitle ( tr ( "Musician Profile" ) );
|
||||||
setWindowIcon ( QIcon ( QString::fromUtf8 ( ":/png/main/res/fronticon.png" ) ) );
|
setWindowIcon ( QIcon ( QString::fromUtf8 ( ":/png/main/res/fronticon.png" ) ) );
|
||||||
|
|
||||||
QVBoxLayout* pLayout = new QVBoxLayout ( this );
|
QVBoxLayout* pLayout = new QVBoxLayout ( this );
|
||||||
QHBoxLayout* pButSubLayout = new QHBoxLayout;
|
QHBoxLayout* pButSubLayout = new QHBoxLayout;
|
||||||
QLabel* plblAlias = new QLabel ( "Alias/Name", this );
|
QLabel* plblAlias = new QLabel ( tr ( "Alias/Name" ), this );
|
||||||
pedtAlias = new QLineEdit ( this );
|
pedtAlias = new QLineEdit ( this );
|
||||||
QLabel* plblInstrument = new QLabel ( "Instrument", this );
|
QLabel* plblInstrument = new QLabel ( tr ( "Instrument" ), this );
|
||||||
pcbxInstrument = new QComboBox ( this );
|
pcbxInstrument = new QComboBox ( this );
|
||||||
QLabel* plblCountry = new QLabel ( "Country", this );
|
QLabel* plblCountry = new QLabel ( tr ( "Country" ), this );
|
||||||
pcbxCountry = new QComboBox ( this );
|
pcbxCountry = new QComboBox ( this );
|
||||||
QLabel* plblCity = new QLabel ( "City", this );
|
QLabel* plblCity = new QLabel ( tr ( "City" ), this );
|
||||||
pedtCity = new QLineEdit ( this );
|
pedtCity = new QLineEdit ( this );
|
||||||
QLabel* plblSkill = new QLabel ( "Skill", this );
|
QLabel* plblSkill = new QLabel ( tr ( "Skill" ), this );
|
||||||
pcbxSkill = new QComboBox ( this );
|
pcbxSkill = new QComboBox ( this );
|
||||||
QPushButton* butClose = new QPushButton ( "&Close", this );
|
QPushButton* butClose = new QPushButton ( tr ( "&Close" ), this );
|
||||||
|
|
||||||
QGridLayout* pGridLayout = new QGridLayout;
|
QGridLayout* pGridLayout = new QGridLayout;
|
||||||
plblAlias->setSizePolicy ( QSizePolicy::Minimum, QSizePolicy::Expanding );
|
plblAlias->setSizePolicy ( QSizePolicy::Minimum, QSizePolicy::Expanding );
|
||||||
|
@ -627,8 +627,7 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
|
||||||
if ( static_cast<QLocale::Country> ( iCurCntry ) != QLocale::AnyCountry )
|
if ( static_cast<QLocale::Country> ( iCurCntry ) != QLocale::AnyCountry )
|
||||||
{
|
{
|
||||||
// get current country enum
|
// get current country enum
|
||||||
QLocale::Country eCountry =
|
QLocale::Country eCountry = static_cast<QLocale::Country> ( iCurCntry );
|
||||||
static_cast<QLocale::Country> ( iCurCntry );
|
|
||||||
|
|
||||||
// try to load icon from resource file name
|
// try to load icon from resource file name
|
||||||
QIcon CurFlagIcon;
|
QIcon CurFlagIcon;
|
||||||
|
@ -653,7 +652,7 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
|
||||||
FlagNoneIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
|
FlagNoneIcon.addFile ( ":/png/flags/res/flags/flagnone.png" );
|
||||||
pcbxCountry->insertItem ( 0,
|
pcbxCountry->insertItem ( 0,
|
||||||
FlagNoneIcon,
|
FlagNoneIcon,
|
||||||
"None",
|
tr ( "None" ),
|
||||||
static_cast<int> ( QLocale::AnyCountry ) );
|
static_cast<int> ( QLocale::AnyCountry ) );
|
||||||
|
|
||||||
|
|
||||||
|
@ -665,35 +664,35 @@ CMusProfDlg::CMusProfDlg ( CClient* pNCliP,
|
||||||
RGBCOL_G_SL_NOT_SET,
|
RGBCOL_G_SL_NOT_SET,
|
||||||
RGBCOL_B_SL_NOT_SET ) );
|
RGBCOL_B_SL_NOT_SET ) );
|
||||||
|
|
||||||
pcbxSkill->addItem ( QIcon ( SLPixmap ), "None", SL_NOT_SET );
|
pcbxSkill->addItem ( QIcon ( SLPixmap ), tr ( "None" ), SL_NOT_SET );
|
||||||
|
|
||||||
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_BEGINNER,
|
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_BEGINNER,
|
||||||
RGBCOL_G_SL_BEGINNER,
|
RGBCOL_G_SL_BEGINNER,
|
||||||
RGBCOL_B_SL_BEGINNER ) );
|
RGBCOL_B_SL_BEGINNER ) );
|
||||||
|
|
||||||
pcbxSkill->addItem ( QIcon ( SLPixmap ), "Beginner", SL_BEGINNER );
|
pcbxSkill->addItem ( QIcon ( SLPixmap ), tr ( "Beginner" ), SL_BEGINNER );
|
||||||
|
|
||||||
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_INTERMEDIATE,
|
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_INTERMEDIATE,
|
||||||
RGBCOL_G_SL_INTERMEDIATE,
|
RGBCOL_G_SL_INTERMEDIATE,
|
||||||
RGBCOL_B_SL_INTERMEDIATE ) );
|
RGBCOL_B_SL_INTERMEDIATE ) );
|
||||||
|
|
||||||
pcbxSkill->addItem ( QIcon ( SLPixmap ), "Intermediate", SL_INTERMEDIATE );
|
pcbxSkill->addItem ( QIcon ( SLPixmap ), tr ( "Intermediate" ), SL_INTERMEDIATE );
|
||||||
|
|
||||||
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_SL_PROFESSIONAL,
|
SLPixmap.fill ( QColor::fromRgb ( RGBCOL_R_SL_SL_PROFESSIONAL,
|
||||||
RGBCOL_G_SL_SL_PROFESSIONAL,
|
RGBCOL_G_SL_SL_PROFESSIONAL,
|
||||||
RGBCOL_B_SL_SL_PROFESSIONAL ) );
|
RGBCOL_B_SL_SL_PROFESSIONAL ) );
|
||||||
|
|
||||||
pcbxSkill->addItem ( QIcon ( SLPixmap ), "Expert", SL_PROFESSIONAL );
|
pcbxSkill->addItem ( QIcon ( SLPixmap ), tr ( "Expert" ), SL_PROFESSIONAL );
|
||||||
|
|
||||||
|
|
||||||
// Add help text to controls -----------------------------------------------
|
// Add help text to controls -----------------------------------------------
|
||||||
// fader tag
|
// fader tag
|
||||||
QString strFaderTag = tr ( "<b>Musician Profile:</b> Set your name "
|
QString strFaderTag = "<b>" + tr ( "Musician Profile" ) + ":</b> " + tr (
|
||||||
"or an alias here so that the other musicians you want to play with "
|
"Set your name or an alias here so that the other musicians you want to play with "
|
||||||
"know who you are. Additionally you may set an instrument picture of "
|
"know who you are. Additionally you may set an instrument picture of "
|
||||||
"the instrument you play and a flag of the country you are living. "
|
"the instrument you play and a flag of the country you are living. "
|
||||||
"The city you live in and the skill level of playing your instrument "
|
"The city you live in and the skill level of playing your instrument "
|
||||||
"may also be added.\n"
|
"may also be added." ) + "<br>" + tr (
|
||||||
"What you set here will appear at your fader on the mixer board when "
|
"What you set here will appear at your fader on the mixer board when "
|
||||||
"you are connected to a " ) + APP_NAME + tr ( " server. This tag will "
|
"you are connected to a " ) + APP_NAME + tr ( " server. This tag will "
|
||||||
"also show up at each client which is connected to the same server as "
|
"also show up at each client which is connected to the same server as "
|
||||||
|
|
16
src/util.h
16
src/util.h
|
@ -590,28 +590,28 @@ inline QString svrRegStatusToString ( ESvrRegStatus eSvrRegStatus )
|
||||||
switch ( eSvrRegStatus )
|
switch ( eSvrRegStatus )
|
||||||
{
|
{
|
||||||
case SRS_UNREGISTERED:
|
case SRS_UNREGISTERED:
|
||||||
return "Unregistered";
|
return QCoreApplication::translate ( "CServerDlg", "Unregistered" );
|
||||||
|
|
||||||
case SRS_BAD_ADDRESS:
|
case SRS_BAD_ADDRESS:
|
||||||
return "Bad address";
|
return QCoreApplication::translate ( "CServerDlg", "Bad address" );
|
||||||
|
|
||||||
case SRS_REQUESTED:
|
case SRS_REQUESTED:
|
||||||
return "Registration requested";
|
return QCoreApplication::translate ( "CServerDlg", "Registration requested" );
|
||||||
|
|
||||||
case SRS_TIME_OUT:
|
case SRS_TIME_OUT:
|
||||||
return "Registration failed";
|
return QCoreApplication::translate ( "CServerDlg", "Registration failed" );
|
||||||
|
|
||||||
case SRS_UNKNOWN_RESP:
|
case SRS_UNKNOWN_RESP:
|
||||||
return "Check server version";
|
return QCoreApplication::translate ( "CServerDlg", "Check server version" );
|
||||||
|
|
||||||
case SRS_REGISTERED:
|
case SRS_REGISTERED:
|
||||||
return "Registered";
|
return QCoreApplication::translate ( "CServerDlg", "Registered" );
|
||||||
|
|
||||||
case SRS_CENTRAL_SVR_FULL:
|
case SRS_CENTRAL_SVR_FULL:
|
||||||
return "Central Server full";
|
return QCoreApplication::translate ( "CServerDlg", "Central Server full" );
|
||||||
}
|
}
|
||||||
|
|
||||||
return QString ( "Unknown value " ).append ( eSvrRegStatus );
|
return QString ( QCoreApplication::translate ( "CServerDlg", "Unknown value " ) ).append ( eSvrRegStatus );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -515,9 +515,9 @@ CSound::CSound ( void (*fpNewCallback) ( CVector<int16_t>& psData, voi
|
||||||
// in case we do not have a driver available, throw error
|
// in case we do not have a driver available, throw error
|
||||||
if ( lNumDevs == 0 )
|
if ( lNumDevs == 0 )
|
||||||
{
|
{
|
||||||
throw CGenErr ( tr ( "<b>No ASIO audio device (driver) found.</b><br><br>"
|
throw CGenErr ( "<b>" + tr ( "No ASIO audio device (driver) found." ) + "</b><br><br>" +
|
||||||
"The " ) + APP_NAME + tr ( " software requires the low latency audio "
|
tr ( "The " ) + APP_NAME + tr ( " software requires the low latency audio "
|
||||||
"interface <b>ASIO</b> to work properly. This is no standard "
|
"interface ASIO to work properly. This is no standard "
|
||||||
"Windows audio interface and therefore a special audio driver is "
|
"Windows audio interface and therefore a special audio driver is "
|
||||||
"required. Either your sound card has a native ASIO driver (which "
|
"required. Either your sound card has a native ASIO driver (which "
|
||||||
"is recommended) or you might want to use alternative drivers like "
|
"is recommended) or you might want to use alternative drivers like "
|
||||||
|
|
Loading…
Add table
Reference in a new issue