Merge pull request #10 from corrados/master

update
This commit is contained in:
ignotus 2020-05-21 08:09:03 +02:00 committed by GitHub
commit c6395d0789
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
59 changed files with 3895 additions and 960 deletions

View file

@ -6,30 +6,30 @@
- introduce genre-based server lists (Ticket #139)
- support intermediate Reaper RPP file while recording, coded by pljones (Ticket #170)
- implement panning for channels, coded by tarmoj (Ticket #52, #145)
- duplicate Central Server type dropdown to Connection Setup (#157)
- added vocal bass/tenor/alto/soprano instrument icons created by Alberstein8 (Ticket #131)
TODO implement panning for channels (Ticket #52, #145)
- support intermediate Reaper RPP file while recording, coded by pljones (Ticket #170)
TODO Central Server Address: "Default" results in empty server browser, "Default (North America)" works fine #156
-> made max list smaller from 200 to 150 -> check if that is sufficient to prevent UDP packet fragmentation
TODO fix problem with panning and GUI (vertical scroll bar issue in mixer board)
TODO Keep lrelease? Does it work as expected?
TODO fix Linux deploy script -> gives errors right now
TODO fix incorrect what's this help texts
TODO Central Server Address: "Default" results in empty server browser, "Default (North America)" works fine #156
-> made max list smaller from 200 to 150 -> check if that is sufficient to prevent UDP packet fragmentation
TODO WIP support internationalization
TODO show mute state of others
TODO fix incorrect what's this help texts

View file

@ -19,7 +19,8 @@ TRANSLATIONS = src/res/translation/translation_de_DE.ts \
src/res/translation/translation_fr_FR.ts \
src/res/translation/translation_pt_PT.ts \
src/res/translation/translation_es_ES.ts \
src/res/translation/translation_nl_NL.ts
src/res/translation/translation_nl_NL.ts \
src/res/translation/translation_it_IT.ts
INCLUDEPATH += src
@ -678,34 +679,34 @@ DISTFILES += ChangeLog \
src/res/VRLEDRedSmall.png \
src/res/VRLEDYellow.png \
src/res/VRLEDYellowSmall.png \
src/res/instruments/instraccordeon.png \
src/res/instruments/instraguitar.png \
src/res/instruments/instrbassguitar.png \
src/res/instruments/instrcello.png \
src/res/instruments/instrclarinet.png \
src/res/instruments/instrdjembe.png \
src/res/instruments/instrdoublebass.png \
src/res/instruments/instrdrumset.png \
src/res/instruments/instreguitar.png \
src/res/instruments/instrflute.png \
src/res/instruments/instrfrenchhorn.png \
src/res/instruments/instrgrandpiano.png \
src/res/instruments/instrharmonica.png \
src/res/instruments/instrkeyboard.png \
src/res/instruments/instrlistener.png \
src/res/instruments/instrmicrophone.png \
src/res/instruments/instrnone.png \
src/res/instruments/instrrecorder.png \
src/res/instruments/instrsaxophone.png \
src/res/instruments/instrstreamer.png \
src/res/instruments/instrsynthesizer.png \
src/res/instruments/instrtrombone.png \
src/res/instruments/instrtrumpet.png \
src/res/instruments/instrtuba.png \
src/res/instruments/instrviolin.png \
src/res/instruments/instrvocal.png \
src/res/instruments/instrguitarvocal.png \
src/res/instruments/instrkeyboardvocal.png \
src/res/instruments/accordeon.png \
src/res/instruments/aguitar.png \
src/res/instruments/bassguitar.png \
src/res/instruments/cello.png \
src/res/instruments/clarinet.png \
src/res/instruments/djembe.png \
src/res/instruments/doublebass.png \
src/res/instruments/drumset.png \
src/res/instruments/eguitar.png \
src/res/instruments/flute.png \
src/res/instruments/frenchhorn.png \
src/res/instruments/grandpiano.png \
src/res/instruments/harmonica.png \
src/res/instruments/keyboard.png \
src/res/instruments/listener.png \
src/res/instruments/microphone.png \
src/res/instruments/none.png \
src/res/instruments/recorder.png \
src/res/instruments/saxophone.png \
src/res/instruments/streamer.png \
src/res/instruments/synthesizer.png \
src/res/instruments/trombone.png \
src/res/instruments/trumpet.png \
src/res/instruments/tuba.png \
src/res/instruments/violin.png \
src/res/instruments/vocal.png \
src/res/instruments/guitarvocal.png \
src/res/instruments/keyboardvocal.png \
src/res/instruments/bodhran.svg \
src/res/instruments/bodhran.png \
src/res/instruments/bassoon.svg \

118
src/audiomixerboard.cpp Executable file → Normal file
View file

@ -39,6 +39,8 @@ CChannelFader::CChannelFader ( QWidget* pNW,
pLevelsBox = new QWidget ( pFrame );
plbrChannelLevel = new CMultiColorLEDBar ( pLevelsBox );
pFader = new QSlider ( Qt::Vertical, pLevelsBox );
pPan = new QDial ( pLevelsBox );
pPanLabel = new QLabel ( tr ( "Pan" ) , pLevelsBox );
pMuteSoloBox = new QWidget ( pFrame );
pcbMute = new QCheckBox ( tr ( "Mute" ), pMuteSoloBox );
@ -54,15 +56,25 @@ CChannelFader::CChannelFader ( QWidget* pNW,
QVBoxLayout* pMuteSoloGrid = new QVBoxLayout ( pMuteSoloBox );
QHBoxLayout* pLabelGrid = new QHBoxLayout ( pLabelInstBox );
QVBoxLayout* pLabelPictGrid = new QVBoxLayout ( );
QVBoxLayout* pPanGrid = new QVBoxLayout ( );
// setup channel level
plbrChannelLevel->setContentsMargins ( 0, 3, 2, 3 );
// setup slider
pFader->setPageStep ( 1 );
pFader->setTickPosition ( QSlider::TicksBothSides );
pFader->setRange ( 0, AUD_MIX_FADER_MAX );
pFader->setTickInterval ( AUD_MIX_FADER_MAX / 9 );
pFader->setPageStep ( 1 );
pFader->setTickPosition ( QSlider::TicksBothSides );
pFader->setRange ( 0, AUD_MIX_FADER_MAX );
pFader->setTickInterval ( AUD_MIX_FADER_MAX / 9 );
pFader->setMinimumHeight ( 75 );
// setup panning control
pPan->setRange ( 0, AUD_MIX_PAN_MAX );
pPan->setValue ( AUD_MIX_PAN_MAX / 2 );
pPan->setFixedSize ( 55, 55 );
pPan->setNotchesVisible ( true );
pPanGrid->addWidget ( pPanLabel, 0, Qt::AlignLeft );
pPanGrid->addWidget ( pPan, 0, Qt::AlignHCenter );
// setup fader tag label (black bold text which is centered)
plblLabel->setTextFormat ( Qt::PlainText );
@ -75,6 +87,9 @@ CChannelFader::CChannelFader ( QWidget* pNW,
// set margins of the layouts to zero to get maximum space for the controls
pMainGrid->setContentsMargins ( 0, 0, 0, 0 );
pPanGrid->setContentsMargins ( 0, 0, 0, 0 );
pPanGrid->setSpacing ( 0 ); // only minimal space
pLevelsGrid->setContentsMargins ( 0, 0, 0, 0 );
pLevelsGrid->setSpacing ( 0 ); // only minimal space
@ -96,6 +111,7 @@ CChannelFader::CChannelFader ( QWidget* pNW,
pMuteSoloGrid->addWidget ( pcbMute, 0, Qt::AlignLeft );
pMuteSoloGrid->addWidget ( pcbSolo, 0, Qt::AlignLeft );
pMainGrid->addLayout ( pPanGrid );
pMainGrid->addWidget ( pLevelsBox, 0, Qt::AlignHCenter );
pMainGrid->addWidget ( pMuteSoloBox, 0, Qt::AlignHCenter );
pMainGrid->addWidget ( pLabelInstBox );
@ -119,6 +135,11 @@ CChannelFader::CChannelFader ( QWidget* pNW,
pFader->setAccessibleName ( tr ( "Local mix level setting of the current audio "
"channel at the server" ) );
pPan->setWhatsThis ( "<b>" + tr ( "Panning" ) + ":</b>" + tr (
"Sets the panning position from Left to Right of the channel. "
"Works only in stero or preferably mono in/stereo out mode." ) );
pPan->setAccessibleName ( tr ( "Local panning position of the current audio channel at the server" ) );
pcbMute->setWhatsThis ( "<b>" + tr ( "Mute" ) + ":</b> " + tr (
"With the Mute checkbox, the audio channel can be muted." ) );
pcbMute->setAccessibleName ( tr ( "Mute button" ) );
@ -145,6 +166,9 @@ CChannelFader::CChannelFader ( QWidget* pNW,
QObject::connect ( pFader, SIGNAL ( valueChanged ( int ) ),
this, SLOT ( OnLevelValueChanged ( int ) ) );
QObject::connect ( pPan, SIGNAL ( valueChanged ( int ) ),
this, SLOT ( OnPanValueChanged ( int ) ) );
QObject::connect ( pcbMute, SIGNAL ( stateChanged ( int ) ),
this, SLOT ( OnMuteStateChanged ( int ) ) );
@ -172,6 +196,7 @@ void CChannelFader::SetGUIDesign ( const EGUIDesign eNewDesign )
" padding-bottom: -15px; }"
"QSlider::handle { image: url(:/png/fader/res/faderhandle.png); }" );
pPanLabel->setText ( tr ( "PAN" ) );
pcbMute->setText ( tr ( "MUTE" ) );
pcbSolo->setText ( tr ( "SOLO" ) );
plbrChannelLevel->SetLevelMeterType ( CMultiColorLEDBar::MT_LED );
@ -180,6 +205,7 @@ void CChannelFader::SetGUIDesign ( const EGUIDesign eNewDesign )
default:
// reset style sheet and set original paramters
pFader->setStyleSheet ( "" );
pPanLabel->setText ( tr ( "Pan" ) );
pcbMute->setText ( tr ( "Mute" ) );
pcbSolo->setText ( tr ( "Solo" ) );
plbrChannelLevel->SetLevelMeterType ( CMultiColorLEDBar::MT_BAR );
@ -197,6 +223,12 @@ bool CChannelFader::GetDisplayChannelLevel()
return !plbrChannelLevel->isHidden();
}
void CChannelFader::SetDisplayPans ( const bool eNDP )
{
pPanLabel->setHidden ( !eNDP );
pPan->setHidden ( !eNDP );
}
void CChannelFader::SetupFaderTag ( const ESkillLevel eSkillLevel )
{
// setup group box for label/instrument picture: set a thick black border
@ -243,8 +275,9 @@ void CChannelFader::SetupFaderTag ( const ESkillLevel eSkillLevel )
void CChannelFader::Reset()
{
// init gain value -> maximum value as definition according to server
// init gain and pan value -> maximum value as definition according to server
pFader->setValue ( AUD_MIX_FADER_MAX );
pPan->setValue ( AUD_MIX_PAN_MAX / 2 );
// reset mute/solo check boxes and level meter
pcbMute->setChecked ( false );
@ -279,6 +312,18 @@ void CChannelFader::SetFaderLevel ( const int iLevel )
// server about the change
pFader->setValue ( iLevel );
SendFaderLevelToServer ( iLevel );
}
}
void CChannelFader::SetPanValue ( const int iPan )
{
// first make a range check
if ( ( iPan >= 0 ) && ( iPan <= AUD_MIX_PAN_MAX ) )
{
// we set the new fader level in the GUI (slider control) and also tell the
// server about the change
pPan->setValue ( iPan );
SendPanValueToServer ( iPan );
}
}
@ -307,6 +352,11 @@ void CChannelFader::SendFaderLevelToServer ( const int iLevel )
}
}
void CChannelFader::SendPanValueToServer ( const int iPan )
{
emit panValueChanged ( static_cast<double> ( iPan ) / AUD_MIX_PAN_MAX );
}
void CChannelFader::OnMuteStateChanged ( int value )
{
// call muting function
@ -522,9 +572,10 @@ double CChannelFader::CalcFaderGain ( const int value )
* CAudioMixerBoard *
\******************************************************************************/
CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, Qt::WindowFlags ) :
QScrollArea ( parent ),
QGroupBox ( parent ),
vecStoredFaderTags ( MAX_NUM_STORED_FADER_SETTINGS, "" ),
vecStoredFaderLevels ( MAX_NUM_STORED_FADER_SETTINGS, AUD_MIX_FADER_MAX ),
vecStoredPanValues ( MAX_NUM_STORED_FADER_SETTINGS, AUD_MIX_PAN_MAX / 2 ),
vecStoredFaderIsSolo ( MAX_NUM_STORED_FADER_SETTINGS, false ),
vecStoredFaderIsMute ( MAX_NUM_STORED_FADER_SETTINGS, false ),
iNewClientFaderLevel ( 100 ),
@ -532,8 +583,10 @@ CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, Qt::WindowFlags ) :
strServerName ( "" )
{
// add group box and hboxlayout
pGroupBox = new QGroupBox(); // will be added to the scroll area which is then the parent
pMainLayout = new QHBoxLayout ( pGroupBox );
QHBoxLayout* pGroupBoxLayout = new QHBoxLayout ( this );
QWidget* pMixerWidget = new QWidget(); // will be added to the scroll area which is then the parent
pScrollArea = new CMixerBoardScrollArea ( this );
pMainLayout = new QHBoxLayout ( pMixerWidget );
// set title text (default: no server given)
SetServerName ( "" );
@ -550,13 +603,15 @@ CAudioMixerBoard::CAudioMixerBoard ( QWidget* parent, Qt::WindowFlags ) :
// insert horizontal spacer
pMainLayout->addItem ( new QSpacerItem ( 0, 0, QSizePolicy::Expanding ) );
// set margins of the layout to zero to get maximum space for the controls
pGroupBoxLayout->setContentsMargins ( 0, 0, 0, 1 ); // note: to avoid problems at the botton, use a small margin for that
// add the group box to the scroll area
setMinimumWidth ( 200 ); // at least two faders shall be visible
setWidget ( pGroupBox );
setWidgetResizable ( true ); // make sure it fills the entire scroll area
setVerticalScrollBarPolicy ( Qt::ScrollBarAlwaysOff );
setHorizontalScrollBarPolicy ( Qt::ScrollBarAsNeeded );
setFrameShape ( QFrame::NoFrame );
pScrollArea->setMinimumWidth ( 200 ); // at least two faders shall be visible
pScrollArea->setWidget ( pMixerWidget );
pScrollArea->setWidgetResizable ( true ); // make sure it fills the entire scroll area
pScrollArea->setFrameShape ( QFrame::NoFrame );
pGroupBoxLayout->addWidget ( pScrollArea );
// Connections -------------------------------------------------------------
@ -571,12 +626,18 @@ inline void CAudioMixerBoard::connectFaderSignalsToMixerBoardSlots()
void ( CAudioMixerBoard::* pGainValueChanged )( double ) =
&CAudioMixerBoardSlots<slotId>::OnChGainValueChanged;
void ( CAudioMixerBoard::* pPanValueChanged )( double ) =
&CAudioMixerBoardSlots<slotId>::OnChPanValueChanged;
QObject::connect ( vecpChanFader[iCurChanID], &CChannelFader::soloStateChanged,
this, &CAudioMixerBoard::UpdateSoloStates );
QObject::connect ( vecpChanFader[iCurChanID], &CChannelFader::gainValueChanged,
this, pGainValueChanged );
QObject::connect ( vecpChanFader[iCurChanID], &CChannelFader::panValueChanged,
this, pPanValueChanged );
connectFaderSignalsToMixerBoardSlots<slotId - 1>();
};
@ -591,7 +652,7 @@ void CAudioMixerBoard::SetServerName ( const QString& strNewServerName )
if ( strServerName.isEmpty() )
{
// no connection or connection was reset: show default title
pGroupBox->setTitle ( tr ( "Server" ) );
setTitle ( tr ( "Server" ) );
}
else
{
@ -600,7 +661,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).
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" );
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" );
}
}
@ -629,6 +690,14 @@ void CAudioMixerBoard::SetDisplayChannelLevels ( const bool eNDCL )
}
}
void CAudioMixerBoard::SetPanIsSupported()
{
for ( int i = 0; i < MAX_NUM_CHANNELS; i++ )
{
vecpChanFader[i]->SetDisplayPans ( true );
}
}
void CAudioMixerBoard::HideAll()
{
// make all controls invisible
@ -639,6 +708,7 @@ void CAudioMixerBoard::HideAll()
vecpChanFader[i]->SetChannelLevel ( 0 );
vecpChanFader[i]->SetDisplayChannelLevel ( false );
vecpChanFader[i]->SetDisplayPans ( false );
vecpChanFader[i]->Hide();
}
@ -655,7 +725,7 @@ void CAudioMixerBoard::ApplyNewConClientList ( CVector<CChannelInfo>& vecChanInf
// in the audio mixer board to show a "try to connect" before
if ( bNoFaderVisible )
{
pGroupBox->setTitle ( tr ( "Personal Mix at the Server: " ) + strServerName );
setTitle ( tr ( "Personal Mix at the Server: " ) + strServerName );
}
// get number of connected clients
@ -700,15 +770,18 @@ void CAudioMixerBoard::ApplyNewConClientList ( CVector<CChannelInfo>& vecChanInf
// the text has actually changed, search in the list of
// stored settings if we have a matching entry
int iStoredFaderLevel;
int iStoredPanValue;
bool bStoredFaderIsSolo;
bool bStoredFaderIsMute;
if ( GetStoredFaderSettings ( vecChanInfo[j],
iStoredFaderLevel,
iStoredPanValue,
bStoredFaderIsSolo,
bStoredFaderIsMute ) )
{
vecpChanFader[i]->SetFaderLevel ( iStoredFaderLevel );
vecpChanFader[i]->SetPanValue ( iStoredPanValue );
vecpChanFader[i]->SetFaderIsSolo ( bStoredFaderIsSolo );
vecpChanFader[i]->SetFaderIsMute ( bStoredFaderIsMute );
}
@ -789,6 +862,12 @@ void CAudioMixerBoard::UpdateGainValue ( const int iChannelIdx,
emit ChangeChanGain ( iChannelIdx, dValue );
}
void CAudioMixerBoard::UpdatePanValue ( const int iChannelIdx,
const double dValue )
{
emit ChangeChanPan ( iChannelIdx, dValue );
}
void CAudioMixerBoard::StoreFaderSettings ( CChannelFader* pChanFader )
{
// if the fader was visible and the name is not empty, we store the old gain
@ -796,6 +875,7 @@ void CAudioMixerBoard::StoreFaderSettings ( CChannelFader* pChanFader )
!pChanFader->GetReceivedName().isEmpty() )
{
CVector<int> viOldStoredFaderLevels ( vecStoredFaderLevels );
CVector<int> viOldStoredPanValues ( vecStoredPanValues );
CVector<int> vbOldStoredFaderIsSolo ( vecStoredFaderIsSolo );
CVector<int> vbOldStoredFaderIsMute ( vecStoredFaderIsMute );
@ -809,6 +889,7 @@ void CAudioMixerBoard::StoreFaderSettings ( CChannelFader* pChanFader )
// current fader level and solo state is at the top of the list
vecStoredFaderLevels[0] = pChanFader->GetFaderLevel();
vecStoredPanValues[0] = pChanFader->GetPanValue();
vecStoredFaderIsSolo[0] = pChanFader->IsSolo();
vecStoredFaderIsMute[0] = pChanFader->IsMute();
iTempListCnt = 1;
@ -824,6 +905,7 @@ void CAudioMixerBoard::StoreFaderSettings ( CChannelFader* pChanFader )
if ( iIdx != iOldIdx )
{
vecStoredFaderLevels[iTempListCnt] = viOldStoredFaderLevels[iIdx];
vecStoredPanValues[iTempListCnt] = viOldStoredPanValues[iIdx];
vecStoredFaderIsSolo[iTempListCnt] = vbOldStoredFaderIsSolo[iIdx];
vecStoredFaderIsMute[iTempListCnt] = vbOldStoredFaderIsMute[iIdx];
@ -836,6 +918,7 @@ void CAudioMixerBoard::StoreFaderSettings ( CChannelFader* pChanFader )
bool CAudioMixerBoard::GetStoredFaderSettings ( const CChannelInfo& ChanInfo,
int& iStoredFaderLevel,
int& iStoredPanValue,
bool& bStoredFaderIsSolo,
bool& bStoredFaderIsMute)
{
@ -849,6 +932,7 @@ bool CAudioMixerBoard::GetStoredFaderSettings ( const CChannelInfo& ChanInfo,
{
// copy stored settings values
iStoredFaderLevel = vecStoredFaderLevels[iIdx];
iStoredPanValue = vecStoredPanValues[iIdx];
bStoredFaderIsSolo = vecStoredFaderIsSolo[iIdx] != 0;
bStoredFaderIsMute = vecStoredFaderIsMute[iIdx] != 0;

48
src/audiomixerboard.h Executable file → Normal file
View file

@ -8,16 +8,16 @@
*
* 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
* 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
* 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
* 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.,
* this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
\******************************************************************************/
@ -32,6 +32,7 @@
#include <QLayout>
#include <QString>
#include <QSlider>
#include <QDial>
#include <QSizePolicy>
#include <QHostAddress>
#include "global.h"
@ -58,12 +59,15 @@ public:
void SetGUIDesign ( const EGUIDesign eNewDesign );
void SetDisplayChannelLevel ( const bool eNDCL );
bool GetDisplayChannelLevel();
void SetDisplayPans ( const bool eNDP );
void UpdateSoloState ( const bool bNewOtherSoloState );
void SetFaderLevel ( const int iLevel );
void SetPanValue ( const int iPan );
void SetFaderIsSolo ( const bool bIsSolo );
void SetFaderIsMute ( const bool bIsMute );
int GetFaderLevel() { return pFader->value(); }
int GetPanValue() { return pPan->value(); }
void Reset();
void SetChannelLevel ( const uint16_t iLevel );
@ -71,6 +75,7 @@ protected:
double CalcFaderGain ( const int value );
void SetMute ( const bool bState );
void SendFaderLevelToServer ( const int iLevel );
void SendPanValueToServer ( const int iPan );
void SetupFaderTag ( const ESkillLevel eSkillLevel );
QFrame* pFrame;
@ -79,6 +84,8 @@ protected:
QWidget* pMuteSoloBox;
CMultiColorLEDBar* plbrChannelLevel;
QSlider* pFader;
QDial* pPan;
QLabel* pPanLabel;
QCheckBox* pcbMute;
QCheckBox* pcbSolo;
@ -94,10 +101,12 @@ protected:
public slots:
void OnLevelValueChanged ( int value ) { SendFaderLevelToServer ( value ); }
void OnPanValueChanged ( int value ) { SendPanValueToServer ( value ); }
void OnMuteStateChanged ( int value );
signals:
void gainValueChanged ( double value );
void panValueChanged ( double value );
void soloStateChanged ( int value );
};
@ -106,10 +115,13 @@ class CAudioMixerBoardSlots : public CAudioMixerBoardSlots<slotId - 1>
{
public:
void OnChGainValueChanged ( double dValue ) { UpdateGainValue ( slotId - 1, dValue ); }
void OnChPanValueChanged ( double dValue ) { UpdatePanValue ( slotId - 1, dValue ); }
protected:
virtual void UpdateGainValue ( const int iChannelIdx,
const double dValue ) = 0;
virtual void UpdatePanValue ( const int iChannelIdx,
const double dValue ) = 0;
};
template<>
@ -117,7 +129,7 @@ class CAudioMixerBoardSlots<0> {};
class CAudioMixerBoard :
public QScrollArea,
public QGroupBox,
public CAudioMixerBoardSlots<MAX_NUM_CHANNELS>
{
Q_OBJECT
@ -130,6 +142,7 @@ public:
void SetServerName ( const QString& strNewServerName );
void SetGUIDesign ( const EGUIDesign eNewDesign );
void SetDisplayChannelLevels ( const bool eNDCL );
void SetPanIsSupported();
void SetFaderLevel ( const int iChannelIdx,
const int iValue );
@ -139,21 +152,41 @@ public:
// settings
CVector<QString> vecStoredFaderTags;
CVector<int> vecStoredFaderLevels;
CVector<int> vecStoredPanValues;
CVector<int> vecStoredFaderIsSolo;
CVector<int> vecStoredFaderIsMute;
int iNewClientFaderLevel;
protected:
class CMixerBoardScrollArea : public QScrollArea
{
public:
CMixerBoardScrollArea ( QWidget* parent = nullptr ) : QScrollArea ( parent ) {}
protected:
virtual void resizeEvent ( QResizeEvent* event )
{
// if after a resize of the main window a vertical scroll bar is required, make
// sure that the fader label is visible (scroll down completely)
ensureVisible ( 0, 2000 ); // use a large value here
QScrollArea::resizeEvent ( event );
}
};
bool GetStoredFaderSettings ( const CChannelInfo& ChanInfo,
int& iStoredFaderLevel,
int& iStoredPanValue,
bool& bStoredFaderIsSolo,
bool& bStoredFaderIsMute );
void StoreFaderSettings ( CChannelFader* pChanFader );
void UpdateSoloStates();
void OnGainValueChanged ( const int iChannelIdx,
const double dValue );
CVector<CChannelFader*> vecpChanFader;
QGroupBox* pGroupBox;
CMixerBoardScrollArea* pScrollArea;
QHBoxLayout* pMainLayout;
bool bDisplayChannelLevels;
bool bNoFaderVisible;
@ -161,11 +194,14 @@ protected:
virtual void UpdateGainValue ( const int iChannelIdx,
const double dValue );
virtual void UpdatePanValue ( const int iChannelIdx,
const double dValue );
template<unsigned int slotId>
inline void connectFaderSignalsToMixerBoardSlots();
signals:
void ChangeChanGain ( int iId, double dGain );
void ChangeChanPan ( int iId, double dPan );
void NumClientsChanged ( int iNewNumClients );
};

View file

@ -28,6 +28,7 @@
// CChannel implementation *****************************************************
CChannel::CChannel ( const bool bNIsServer ) :
vecdGains ( MAX_NUM_CHANNELS, 1.0 ),
vecdPannings ( MAX_NUM_CHANNELS, 0.5 ),
bDoAutoSockBufSize ( true ),
iFadeInCnt ( 0 ),
iFadeInCntMax ( FADE_IN_NUM_FRAMES_DBLE_FRAMESIZE ),
@ -86,6 +87,9 @@ qRegisterMetaType<CHostAddress> ( "CHostAddress" );
QObject::connect( &Protocol, SIGNAL ( ChangeChanGain ( int, double ) ),
this, SLOT ( OnChangeChanGain ( int, double ) ) );
QObject::connect( &Protocol, SIGNAL ( ChangeChanPan ( int, double ) ),
this, SLOT ( OnChangeChanPan ( int, double ) ) );
QObject::connect( &Protocol, SIGNAL ( ChangeChanInfo ( CChannelCoreInfo ) ),
this, SLOT ( OnChangeChanInfo ( CChannelCoreInfo ) ) );
@ -105,6 +109,10 @@ qRegisterMetaType<CHostAddress> ( "CHostAddress" );
SIGNAL ( LicenceRequired ( ELicenceType ) ),
SIGNAL ( LicenceRequired ( ELicenceType ) ) );
QObject::connect ( &Protocol,
SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ),
SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ) );
QObject::connect ( &Protocol,
SIGNAL ( ReqChannelLevelList ( bool ) ),
this, SLOT ( OnReqChannelLevelList ( bool ) ) );
@ -269,6 +277,33 @@ double CChannel::GetGain ( const int iChanID )
}
}
void CChannel::SetPan ( const int iChanID,
const double dNewPan )
{
QMutexLocker locker ( &Mutex );
// set value (make sure channel ID is in range)
if ( ( iChanID >= 0 ) && ( iChanID < MAX_NUM_CHANNELS ) )
{
vecdPannings[iChanID] = dNewPan;
}
}
double CChannel::GetPan ( const int iChanID )
{
QMutexLocker locker ( &Mutex );
// get value (make sure channel ID is in range)
if ( ( iChanID >= 0 ) && ( iChanID < MAX_NUM_CHANNELS ) )
{
return vecdPannings[iChanID];
}
else
{
return 0;
}
}
void CChannel::SetChanInfo ( const CChannelCoreInfo& NChanInf )
{
// apply value (if different from previous one)
@ -335,6 +370,12 @@ void CChannel::OnChangeChanGain ( int iChanID,
SetGain ( iChanID, dNewGain );
}
void CChannel::OnChangeChanPan ( int iChanID,
double dNewPan )
{
SetPan ( iChanID, dNewPan );
}
void CChannel::OnChangeChanInfo ( CChannelCoreInfo ChanInfo )
{
SetChanInfo ( ChanInfo );

View file

@ -105,14 +105,21 @@ public:
{ Protocol.CreateChanInfoMes ( ChInfo ); }
void CreateReqChanInfoMes() { Protocol.CreateReqChanInfoMes(); }
void CreateVersionAndOSMes() { Protocol.CreateVersionAndOSMes(); }
void SetGain ( const int iChanID, const double dNewGain );
double GetGain ( const int iChanID );
double GetFadeInGain() { return static_cast<double> ( iFadeInCnt ) / iFadeInCntMax; }
void SetPan ( const int iChanID, const double dNewPan );
double GetPan ( const int iChanID );
void SetRemoteChanGain ( const int iId, const double dGain )
{ Protocol.CreateChanGainMes ( iId, dGain ); }
void SetRemoteChanPan ( const int iId, const double dPan )
{ Protocol.CreateChanPanMes ( iId, dPan ); }
bool SetSockBufNumFrames ( const int iNewNumFrames,
const bool bPreserve = false );
int GetSockBufNumFrames() const { return iCurSockBufNumFrames; }
@ -190,6 +197,7 @@ protected:
// mixer and effect settings
CVector<double> vecdGains;
CVector<double> vecdPannings;
// network jitter-buffer
CNetBufWithStats SockBuf;
@ -228,6 +236,7 @@ public slots:
void OnSendProtMessage ( CVector<uint8_t> vecMessage );
void OnJittBufSizeChange ( int iNewJitBufSize );
void OnChangeChanGain ( int iChanID, double dNewGain );
void OnChangeChanPan ( int iChanID, double dNewPan );
void OnChangeChanInfo ( CChannelCoreInfo ChanInfo );
void OnNetTranspPropsReceived ( CNetworkTransportProps NetworkTransportProps );
void OnReqNetTranspProps();
@ -272,6 +281,7 @@ signals:
void ChatTextReceived ( QString strChatText );
void ReqNetTranspProps();
void LicenceRequired ( ELicenceType eLicenceType );
void VersionAndOSReceived ( COSUtil::EOpSystemType eOSType, QString strVersion );
void Disconnected();
void DetectedCLMessage ( CVector<uint8_t> vecbyMesBodyData,

View file

@ -35,6 +35,7 @@ CClient::CClient ( const quint16 iPortNumber,
ChannelInfo (),
vecStoredFaderTags ( MAX_NUM_STORED_FADER_SETTINGS, "" ),
vecStoredFaderLevels ( MAX_NUM_STORED_FADER_SETTINGS, AUD_MIX_FADER_MAX ),
vecStoredPanValues ( MAX_NUM_STORED_FADER_SETTINGS, AUD_MIX_PAN_MAX / 2 ),
vecStoredFaderIsSolo ( MAX_NUM_STORED_FADER_SETTINGS, false ),
vecStoredFaderIsMute ( MAX_NUM_STORED_FADER_SETTINGS, false ),
iNewClientFaderLevel ( 100 ),
@ -159,6 +160,10 @@ CClient::CClient ( const quint16 iPortNumber,
SIGNAL ( LicenceRequired ( ELicenceType ) ),
SIGNAL ( LicenceRequired ( ELicenceType ) ) );
QObject::connect ( &Channel,
SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ),
SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ) );
QObject::connect ( &ConnLessProtocol,
SIGNAL ( CLMessReadyForSending ( CHostAddress, CVector<uint8_t> ) ),
this, SLOT ( OnSendCLProtMessage ( CHostAddress, CVector<uint8_t> ) ) );
@ -836,7 +841,6 @@ void CClient::Init()
vecCeltData.Init ( iCeltNumCodedBytes );
vecZeros.Init ( iStereoBlockSizeSam, 0 );
vecsStereoSndCrdTMP.Init ( iStereoBlockSizeSam );
vecsStereoSndCrdMuteStream.Init ( iStereoBlockSizeSam );
opus_custom_encoder_ctl ( CurOpusEncoder,
@ -894,30 +898,13 @@ JitterMeas.Measure();
*/
}
void CClient::ProcessSndCrdAudioData ( CVector<int16_t>& vecsMultChanAudioSndCrd )
void CClient::ProcessSndCrdAudioData ( CVector<int16_t>& vecsStereoSndCrd )
{
// TODO output mapping from stereo to multi channel: We want to change all the different sound interfaces that they
// do not select the input and output channels but we do it here at the client. This has the advantage that, e.g.,
// the special add modes supported for Windows (i.e. if 4 input channels available, you can mix channel 1+3 or 1+4)
// can then be used for Mac as well without the need of changing anything in the actual Mac sound interface.
// Since a multichannel signal arrives and must be converted to a stereo signal, we need an additional buffer: vecsStereoSndCrdTMP.
// TEST input channel selection/mixing
//const int iNumInCh = 2;
//for ( int i = 0; i < iNumInCh; i++ )
//{
// for ( int j = 0; j < iMonoBlockSizeSam; j++ )
// {
// vecsStereoSndCrdTMP[2 * j + i] = vecsMultChanAudioSndCrd[iNumInCh * j + i];
// }
//}
vecsStereoSndCrdTMP = vecsMultChanAudioSndCrd; // TEST just copy the stereo data for now
// check if a conversion buffer is required or not
if ( bSndCrdConversionBufferRequired )
{
// add new sound card block in conversion buffer
SndCrdConversionBufferIn.Put ( vecsStereoSndCrdTMP, vecsStereoSndCrdTMP.Size() );
SndCrdConversionBufferIn.Put ( vecsStereoSndCrd, vecsStereoSndCrd.Size() );
// process all available blocks of data
while ( SndCrdConversionBufferIn.GetAvailData() >= iStereoBlockSizeSam )
@ -932,17 +919,14 @@ vecsStereoSndCrdTMP = vecsMultChanAudioSndCrd; // TEST just copy the stereo data
}
// get processed sound card block out of the conversion buffer
SndCrdConversionBufferOut.Get ( vecsStereoSndCrdTMP, vecsStereoSndCrdTMP.Size() );
SndCrdConversionBufferOut.Get ( vecsStereoSndCrd, vecsStereoSndCrd.Size() );
}
else
{
// regular case: no conversion buffer required
// process audio data
ProcessAudioDataIntern ( vecsStereoSndCrdTMP );
ProcessAudioDataIntern ( vecsStereoSndCrd );
}
// TODO output mapping from stereo to multi channel, see comment above for the input mapping
vecsMultChanAudioSndCrd = vecsStereoSndCrdTMP; // TEST just copy the stereo data for now
}
void CClient::ProcessAudioDataIntern ( CVector<int16_t>& vecsStereoSndCrd )

View file

@ -245,6 +245,9 @@ public:
void SetRemoteChanGain ( const int iId, const double dGain )
{ Channel.SetRemoteChanGain ( iId, dGain ); }
void SetRemoteChanPan ( const int iId, const double dPan )
{ Channel.SetRemoteChanPan ( iId, dPan ); }
void SetRemoteInfo() { Channel.SetRemoteInfo ( ChannelInfo ); }
void CreateChatTextMes ( const QString& strChatText )
@ -279,6 +282,7 @@ public:
CChannelCoreInfo ChannelInfo;
CVector<QString> vecStoredFaderTags;
CVector<int> vecStoredFaderLevels;
CVector<int> vecStoredPanValues;
CVector<int> vecStoredFaderIsSolo;
CVector<int> vecStoredFaderIsMute;
int iNewClientFaderLevel;
@ -306,7 +310,7 @@ protected:
static void AudioCallback ( CVector<short>& psData, void* arg );
void Init();
void ProcessSndCrdAudioData ( CVector<short>& vecsMultChanAudioSndCrd );
void ProcessSndCrdAudioData ( CVector<short>& vecsStereoSndCrd );
void ProcessAudioDataIntern ( CVector<short>& vecsStereoSndCrd );
int PreparePingMessage();
@ -360,7 +364,6 @@ protected:
CBufferBase<int16_t> SndCrdConversionBufferIn;
CBufferBase<int16_t> SndCrdConversionBufferOut;
CVector<int16_t> vecDataConvBuf;
CVector<int16_t> vecsStereoSndCrdTMP;
CVector<int16_t> vecsStereoSndCrdMuteStream;
CVector<int16_t> vecZeros;
@ -418,6 +421,7 @@ signals:
void ConClientListMesReceived ( CVector<CChannelInfo> vecChanInfo );
void ChatTextReceived ( QString strChatText );
void LicenceRequired ( ELicenceType eLicenceType );
void VersionAndOSReceived ( COSUtil::EOpSystemType eOSType, QString strVersion );
void PingTimeReceived ( int iPingTime );
void CLServerListReceived ( CHostAddress InetAddr,

View file

@ -193,6 +193,7 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
// restore fader settings
MainMixerBoard->vecStoredFaderTags = pClient->vecStoredFaderTags;
MainMixerBoard->vecStoredFaderLevels = pClient->vecStoredFaderLevels;
MainMixerBoard->vecStoredPanValues = pClient->vecStoredPanValues;
MainMixerBoard->vecStoredFaderIsSolo = pClient->vecStoredFaderIsSolo;
MainMixerBoard->vecStoredFaderIsMute = pClient->vecStoredFaderIsMute;
MainMixerBoard->iNewClientFaderLevel = pClient->iNewClientFaderLevel;
@ -497,6 +498,10 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
SIGNAL ( CLChannelLevelListReceived ( CHostAddress, CVector<uint16_t> ) ),
this, SLOT ( OnCLChannelLevelListReceived ( CHostAddress, CVector<uint16_t> ) ) );
QObject::connect ( pClient,
SIGNAL ( VersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ),
this, SLOT ( OnVersionAndOSReceived ( COSUtil::EOpSystemType, QString ) ) );
#ifdef ENABLE_CLIENT_VERSION_AND_OS_DEBUGGING
QObject::connect ( pClient,
SIGNAL ( CLVersionAndOSReceived ( CHostAddress, COSUtil::EOpSystemType, QString ) ),
@ -521,6 +526,9 @@ CClientDlg::CClientDlg ( CClient* pNCliP,
QObject::connect ( MainMixerBoard, SIGNAL ( ChangeChanGain ( int, double ) ),
this, SLOT ( OnChangeChanGain ( int, double ) ) );
QObject::connect ( MainMixerBoard, SIGNAL ( ChangeChanPan ( int, double ) ),
this, SLOT ( OnChangeChanPan ( int, double ) ) );
QObject::connect ( MainMixerBoard, SIGNAL ( NumClientsChanged ( int ) ),
this, SLOT ( OnNumClientsChanged ( int ) ) );
@ -585,6 +593,7 @@ void CClientDlg::closeEvent ( QCloseEvent* Event )
MainMixerBoard->HideAll();
pClient->vecStoredFaderTags = MainMixerBoard->vecStoredFaderTags;
pClient->vecStoredFaderLevels = MainMixerBoard->vecStoredFaderLevels;
pClient->vecStoredPanValues = MainMixerBoard->vecStoredPanValues;
pClient->vecStoredFaderIsSolo = MainMixerBoard->vecStoredFaderIsSolo;
pClient->vecStoredFaderIsMute = MainMixerBoard->vecStoredFaderIsMute;
pClient->iNewClientFaderLevel = MainMixerBoard->iNewClientFaderLevel;
@ -744,6 +753,18 @@ void CClientDlg::OnCentralServerAddressTypeChanged()
}
}
void CClientDlg::OnVersionAndOSReceived ( COSUtil::EOpSystemType ,
QString strVersion )
{
// check if Pan is supported by the server (minimum version is 3.5.4)
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
if ( QVersionNumber::compare ( QVersionNumber::fromString ( strVersion ), QVersionNumber ( 3, 5, 4 ) ) >= 0 )
{
MainMixerBoard->SetPanIsSupported();
}
#endif
}
void CClientDlg::OnChatTextReceived ( QString strChatText )
{
ChatDlg.AddChatText ( strChatText );
@ -1150,6 +1171,7 @@ void CClientDlg::SetGUIDesign ( const EGUIDesign eNewDesign )
"QRadioButton { color: rgb(220, 220, 220);"
" font: bold; }"
"QScrollArea { background: transparent; }"
".QWidget { background: transparent; }" // note: matches instances of QWidget, but not of its subclasses
"QGroupBox { background: transparent; }"
"QGroupBox::title { color: rgb(220, 220, 220); }"
"QCheckBox::indicator { width: 38px;"

View file

@ -33,6 +33,9 @@
#include <QRadioButton>
#include <QMenuBar>
#include <QLayout>
#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
# include <QVersionNumber>
#endif
#include "global.h"
#include "client.h"
#include "settings.h"
@ -131,6 +134,9 @@ public slots:
const int iValue ) { MainMixerBoard->SetFaderLevel ( iChannelIdx,
iValue ); }
void OnVersionAndOSReceived ( COSUtil::EOpSystemType ,
QString strVersion );
#ifdef ENABLE_CLIENT_VERSION_AND_OS_DEBUGGING
void OnCLVersionAndOSReceived ( CHostAddress InetAddr,
COSUtil::EOpSystemType eOSType,
@ -166,6 +172,9 @@ public slots:
void OnChangeChanGain ( int iId, double dGain )
{ pClient->SetRemoteChanGain ( iId, dGain ); }
void OnChangeChanPan ( int iId, double dPan )
{ pClient->SetRemoteChanPan ( iId, dPan ); }
void OnNewLocalInputText ( QString strChatText )
{ pClient->CreateChatTextMes ( strChatText ); }

View file

@ -172,13 +172,13 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, QWidget* parent,
"change the buffer size." ) + TOOLTIP_COM_END_TEXT;
rbtBufferDelayPreferred->setWhatsThis ( strSndCrdBufDelay );
rbtBufferDelayPreferred->setAccessibleName ( tr ( "128 samples setting radio button" ) );
rbtBufferDelayPreferred->setAccessibleName ( tr ( "64 samples setting radio button" ) );
rbtBufferDelayPreferred->setToolTip ( strSndCrdBufDelayTT );
rbtBufferDelayDefault->setWhatsThis ( strSndCrdBufDelay );
rbtBufferDelayDefault->setAccessibleName ( tr ( "256 samples setting radio button" ) );
rbtBufferDelayDefault->setAccessibleName ( tr ( "128 samples setting radio button" ) );
rbtBufferDelayDefault->setToolTip ( strSndCrdBufDelayTT );
rbtBufferDelaySafe->setWhatsThis ( strSndCrdBufDelay );
rbtBufferDelaySafe->setAccessibleName ( tr ( "512 samples setting radio button" ) );
rbtBufferDelaySafe->setAccessibleName ( tr ( "256 samples setting radio button" ) );
rbtBufferDelaySafe->setToolTip ( strSndCrdBufDelayTT );
butDriverSetup->setWhatsThis ( strSndCrdBufDelay );
butDriverSetup->setAccessibleName ( tr ( "ASIO setup push button" ) );

View file

@ -147,8 +147,9 @@ LED bar: lbr
// default network buffer size
#define DEF_NET_BUF_SIZE_NUM_BL 10 // number of blocks
// audio mixer fader maximum value
// audio mixer fader and panning maximum value
#define AUD_MIX_FADER_MAX 100
#define AUD_MIX_PAN_MAX 100
// maximum number of recognized sound cards installed in the system,
// definition for "no device"

View file

@ -64,6 +64,13 @@ MESSAGES (with connection)
+-------------------+--------------+
- PROTMESSID_CHANNEL_PAN: Gain of channel
+-------------------+-----------------+
| 1 byte channel ID | 2 bytes panning |
+-------------------+-----------------+
- PROTMESSID_CONN_CLIENTS_LIST: Information about connected clients
for each connected client append following data:
@ -154,7 +161,7 @@ MESSAGES (with connection)
| 1 byte licence type |
+---------------------+
- PROTMESSID_CLM_REQ_CHANNEL_LEVEL_LIST: Opt in or out of the channel level list
- PROTMESSID_REQ_CHANNEL_LEVEL_LIST: Opt in or out of the channel level list
+---------------+
| 1 byte option |
@ -162,6 +169,12 @@ MESSAGES (with connection)
option is boolean, true to opt in, false to opt out
- PROTMESSID_VERSION_AND_OS: Version number and operating system
+-------------------------+------------------+------------------------------+
| 1 byte operating system | 2 bytes number n | n bytes UTF-8 string version |
+-------------------------+------------------+------------------------------+
// #### COMPATIBILITY OLD VERSION, TO BE REMOVED ####
- PROTMESSID_OPUS_SUPPORTED: Informs that OPUS codec is supported
@ -573,6 +586,10 @@ if ( rand() < ( RAND_MAX / 2 ) ) return false;
bRet = EvaluateChanGainMes ( vecbyMesBodyData );
break;
case PROTMESSID_CHANNEL_PAN:
bRet = EvaluateChanPanMes ( vecbyMesBodyData );
break;
case PROTMESSID_CONN_CLIENTS_LIST:
bRet = EvaluateConClientListMes ( vecbyMesBodyData );
break;
@ -608,6 +625,10 @@ if ( rand() < ( RAND_MAX / 2 ) ) return false;
case PROTMESSID_REQ_CHANNEL_LEVEL_LIST:
bRet = EvaluateReqChannelLevelListMes ( vecbyMesBodyData );
break;
case PROTMESSID_VERSION_AND_OS:
bRet = EvaluateVersionAndOSMes ( vecbyMesBodyData );
break;
}
// immediately send acknowledge message
@ -795,12 +816,10 @@ bool CProtocol::EvaluateChanGainMes ( const CVector<uint8_t>& vecData )
}
// channel ID
const int iCurID =
static_cast<int> ( GetValFromStream ( vecData, iPos, 1 ) );
const int iCurID = static_cast<int> ( GetValFromStream ( vecData, iPos, 1 ) );
// gain (read integer value)
const int iData =
static_cast<int> ( GetValFromStream ( vecData, iPos, 2 ) );
const int iData = static_cast<int> ( GetValFromStream ( vecData, iPos, 2 ) );
// we convert the gain from integer to double with range 0..1
const double dNewGain = static_cast<double> ( iData ) / ( 1 << 15 );
@ -811,6 +830,48 @@ bool CProtocol::EvaluateChanGainMes ( const CVector<uint8_t>& vecData )
return false; // no error
}
void CProtocol::CreateChanPanMes ( const int iChanID, const double dPan )
{
CVector<uint8_t> vecData ( 3 ); // 3 bytes of data
int iPos = 0; // init position pointer
// build data vector
// channel ID
PutValOnStream ( vecData, iPos, static_cast<uint32_t> ( iChanID ), 1 );
// actual gain, we convert from double with range 0..1 to integer
const int iCurPan = static_cast<int> ( dPan * ( 1 << 15 ) );
PutValOnStream ( vecData, iPos, static_cast<uint32_t> ( iCurPan ), 2 );
CreateAndSendMessage ( PROTMESSID_CHANNEL_PAN, vecData );
}
bool CProtocol::EvaluateChanPanMes ( const CVector<uint8_t> &vecData )
{
int iPos = 0; // init position pointer
// check size
if ( vecData.Size() != 3 )
{
return true; // return error code
}
// channel ID
const int iCurID = static_cast<int> ( GetValFromStream ( vecData, iPos, 1 ) );
// pan (read integer value)
const int iData = static_cast<int> ( GetValFromStream ( vecData, iPos, 2 ) );
// we convert the gain from integer to double with range 0..1
const double dNewPan = static_cast<double> ( iData ) / ( 1 << 15 );
// invoke message action
emit ChangeChanPan ( iCurID, dNewPan );
return false; // no error
}
void CProtocol::CreateConClientListMes ( const CVector<CChannelInfo>& vecChanInfo )
{
const int iNumClients = vecChanInfo.Size();
@ -1335,6 +1396,71 @@ bool CProtocol::EvaluateReqChannelLevelListMes ( const CVector<uint8_t>& vecData
return false; // no error
}
void CProtocol::CreateVersionAndOSMes()
{
int iPos = 0; // init position pointer
// get the version number string
const QString strVerion = VERSION;
// convert version string to utf-8
const QByteArray strUTF8Version = strVerion.toUtf8();
// size of current message body
const int iEntrLen =
1 /* operating system */ +
2 /* version utf-8 string size */ + strUTF8Version.size();
// build data vector
CVector<uint8_t> vecData ( iEntrLen );
// operating system (1 byte)
PutValOnStream ( vecData, iPos,
static_cast<uint32_t> ( COSUtil::GetOperatingSystem() ), 1 );
// version
PutStringUTF8OnStream ( vecData, iPos, strUTF8Version );
CreateAndSendMessage ( PROTMESSID_VERSION_AND_OS, vecData );
}
bool CProtocol::EvaluateVersionAndOSMes ( const CVector<uint8_t>& vecData )
{
int iPos = 0; // init position pointer
const int iDataLen = vecData.Size();
// check size (the first 1 byte)
if ( iDataLen < 1 )
{
return true; // return error code
}
// operating system (1 byte)
const COSUtil::EOpSystemType eOSType =
static_cast<COSUtil::EOpSystemType> ( GetValFromStream ( vecData, iPos, 1 ) );
// version text
QString strVersion;
if ( GetStringFromStream ( vecData,
iPos,
MAX_LEN_VERSION_TEXT,
strVersion ) )
{
return true; // return error code
}
// check size: all data is read, the position must now be at the end
if ( iPos != iDataLen )
{
return true; // return error code
}
// invoke message action
emit VersionAndOSReceived ( eOSType, strVersion );
return false; // no error
}
// Connection less messages ----------------------------------------------------
void CProtocol::CreateCLPingMes ( const CHostAddress& InetAddr, const int iMs )

8
src/protocol.h Executable file → Normal file
View file

@ -55,6 +55,8 @@
#define PROTMESSID_OPUS_SUPPORTED 26 // tells that OPUS codec is supported
#define PROTMESSID_LICENCE_REQUIRED 27 // licence required
#define PROTMESSID_REQ_CHANNEL_LEVEL_LIST 28 // request the channel level list
#define PROTMESSID_VERSION_AND_OS 29 // version number and operating system
#define PROTMESSID_CHANNEL_PAN 30 // set channel pan for mix
// message IDs of connection less messages (CLM)
// DEFINITION -> start at 1000, end at 1999, see IsConnectionLessMessageID
@ -96,6 +98,7 @@ public:
void CreateJitBufMes ( const int iJitBufSize );
void CreateReqJitBufMes();
void CreateChanGainMes ( const int iChanID, const double dGain );
void CreateChanPanMes ( const int iChanID, const double dPan );
void CreateConClientListMes ( const CVector<CChannelInfo>& vecChanInfo );
void CreateReqConnClientsList();
void CreateChanInfoMes ( const CChannelCoreInfo ChanInfo );
@ -106,6 +109,7 @@ public:
void CreateLicenceRequiredMes ( const ELicenceType eLicenceType );
void CreateOpusSupportedMes();
void CreateReqChannelLevelListMes ( const bool bRCL );
void CreateVersionAndOSMes();
void CreateCLPingMes ( const CHostAddress& InetAddr, const int iMs );
void CreateCLPingWithNumClientsMes ( const CHostAddress& InetAddr,
@ -218,6 +222,7 @@ protected:
bool EvaluateJitBufMes ( const CVector<uint8_t>& vecData );
bool EvaluateReqJitBufMes();
bool EvaluateChanGainMes ( const CVector<uint8_t>& vecData );
bool EvaluateChanPanMes ( const CVector<uint8_t>& vecData );
bool EvaluateConClientListMes ( const CVector<uint8_t>& vecData );
bool EvaluateReqConnClientsList();
bool EvaluateChanInfoMes ( const CVector<uint8_t>& vecData );
@ -227,6 +232,7 @@ protected:
bool EvaluateReqNetwTranspPropsMes();
bool EvaluateLicenceRequiredMes ( const CVector<uint8_t>& vecData );
bool EvaluateReqChannelLevelListMes ( const CVector<uint8_t>& vecData );
bool EvaluateVersionAndOSMes ( const CVector<uint8_t>& vecData );
bool EvaluateCLPingMes ( const CHostAddress& InetAddr,
const CVector<uint8_t>& vecData );
@ -276,6 +282,7 @@ signals:
void ReqJittBufSize();
void ChangeNetwBlSiFact ( int iNewNetwBlSiFact );
void ChangeChanGain ( int iChanID, double dNewGain );
void ChangeChanPan ( int iChanID, double dNewPan );
void ConClientListMesReceived ( CVector<CChannelInfo> vecChanInfo );
void ServerFullMesReceived();
void ReqConnClientsList();
@ -286,6 +293,7 @@ signals:
void ReqNetTranspProps();
void LicenceRequired ( ELicenceType eLicenceType );
void ReqChannelLevelList ( bool bOptIn );
void VersionAndOSReceived ( COSUtil::EOpSystemType eOSType, QString strVersion );
void CLPingReceived ( CHostAddress InetAddr,
int iMs );

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

Before

Width:  |  Height:  |  Size: 931 B

After

Width:  |  Height:  |  Size: 931 B

View file

Before

Width:  |  Height:  |  Size: 929 B

After

Width:  |  Height:  |  Size: 929 B

View file

Before

Width:  |  Height:  |  Size: 587 B

After

Width:  |  Height:  |  Size: 587 B

View file

Before

Width:  |  Height:  |  Size: 1,016 B

After

Width:  |  Height:  |  Size: 1,016 B

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

Before

Width:  |  Height:  |  Size: 936 B

After

Width:  |  Height:  |  Size: 936 B

View file

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

Before

Width:  |  Height:  |  Size: 955 B

After

Width:  |  Height:  |  Size: 955 B

View file

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

Before

Width:  |  Height:  |  Size: 900 B

After

Width:  |  Height:  |  Size: 900 B

View file

Before

Width:  |  Height:  |  Size: 917 B

After

Width:  |  Height:  |  Size: 917 B

View file

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because it is too large Load diff

View file

@ -58,57 +58,57 @@
<translation>Iconos de banderas nacionales de Mark James</translation>
</message>
<message>
<location filename="../../util.cpp" line="403"/>
<location filename="../../util.cpp" line="404"/>
<source>For details on the contributions check out the </source>
<translation>Para más detalles sobre los contribuidores consulta la </translation>
</message>
<message>
<location filename="../../util.cpp" line="404"/>
<location filename="../../util.cpp" line="405"/>
<source>Github Contributors list</source>
<translation>lista de Contribuidores en Github</translation>
</message>
<message>
<location filename="../../util.cpp" line="408"/>
<location filename="../../util.cpp" line="409"/>
<source>Spanish</source>
<translation>Español</translation>
</message>
<message>
<location filename="../../util.cpp" line="410"/>
<location filename="../../util.cpp" line="411"/>
<source>French</source>
<translation>Francés</translation>
</message>
<message>
<location filename="../../util.cpp" line="412"/>
<location filename="../../util.cpp" line="413"/>
<source>Portuguese</source>
<translation>Portugués</translation>
</message>
<message>
<location filename="../../util.cpp" line="414"/>
<location filename="../../util.cpp" line="415"/>
<source>Dutch</source>
<translation>Neerlandés</translation>
</message>
<message>
<location filename="../../util.cpp" line="416"/>
<location filename="../../util.cpp" line="417"/>
<source>German</source>
<translation>Alemán</translation>
</message>
<message>
<location filename="../../util.cpp" line="423"/>
<location filename="../../util.cpp" line="424"/>
<source>About </source>
<translation>Acerca de </translation>
</message>
<message>
<location filename="../../util.cpp" line="440"/>
<location filename="../../util.cpp" line="441"/>
<source>, Version </source>
<translation>, Versión </translation>
</message>
<message>
<location filename="../../util.cpp" line="453"/>
<location filename="../../util.cpp" line="454"/>
<source>Internet Jam Session Software</source>
<translation>Internet Jam Session Software</translation>
</message>
<message>
<location filename="../../util.cpp" line="457"/>
<location filename="../../util.cpp" line="458"/>
<source>Under the GNU General Public License (GPL)</source>
<translation>Bajo la GNU General Public License (GPL)</translation>
</message>
@ -172,17 +172,17 @@
<context>
<name>CAudioMixerBoard</name>
<message>
<location filename="../../audiomixerboard.cpp" line="594"/>
<location filename="../../audiomixerboard.cpp" line="644"/>
<source>Server</source>
<translation>Servidor</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="603"/>
<location filename="../../audiomixerboard.cpp" line="653"/>
<source>T R Y I N G T O C O N N E C T</source>
<translation>I N T E N T A N D O C O N E C T A R</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="658"/>
<location filename="../../audiomixerboard.cpp" line="717"/>
<source>Personal Mix at the Server: </source>
<translation>Mezcla Personal en el Servidor: </translation>
</message>
@ -190,143 +190,169 @@
<context>
<name>CChannelFader</name>
<message>
<location filename="../../audiomixerboard.cpp" line="110"/>
<location filename="../../audiomixerboard.cpp" line="121"/>
<source>Channel Level</source>
<translation>Nivel Canal</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="111"/>
<location filename="../../audiomixerboard.cpp" line="122"/>
<source>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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="113"/>
<location filename="../../audiomixerboard.cpp" line="124"/>
<source>Input level of the current audio channel at the server</source>
<translation>Nivel de entrada del canal de audio actual en el servidor</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<location filename="../../audiomixerboard.cpp" line="127"/>
<source>Mixer Fader</source>
<translation>Fader Mezclador</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<location filename="../../audiomixerboard.cpp" line="127"/>
<source>Adjusts the audio level of this channel. All connected clients at the server will be assigned an audio fader at each client, adjusting the local mix.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="119"/>
<location filename="../../audiomixerboard.cpp" line="130"/>
<source>Local mix level setting of the current audio channel at the server</source>
<translation>Ajuste local de la mezcla del canal de audio actual en el servidor</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="122"/>
<location filename="../../audiomixerboard.cpp" line="133"/>
<source>Panning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="133"/>
<source>Sets the panning position from Left to Right of the channel. Works only in stero or preferably mono in/stereo out mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="136"/>
<source>Local panning position of the current audio channel at the server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="138"/>
<source>With the Mute checkbox, the audio channel can be muted.</source>
<translation>Activando Mute, se puede mutear el canal de audio.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="124"/>
<location filename="../../audiomixerboard.cpp" line="140"/>
<source>Mute button</source>
<translation>Botón Mute</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="126"/>
<location filename="../../audiomixerboard.cpp" line="142"/>
<source>With the Solo checkbox, the 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 one channel to solo.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="130"/>
<location filename="../../audiomixerboard.cpp" line="146"/>
<source>Solo button</source>
<translation>Botón Solo</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="132"/>
<location filename="../../audiomixerboard.cpp" line="148"/>
<source>Fader Tag</source>
<translation>Etiqueta Fader</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="132"/>
<location filename="../../audiomixerboard.cpp" line="148"/>
<source>The fader tag 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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="137"/>
<location filename="../../audiomixerboard.cpp" line="153"/>
<source>Mixer channel instrument picture</source>
<translation>Imagen mezclador canal instrumento</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="139"/>
<location filename="../../audiomixerboard.cpp" line="155"/>
<source>Mixer channel label (fader tag)</source>
<translation>Etiqueta mezclador canal (etiqueta fader)</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="141"/>
<location filename="../../audiomixerboard.cpp" line="157"/>
<source>Mixer channel country flag</source>
<translation>Bandera país mezclador canal</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="175"/>
<location filename="../../audiomixerboard.cpp" line="194"/>
<source>PAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="195"/>
<source>MUTE</source>
<translation>MUTE</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="176"/>
<location filename="../../audiomixerboard.cpp" line="196"/>
<source>SOLO</source>
<translation>SOLO</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="440"/>
<location filename="../../audiomixerboard.cpp" line="485"/>
<source>Alias/Name</source>
<translation>Alias/Nombre</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="446"/>
<location filename="../../audiomixerboard.cpp" line="491"/>
<source>Instrument</source>
<translation>Instrumento</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="454"/>
<location filename="../../audiomixerboard.cpp" line="499"/>
<source>Location</source>
<translation>Ubicación</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<location filename="../../audiomixerboard.cpp" line="521"/>
<location filename="../../audiomixerboard.cpp" line="525"/>
<location filename="../../audiomixerboard.cpp" line="529"/>
<source>Skill Level</source>
<translation>Nivel Habilidad</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="521"/>
<source>Beginner</source>
<translation>Principiante</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="525"/>
<source>Intermediate</source>
<translation>Intermedio</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="484"/>
<location filename="../../audiomixerboard.cpp" line="529"/>
<source>Expert</source>
<translation>Experto</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="495"/>
<location filename="../../audiomixerboard.cpp" line="540"/>
<source>Musician Profile</source>
<translation>Perfil Músico</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="44"/>
<location filename="../../audiomixerboard.cpp" line="122"/>
<location filename="../../audiomixerboard.cpp" line="183"/>
<location filename="../../audiomixerboard.cpp" line="46"/>
<location filename="../../audiomixerboard.cpp" line="138"/>
<location filename="../../audiomixerboard.cpp" line="204"/>
<source>Mute</source>
<translation>Mute</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="45"/>
<location filename="../../audiomixerboard.cpp" line="126"/>
<location filename="../../audiomixerboard.cpp" line="184"/>
<location filename="../../audiomixerboard.cpp" line="43"/>
<location filename="../../audiomixerboard.cpp" line="203"/>
<source>Pan</source>
<translation type="unfinished">Paneo</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="47"/>
<location filename="../../audiomixerboard.cpp" line="142"/>
<location filename="../../audiomixerboard.cpp" line="205"/>
<source>Solo</source>
<translation>Solo</translation>
</message>
@ -501,64 +527,64 @@
<translation>Indicador LED estado buffers</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="204"/>
<location filename="../../clientdlg.cpp" line="1075"/>
<location filename="../../clientdlg.cpp" line="205"/>
<location filename="../../clientdlg.cpp" line="1096"/>
<source>C&amp;onnect</source>
<translation>C&amp;onectar</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="256"/>
<location filename="../../clientdlg.cpp" line="257"/>
<source>&amp;View</source>
<translation>&amp;Ver</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="258"/>
<location filename="../../clientdlg.cpp" line="259"/>
<source>&amp;Connection Setup...</source>
<translation>&amp;Configuración de Conexión...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="261"/>
<location filename="../../clientdlg.cpp" line="262"/>
<source>My &amp;Profile...</source>
<translation>Mi &amp;Perfil...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="264"/>
<location filename="../../clientdlg.cpp" line="265"/>
<source>C&amp;hat...</source>
<translation>C&amp;hat...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="267"/>
<location filename="../../clientdlg.cpp" line="268"/>
<source>&amp;Settings...</source>
<translation>&amp;Configuración...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="273"/>
<location filename="../../clientdlg.cpp" line="274"/>
<source>&amp;Analyzer Console...</source>
<translation>&amp;Analyzer Console...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="279"/>
<location filename="../../clientdlg.cpp" line="280"/>
<source>E&amp;xit</source>
<translation>S&amp;alir</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="327"/>
<location filename="../../clientdlg.cpp" line="328"/>
<source>None</source>
<translation>Ninguno</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="607"/>
<location filename="../../clientdlg.cpp" line="616"/>
<source>Center</source>
<translation>Centro</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="614"/>
<location filename="../../clientdlg.cpp" line="623"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="108"/>
<location filename="../../clientdlg.cpp" line="620"/>
<location filename="../../clientdlg.cpp" line="629"/>
<source>L</source>
<translation>L</translation>
</message>
@ -643,22 +669,22 @@
<translation>El procesador del cliente o del servidor está al 100%.</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="703"/>
<location filename="../../clientdlg.cpp" line="712"/>
<source>Central Server</source>
<translation>Servidor Central</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="809"/>
<location filename="../../clientdlg.cpp" line="830"/>
<source>user</source>
<translation>usuario</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="814"/>
<location filename="../../clientdlg.cpp" line="835"/>
<source>users</source>
<translation>usuarios</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="1051"/>
<location filename="../../clientdlg.cpp" line="1072"/>
<source>D&amp;isconnect</source>
<translation>D&amp;esconectar</translation>
</message>
@ -960,19 +986,19 @@
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="175"/>
<source>64 samples setting radio button</source>
<translation>Configuración 64 muestras</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="178"/>
<source>128 samples setting radio button</source>
<translation>Configuración 128 muestras</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="178"/>
<location filename="../../clientsettingsdlg.cpp" line="181"/>
<source>256 samples setting radio button</source>
<translation>Configuración 256 muestras</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="181"/>
<source>512 samples setting radio button</source>
<translation>Configuración 512 muestras</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="184"/>
<source>ASIO setup push button</source>
@ -1529,28 +1555,28 @@
<context>
<name>CHelpMenu</name>
<message>
<location filename="../../util.cpp" line="840"/>
<location filename="../../util.cpp" line="841"/>
<source>&amp;Help</source>
<translation>&amp;Ayuda</translation>
</message>
<message>
<location filename="../../util.cpp" line="845"/>
<location filename="../../util.cpp" line="850"/>
<location filename="../../util.cpp" line="846"/>
<location filename="../../util.cpp" line="851"/>
<source>Getting &amp;Started...</source>
<translation>Cómo &amp;Empezar...</translation>
</message>
<message>
<location filename="../../util.cpp" line="846"/>
<location filename="../../util.cpp" line="847"/>
<source>Software &amp;Manual...</source>
<translation>Manual del &amp;Software...</translation>
</message>
<message>
<location filename="../../util.cpp" line="853"/>
<location filename="../../util.cpp" line="854"/>
<source>What&apos;s &amp;This</source>
<translation>Qué es &amp;Esto</translation>
</message>
<message>
<location filename="../../util.cpp" line="855"/>
<location filename="../../util.cpp" line="856"/>
<source>&amp;About...</source>
<translation>&amp;Acerca de...</translation>
</message>
@ -1558,102 +1584,102 @@
<context>
<name>CLicenceDlg</name>
<message>
<location filename="../../util.cpp" line="479"/>
<location filename="../../util.cpp" line="480"/>
<source>I &amp;agree to the above licence terms</source>
<translation>&amp;Acepto los términos de la licencia arriba expuestos</translation>
</message>
<message>
<location filename="../../util.cpp" line="480"/>
<location filename="../../util.cpp" line="481"/>
<source>Accept</source>
<translation>Acepto</translation>
</message>
<message>
<location filename="../../util.cpp" line="481"/>
<location filename="../../util.cpp" line="482"/>
<source>Decline</source>
<translation>No Acepto</translation>
</message>
<message>
<location filename="../../util.cpp" line="497"/>
<location filename="../../util.cpp" line="498"/>
<source>By connecting to this server and agreeing to this notice, you agree to the following:</source>
<translation>Al conectarte a este servidor y aceptar esta notificación, aceptas lo siguiente:</translation>
</message>
<message>
<location filename="../../util.cpp" line="499"/>
<location filename="../../util.cpp" line="500"/>
<source>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 </source>
<translation>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 </translation>
</message>
<message>
<location filename="../../util.cpp" line="507"/>
<location filename="../../util.cpp" line="508"/>
<source>You are free to:</source>
<translation>Ud. es libre de:</translation>
</message>
<message>
<location filename="../../util.cpp" line="509"/>
<location filename="../../util.cpp" line="510"/>
<source>Share</source>
<translation>Compartir</translation>
</message>
<message>
<location filename="../../util.cpp" line="510"/>
<location filename="../../util.cpp" line="511"/>
<source>copy and redistribute the material in any medium or format</source>
<translation>copiar y redistribuir el material en cualquier medio o formato</translation>
</message>
<message>
<location filename="../../util.cpp" line="511"/>
<location filename="../../util.cpp" line="512"/>
<source>Adapt</source>
<translation>Adaptar</translation>
</message>
<message>
<location filename="../../util.cpp" line="512"/>
<location filename="../../util.cpp" line="513"/>
<source>remix, transform, and build upon the material</source>
<translation>remezclar, transformar y construir a partir del material</translation>
</message>
<message>
<location filename="../../util.cpp" line="513"/>
<location filename="../../util.cpp" line="514"/>
<source>The licensor cannot revoke these freedoms as long as you follow the license terms.</source>
<translation>El licenciante no puede revocar estas libertades en tanto Ud. siga los términos de la licencia.</translation>
</message>
<message>
<location filename="../../util.cpp" line="515"/>
<location filename="../../util.cpp" line="516"/>
<source>Under the following terms:</source>
<translation>Bajo los siguientes términos:</translation>
</message>
<message>
<location filename="../../util.cpp" line="517"/>
<location filename="../../util.cpp" line="518"/>
<source>Attribution</source>
<translation>Atribución</translation>
</message>
<message>
<location filename="../../util.cpp" line="518"/>
<location filename="../../util.cpp" line="519"/>
<source>You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="521"/>
<location filename="../../util.cpp" line="522"/>
<source>NonCommercial</source>
<translation>No-Comercial</translation>
</message>
<message>
<location filename="../../util.cpp" line="522"/>
<location filename="../../util.cpp" line="523"/>
<source>You may not use the material for commercial purposes.</source>
<translation>No puede utilizar el material con fines comerciales.</translation>
</message>
<message>
<location filename="../../util.cpp" line="523"/>
<location filename="../../util.cpp" line="524"/>
<source>ShareAlike</source>
<translation>ShareAlike</translation>
</message>
<message>
<location filename="../../util.cpp" line="524"/>
<location filename="../../util.cpp" line="525"/>
<source>If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.</source>
<translation>Si remezcla, transforma o construye sobre el material, debe distribuir sus contribuciones bajo la misma licencia que el original.</translation>
</message>
<message>
<location filename="../../util.cpp" line="526"/>
<location filename="../../util.cpp" line="527"/>
<source>No additional restrictions</source>
<translation>Sin restricciones adicionales</translation>
</message>
<message>
<location filename="../../util.cpp" line="527"/>
<location filename="../../util.cpp" line="528"/>
<source>You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.</source>
<translation>No puede aplicar términos legales o medidas tecnológicas que restringan legalmente a otras personas de hacer cualquier cosa permitida por la licencia.</translation>
</message>
@ -1661,290 +1687,290 @@
<context>
<name>CMusProfDlg</name>
<message>
<location filename="../../util.cpp" line="711"/>
<location filename="../../util.cpp" line="712"/>
<source> server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead.</source>
<translation> Esta etiqueta también se mostrará a cada cliente conectado al mismo servidor que . Se se deja vacío, se muestra la dirección IP en su lugar.</translation>
</message>
<message>
<location filename="../../util.cpp" line="716"/>
<location filename="../../util.cpp" line="717"/>
<source>Alias or name edit box</source>
<translation>Campo para alias o nombre</translation>
</message>
<message>
<location filename="../../util.cpp" line="718"/>
<location filename="../../util.cpp" line="719"/>
<source>Instrument picture button</source>
<translation>Botón imagen instrumento</translation>
</message>
<message>
<location filename="../../util.cpp" line="720"/>
<location filename="../../util.cpp" line="721"/>
<source>Country flag button</source>
<translation>Botón bandera país</translation>
</message>
<message>
<location filename="../../util.cpp" line="722"/>
<location filename="../../util.cpp" line="723"/>
<source>City edit box</source>
<translation>Ciudad</translation>
</message>
<message>
<location filename="../../util.cpp" line="724"/>
<location filename="../../util.cpp" line="725"/>
<source>Skill level combo box</source>
<translation>Nivel de habilidad</translation>
</message>
<message>
<location filename="../../util.cpp" line="669"/>
<location filename="../../util.cpp" line="681"/>
<location filename="../../util.cpp" line="975"/>
<location filename="../../util.cpp" line="670"/>
<location filename="../../util.cpp" line="682"/>
<location filename="../../util.cpp" line="976"/>
<source>None</source>
<translation>Ninguno</translation>
</message>
<message>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="557"/>
<location filename="../../util.cpp" line="705"/>
<source>Musician Profile</source>
<translation>Perfil Músico</translation>
</message>
<message>
<location filename="../../util.cpp" line="561"/>
<location filename="../../util.cpp" line="562"/>
<source>Alias/Name</source>
<translation>Alias/Nombre</translation>
</message>
<message>
<location filename="../../util.cpp" line="563"/>
<location filename="../../util.cpp" line="564"/>
<source>Instrument</source>
<translation>Instrumento</translation>
</message>
<message>
<location filename="../../util.cpp" line="565"/>
<location filename="../../util.cpp" line="566"/>
<source>Country</source>
<translation>País</translation>
</message>
<message>
<location filename="../../util.cpp" line="567"/>
<location filename="../../util.cpp" line="568"/>
<source>City</source>
<translation>Ciudad</translation>
</message>
<message>
<location filename="../../util.cpp" line="569"/>
<location filename="../../util.cpp" line="570"/>
<source>Skill</source>
<translation>Habilidad</translation>
</message>
<message>
<location filename="../../util.cpp" line="571"/>
<location filename="../../util.cpp" line="572"/>
<source>&amp;Close</source>
<translation>&amp;Cerrar</translation>
</message>
<message>
<location filename="../../util.cpp" line="687"/>
<location filename="../../util.cpp" line="688"/>
<source>Beginner</source>
<translation>Principiante</translation>
</message>
<message>
<location filename="../../util.cpp" line="693"/>
<location filename="../../util.cpp" line="694"/>
<source>Intermediate</source>
<translation>Intermedio</translation>
</message>
<message>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="700"/>
<source>Expert</source>
<translation>Experto</translation>
</message>
<message>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="705"/>
<source>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 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 may also be added.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="709"/>
<location filename="../../util.cpp" line="710"/>
<source>What you set here will appear at your fader on the mixer board when you are connected to a </source>
<translation>Lo que introduzcas aquí aparecerá en tu fader del mezclador cuando te conectes a un servidor </translation>
</message>
<message>
<location filename="../../util.cpp" line="976"/>
<location filename="../../util.cpp" line="977"/>
<source>Drum Set</source>
<translation>Batería</translation>
</message>
<message>
<location filename="../../util.cpp" line="977"/>
<location filename="../../util.cpp" line="978"/>
<source>Djembe</source>
<translation>Djembé</translation>
</message>
<message>
<location filename="../../util.cpp" line="978"/>
<location filename="../../util.cpp" line="979"/>
<source>Electric Guitar</source>
<translation>Guitarra Eléctrica</translation>
</message>
<message>
<location filename="../../util.cpp" line="979"/>
<location filename="../../util.cpp" line="980"/>
<source>Acoustic Guitar</source>
<translation>Guitarra Acústica</translation>
</message>
<message>
<location filename="../../util.cpp" line="980"/>
<location filename="../../util.cpp" line="981"/>
<source>Bass Guitar</source>
<translation>Bajo Eléctrico</translation>
</message>
<message>
<location filename="../../util.cpp" line="981"/>
<location filename="../../util.cpp" line="982"/>
<source>Keyboard</source>
<translation>Teclado</translation>
</message>
<message>
<location filename="../../util.cpp" line="982"/>
<location filename="../../util.cpp" line="983"/>
<source>Synthesizer</source>
<translation>Sintetizador</translation>
</message>
<message>
<location filename="../../util.cpp" line="983"/>
<location filename="../../util.cpp" line="984"/>
<source>Grand Piano</source>
<translation>Piano de Cola</translation>
</message>
<message>
<location filename="../../util.cpp" line="984"/>
<location filename="../../util.cpp" line="985"/>
<source>Accordion</source>
<translation>Acordeón</translation>
</message>
<message>
<location filename="../../util.cpp" line="985"/>
<location filename="../../util.cpp" line="986"/>
<source>Vocal</source>
<translation>Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="986"/>
<location filename="../../util.cpp" line="987"/>
<source>Microphone</source>
<translation>Micrófono</translation>
</message>
<message>
<location filename="../../util.cpp" line="987"/>
<location filename="../../util.cpp" line="988"/>
<source>Harmonica</source>
<translation>Armónica</translation>
</message>
<message>
<location filename="../../util.cpp" line="988"/>
<location filename="../../util.cpp" line="989"/>
<source>Trumpet</source>
<translation>Trompeta</translation>
</message>
<message>
<location filename="../../util.cpp" line="989"/>
<location filename="../../util.cpp" line="990"/>
<source>Trombone</source>
<translation>Trombón</translation>
</message>
<message>
<location filename="../../util.cpp" line="990"/>
<location filename="../../util.cpp" line="991"/>
<source>French Horn</source>
<translation>Trompa</translation>
</message>
<message>
<location filename="../../util.cpp" line="991"/>
<location filename="../../util.cpp" line="992"/>
<source>Tuba</source>
<translation>Tuba</translation>
</message>
<message>
<location filename="../../util.cpp" line="992"/>
<location filename="../../util.cpp" line="993"/>
<source>Saxophone</source>
<translation>Saxofón</translation>
</message>
<message>
<location filename="../../util.cpp" line="993"/>
<location filename="../../util.cpp" line="994"/>
<source>Clarinet</source>
<translation>Clarinete</translation>
</message>
<message>
<location filename="../../util.cpp" line="994"/>
<location filename="../../util.cpp" line="995"/>
<source>Flute</source>
<translation>Flauta</translation>
</message>
<message>
<location filename="../../util.cpp" line="995"/>
<location filename="../../util.cpp" line="996"/>
<source>Violin</source>
<translation>Violín</translation>
</message>
<message>
<location filename="../../util.cpp" line="996"/>
<location filename="../../util.cpp" line="997"/>
<source>Cello</source>
<translation>Violonchelo</translation>
</message>
<message>
<location filename="../../util.cpp" line="997"/>
<location filename="../../util.cpp" line="998"/>
<source>Double Bass</source>
<translation>Contrabajo</translation>
</message>
<message>
<location filename="../../util.cpp" line="998"/>
<location filename="../../util.cpp" line="999"/>
<source>Recorder</source>
<translation>Grabadora</translation>
</message>
<message>
<location filename="../../util.cpp" line="999"/>
<location filename="../../util.cpp" line="1000"/>
<source>Streamer</source>
<translation>Streamer</translation>
</message>
<message>
<location filename="../../util.cpp" line="1000"/>
<location filename="../../util.cpp" line="1001"/>
<source>Listener</source>
<translation>Oyente</translation>
</message>
<message>
<location filename="../../util.cpp" line="1001"/>
<location filename="../../util.cpp" line="1002"/>
<source>Guitar+Vocal</source>
<translation>Guitarra+Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="1002"/>
<location filename="../../util.cpp" line="1003"/>
<source>Keyboard+Vocal</source>
<translation>Teclado+Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="1003"/>
<location filename="../../util.cpp" line="1004"/>
<source>Bodhran</source>
<translation>Bodhran</translation>
</message>
<message>
<location filename="../../util.cpp" line="1004"/>
<location filename="../../util.cpp" line="1005"/>
<source>Bassoon</source>
<translation>Fagot</translation>
</message>
<message>
<location filename="../../util.cpp" line="1005"/>
<location filename="../../util.cpp" line="1006"/>
<source>Oboe</source>
<translation>Oboe</translation>
</message>
<message>
<location filename="../../util.cpp" line="1006"/>
<location filename="../../util.cpp" line="1007"/>
<source>Harp</source>
<translation>Arpa</translation>
</message>
<message>
<location filename="../../util.cpp" line="1007"/>
<location filename="../../util.cpp" line="1008"/>
<source>Viola</source>
<translation>Viola</translation>
</message>
<message>
<location filename="../../util.cpp" line="1008"/>
<location filename="../../util.cpp" line="1009"/>
<source>Congas</source>
<translation>Congas</translation>
</message>
<message>
<location filename="../../util.cpp" line="1009"/>
<location filename="../../util.cpp" line="1010"/>
<source>Bongo</source>
<translation>Bongo</translation>
</message>
<message>
<location filename="../../util.cpp" line="1010"/>
<location filename="../../util.cpp" line="1011"/>
<source>Vocal Bass</source>
<translation>Voz bajo</translation>
</message>
<message>
<location filename="../../util.cpp" line="1011"/>
<location filename="../../util.cpp" line="1012"/>
<source>Vocal Tenor</source>
<translation>Voz Tenor</translation>
</message>
<message>
<location filename="../../util.cpp" line="1012"/>
<location filename="../../util.cpp" line="1013"/>
<source>Vocal Alto</source>
<translation>Voz Alto</translation>
</message>
<message>
<location filename="../../util.cpp" line="1013"/>
<location filename="../../util.cpp" line="1014"/>
<source>Vocal Soprano</source>
<translation>Voz Soprano</translation>
</message>
@ -2427,7 +2453,7 @@
<context>
<name>global</name>
<message>
<location filename="../../global.h" line="235"/>
<location filename="../../global.h" line="236"/>
<source>For more information use the What&apos;s This help (help menu, right mouse button or Shift+F1)</source>
<translation>Para más información utiliza ¿Qué es Esto? (menú de ayuda, botón derecho del ratón o Shift+F1)</translation>
</message>

View file

@ -58,57 +58,57 @@
<translation>Icônes de drapeaux de pays par Mark James</translation>
</message>
<message>
<location filename="../../util.cpp" line="403"/>
<location filename="../../util.cpp" line="404"/>
<source>For details on the contributions check out the </source>
<translation>Pour plus de détails sur les contributions, consultez la </translation>
</message>
<message>
<location filename="../../util.cpp" line="404"/>
<location filename="../../util.cpp" line="405"/>
<source>Github Contributors list</source>
<translation>liste de contributeurs sur github</translation>
</message>
<message>
<location filename="../../util.cpp" line="408"/>
<location filename="../../util.cpp" line="409"/>
<source>Spanish</source>
<translation>Espagnol</translation>
</message>
<message>
<location filename="../../util.cpp" line="410"/>
<location filename="../../util.cpp" line="411"/>
<source>French</source>
<translation>Français</translation>
</message>
<message>
<location filename="../../util.cpp" line="412"/>
<location filename="../../util.cpp" line="413"/>
<source>Portuguese</source>
<translation>Portugais</translation>
</message>
<message>
<location filename="../../util.cpp" line="414"/>
<location filename="../../util.cpp" line="415"/>
<source>Dutch</source>
<translation>Néerlandais</translation>
</message>
<message>
<location filename="../../util.cpp" line="416"/>
<location filename="../../util.cpp" line="417"/>
<source>German</source>
<translation>Allemand</translation>
</message>
<message>
<location filename="../../util.cpp" line="423"/>
<location filename="../../util.cpp" line="424"/>
<source>About </source>
<translation>À propos</translation>
</message>
<message>
<location filename="../../util.cpp" line="440"/>
<location filename="../../util.cpp" line="441"/>
<source>, Version </source>
<translation>, version </translation>
</message>
<message>
<location filename="../../util.cpp" line="453"/>
<location filename="../../util.cpp" line="454"/>
<source>Internet Jam Session Software</source>
<translation>Logiciels de bœuf sur Internet</translation>
</message>
<message>
<location filename="../../util.cpp" line="457"/>
<location filename="../../util.cpp" line="458"/>
<source>Under the GNU General Public License (GPL)</source>
<translation>Sous la licence public général GNU (GPL)</translation>
</message>
@ -180,17 +180,17 @@
<context>
<name>CAudioMixerBoard</name>
<message>
<location filename="../../audiomixerboard.cpp" line="594"/>
<location filename="../../audiomixerboard.cpp" line="644"/>
<source>Server</source>
<translation>Serveur</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="603"/>
<location filename="../../audiomixerboard.cpp" line="653"/>
<source>T R Y I N G T O C O N N E C T</source>
<translation>T E N T A T I V E D E C O N N E X I O N</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="658"/>
<location filename="../../audiomixerboard.cpp" line="717"/>
<source>Personal Mix at the Server: </source>
<translation>Mixage personnel au serveur : </translation>
</message>
@ -198,143 +198,169 @@
<context>
<name>CChannelFader</name>
<message>
<location filename="../../audiomixerboard.cpp" line="110"/>
<location filename="../../audiomixerboard.cpp" line="121"/>
<source>Channel Level</source>
<translation>Niveau de canal</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="111"/>
<location filename="../../audiomixerboard.cpp" line="122"/>
<source>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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="113"/>
<location filename="../../audiomixerboard.cpp" line="124"/>
<source>Input level of the current audio channel at the server</source>
<translation>Niveau d&apos;entrée du canal audio actuel sur le serveur</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<location filename="../../audiomixerboard.cpp" line="127"/>
<source>Mixer Fader</source>
<translation>Charriot du mixeur</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<location filename="../../audiomixerboard.cpp" line="127"/>
<source>Adjusts the audio level of this channel. All connected clients at the server will be assigned an audio fader at each client, adjusting the local mix.</source>
<translation>Règle le niveau audio de ce canal. Tous les clients connectés au serveur se verront attribuer un chariot audio à chaque client, ce qui permettra d&apos;ajuster le mixage local.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="119"/>
<location filename="../../audiomixerboard.cpp" line="130"/>
<source>Local mix level setting of the current audio channel at the server</source>
<translation>Réglage du niveau de mixage local du canal audio actuel sur le serveur</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="122"/>
<location filename="../../audiomixerboard.cpp" line="133"/>
<source>Panning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="133"/>
<source>Sets the panning position from Left to Right of the channel. Works only in stero or preferably mono in/stereo out mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="136"/>
<source>Local panning position of the current audio channel at the server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="138"/>
<source>With the Mute checkbox, the audio channel can be muted.</source>
<translation>En cochant la case Muet, le canal audio peut être mis en sourdine.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="124"/>
<location filename="../../audiomixerboard.cpp" line="140"/>
<source>Mute button</source>
<translation>Bouton de sourdine</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="126"/>
<location filename="../../audiomixerboard.cpp" line="142"/>
<source>With the Solo checkbox, the 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 one channel to solo.</source>
<translation>En cochant la case Solo, le canal audio peut être réglé sur solo, ce qui signifie que tous les autres canaux, à l&apos;exception du canal actuel, sont mis en sourdine. Il est possible de mettre plus d&apos;un canal en solo.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="130"/>
<location filename="../../audiomixerboard.cpp" line="146"/>
<source>Solo button</source>
<translation>Bouton de solo</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="132"/>
<location filename="../../audiomixerboard.cpp" line="148"/>
<source>Fader Tag</source>
<translation>Étiquette de chariot</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="132"/>
<location filename="../../audiomixerboard.cpp" line="148"/>
<source>The fader tag 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.</source>
<translation>L&apos;étiquette de chariot 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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="137"/>
<location filename="../../audiomixerboard.cpp" line="153"/>
<source>Mixer channel instrument picture</source>
<translation>Image d&apos;instrument de canal de mixeur</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="139"/>
<location filename="../../audiomixerboard.cpp" line="155"/>
<source>Mixer channel label (fader tag)</source>
<translation>Label de canal de mixeur (étiquette de chariot)</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="141"/>
<location filename="../../audiomixerboard.cpp" line="157"/>
<source>Mixer channel country flag</source>
<translation>Drapeau de pays de canal de mixeur</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="175"/>
<location filename="../../audiomixerboard.cpp" line="194"/>
<source>PAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="195"/>
<source>MUTE</source>
<translation>MUET</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="176"/>
<location filename="../../audiomixerboard.cpp" line="196"/>
<source>SOLO</source>
<translation>SOLO</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="440"/>
<location filename="../../audiomixerboard.cpp" line="485"/>
<source>Alias/Name</source>
<translation>Pseudo/nom</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="446"/>
<location filename="../../audiomixerboard.cpp" line="491"/>
<source>Instrument</source>
<translation>Instrument</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="454"/>
<location filename="../../audiomixerboard.cpp" line="499"/>
<source>Location</source>
<translation>Localisation</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<location filename="../../audiomixerboard.cpp" line="521"/>
<location filename="../../audiomixerboard.cpp" line="525"/>
<location filename="../../audiomixerboard.cpp" line="529"/>
<source>Skill Level</source>
<translation>Niveau de compétence</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="521"/>
<source>Beginner</source>
<translation>Débutant</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="525"/>
<source>Intermediate</source>
<translation>Intermédiaire</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="484"/>
<location filename="../../audiomixerboard.cpp" line="529"/>
<source>Expert</source>
<translation>Expert</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="495"/>
<location filename="../../audiomixerboard.cpp" line="540"/>
<source>Musician Profile</source>
<translation>Profil de musicien</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="44"/>
<location filename="../../audiomixerboard.cpp" line="122"/>
<location filename="../../audiomixerboard.cpp" line="183"/>
<location filename="../../audiomixerboard.cpp" line="46"/>
<location filename="../../audiomixerboard.cpp" line="138"/>
<location filename="../../audiomixerboard.cpp" line="204"/>
<source>Mute</source>
<translation>Muet</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="45"/>
<location filename="../../audiomixerboard.cpp" line="126"/>
<location filename="../../audiomixerboard.cpp" line="184"/>
<location filename="../../audiomixerboard.cpp" line="43"/>
<location filename="../../audiomixerboard.cpp" line="203"/>
<source>Pan</source>
<translation type="unfinished">Pan</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="47"/>
<location filename="../../audiomixerboard.cpp" line="142"/>
<location filename="../../audiomixerboard.cpp" line="205"/>
<source>Solo</source>
<translation>Solo</translation>
</message>
@ -509,64 +535,64 @@
<translation>Indicateur LED d&apos;état de tampon</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="204"/>
<location filename="../../clientdlg.cpp" line="1075"/>
<location filename="../../clientdlg.cpp" line="205"/>
<location filename="../../clientdlg.cpp" line="1096"/>
<source>C&amp;onnect</source>
<translation>Se c&amp;onnecter</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="256"/>
<location filename="../../clientdlg.cpp" line="257"/>
<source>&amp;View</source>
<translation>&amp;Vue</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="258"/>
<location filename="../../clientdlg.cpp" line="259"/>
<source>&amp;Connection Setup...</source>
<translation>Paramètres de &amp;connexion...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="261"/>
<location filename="../../clientdlg.cpp" line="262"/>
<source>My &amp;Profile...</source>
<translation>Mon &amp;profil</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="264"/>
<location filename="../../clientdlg.cpp" line="265"/>
<source>C&amp;hat...</source>
<translation>Tc&amp;hate...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="267"/>
<location filename="../../clientdlg.cpp" line="268"/>
<source>&amp;Settings...</source>
<translation>Paramètre&amp;s...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="273"/>
<location filename="../../clientdlg.cpp" line="274"/>
<source>&amp;Analyzer Console...</source>
<translation>Console d&apos;&amp;analyse</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="279"/>
<location filename="../../clientdlg.cpp" line="280"/>
<source>E&amp;xit</source>
<translation>&amp;Quitter</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="327"/>
<location filename="../../clientdlg.cpp" line="328"/>
<source>None</source>
<translation>Aucun</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="607"/>
<location filename="../../clientdlg.cpp" line="616"/>
<source>Center</source>
<translation>Centre</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="614"/>
<location filename="../../clientdlg.cpp" line="623"/>
<source>R</source>
<translation>D</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="108"/>
<location filename="../../clientdlg.cpp" line="620"/>
<location filename="../../clientdlg.cpp" line="629"/>
<source>L</source>
<translation>G</translation>
</message>
@ -651,22 +677,22 @@
<translation>Le processeur du client ou du serveur est à 100%.</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="703"/>
<location filename="../../clientdlg.cpp" line="712"/>
<source>Central Server</source>
<translation>Serveur central</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="809"/>
<location filename="../../clientdlg.cpp" line="830"/>
<source>user</source>
<translation>utilisateur</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="814"/>
<location filename="../../clientdlg.cpp" line="835"/>
<source>users</source>
<translation>utilisateurs</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="1051"/>
<location filename="../../clientdlg.cpp" line="1072"/>
<source>D&amp;isconnect</source>
<translation>&amp;connecter</translation>
</message>
@ -968,19 +994,19 @@
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="175"/>
<source>64 samples setting radio button</source>
<translation>Bouton radio de paramétrage à 64 échantillons</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="178"/>
<source>128 samples setting radio button</source>
<translation>Bouton radio de paramétrage à 128 échantillons</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="178"/>
<location filename="../../clientsettingsdlg.cpp" line="181"/>
<source>256 samples setting radio button</source>
<translation>Bouton radio de paramétrage à 256 échantillons</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="181"/>
<source>512 samples setting radio button</source>
<translation>Bouton radio de paramétrage à 512 échantillons</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="184"/>
<source>ASIO setup push button</source>
@ -1533,28 +1559,28 @@
<context>
<name>CHelpMenu</name>
<message>
<location filename="../../util.cpp" line="840"/>
<location filename="../../util.cpp" line="841"/>
<source>&amp;Help</source>
<translation>&amp;Aide</translation>
</message>
<message>
<location filename="../../util.cpp" line="845"/>
<location filename="../../util.cpp" line="850"/>
<location filename="../../util.cpp" line="846"/>
<location filename="../../util.cpp" line="851"/>
<source>Getting &amp;Started...</source>
<translation>Premier pa&amp;s...</translation>
</message>
<message>
<location filename="../../util.cpp" line="846"/>
<location filename="../../util.cpp" line="847"/>
<source>Software &amp;Manual...</source>
<translation>&amp;Manuel du logiciel...</translation>
</message>
<message>
<location filename="../../util.cpp" line="853"/>
<location filename="../../util.cpp" line="854"/>
<source>What&apos;s &amp;This</source>
<translation>Qu&apos;est-ce que c&apos;est ?</translation>
</message>
<message>
<location filename="../../util.cpp" line="855"/>
<location filename="../../util.cpp" line="856"/>
<source>&amp;About...</source>
<translation>À &amp;propos</translation>
</message>
@ -1562,102 +1588,102 @@
<context>
<name>CLicenceDlg</name>
<message>
<location filename="../../util.cpp" line="479"/>
<location filename="../../util.cpp" line="480"/>
<source>I &amp;agree to the above licence terms</source>
<translation>J&apos;&amp;accepte les conditions de licence ci-dessus</translation>
</message>
<message>
<location filename="../../util.cpp" line="480"/>
<location filename="../../util.cpp" line="481"/>
<source>Accept</source>
<translation>Accepter</translation>
</message>
<message>
<location filename="../../util.cpp" line="481"/>
<location filename="../../util.cpp" line="482"/>
<source>Decline</source>
<translation>Décliner</translation>
</message>
<message>
<location filename="../../util.cpp" line="497"/>
<location filename="../../util.cpp" line="498"/>
<source>By connecting to this server and agreeing to this notice, you agree to the following:</source>
<translation>En vous connectant à ce serveur et en acceptant le présent avis, vous acceptez ce qui suit :</translation>
</message>
<message>
<location filename="../../util.cpp" line="499"/>
<location filename="../../util.cpp" line="500"/>
<source>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 </source>
<translation>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&apos;informations sur cette licence, voir </translation>
</message>
<message>
<location filename="../../util.cpp" line="507"/>
<location filename="../../util.cpp" line="508"/>
<source>You are free to:</source>
<translation>Vous êtes libres de :</translation>
</message>
<message>
<location filename="../../util.cpp" line="509"/>
<location filename="../../util.cpp" line="510"/>
<source>Share</source>
<translation>Partager</translation>
</message>
<message>
<location filename="../../util.cpp" line="510"/>
<location filename="../../util.cpp" line="511"/>
<source>copy and redistribute the material in any medium or format</source>
<translation>copier et redistribuer le matériel sur tout support ou format</translation>
</message>
<message>
<location filename="../../util.cpp" line="511"/>
<location filename="../../util.cpp" line="512"/>
<source>Adapt</source>
<translation>Adapter</translation>
</message>
<message>
<location filename="../../util.cpp" line="512"/>
<location filename="../../util.cpp" line="513"/>
<source>remix, transform, and build upon the material</source>
<translation>remixer, transformer et développer à partir du matériel</translation>
</message>
<message>
<location filename="../../util.cpp" line="513"/>
<location filename="../../util.cpp" line="514"/>
<source>The licensor cannot revoke these freedoms as long as you follow the license terms.</source>
<translation>Le donneur de licence ne peut pas révoquer ces libertés tant que vous respectez les conditions de la licence.</translation>
</message>
<message>
<location filename="../../util.cpp" line="515"/>
<location filename="../../util.cpp" line="516"/>
<source>Under the following terms:</source>
<translation>Dans les conditions suivantes :</translation>
</message>
<message>
<location filename="../../util.cpp" line="517"/>
<location filename="../../util.cpp" line="518"/>
<source>Attribution</source>
<translation>Attribution</translation>
</message>
<message>
<location filename="../../util.cpp" line="518"/>
<location filename="../../util.cpp" line="519"/>
<source>You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.</source>
<translation>Vous devez donner un crédit approprié, fournir un lien vers la licence et indiquer si des modifications ont é apportées. Vous pouvez le faire de toute manière raisonnable, mais pas d&apos;une manière qui suggère que le donneur de licence vous cautionne ou cautionne votre utilisation.</translation>
</message>
<message>
<location filename="../../util.cpp" line="521"/>
<location filename="../../util.cpp" line="522"/>
<source>NonCommercial</source>
<translation>Non commercial</translation>
</message>
<message>
<location filename="../../util.cpp" line="522"/>
<location filename="../../util.cpp" line="523"/>
<source>You may not use the material for commercial purposes.</source>
<translation>Vous ne pouvez pas utiliser le matériel à des fins commerciales.</translation>
</message>
<message>
<location filename="../../util.cpp" line="523"/>
<location filename="../../util.cpp" line="524"/>
<source>ShareAlike</source>
<translation>Partager à l&apos;identique</translation>
</message>
<message>
<location filename="../../util.cpp" line="524"/>
<location filename="../../util.cpp" line="525"/>
<source>If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.</source>
<translation>Si vous remixez, transformez ou développez à partir du matériel, vous devez distribuer vos contributions sous la même licence que l&apos;original.</translation>
</message>
<message>
<location filename="../../util.cpp" line="526"/>
<location filename="../../util.cpp" line="527"/>
<source>No additional restrictions</source>
<translation>Aucune restriction supplémentaire</translation>
</message>
<message>
<location filename="../../util.cpp" line="527"/>
<location filename="../../util.cpp" line="528"/>
<source>You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.</source>
<translation>Vous ne pouvez pas appliquer des termes juridiques ou des mesures technologiques qui empêchent légalement d&apos;autres personnes de faire ce que la licence autorise.</translation>
</message>
@ -1665,290 +1691,290 @@
<context>
<name>CMusProfDlg</name>
<message>
<location filename="../../util.cpp" line="711"/>
<location filename="../../util.cpp" line="712"/>
<source> server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead.</source>
<translation> . Cette balise apparaîtra également sur chaque client connecté au même serveur que vous. Si le nom est laissé vide, l&apos;adresse IP est affichée à la place.</translation>
</message>
<message>
<location filename="../../util.cpp" line="716"/>
<location filename="../../util.cpp" line="717"/>
<source>Alias or name edit box</source>
<translation>Dialogue d&apos;édition de pseudo ou de nom</translation>
</message>
<message>
<location filename="../../util.cpp" line="718"/>
<location filename="../../util.cpp" line="719"/>
<source>Instrument picture button</source>
<translation>Bouton d&apos;image d&apos;instrument</translation>
</message>
<message>
<location filename="../../util.cpp" line="720"/>
<location filename="../../util.cpp" line="721"/>
<source>Country flag button</source>
<translation>Bouton de drapeau de pays</translation>
</message>
<message>
<location filename="../../util.cpp" line="722"/>
<location filename="../../util.cpp" line="723"/>
<source>City edit box</source>
<translation>Dialogue d&apos;édition de ville</translation>
</message>
<message>
<location filename="../../util.cpp" line="724"/>
<location filename="../../util.cpp" line="725"/>
<source>Skill level combo box</source>
<translation>Choix déroulant de niveau de compétence</translation>
</message>
<message>
<location filename="../../util.cpp" line="669"/>
<location filename="../../util.cpp" line="681"/>
<location filename="../../util.cpp" line="975"/>
<location filename="../../util.cpp" line="670"/>
<location filename="../../util.cpp" line="682"/>
<location filename="../../util.cpp" line="976"/>
<source>None</source>
<translation>Aucune</translation>
</message>
<message>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="557"/>
<location filename="../../util.cpp" line="705"/>
<source>Musician Profile</source>
<translation>Profil de musicien</translation>
</message>
<message>
<location filename="../../util.cpp" line="561"/>
<location filename="../../util.cpp" line="562"/>
<source>Alias/Name</source>
<translation>Pseudo/nom</translation>
</message>
<message>
<location filename="../../util.cpp" line="563"/>
<location filename="../../util.cpp" line="564"/>
<source>Instrument</source>
<translation>Instrument</translation>
</message>
<message>
<location filename="../../util.cpp" line="565"/>
<location filename="../../util.cpp" line="566"/>
<source>Country</source>
<translation>Pays</translation>
</message>
<message>
<location filename="../../util.cpp" line="567"/>
<location filename="../../util.cpp" line="568"/>
<source>City</source>
<translation>Ville</translation>
</message>
<message>
<location filename="../../util.cpp" line="569"/>
<location filename="../../util.cpp" line="570"/>
<source>Skill</source>
<translation>Compétence</translation>
</message>
<message>
<location filename="../../util.cpp" line="571"/>
<location filename="../../util.cpp" line="572"/>
<source>&amp;Close</source>
<translation>&amp;Fermer</translation>
</message>
<message>
<location filename="../../util.cpp" line="687"/>
<location filename="../../util.cpp" line="688"/>
<source>Beginner</source>
<translation>Débutant</translation>
</message>
<message>
<location filename="../../util.cpp" line="693"/>
<location filename="../../util.cpp" line="694"/>
<source>Intermediate</source>
<translation>Intermédiaire</translation>
</message>
<message>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="700"/>
<source>Expert</source>
<translation>Expert</translation>
</message>
<message>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="705"/>
<source>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 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 may also be added.</source>
<translation>Indiquez ici votre nom ou un pseudonyme afin que les autres musiciens avec lesquels vous voulez jouer sachent qui vous êtes. Vous pouvez également mettre une photo de l&apos;instrument dont vous jouez et un drapeau du pays dans lequel vous vivez. La ville dans laquelle vous vivez et le niveau de compétence pour jouer de votre instrument peuvent également être ajoutés.</translation>
</message>
<message>
<location filename="../../util.cpp" line="709"/>
<location filename="../../util.cpp" line="710"/>
<source>What you set here will appear at your fader on the mixer board when you are connected to a </source>
<translation>Ce que vous réglez ici apparaîtra au niveau de votre fader sur la table de mixage lorsque vous serez connecté à un serveur </translation>
</message>
<message>
<location filename="../../util.cpp" line="976"/>
<location filename="../../util.cpp" line="977"/>
<source>Drum Set</source>
<translation>Batterie</translation>
</message>
<message>
<location filename="../../util.cpp" line="977"/>
<location filename="../../util.cpp" line="978"/>
<source>Djembe</source>
<translation>Djembé</translation>
</message>
<message>
<location filename="../../util.cpp" line="978"/>
<location filename="../../util.cpp" line="979"/>
<source>Electric Guitar</source>
<translation>Guitare électrique</translation>
</message>
<message>
<location filename="../../util.cpp" line="979"/>
<location filename="../../util.cpp" line="980"/>
<source>Acoustic Guitar</source>
<translation>Guitare accoustique</translation>
</message>
<message>
<location filename="../../util.cpp" line="980"/>
<location filename="../../util.cpp" line="981"/>
<source>Bass Guitar</source>
<translation>Guitare basse</translation>
</message>
<message>
<location filename="../../util.cpp" line="981"/>
<location filename="../../util.cpp" line="982"/>
<source>Keyboard</source>
<translation>Clavier</translation>
</message>
<message>
<location filename="../../util.cpp" line="982"/>
<location filename="../../util.cpp" line="983"/>
<source>Synthesizer</source>
<translation>Synthétiseur</translation>
</message>
<message>
<location filename="../../util.cpp" line="983"/>
<location filename="../../util.cpp" line="984"/>
<source>Grand Piano</source>
<translation>Piano à queue</translation>
</message>
<message>
<location filename="../../util.cpp" line="984"/>
<location filename="../../util.cpp" line="985"/>
<source>Accordion</source>
<translation>Accordéon</translation>
</message>
<message>
<location filename="../../util.cpp" line="985"/>
<location filename="../../util.cpp" line="986"/>
<source>Vocal</source>
<translation>Voix</translation>
</message>
<message>
<location filename="../../util.cpp" line="986"/>
<location filename="../../util.cpp" line="987"/>
<source>Microphone</source>
<translation>Microphone</translation>
</message>
<message>
<location filename="../../util.cpp" line="987"/>
<location filename="../../util.cpp" line="988"/>
<source>Harmonica</source>
<translation>Harmonica</translation>
</message>
<message>
<location filename="../../util.cpp" line="988"/>
<location filename="../../util.cpp" line="989"/>
<source>Trumpet</source>
<translation>Trompette</translation>
</message>
<message>
<location filename="../../util.cpp" line="989"/>
<location filename="../../util.cpp" line="990"/>
<source>Trombone</source>
<translation>Trombone</translation>
</message>
<message>
<location filename="../../util.cpp" line="990"/>
<location filename="../../util.cpp" line="991"/>
<source>French Horn</source>
<translation>Cor d&apos;harmonie</translation>
</message>
<message>
<location filename="../../util.cpp" line="991"/>
<location filename="../../util.cpp" line="992"/>
<source>Tuba</source>
<translation>Tuba</translation>
</message>
<message>
<location filename="../../util.cpp" line="992"/>
<location filename="../../util.cpp" line="993"/>
<source>Saxophone</source>
<translation>Saxophone</translation>
</message>
<message>
<location filename="../../util.cpp" line="993"/>
<location filename="../../util.cpp" line="994"/>
<source>Clarinet</source>
<translation>Clarinette</translation>
</message>
<message>
<location filename="../../util.cpp" line="994"/>
<location filename="../../util.cpp" line="995"/>
<source>Flute</source>
<translation>Flute</translation>
</message>
<message>
<location filename="../../util.cpp" line="995"/>
<location filename="../../util.cpp" line="996"/>
<source>Violin</source>
<translation>Violon</translation>
</message>
<message>
<location filename="../../util.cpp" line="996"/>
<location filename="../../util.cpp" line="997"/>
<source>Cello</source>
<translation>Violoncelle</translation>
</message>
<message>
<location filename="../../util.cpp" line="997"/>
<location filename="../../util.cpp" line="998"/>
<source>Double Bass</source>
<translation>Contrebasse</translation>
</message>
<message>
<location filename="../../util.cpp" line="998"/>
<location filename="../../util.cpp" line="999"/>
<source>Recorder</source>
<translation>Enregistreur</translation>
</message>
<message>
<location filename="../../util.cpp" line="999"/>
<location filename="../../util.cpp" line="1000"/>
<source>Streamer</source>
<translation>Diffuseur</translation>
</message>
<message>
<location filename="../../util.cpp" line="1000"/>
<location filename="../../util.cpp" line="1001"/>
<source>Listener</source>
<translation>Auditeur</translation>
</message>
<message>
<location filename="../../util.cpp" line="1001"/>
<location filename="../../util.cpp" line="1002"/>
<source>Guitar+Vocal</source>
<translation>Guitare+voix</translation>
</message>
<message>
<location filename="../../util.cpp" line="1002"/>
<location filename="../../util.cpp" line="1003"/>
<source>Keyboard+Vocal</source>
<translation>Clavier+voix</translation>
</message>
<message>
<location filename="../../util.cpp" line="1003"/>
<location filename="../../util.cpp" line="1004"/>
<source>Bodhran</source>
<translation>Bodhran</translation>
</message>
<message>
<location filename="../../util.cpp" line="1004"/>
<location filename="../../util.cpp" line="1005"/>
<source>Bassoon</source>
<translation>Basson</translation>
</message>
<message>
<location filename="../../util.cpp" line="1005"/>
<location filename="../../util.cpp" line="1006"/>
<source>Oboe</source>
<translation>Hautbois</translation>
</message>
<message>
<location filename="../../util.cpp" line="1006"/>
<location filename="../../util.cpp" line="1007"/>
<source>Harp</source>
<translation>Harpe</translation>
</message>
<message>
<location filename="../../util.cpp" line="1007"/>
<location filename="../../util.cpp" line="1008"/>
<source>Viola</source>
<translation>Alto</translation>
</message>
<message>
<location filename="../../util.cpp" line="1008"/>
<location filename="../../util.cpp" line="1009"/>
<source>Congas</source>
<translation>Congas</translation>
</message>
<message>
<location filename="../../util.cpp" line="1009"/>
<location filename="../../util.cpp" line="1010"/>
<source>Bongo</source>
<translation>Bongo</translation>
</message>
<message>
<location filename="../../util.cpp" line="1010"/>
<location filename="../../util.cpp" line="1011"/>
<source>Vocal Bass</source>
<translation>Voix basse</translation>
</message>
<message>
<location filename="../../util.cpp" line="1011"/>
<location filename="../../util.cpp" line="1012"/>
<source>Vocal Tenor</source>
<translation>Voix ténor</translation>
</message>
<message>
<location filename="../../util.cpp" line="1012"/>
<location filename="../../util.cpp" line="1013"/>
<source>Vocal Alto</source>
<translation>Voix alto</translation>
</message>
<message>
<location filename="../../util.cpp" line="1013"/>
<location filename="../../util.cpp" line="1014"/>
<source>Vocal Soprano</source>
<translation>Voix soprano</translation>
</message>
@ -2431,7 +2457,7 @@
<context>
<name>global</name>
<message>
<location filename="../../global.h" line="235"/>
<location filename="../../global.h" line="236"/>
<source>For more information use the What&apos;s This help (help menu, right mouse button or Shift+F1)</source>
<translation>Pour plus d&apos;informations, utilisez l&apos;aide Qu&apos;est-ce que c&apos;est (menu d&apos;aide, bouton droit de la souris ou Maj+F1)</translation>
</message>

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -54,57 +54,57 @@
<translation>Landvlag-iconen van Mark James</translation>
</message>
<message>
<location filename="../../util.cpp" line="403"/>
<location filename="../../util.cpp" line="404"/>
<source>For details on the contributions check out the </source>
<translation>Voor details over de bijdragen, zie de </translation>
</message>
<message>
<location filename="../../util.cpp" line="404"/>
<location filename="../../util.cpp" line="405"/>
<source>Github Contributors list</source>
<translation>Github Bijdragerslijst</translation>
</message>
<message>
<location filename="../../util.cpp" line="408"/>
<location filename="../../util.cpp" line="409"/>
<source>Spanish</source>
<translation>Spaans</translation>
</message>
<message>
<location filename="../../util.cpp" line="410"/>
<location filename="../../util.cpp" line="411"/>
<source>French</source>
<translation>Frans</translation>
</message>
<message>
<location filename="../../util.cpp" line="412"/>
<location filename="../../util.cpp" line="413"/>
<source>Portuguese</source>
<translation>Portugees</translation>
</message>
<message>
<location filename="../../util.cpp" line="414"/>
<location filename="../../util.cpp" line="415"/>
<source>Dutch</source>
<translation>Nederlands</translation>
</message>
<message>
<location filename="../../util.cpp" line="416"/>
<location filename="../../util.cpp" line="417"/>
<source>German</source>
<translation>Duits</translation>
</message>
<message>
<location filename="../../util.cpp" line="423"/>
<location filename="../../util.cpp" line="424"/>
<source>About </source>
<translation>Over </translation>
</message>
<message>
<location filename="../../util.cpp" line="440"/>
<location filename="../../util.cpp" line="441"/>
<source>, Version </source>
<translation>, Versie </translation>
</message>
<message>
<location filename="../../util.cpp" line="453"/>
<location filename="../../util.cpp" line="454"/>
<source>Internet Jam Session Software</source>
<translation>Internet Jamsessie Software</translation>
</message>
<message>
<location filename="../../util.cpp" line="457"/>
<location filename="../../util.cpp" line="458"/>
<source>Under the GNU General Public License (GPL)</source>
<translation>Onder de GNU General Public License (GPL)</translation>
</message>
@ -168,17 +168,17 @@
<context>
<name>CAudioMixerBoard</name>
<message>
<location filename="../../audiomixerboard.cpp" line="594"/>
<location filename="../../audiomixerboard.cpp" line="644"/>
<source>Server</source>
<translation>Server</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="603"/>
<location filename="../../audiomixerboard.cpp" line="653"/>
<source>T R Y I N G T O C O N N E C T</source>
<translation>A A N H E T V E R B I N D E N</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="658"/>
<location filename="../../audiomixerboard.cpp" line="717"/>
<source>Personal Mix at the Server: </source>
<translation type="unfinished"></translation>
</message>
@ -186,143 +186,169 @@
<context>
<name>CChannelFader</name>
<message>
<location filename="../../audiomixerboard.cpp" line="44"/>
<location filename="../../audiomixerboard.cpp" line="122"/>
<location filename="../../audiomixerboard.cpp" line="183"/>
<location filename="../../audiomixerboard.cpp" line="43"/>
<location filename="../../audiomixerboard.cpp" line="203"/>
<source>Pan</source>
<translation type="unfinished">Pan</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="46"/>
<location filename="../../audiomixerboard.cpp" line="138"/>
<location filename="../../audiomixerboard.cpp" line="204"/>
<source>Mute</source>
<translation>Demp</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="45"/>
<location filename="../../audiomixerboard.cpp" line="126"/>
<location filename="../../audiomixerboard.cpp" line="184"/>
<location filename="../../audiomixerboard.cpp" line="47"/>
<location filename="../../audiomixerboard.cpp" line="142"/>
<location filename="../../audiomixerboard.cpp" line="205"/>
<source>Solo</source>
<translation>Solo</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="110"/>
<location filename="../../audiomixerboard.cpp" line="121"/>
<source>Channel Level</source>
<translation>Kanaalniveau</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="111"/>
<location filename="../../audiomixerboard.cpp" line="122"/>
<source>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.</source>
<translation>Geeft het pre-fader-audioniveau van dit kanaal weer. Alle verbonden clients op de server krijgen een audioniveau toegewezen, dezelfde waarde voor elke client.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="113"/>
<location filename="../../audiomixerboard.cpp" line="124"/>
<source>Input level of the current audio channel at the server</source>
<translation>Invoerniveau van het huidige audiokanaal op de server</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<location filename="../../audiomixerboard.cpp" line="127"/>
<source>Mixer Fader</source>
<translation>Mixer Fader</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<location filename="../../audiomixerboard.cpp" line="127"/>
<source>Adjusts the audio level of this channel. All connected clients at the server will be assigned an audio fader at each client, adjusting the local mix.</source>
<translation>Past het geluidsniveau van dit kanaal aan. Alle verbonden clients op de server krijgen een audiofader toegewezen bij elke client, waarbij de lokale mix wordt aangepast.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="119"/>
<location filename="../../audiomixerboard.cpp" line="130"/>
<source>Local mix level setting of the current audio channel at the server</source>
<translation>Lokale instelling van het mixniveau van het huidige audiokanaal op de server</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="122"/>
<location filename="../../audiomixerboard.cpp" line="133"/>
<source>Panning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="133"/>
<source>Sets the panning position from Left to Right of the channel. Works only in stero or preferably mono in/stereo out mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="136"/>
<source>Local panning position of the current audio channel at the server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="138"/>
<source>With the Mute checkbox, the audio channel can be muted.</source>
<translation>Met het selectievakje Demp kan het audiokanaal worden gedempt.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="124"/>
<location filename="../../audiomixerboard.cpp" line="140"/>
<source>Mute button</source>
<translation>Dempknop</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="126"/>
<location filename="../../audiomixerboard.cpp" line="142"/>
<source>With the Solo checkbox, the 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 one channel to solo.</source>
<translation>Met het selectievakje Solo kan het audiokanaal worden ingesteld op solo, zodat alle overige kanalen worden gedempt. Het is mogelijk om meer dan één kanaal op solo in te stellen.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="130"/>
<location filename="../../audiomixerboard.cpp" line="146"/>
<source>Solo button</source>
<translation>Soloknop</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="132"/>
<location filename="../../audiomixerboard.cpp" line="148"/>
<source>Fader Tag</source>
<translation>Fader tag</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="132"/>
<location filename="../../audiomixerboard.cpp" line="148"/>
<source>The fader tag 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.</source>
<translation>De fadertag identificeert de verbonden client. De tagnaam, de afbeelding van uw instrument en een vlag van uw land kunnen in het hoofdvenster worden ingesteld.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="137"/>
<location filename="../../audiomixerboard.cpp" line="153"/>
<source>Mixer channel instrument picture</source>
<translation>Afbeelding van het mengkanaalinstrument</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="139"/>
<location filename="../../audiomixerboard.cpp" line="155"/>
<source>Mixer channel label (fader tag)</source>
<translation>Label van het mengkanaal (faderlabel)</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="141"/>
<location filename="../../audiomixerboard.cpp" line="157"/>
<source>Mixer channel country flag</source>
<translation>Landvlag van het kanaal</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="175"/>
<location filename="../../audiomixerboard.cpp" line="194"/>
<source>PAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="195"/>
<source>MUTE</source>
<translation>DEMP</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="176"/>
<location filename="../../audiomixerboard.cpp" line="196"/>
<source>SOLO</source>
<translation>SOLO</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="440"/>
<location filename="../../audiomixerboard.cpp" line="485"/>
<source>Alias/Name</source>
<translation>Alias/Naam</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="446"/>
<location filename="../../audiomixerboard.cpp" line="491"/>
<source>Instrument</source>
<translation>Instrument</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="454"/>
<location filename="../../audiomixerboard.cpp" line="499"/>
<source>Location</source>
<translation>Locatie</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<location filename="../../audiomixerboard.cpp" line="521"/>
<location filename="../../audiomixerboard.cpp" line="525"/>
<location filename="../../audiomixerboard.cpp" line="529"/>
<source>Skill Level</source>
<translation>Vaardigheidssniveau</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="521"/>
<source>Beginner</source>
<translation>Beginner</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="525"/>
<source>Intermediate</source>
<translation>Gemiddeld</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="484"/>
<location filename="../../audiomixerboard.cpp" line="529"/>
<source>Expert</source>
<translation>Gevorderd</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="495"/>
<location filename="../../audiomixerboard.cpp" line="540"/>
<source>Musician Profile</source>
<translation>Muzikantenprofiel</translation>
</message>
@ -468,7 +494,7 @@
</message>
<message>
<location filename="../../clientdlg.cpp" line="108"/>
<location filename="../../clientdlg.cpp" line="620"/>
<location filename="../../clientdlg.cpp" line="629"/>
<source>L</source>
<translation>L</translation>
</message>
@ -583,78 +609,78 @@
<translation>Status van de buffers LED-indicator</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="204"/>
<location filename="../../clientdlg.cpp" line="1075"/>
<location filename="../../clientdlg.cpp" line="205"/>
<location filename="../../clientdlg.cpp" line="1096"/>
<source>C&amp;onnect</source>
<translation>C&amp;onnect</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="256"/>
<location filename="../../clientdlg.cpp" line="257"/>
<source>&amp;View</source>
<translation>&amp;Bekijken</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="258"/>
<location filename="../../clientdlg.cpp" line="259"/>
<source>&amp;Connection Setup...</source>
<translation>&amp;Verbindingsinstellingen...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="261"/>
<location filename="../../clientdlg.cpp" line="262"/>
<source>My &amp;Profile...</source>
<translation>Mijn &amp;Profiel...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="264"/>
<location filename="../../clientdlg.cpp" line="265"/>
<source>C&amp;hat...</source>
<translation>C&amp;hat...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="267"/>
<location filename="../../clientdlg.cpp" line="268"/>
<source>&amp;Settings...</source>
<translation>&amp;Settings...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="273"/>
<location filename="../../clientdlg.cpp" line="274"/>
<source>&amp;Analyzer Console...</source>
<translation>&amp;Analyzer Console...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="279"/>
<location filename="../../clientdlg.cpp" line="280"/>
<source>E&amp;xit</source>
<translation>E&amp;xit</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="327"/>
<location filename="../../clientdlg.cpp" line="328"/>
<source>None</source>
<translation>Geen</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="607"/>
<location filename="../../clientdlg.cpp" line="616"/>
<source>Center</source>
<translation>Centrum</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="614"/>
<location filename="../../clientdlg.cpp" line="623"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="703"/>
<location filename="../../clientdlg.cpp" line="712"/>
<source>Central Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="809"/>
<location filename="../../clientdlg.cpp" line="830"/>
<source>user</source>
<translation>gebruiker</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="814"/>
<location filename="../../clientdlg.cpp" line="835"/>
<source>users</source>
<translation>gebruikers</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="1051"/>
<location filename="../../clientdlg.cpp" line="1072"/>
<source>D&amp;isconnect</source>
<translation>&amp;Afmelden</translation>
</message>
@ -956,18 +982,18 @@
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="175"/>
<source>128 samples setting radio button</source>
<translation>128 monsters instellen radioknop</translation>
<source>64 samples setting radio button</source>
<translation>64 monsters instellen radioknop</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="178"/>
<source>256 samples setting radio button</source>
<translation>256 voorbeelden van het instellen van de radioknop</translation>
<source>128 samples setting radio button</source>
<translation>128 voorbeelden van het instellen van de radioknop</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="181"/>
<source>512 samples setting radio button</source>
<translation>512 voorbeelden van het instellen van het radioknopje</translation>
<source>256 samples setting radio button</source>
<translation>256 voorbeelden van het instellen van het radioknopje</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="184"/>
@ -1521,28 +1547,28 @@
<context>
<name>CHelpMenu</name>
<message>
<location filename="../../util.cpp" line="840"/>
<location filename="../../util.cpp" line="841"/>
<source>&amp;Help</source>
<translation>&amp;Hulp</translation>
</message>
<message>
<location filename="../../util.cpp" line="845"/>
<location filename="../../util.cpp" line="850"/>
<location filename="../../util.cpp" line="846"/>
<location filename="../../util.cpp" line="851"/>
<source>Getting &amp;Started...</source>
<translation>Aan de slag...</translation>
</message>
<message>
<location filename="../../util.cpp" line="846"/>
<location filename="../../util.cpp" line="847"/>
<source>Software &amp;Manual...</source>
<translation>Softwarehandleiding...</translation>
</message>
<message>
<location filename="../../util.cpp" line="853"/>
<location filename="../../util.cpp" line="854"/>
<source>What&apos;s &amp;This</source>
<translation>Wat Is Dit</translation>
</message>
<message>
<location filename="../../util.cpp" line="855"/>
<location filename="../../util.cpp" line="856"/>
<source>&amp;About...</source>
<translation>&amp;Over...</translation>
</message>
@ -1550,102 +1576,102 @@
<context>
<name>CLicenceDlg</name>
<message>
<location filename="../../util.cpp" line="479"/>
<location filename="../../util.cpp" line="480"/>
<source>I &amp;agree to the above licence terms</source>
<translation>Ik stem in met bovenstaande licentievoorwaarden</translation>
</message>
<message>
<location filename="../../util.cpp" line="480"/>
<location filename="../../util.cpp" line="481"/>
<source>Accept</source>
<translation>Accepteer</translation>
</message>
<message>
<location filename="../../util.cpp" line="481"/>
<location filename="../../util.cpp" line="482"/>
<source>Decline</source>
<translation>Niet akkoord</translation>
</message>
<message>
<location filename="../../util.cpp" line="497"/>
<location filename="../../util.cpp" line="498"/>
<source>By connecting to this server and agreeing to this notice, you agree to the following:</source>
<translation>Door verbinding te maken met deze server en akkoord te gaan met deze mededeling, gaat u akkoord met het volgende:</translation>
</message>
<message>
<location filename="../../util.cpp" line="499"/>
<location filename="../../util.cpp" line="500"/>
<source>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 </source>
<translation>U gaat ermee akkoord dat alle gegevens, geluiden of andere werken die naar deze server worden verzonden, eigendom zijn van en gemaakt zijn door u of uw licentiegevers, en dat u deze gegevens, geluiden of andere werken beschikbaar stelt via de volgende Creative Commons Licentie (voor meer informatie over deze licentie, zie </translation>
</message>
<message>
<location filename="../../util.cpp" line="507"/>
<location filename="../../util.cpp" line="508"/>
<source>You are free to:</source>
<translation>Je staat vrij om:</translation>
</message>
<message>
<location filename="../../util.cpp" line="509"/>
<location filename="../../util.cpp" line="510"/>
<source>Share</source>
<translation>het materiaal</translation>
</message>
<message>
<location filename="../../util.cpp" line="510"/>
<location filename="../../util.cpp" line="511"/>
<source>copy and redistribute the material in any medium or format</source>
<translation> te delen, te kopiëren en te herdistribueren in elk medium of formaat</translation>
</message>
<message>
<location filename="../../util.cpp" line="511"/>
<location filename="../../util.cpp" line="512"/>
<source>Adapt</source>
<translation>Aanpassen</translation>
</message>
<message>
<location filename="../../util.cpp" line="512"/>
<location filename="../../util.cpp" line="513"/>
<source>remix, transform, and build upon the material</source>
<translation>remixen, transformeren en bouwen op het materiaal</translation>
</message>
<message>
<location filename="../../util.cpp" line="513"/>
<location filename="../../util.cpp" line="514"/>
<source>The licensor cannot revoke these freedoms as long as you follow the license terms.</source>
<translation>De licentiegever kan deze vrijheden niet herroepen zolang u zich aan de licentievoorwaarden houdt.</translation>
</message>
<message>
<location filename="../../util.cpp" line="515"/>
<location filename="../../util.cpp" line="516"/>
<source>Under the following terms:</source>
<translation>Onder de volgende voorwaarden:</translation>
</message>
<message>
<location filename="../../util.cpp" line="517"/>
<location filename="../../util.cpp" line="518"/>
<source>Attribution</source>
<translation>Naamsvermelding</translation>
</message>
<message>
<location filename="../../util.cpp" line="518"/>
<location filename="../../util.cpp" line="519"/>
<source>You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.</source>
<translation>U moet de juiste erkenning geven, een link naar de licentie geven en aangeven of er wijzigingen zijn aangebracht. U mag dit op elke redelijke manier doen, maar niet op een manier die suggereert dat de licentiegever u of uw gebruik goedkeurt.</translation>
</message>
<message>
<location filename="../../util.cpp" line="521"/>
<location filename="../../util.cpp" line="522"/>
<source>NonCommercial</source>
<translation>Niet-commercieel</translation>
</message>
<message>
<location filename="../../util.cpp" line="522"/>
<location filename="../../util.cpp" line="523"/>
<source>You may not use the material for commercial purposes.</source>
<translation>U mag het materiaal niet voor commerciële doeleinden gebruiken.</translation>
</message>
<message>
<location filename="../../util.cpp" line="523"/>
<location filename="../../util.cpp" line="524"/>
<source>ShareAlike</source>
<translation>hareAlike</translation>
</message>
<message>
<location filename="../../util.cpp" line="524"/>
<location filename="../../util.cpp" line="525"/>
<source>If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.</source>
<translation>Als u het materiaal remixt, transformeert of uitbouwt, moet u uw bijdragen distribueren onder dezelfde licentie als het origineel.</translation>
</message>
<message>
<location filename="../../util.cpp" line="526"/>
<location filename="../../util.cpp" line="527"/>
<source>No additional restrictions</source>
<translation>Geen extra beperkingen</translation>
</message>
<message>
<location filename="../../util.cpp" line="527"/>
<location filename="../../util.cpp" line="528"/>
<source>You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.</source>
<translation>U mag geen wettelijke voorwaarden of technologische maatregelen toepassen die anderen wettelijk beperken om iets te doen wat de licentie toestaat.</translation>
</message>
@ -1653,290 +1679,290 @@
<context>
<name>CMusProfDlg</name>
<message>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="557"/>
<location filename="../../util.cpp" line="705"/>
<source>Musician Profile</source>
<translation>Muzikantenprofiel</translation>
</message>
<message>
<location filename="../../util.cpp" line="561"/>
<location filename="../../util.cpp" line="562"/>
<source>Alias/Name</source>
<translation>Alias/Naam</translation>
</message>
<message>
<location filename="../../util.cpp" line="563"/>
<location filename="../../util.cpp" line="564"/>
<source>Instrument</source>
<translation>Instrument</translation>
</message>
<message>
<location filename="../../util.cpp" line="565"/>
<location filename="../../util.cpp" line="566"/>
<source>Country</source>
<translation>Land</translation>
</message>
<message>
<location filename="../../util.cpp" line="567"/>
<location filename="../../util.cpp" line="568"/>
<source>City</source>
<translation>Stad</translation>
</message>
<message>
<location filename="../../util.cpp" line="569"/>
<location filename="../../util.cpp" line="570"/>
<source>Skill</source>
<translation>Vaardigheid</translation>
</message>
<message>
<location filename="../../util.cpp" line="571"/>
<location filename="../../util.cpp" line="572"/>
<source>&amp;Close</source>
<translation>&amp;Sluiten</translation>
</message>
<message>
<location filename="../../util.cpp" line="669"/>
<location filename="../../util.cpp" line="681"/>
<location filename="../../util.cpp" line="975"/>
<location filename="../../util.cpp" line="670"/>
<location filename="../../util.cpp" line="682"/>
<location filename="../../util.cpp" line="976"/>
<source>None</source>
<translation>Geen</translation>
</message>
<message>
<location filename="../../util.cpp" line="687"/>
<location filename="../../util.cpp" line="688"/>
<source>Beginner</source>
<translation>Beginner</translation>
</message>
<message>
<location filename="../../util.cpp" line="693"/>
<location filename="../../util.cpp" line="694"/>
<source>Intermediate</source>
<translation>Gemiddeld</translation>
</message>
<message>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="700"/>
<source>Expert</source>
<translation>Gevorderd</translation>
</message>
<message>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="705"/>
<source>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 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 may also be added.</source>
<translation>Stel hier je naam of een alias in zodat de andere muzikanten met wie je wilt spelen weten wie je bent. Daarnaast kun je een instrumentfoto van het instrument dat je bespeelt en een vlag van het land waar je woont, instellen. De stad waar je woont en het vaardigheidsniveau van het spelen van je instrument kunnen ook worden toegevoegd.</translation>
</message>
<message>
<location filename="../../util.cpp" line="709"/>
<location filename="../../util.cpp" line="710"/>
<source>What you set here will appear at your fader on the mixer board when you are connected to a </source>
<translation>Wat u hier instelt, verschijnt bij uw fader op het mengpaneel wanneer u verbonden bent met een </translation>
</message>
<message>
<location filename="../../util.cpp" line="711"/>
<location filename="../../util.cpp" line="712"/>
<source> server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead.</source>
<translation> server. Deze tag zal ook verschijnen op elke client die verbonden is met dezelfde server als u. Als de naam leeg is, wordt in plaats daarvan het IP-adres getoond.</translation>
</message>
<message>
<location filename="../../util.cpp" line="716"/>
<location filename="../../util.cpp" line="717"/>
<source>Alias or name edit box</source>
<translation>Alias of naam bewerkingsvak</translation>
</message>
<message>
<location filename="../../util.cpp" line="718"/>
<location filename="../../util.cpp" line="719"/>
<source>Instrument picture button</source>
<translation>Afbeelding van het instrument</translation>
</message>
<message>
<location filename="../../util.cpp" line="720"/>
<location filename="../../util.cpp" line="721"/>
<source>Country flag button</source>
<translation>Landvlag knop</translation>
</message>
<message>
<location filename="../../util.cpp" line="722"/>
<location filename="../../util.cpp" line="723"/>
<source>City edit box</source>
<translation>Bewerkingsbox voor de stad</translation>
</message>
<message>
<location filename="../../util.cpp" line="724"/>
<location filename="../../util.cpp" line="725"/>
<source>Skill level combo box</source>
<translation>Combo-box voor vaardigheidsniveau</translation>
</message>
<message>
<location filename="../../util.cpp" line="976"/>
<location filename="../../util.cpp" line="977"/>
<source>Drum Set</source>
<translation>Drumstel</translation>
</message>
<message>
<location filename="../../util.cpp" line="977"/>
<location filename="../../util.cpp" line="978"/>
<source>Djembe</source>
<translation>Djembe</translation>
</message>
<message>
<location filename="../../util.cpp" line="978"/>
<location filename="../../util.cpp" line="979"/>
<source>Electric Guitar</source>
<translation>Elektrische Gitaar</translation>
</message>
<message>
<location filename="../../util.cpp" line="979"/>
<location filename="../../util.cpp" line="980"/>
<source>Acoustic Guitar</source>
<translation>Akoestische Gitaar</translation>
</message>
<message>
<location filename="../../util.cpp" line="980"/>
<location filename="../../util.cpp" line="981"/>
<source>Bass Guitar</source>
<translation>Basgitaar</translation>
</message>
<message>
<location filename="../../util.cpp" line="981"/>
<location filename="../../util.cpp" line="982"/>
<source>Keyboard</source>
<translation>Toetsenbord</translation>
</message>
<message>
<location filename="../../util.cpp" line="982"/>
<location filename="../../util.cpp" line="983"/>
<source>Synthesizer</source>
<translation>Synthesizer</translation>
</message>
<message>
<location filename="../../util.cpp" line="983"/>
<location filename="../../util.cpp" line="984"/>
<source>Grand Piano</source>
<translation>Piano</translation>
</message>
<message>
<location filename="../../util.cpp" line="984"/>
<location filename="../../util.cpp" line="985"/>
<source>Accordion</source>
<translation>Accordeon</translation>
</message>
<message>
<location filename="../../util.cpp" line="985"/>
<location filename="../../util.cpp" line="986"/>
<source>Vocal</source>
<translation>Vocaal</translation>
</message>
<message>
<location filename="../../util.cpp" line="986"/>
<location filename="../../util.cpp" line="987"/>
<source>Microphone</source>
<translation>Microfoon</translation>
</message>
<message>
<location filename="../../util.cpp" line="987"/>
<location filename="../../util.cpp" line="988"/>
<source>Harmonica</source>
<translation>Harmonica</translation>
</message>
<message>
<location filename="../../util.cpp" line="988"/>
<location filename="../../util.cpp" line="989"/>
<source>Trumpet</source>
<translation>Trompet</translation>
</message>
<message>
<location filename="../../util.cpp" line="989"/>
<location filename="../../util.cpp" line="990"/>
<source>Trombone</source>
<translation>Trombone</translation>
</message>
<message>
<location filename="../../util.cpp" line="990"/>
<location filename="../../util.cpp" line="991"/>
<source>French Horn</source>
<translation>Hoorn</translation>
</message>
<message>
<location filename="../../util.cpp" line="991"/>
<location filename="../../util.cpp" line="992"/>
<source>Tuba</source>
<translation>Tuba</translation>
</message>
<message>
<location filename="../../util.cpp" line="992"/>
<location filename="../../util.cpp" line="993"/>
<source>Saxophone</source>
<translation>Saxofoon</translation>
</message>
<message>
<location filename="../../util.cpp" line="993"/>
<location filename="../../util.cpp" line="994"/>
<source>Clarinet</source>
<translation>Klarinet</translation>
</message>
<message>
<location filename="../../util.cpp" line="994"/>
<location filename="../../util.cpp" line="995"/>
<source>Flute</source>
<translation>Fluit</translation>
</message>
<message>
<location filename="../../util.cpp" line="995"/>
<location filename="../../util.cpp" line="996"/>
<source>Violin</source>
<translation>Viool</translation>
</message>
<message>
<location filename="../../util.cpp" line="996"/>
<location filename="../../util.cpp" line="997"/>
<source>Cello</source>
<translation>Cello</translation>
</message>
<message>
<location filename="../../util.cpp" line="997"/>
<location filename="../../util.cpp" line="998"/>
<source>Double Bass</source>
<translation>Contrabas</translation>
</message>
<message>
<location filename="../../util.cpp" line="998"/>
<location filename="../../util.cpp" line="999"/>
<source>Recorder</source>
<translation>Opnemer</translation>
</message>
<message>
<location filename="../../util.cpp" line="999"/>
<location filename="../../util.cpp" line="1000"/>
<source>Streamer</source>
<translation>Streamer</translation>
</message>
<message>
<location filename="../../util.cpp" line="1000"/>
<location filename="../../util.cpp" line="1001"/>
<source>Listener</source>
<translation>Luisteraar</translation>
</message>
<message>
<location filename="../../util.cpp" line="1001"/>
<location filename="../../util.cpp" line="1002"/>
<source>Guitar+Vocal</source>
<translation>Gitaar+Vocaal</translation>
</message>
<message>
<location filename="../../util.cpp" line="1002"/>
<location filename="../../util.cpp" line="1003"/>
<source>Keyboard+Vocal</source>
<translation>Toetsenbord+Vocaal</translation>
</message>
<message>
<location filename="../../util.cpp" line="1003"/>
<location filename="../../util.cpp" line="1004"/>
<source>Bodhran</source>
<translation>Bodhran</translation>
</message>
<message>
<location filename="../../util.cpp" line="1004"/>
<location filename="../../util.cpp" line="1005"/>
<source>Bassoon</source>
<translation>Fagot</translation>
</message>
<message>
<location filename="../../util.cpp" line="1005"/>
<location filename="../../util.cpp" line="1006"/>
<source>Oboe</source>
<translation>Hobo</translation>
</message>
<message>
<location filename="../../util.cpp" line="1006"/>
<location filename="../../util.cpp" line="1007"/>
<source>Harp</source>
<translation>Harp</translation>
</message>
<message>
<location filename="../../util.cpp" line="1007"/>
<location filename="../../util.cpp" line="1008"/>
<source>Viola</source>
<translation>Viola</translation>
</message>
<message>
<location filename="../../util.cpp" line="1008"/>
<location filename="../../util.cpp" line="1009"/>
<source>Congas</source>
<translation>Congas</translation>
</message>
<message>
<location filename="../../util.cpp" line="1009"/>
<location filename="../../util.cpp" line="1010"/>
<source>Bongo</source>
<translation>Bongo</translation>
</message>
<message>
<location filename="../../util.cpp" line="1010"/>
<location filename="../../util.cpp" line="1011"/>
<source>Vocal Bass</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="1011"/>
<location filename="../../util.cpp" line="1012"/>
<source>Vocal Tenor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="1012"/>
<location filename="../../util.cpp" line="1013"/>
<source>Vocal Alto</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="1013"/>
<location filename="../../util.cpp" line="1014"/>
<source>Vocal Soprano</source>
<translation type="unfinished"></translation>
</message>
@ -2419,7 +2445,7 @@
<context>
<name>global</name>
<message>
<location filename="../../global.h" line="235"/>
<location filename="../../global.h" line="236"/>
<source>For more information use the What&apos;s This help (help menu, right mouse button or Shift+F1)</source>
<translation>Voor meer informatie gebruik de Wat Is Dit hulp (helpmenu, rechtermuisklik of Shift+F1)</translation>
</message>

View file

@ -58,57 +58,57 @@
<translation>Ícones de bandeira do país de Mark James</translation>
</message>
<message>
<location filename="../../util.cpp" line="403"/>
<location filename="../../util.cpp" line="404"/>
<source>For details on the contributions check out the </source>
<translation>Para detalhes sobre as contribuições, consulte a </translation>
</message>
<message>
<location filename="../../util.cpp" line="404"/>
<location filename="../../util.cpp" line="405"/>
<source>Github Contributors list</source>
<translation>lista de colaboradores do Github</translation>
</message>
<message>
<location filename="../../util.cpp" line="408"/>
<location filename="../../util.cpp" line="409"/>
<source>Spanish</source>
<translation>Espanhol</translation>
</message>
<message>
<location filename="../../util.cpp" line="410"/>
<location filename="../../util.cpp" line="411"/>
<source>French</source>
<translation>Francês</translation>
</message>
<message>
<location filename="../../util.cpp" line="412"/>
<location filename="../../util.cpp" line="413"/>
<source>Portuguese</source>
<translation>Português</translation>
</message>
<message>
<location filename="../../util.cpp" line="414"/>
<location filename="../../util.cpp" line="415"/>
<source>Dutch</source>
<translation>Holandês</translation>
</message>
<message>
<location filename="../../util.cpp" line="416"/>
<location filename="../../util.cpp" line="417"/>
<source>German</source>
<translation>Alemão</translation>
</message>
<message>
<location filename="../../util.cpp" line="423"/>
<location filename="../../util.cpp" line="424"/>
<source>About </source>
<translation>Sobre o </translation>
</message>
<message>
<location filename="../../util.cpp" line="440"/>
<location filename="../../util.cpp" line="441"/>
<source>, Version </source>
<translation>, Versão </translation>
</message>
<message>
<location filename="../../util.cpp" line="453"/>
<location filename="../../util.cpp" line="454"/>
<source>Internet Jam Session Software</source>
<translation>Programa de Jam Sessions pela Internet</translation>
</message>
<message>
<location filename="../../util.cpp" line="457"/>
<location filename="../../util.cpp" line="458"/>
<source>Under the GNU General Public License (GPL)</source>
<translation>Sob a Licença Pública Geral GNU (GPL)</translation>
</message>
@ -180,17 +180,17 @@
<context>
<name>CAudioMixerBoard</name>
<message>
<location filename="../../audiomixerboard.cpp" line="594"/>
<location filename="../../audiomixerboard.cpp" line="644"/>
<source>Server</source>
<translation>Servidor</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="603"/>
<location filename="../../audiomixerboard.cpp" line="653"/>
<source>T R Y I N G T O C O N N E C T</source>
<translation>T E N T A N D O L I G A R</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="658"/>
<location filename="../../audiomixerboard.cpp" line="717"/>
<source>Personal Mix at the Server: </source>
<translation type="unfinished"></translation>
</message>
@ -198,143 +198,169 @@
<context>
<name>CChannelFader</name>
<message>
<location filename="../../audiomixerboard.cpp" line="110"/>
<location filename="../../audiomixerboard.cpp" line="121"/>
<source>Channel Level</source>
<translation>Nível do Canal</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="111"/>
<location filename="../../audiomixerboard.cpp" line="122"/>
<source>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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="113"/>
<location filename="../../audiomixerboard.cpp" line="124"/>
<source>Input level of the current audio channel at the server</source>
<translation>Nível de entrada deste canal de áudio do servidor</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<location filename="../../audiomixerboard.cpp" line="127"/>
<source>Mixer Fader</source>
<translation>Fader da Mistura</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="116"/>
<location filename="../../audiomixerboard.cpp" line="127"/>
<source>Adjusts the audio level of this channel. All connected clients at the server will be assigned an audio fader at each client, adjusting the local mix.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="119"/>
<location filename="../../audiomixerboard.cpp" line="130"/>
<source>Local mix level setting of the current audio channel at the server</source>
<translation>Configuração do nível de mistura local deste canal de áudio do servidor</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="122"/>
<location filename="../../audiomixerboard.cpp" line="133"/>
<source>Panning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="133"/>
<source>Sets the panning position from Left to Right of the channel. Works only in stero or preferably mono in/stereo out mode.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="136"/>
<source>Local panning position of the current audio channel at the server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="138"/>
<source>With the Mute checkbox, the audio channel can be muted.</source>
<translation>Com a caixa de seleção Mute, o canal de áudio pode ser silenciado.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="124"/>
<location filename="../../audiomixerboard.cpp" line="140"/>
<source>Mute button</source>
<translation>Botão Mute</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="126"/>
<location filename="../../audiomixerboard.cpp" line="142"/>
<source>With the Solo checkbox, the 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 one channel to solo.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="130"/>
<location filename="../../audiomixerboard.cpp" line="146"/>
<source>Solo button</source>
<translation>Botão Solo</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="132"/>
<location filename="../../audiomixerboard.cpp" line="148"/>
<source>Fader Tag</source>
<translation>Identificador do Fader</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="132"/>
<location filename="../../audiomixerboard.cpp" line="148"/>
<source>The fader tag 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.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="137"/>
<location filename="../../audiomixerboard.cpp" line="153"/>
<source>Mixer channel instrument picture</source>
<translation>Imagem do instrumento do canal da mistura</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="139"/>
<location filename="../../audiomixerboard.cpp" line="155"/>
<source>Mixer channel label (fader tag)</source>
<translation>Identificação do canal da mistura (identificador do fader)</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="141"/>
<location filename="../../audiomixerboard.cpp" line="157"/>
<source>Mixer channel country flag</source>
<translation>Bandeira do país do canal da mistura</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="175"/>
<location filename="../../audiomixerboard.cpp" line="194"/>
<source>PAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="195"/>
<source>MUTE</source>
<translation>MUTE</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="176"/>
<location filename="../../audiomixerboard.cpp" line="196"/>
<source>SOLO</source>
<translation>SOLO</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="440"/>
<location filename="../../audiomixerboard.cpp" line="485"/>
<source>Alias/Name</source>
<translation>Nome/Alcunha</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="446"/>
<location filename="../../audiomixerboard.cpp" line="491"/>
<source>Instrument</source>
<translation>Instrumento</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="454"/>
<location filename="../../audiomixerboard.cpp" line="499"/>
<source>Location</source>
<translation>Localização</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="484"/>
<location filename="../../audiomixerboard.cpp" line="521"/>
<location filename="../../audiomixerboard.cpp" line="525"/>
<location filename="../../audiomixerboard.cpp" line="529"/>
<source>Skill Level</source>
<translation>Nível de Habilidade</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="476"/>
<location filename="../../audiomixerboard.cpp" line="521"/>
<source>Beginner</source>
<translation>Principiante</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="480"/>
<location filename="../../audiomixerboard.cpp" line="525"/>
<source>Intermediate</source>
<translation>Intermediário</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="484"/>
<location filename="../../audiomixerboard.cpp" line="529"/>
<source>Expert</source>
<translation>Avançado</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="495"/>
<location filename="../../audiomixerboard.cpp" line="540"/>
<source>Musician Profile</source>
<translation>Perfil do músico</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="44"/>
<location filename="../../audiomixerboard.cpp" line="122"/>
<location filename="../../audiomixerboard.cpp" line="183"/>
<location filename="../../audiomixerboard.cpp" line="46"/>
<location filename="../../audiomixerboard.cpp" line="138"/>
<location filename="../../audiomixerboard.cpp" line="204"/>
<source>Mute</source>
<translation>Mute</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="45"/>
<location filename="../../audiomixerboard.cpp" line="126"/>
<location filename="../../audiomixerboard.cpp" line="184"/>
<location filename="../../audiomixerboard.cpp" line="43"/>
<location filename="../../audiomixerboard.cpp" line="203"/>
<source>Pan</source>
<translation type="unfinished">Pan</translation>
</message>
<message>
<location filename="../../audiomixerboard.cpp" line="47"/>
<location filename="../../audiomixerboard.cpp" line="142"/>
<location filename="../../audiomixerboard.cpp" line="205"/>
<source>Solo</source>
<translation>Solo</translation>
</message>
@ -509,64 +535,64 @@
<translation>Indicador LED do estado dos buffers</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="204"/>
<location filename="../../clientdlg.cpp" line="1075"/>
<location filename="../../clientdlg.cpp" line="205"/>
<location filename="../../clientdlg.cpp" line="1096"/>
<source>C&amp;onnect</source>
<translation>&amp;Ligar</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="256"/>
<location filename="../../clientdlg.cpp" line="257"/>
<source>&amp;View</source>
<translation>&amp;Ver</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="258"/>
<location filename="../../clientdlg.cpp" line="259"/>
<source>&amp;Connection Setup...</source>
<translation>&amp;Configuração da ligação ...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="261"/>
<location filename="../../clientdlg.cpp" line="262"/>
<source>My &amp;Profile...</source>
<translation>Meu &amp;Perfil...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="264"/>
<location filename="../../clientdlg.cpp" line="265"/>
<source>C&amp;hat...</source>
<translation>&amp;Mensagens...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="267"/>
<location filename="../../clientdlg.cpp" line="268"/>
<source>&amp;Settings...</source>
<translation>&amp;Definições...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="273"/>
<location filename="../../clientdlg.cpp" line="274"/>
<source>&amp;Analyzer Console...</source>
<translation>Consola de &amp;Análise...</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="279"/>
<location filename="../../clientdlg.cpp" line="280"/>
<source>E&amp;xit</source>
<translation>&amp;Sair</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="327"/>
<location filename="../../clientdlg.cpp" line="328"/>
<source>None</source>
<translation>Nenhum</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="607"/>
<location filename="../../clientdlg.cpp" line="616"/>
<source>Center</source>
<translation>Centro</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="614"/>
<location filename="../../clientdlg.cpp" line="623"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="108"/>
<location filename="../../clientdlg.cpp" line="620"/>
<location filename="../../clientdlg.cpp" line="629"/>
<source>L</source>
<translation>L</translation>
</message>
@ -651,22 +677,22 @@
<translation>O CPU do cliente ou servidor está a 100%.</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="703"/>
<location filename="../../clientdlg.cpp" line="712"/>
<source>Central Server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="809"/>
<location filename="../../clientdlg.cpp" line="830"/>
<source>user</source>
<translation>utilizador</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="814"/>
<location filename="../../clientdlg.cpp" line="835"/>
<source>users</source>
<translation>utilizadores</translation>
</message>
<message>
<location filename="../../clientdlg.cpp" line="1051"/>
<location filename="../../clientdlg.cpp" line="1072"/>
<source>D&amp;isconnect</source>
<translation>Desl&amp;igar</translation>
</message>
@ -968,19 +994,19 @@
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="175"/>
<source>64 samples setting radio button</source>
<translation>Botão de configuração de 64 amostras</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="178"/>
<source>128 samples setting radio button</source>
<translation>Botão de configuração de 128 amostras</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="178"/>
<location filename="../../clientsettingsdlg.cpp" line="181"/>
<source>256 samples setting radio button</source>
<translation>Botão de configuração de 256 amostras</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="181"/>
<source>512 samples setting radio button</source>
<translation>Botão de configuração de 512 amostras</translation>
</message>
<message>
<location filename="../../clientsettingsdlg.cpp" line="184"/>
<source>ASIO setup push button</source>
@ -1533,28 +1559,28 @@
<context>
<name>CHelpMenu</name>
<message>
<location filename="../../util.cpp" line="840"/>
<location filename="../../util.cpp" line="841"/>
<source>&amp;Help</source>
<translation>&amp;Ajuda</translation>
</message>
<message>
<location filename="../../util.cpp" line="845"/>
<location filename="../../util.cpp" line="850"/>
<location filename="../../util.cpp" line="846"/>
<location filename="../../util.cpp" line="851"/>
<source>Getting &amp;Started...</source>
<translation>Como Começa&amp;r...</translation>
</message>
<message>
<location filename="../../util.cpp" line="846"/>
<location filename="../../util.cpp" line="847"/>
<source>Software &amp;Manual...</source>
<translation>&amp;Manual do Programa...</translation>
</message>
<message>
<location filename="../../util.cpp" line="853"/>
<location filename="../../util.cpp" line="854"/>
<source>What&apos;s &amp;This</source>
<translation>O que é &amp;isto</translation>
</message>
<message>
<location filename="../../util.cpp" line="855"/>
<location filename="../../util.cpp" line="856"/>
<source>&amp;About...</source>
<translation>&amp;Sobre...</translation>
</message>
@ -1562,102 +1588,102 @@
<context>
<name>CLicenceDlg</name>
<message>
<location filename="../../util.cpp" line="479"/>
<location filename="../../util.cpp" line="480"/>
<source>I &amp;agree to the above licence terms</source>
<translation>Eu &amp;aceito os termos da licença acima</translation>
</message>
<message>
<location filename="../../util.cpp" line="480"/>
<location filename="../../util.cpp" line="481"/>
<source>Accept</source>
<translation>Aceitar</translation>
</message>
<message>
<location filename="../../util.cpp" line="481"/>
<location filename="../../util.cpp" line="482"/>
<source>Decline</source>
<translation>Rejeitar</translation>
</message>
<message>
<location filename="../../util.cpp" line="497"/>
<location filename="../../util.cpp" line="498"/>
<source>By connecting to this server and agreeing to this notice, you agree to the following:</source>
<translation>Ao ligar-se a este servidor e concordar com este aviso, está a concordar com o seguinte:</translation>
</message>
<message>
<location filename="../../util.cpp" line="499"/>
<location filename="../../util.cpp" line="500"/>
<source>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 </source>
<translation>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 </translation>
</message>
<message>
<location filename="../../util.cpp" line="507"/>
<location filename="../../util.cpp" line="508"/>
<source>You are free to:</source>
<translation>Você tem o direito de:</translation>
</message>
<message>
<location filename="../../util.cpp" line="509"/>
<location filename="../../util.cpp" line="510"/>
<source>Share</source>
<translation>Compartilhar</translation>
</message>
<message>
<location filename="../../util.cpp" line="510"/>
<location filename="../../util.cpp" line="511"/>
<source>copy and redistribute the material in any medium or format</source>
<translation>copiar e redistribuir o material em qualquer suporte ou formato</translation>
</message>
<message>
<location filename="../../util.cpp" line="511"/>
<location filename="../../util.cpp" line="512"/>
<source>Adapt</source>
<translation>Adaptar</translation>
</message>
<message>
<location filename="../../util.cpp" line="512"/>
<location filename="../../util.cpp" line="513"/>
<source>remix, transform, and build upon the material</source>
<translation>remisturar, transformar, e criar a partir do material</translation>
</message>
<message>
<location filename="../../util.cpp" line="513"/>
<location filename="../../util.cpp" line="514"/>
<source>The licensor cannot revoke these freedoms as long as you follow the license terms.</source>
<translation>O licenciante não pode revogar estes direitos desde que você respeite os termos da licença.</translation>
</message>
<message>
<location filename="../../util.cpp" line="515"/>
<location filename="../../util.cpp" line="516"/>
<source>Under the following terms:</source>
<translation>De acordo com os termos seguintes:</translation>
</message>
<message>
<location filename="../../util.cpp" line="517"/>
<location filename="../../util.cpp" line="518"/>
<source>Attribution</source>
<translation>Atribuição</translation>
</message>
<message>
<location filename="../../util.cpp" line="518"/>
<location filename="../../util.cpp" line="519"/>
<source>You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="521"/>
<location filename="../../util.cpp" line="522"/>
<source>NonCommercial</source>
<translation>NãoComercial</translation>
</message>
<message>
<location filename="../../util.cpp" line="522"/>
<location filename="../../util.cpp" line="523"/>
<source>You may not use the material for commercial purposes.</source>
<translation>Você não pode usar o material para fins comerciais.</translation>
</message>
<message>
<location filename="../../util.cpp" line="523"/>
<location filename="../../util.cpp" line="524"/>
<source>ShareAlike</source>
<translation>CompartilhaIgual</translation>
</message>
<message>
<location filename="../../util.cpp" line="524"/>
<location filename="../../util.cpp" line="525"/>
<source>If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="526"/>
<location filename="../../util.cpp" line="527"/>
<source>No additional restrictions</source>
<translation>Sem restrições adicionais</translation>
</message>
<message>
<location filename="../../util.cpp" line="527"/>
<location filename="../../util.cpp" line="528"/>
<source>You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.</source>
<translation>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.</translation>
</message>
@ -1665,290 +1691,290 @@
<context>
<name>CMusProfDlg</name>
<message>
<location filename="../../util.cpp" line="711"/>
<location filename="../../util.cpp" line="712"/>
<source> server. This tag will also show up at each client which is connected to the same server as you. If the name is left empty, the IP address is shown instead.</source>
<translation>. 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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="716"/>
<location filename="../../util.cpp" line="717"/>
<source>Alias or name edit box</source>
<translation>Caixa de edição do nome ou pseudônimo</translation>
</message>
<message>
<location filename="../../util.cpp" line="718"/>
<location filename="../../util.cpp" line="719"/>
<source>Instrument picture button</source>
<translation>Botão da imagem do instrumento</translation>
</message>
<message>
<location filename="../../util.cpp" line="720"/>
<location filename="../../util.cpp" line="721"/>
<source>Country flag button</source>
<translation>Botão da bandeira do país</translation>
</message>
<message>
<location filename="../../util.cpp" line="722"/>
<location filename="../../util.cpp" line="723"/>
<source>City edit box</source>
<translation>Caixa de edição da cidade</translation>
</message>
<message>
<location filename="../../util.cpp" line="724"/>
<location filename="../../util.cpp" line="725"/>
<source>Skill level combo box</source>
<translation>Caixa do nível de habilidade</translation>
</message>
<message>
<location filename="../../util.cpp" line="669"/>
<location filename="../../util.cpp" line="681"/>
<location filename="../../util.cpp" line="975"/>
<location filename="../../util.cpp" line="670"/>
<location filename="../../util.cpp" line="682"/>
<location filename="../../util.cpp" line="976"/>
<source>None</source>
<translation>Nenhum</translation>
</message>
<message>
<location filename="../../util.cpp" line="556"/>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="557"/>
<location filename="../../util.cpp" line="705"/>
<source>Musician Profile</source>
<translation>Perfil do músico</translation>
</message>
<message>
<location filename="../../util.cpp" line="561"/>
<location filename="../../util.cpp" line="562"/>
<source>Alias/Name</source>
<translation>Nome/Alcunha</translation>
</message>
<message>
<location filename="../../util.cpp" line="563"/>
<location filename="../../util.cpp" line="564"/>
<source>Instrument</source>
<translation>Instrumento</translation>
</message>
<message>
<location filename="../../util.cpp" line="565"/>
<location filename="../../util.cpp" line="566"/>
<source>Country</source>
<translation>País</translation>
</message>
<message>
<location filename="../../util.cpp" line="567"/>
<location filename="../../util.cpp" line="568"/>
<source>City</source>
<translation>Cidade</translation>
</message>
<message>
<location filename="../../util.cpp" line="569"/>
<location filename="../../util.cpp" line="570"/>
<source>Skill</source>
<translation>Habilidade</translation>
</message>
<message>
<location filename="../../util.cpp" line="571"/>
<location filename="../../util.cpp" line="572"/>
<source>&amp;Close</source>
<translation>&amp;Fechar</translation>
</message>
<message>
<location filename="../../util.cpp" line="687"/>
<location filename="../../util.cpp" line="688"/>
<source>Beginner</source>
<translation>Principiante</translation>
</message>
<message>
<location filename="../../util.cpp" line="693"/>
<location filename="../../util.cpp" line="694"/>
<source>Intermediate</source>
<translation>Intermediário</translation>
</message>
<message>
<location filename="../../util.cpp" line="699"/>
<location filename="../../util.cpp" line="700"/>
<source>Expert</source>
<translation>Avançado</translation>
</message>
<message>
<location filename="../../util.cpp" line="704"/>
<location filename="../../util.cpp" line="705"/>
<source>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 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 may also be added.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../util.cpp" line="709"/>
<location filename="../../util.cpp" line="710"/>
<source>What you set here will appear at your fader on the mixer board when you are connected to a </source>
<translation>O que definir aqui aparecerá por baixo do seu fader na secção de mistura quando estiver ligado a um servidor </translation>
</message>
<message>
<location filename="../../util.cpp" line="976"/>
<location filename="../../util.cpp" line="977"/>
<source>Drum Set</source>
<translation>Bateria</translation>
</message>
<message>
<location filename="../../util.cpp" line="977"/>
<location filename="../../util.cpp" line="978"/>
<source>Djembe</source>
<translation>Djembe</translation>
</message>
<message>
<location filename="../../util.cpp" line="978"/>
<location filename="../../util.cpp" line="979"/>
<source>Electric Guitar</source>
<translation>Guitarra Elétrica</translation>
</message>
<message>
<location filename="../../util.cpp" line="979"/>
<location filename="../../util.cpp" line="980"/>
<source>Acoustic Guitar</source>
<translation>Guitarra Acústica</translation>
</message>
<message>
<location filename="../../util.cpp" line="980"/>
<location filename="../../util.cpp" line="981"/>
<source>Bass Guitar</source>
<translation>Baixo</translation>
</message>
<message>
<location filename="../../util.cpp" line="981"/>
<location filename="../../util.cpp" line="982"/>
<source>Keyboard</source>
<translation>Teclado</translation>
</message>
<message>
<location filename="../../util.cpp" line="982"/>
<location filename="../../util.cpp" line="983"/>
<source>Synthesizer</source>
<translation>Sintetizador</translation>
</message>
<message>
<location filename="../../util.cpp" line="983"/>
<location filename="../../util.cpp" line="984"/>
<source>Grand Piano</source>
<translation>Piano de Cauda</translation>
</message>
<message>
<location filename="../../util.cpp" line="984"/>
<location filename="../../util.cpp" line="985"/>
<source>Accordion</source>
<translation>Acordeão</translation>
</message>
<message>
<location filename="../../util.cpp" line="985"/>
<location filename="../../util.cpp" line="986"/>
<source>Vocal</source>
<translation>Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="986"/>
<location filename="../../util.cpp" line="987"/>
<source>Microphone</source>
<translation>Microfone</translation>
</message>
<message>
<location filename="../../util.cpp" line="987"/>
<location filename="../../util.cpp" line="988"/>
<source>Harmonica</source>
<translation>Harmónica</translation>
</message>
<message>
<location filename="../../util.cpp" line="988"/>
<location filename="../../util.cpp" line="989"/>
<source>Trumpet</source>
<translation>Trompete</translation>
</message>
<message>
<location filename="../../util.cpp" line="989"/>
<location filename="../../util.cpp" line="990"/>
<source>Trombone</source>
<translation>Trombone</translation>
</message>
<message>
<location filename="../../util.cpp" line="990"/>
<location filename="../../util.cpp" line="991"/>
<source>French Horn</source>
<translation>Trompa Francesa</translation>
</message>
<message>
<location filename="../../util.cpp" line="991"/>
<location filename="../../util.cpp" line="992"/>
<source>Tuba</source>
<translation>Tuba</translation>
</message>
<message>
<location filename="../../util.cpp" line="992"/>
<location filename="../../util.cpp" line="993"/>
<source>Saxophone</source>
<translation>Saxofone</translation>
</message>
<message>
<location filename="../../util.cpp" line="993"/>
<location filename="../../util.cpp" line="994"/>
<source>Clarinet</source>
<translation>Clarinete</translation>
</message>
<message>
<location filename="../../util.cpp" line="994"/>
<location filename="../../util.cpp" line="995"/>
<source>Flute</source>
<translation>Flauta</translation>
</message>
<message>
<location filename="../../util.cpp" line="995"/>
<location filename="../../util.cpp" line="996"/>
<source>Violin</source>
<translation>Violino</translation>
</message>
<message>
<location filename="../../util.cpp" line="996"/>
<location filename="../../util.cpp" line="997"/>
<source>Cello</source>
<translation>Violoncelo</translation>
</message>
<message>
<location filename="../../util.cpp" line="997"/>
<location filename="../../util.cpp" line="998"/>
<source>Double Bass</source>
<translation>Contrabaixo</translation>
</message>
<message>
<location filename="../../util.cpp" line="998"/>
<location filename="../../util.cpp" line="999"/>
<source>Recorder</source>
<translation>Gravador</translation>
</message>
<message>
<location filename="../../util.cpp" line="999"/>
<location filename="../../util.cpp" line="1000"/>
<source>Streamer</source>
<translation>Streamer</translation>
</message>
<message>
<location filename="../../util.cpp" line="1000"/>
<location filename="../../util.cpp" line="1001"/>
<source>Listener</source>
<translation>Ouvinte</translation>
</message>
<message>
<location filename="../../util.cpp" line="1001"/>
<location filename="../../util.cpp" line="1002"/>
<source>Guitar+Vocal</source>
<translation>Guitarra+Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="1002"/>
<location filename="../../util.cpp" line="1003"/>
<source>Keyboard+Vocal</source>
<translation>Teclado+Voz</translation>
</message>
<message>
<location filename="../../util.cpp" line="1003"/>
<location filename="../../util.cpp" line="1004"/>
<source>Bodhran</source>
<translation>Bodhrán</translation>
</message>
<message>
<location filename="../../util.cpp" line="1004"/>
<location filename="../../util.cpp" line="1005"/>
<source>Bassoon</source>
<translation>Fagote</translation>
</message>
<message>
<location filename="../../util.cpp" line="1005"/>
<location filename="../../util.cpp" line="1006"/>
<source>Oboe</source>
<translation>Oboé</translation>
</message>
<message>
<location filename="../../util.cpp" line="1006"/>
<location filename="../../util.cpp" line="1007"/>
<source>Harp</source>
<translation>Harpa</translation>
</message>
<message>
<location filename="../../util.cpp" line="1007"/>
<location filename="../../util.cpp" line="1008"/>
<source>Viola</source>
<translation>Viola de Arco</translation>
</message>
<message>
<location filename="../../util.cpp" line="1008"/>
<location filename="../../util.cpp" line="1009"/>
<source>Congas</source>
<translation>Congas</translation>
</message>
<message>
<location filename="../../util.cpp" line="1009"/>
<location filename="../../util.cpp" line="1010"/>
<source>Bongo</source>
<translation>Bongo</translation>
</message>
<message>
<location filename="../../util.cpp" line="1010"/>
<location filename="../../util.cpp" line="1011"/>
<source>Vocal Bass</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="1011"/>
<location filename="../../util.cpp" line="1012"/>
<source>Vocal Tenor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="1012"/>
<location filename="../../util.cpp" line="1013"/>
<source>Vocal Alto</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../util.cpp" line="1013"/>
<location filename="../../util.cpp" line="1014"/>
<source>Vocal Soprano</source>
<translation type="unfinished"></translation>
</message>
@ -2431,7 +2457,7 @@
<context>
<name>global</name>
<message>
<location filename="../../global.h" line="235"/>
<location filename="../../global.h" line="236"/>
<source>For more information use the What&apos;s This help (help menu, right mouse button or Shift+F1)</source>
<translation>Para mais informações, use O que é isto (menu Ajuda, botão direito do rato ou Shift + F1)</translation>
</message>

View file

@ -14,6 +14,9 @@
<qresource prefix="/translations" lang="nl">
<file alias="translation.qm">res/translation/translation_nl_NL.qm</file>
</qresource>
<qresource prefix="/translations" lang="it">
<file alias="translation.qm">res/translation/translation_it_IT.qm</file>
</qresource>
<qresource prefix="/png/LEDs">
<file>res/CLEDDisabledSmall.png</file>
<file>res/CLEDGreenArrow.png</file>
@ -36,34 +39,34 @@
<file>res/mixerboardbackground.png</file>
</qresource>
<qresource prefix="/png/instr">
<file>res/instruments/instrnone.png</file>
<file>res/instruments/instrbassguitar.png</file>
<file>res/instruments/instrclarinet.png</file>
<file>res/instruments/instrdrumset.png</file>
<file>res/instruments/instreguitar.png</file>
<file>res/instruments/instrsaxophone.png</file>
<file>res/instruments/instrtrumpet.png</file>
<file>res/instruments/instrmicrophone.png</file>
<file>res/instruments/instrkeyboard.png</file>
<file>res/instruments/instrviolin.png</file>
<file>res/instruments/instraguitar.png</file>
<file>res/instruments/instrflute.png</file>
<file>res/instruments/instraccordeon.png</file>
<file>res/instruments/instrcello.png</file>
<file>res/instruments/instrtrombone.png</file>
<file>res/instruments/instrfrenchhorn.png</file>
<file>res/instruments/instrtuba.png</file>
<file>res/instruments/instrdoublebass.png</file>
<file>res/instruments/instrgrandpiano.png</file>
<file>res/instruments/instrsynthesizer.png</file>
<file>res/instruments/instrvocal.png</file>
<file>res/instruments/instrdjembe.png</file>
<file>res/instruments/instrharmonica.png</file>
<file>res/instruments/instrrecorder.png</file>
<file>res/instruments/instrlistener.png</file>
<file>res/instruments/instrstreamer.png</file>
<file>res/instruments/instrguitarvocal.png</file>
<file>res/instruments/instrkeyboardvocal.png</file>
<file>res/instruments/none.png</file>
<file>res/instruments/bassguitar.png</file>
<file>res/instruments/clarinet.png</file>
<file>res/instruments/drumset.png</file>
<file>res/instruments/eguitar.png</file>
<file>res/instruments/saxophone.png</file>
<file>res/instruments/trumpet.png</file>
<file>res/instruments/microphone.png</file>
<file>res/instruments/keyboard.png</file>
<file>res/instruments/violin.png</file>
<file>res/instruments/aguitar.png</file>
<file>res/instruments/flute.png</file>
<file>res/instruments/accordeon.png</file>
<file>res/instruments/cello.png</file>
<file>res/instruments/trombone.png</file>
<file>res/instruments/frenchhorn.png</file>
<file>res/instruments/tuba.png</file>
<file>res/instruments/doublebass.png</file>
<file>res/instruments/grandpiano.png</file>
<file>res/instruments/synthesizer.png</file>
<file>res/instruments/vocal.png</file>
<file>res/instruments/djembe.png</file>
<file>res/instruments/harmonica.png</file>
<file>res/instruments/recorder.png</file>
<file>res/instruments/listener.png</file>
<file>res/instruments/streamer.png</file>
<file>res/instruments/guitarvocal.png</file>
<file>res/instruments/keyboardvocal.png</file>
<file>res/instruments/bodhran.png</file>
<file>res/instruments/bassoon.png</file>
<file>res/instruments/oboe.png</file>

View file

@ -340,6 +340,7 @@ CServer::CServer ( const int iNewMaxNumChan,
// allocate worst case memory for the temporary vectors
vecChanIDsCurConChan.Init ( iMaxNumChannels );
vecvecdGains.Init ( iMaxNumChannels );
vecvecdPannings.Init ( iMaxNumChannels );
vecvecsData.Init ( iMaxNumChannels );
vecNumAudioChannels.Init ( iMaxNumChannels );
vecNumFrameSizeConvBlocks.Init ( iMaxNumChannels );
@ -350,6 +351,7 @@ CServer::CServer ( const int iNewMaxNumChan,
{
// init vectors storing information of all channels
vecvecdGains[i].Init ( iMaxNumChannels );
vecvecdPannings[i].Init ( iMaxNumChannels );
// we always use stereo audio buffers (see "vecsSendData")
vecvecsData[i].Init ( 2 /* stereo */ * DOUBLE_SYSTEM_FRAME_SIZE_SAMPLES /* worst case buffer size */ );
@ -597,6 +599,9 @@ CreateAndSendChanListForAllConChannels();
vecChannels[iChID].CreateLicReqMes ( eLicenceType );
}
// send version info (for, e.g., feature activation in the client)
vecChannels[iChID].CreateVersionAndOSMes();
// reset the conversion buffers
DoubleFrameSizeConvBufIn[iChID].Reset();
DoubleFrameSizeConvBufOut[iChID].Reset();
@ -841,6 +846,9 @@ JitterMeas.Measure();
// consider audio fade-in
vecvecdGains[i][j] *= vecChannels[vecChanIDsCurConChan[j]].GetFadeInGain();
// panning
vecvecdPannings[i][j] = vecChannels[iCurChanID].GetPan ( vecChanIDsCurConChan[j] );
}
// If the server frame size is smaller than the received OPUS frame size, we need a conversion
@ -968,6 +976,7 @@ JitterMeas.Measure();
// actual processing of audio data -> mix
ProcessData ( vecvecsData,
vecvecdGains[i],
vecvecdPannings[i],
vecNumAudioChannels,
vecsSendData,
iCurNumAudChan,
@ -1070,6 +1079,7 @@ opus_custom_encoder_ctl ( CurOpusEncoder,
/// @brief Mix all audio data from all clients together.
void CServer::ProcessData ( const CVector<CVector<int16_t> >& vecvecsData,
const CVector<double>& vecdGains,
const CVector<double>& vecdPannings,
const CVector<int>& vecNumAudioChannels,
CVector<int16_t>& vecsOutData,
const int iCurNumAudChan,
@ -1142,12 +1152,18 @@ void CServer::ProcessData ( const CVector<CVector<int16_t> >& vecvecsData,
// Stereo target channel -----------------------------------------------
for ( j = 0; j < iNumClients; j++ )
{
// get a reference to the audio data and gain of the current client
// get a reference to the audio data and gain/pan of the current client
const CVector<int16_t>& vecsData = vecvecsData[j];
const double dGain = vecdGains[j];
const double dPan = vecdPannings[j];
// calculate combined gain/pan for each stereo channel where we define
// the panning that center equals full gain for both channels
const double dGainL = std::min ( 0.5, 1 - dPan ) * 2 * dGain;
const double dGainR = std::min ( 0.5, dPan ) * 2 * dGain;
// if channel gain is 1, avoid multiplication for speed optimization
if ( dGain == static_cast<double> ( 1.0 ) )
if ( ( dGainL == static_cast<double> ( 1.0 ) ) && ( dGainR == static_cast<double> ( 1.0 ) ) )
{
if ( vecNumAudioChannels[j] == 1 )
{
@ -1182,20 +1198,25 @@ void CServer::ProcessData ( const CVector<CVector<int16_t> >& vecvecsData,
{
// left channel
vecsOutData[k] = Double2Short (
vecsOutData[k] + vecsData[i] * dGain );
vecsOutData[k] + vecsData[i] * dGain * dGainL );
// right channel
vecsOutData[k + 1] = Double2Short (
vecsOutData[k + 1] + vecsData[i] * dGain );
vecsOutData[k + 1] + vecsData[i] * dGain * dGainR );
}
}
else
{
// stereo
for ( i = 0; i < ( 2 * iServerFrameSizeSamples ); i++ )
for ( i = 0; i < ( 2 * iServerFrameSizeSamples ); i += 2 )
{
// left channel
vecsOutData[i] = Double2Short (
vecsOutData[i] + vecsData[i] * dGain );
vecsOutData[i] + vecsData[i] * dGain * dGainL );
// right channel
vecsOutData[i + 1] = Double2Short (
vecsOutData[i + 1] + vecsData[i + 1] * dGain * dGainR );
}
}
}

View file

@ -269,6 +269,7 @@ protected:
void ProcessData ( const CVector<CVector<int16_t> >& vecvecsData,
const CVector<double>& vecdGains,
const CVector<double>& vecdPannings,
const CVector<int>& vecNumAudioChannels,
CVector<int16_t>& vecsOutData,
const int iCurNumAudChan,
@ -312,6 +313,7 @@ protected:
CVector<int> vecChanIDsCurConChan;
CVector<CVector<double> > vecvecdGains;
CVector<CVector<double> > vecvecdPannings;
CVector<CVector<int16_t> > vecvecsData;
CVector<int> vecNumAudioChannels;
CVector<int> vecNumFrameSizeConvBlocks;

View file

@ -77,6 +77,17 @@ void CSettings::Load()
}
}
// stored pan values
for ( iIdx = 0; iIdx < MAX_NUM_STORED_FADER_SETTINGS; iIdx++ )
{
if ( GetNumericIniSet ( IniXMLDocument, "client",
QString ( "storedpanvalue%1" ).arg ( iIdx ),
0, AUD_MIX_PAN_MAX/2, iValue ) )
{
pClient->vecStoredPanValues[iIdx] = iValue;
}
}
// stored fader solo state
for ( iIdx = 0; iIdx < MAX_NUM_STORED_FADER_SETTINGS; iIdx++ )
{
@ -455,6 +466,14 @@ void CSettings::Save()
pClient->vecStoredFaderLevels[iIdx] );
}
// stored pan values
for ( iIdx = 0; iIdx < MAX_NUM_STORED_FADER_SETTINGS; iIdx++ )
{
SetNumericIniSet ( IniXMLDocument, "client",
QString ( "storedpanvalue%1" ).arg ( iIdx ),
pClient->vecStoredPanValues[iIdx] );
}
// stored fader solo states
for ( iIdx = 0; iIdx < MAX_NUM_STORED_FADER_SETTINGS; iIdx++ )
{

View file

@ -393,6 +393,7 @@ CAboutDlg::CAboutDlg ( QWidget* parent ) : QDialog ( parent )
"<p>Simon Tomlinson (<a href=""https://github.com/sthenos"">sthenos</a>)</p>"
"<p>Marc jr. Landolt (<a href=""https://github.com/braindef"">braindef</a>)</p>"
"<p>Olivier Humbert (<a href=""https://github.com/trebmuh"">trebmuh</a>)</p>"
"<p>Tarmo Johannes (<a href=""https://github.com/tarmoj"">tarmoj</a>)</p>"
"<p>mirabilos (<a href=""https://github.com/mirabilos"">mirabilos</a>)</p>"
"<p>newlaurent62 (<a href=""https://github.com/newlaurent62"">newlaurent62</a>)</p>"
"<p>Emlyn Bolton (<a href=""https://github.com/emlynmac"">emlynmac</a>)</p>"
@ -972,34 +973,34 @@ CVector<CInstPictures::CInstPictProps>& CInstPictures::GetTable()
// instrument picture data base initialization
// NOTE: Do not change the order of any instrument in the future!
// NOTE: The very first entry is the "not used" element per definition.
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "None" ), ":/png/instr/res/instruments/instrnone.png", IC_OTHER_INSTRUMENT ) ); // special first element
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Drum Set" ), ":/png/instr/res/instruments/instrdrumset.png", IC_PERCUSSION_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Djembe" ), ":/png/instr/res/instruments/instrdjembe.png", IC_PERCUSSION_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Electric Guitar" ), ":/png/instr/res/instruments/instreguitar.png", IC_PLUCKING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Acoustic Guitar" ), ":/png/instr/res/instruments/instraguitar.png", IC_PLUCKING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Bass Guitar" ), ":/png/instr/res/instruments/instrbassguitar.png", IC_PLUCKING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Keyboard" ), ":/png/instr/res/instruments/instrkeyboard.png", IC_KEYBOARD_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Synthesizer" ), ":/png/instr/res/instruments/instrsynthesizer.png", IC_KEYBOARD_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Grand Piano" ), ":/png/instr/res/instruments/instrgrandpiano.png", IC_KEYBOARD_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Accordion" ), ":/png/instr/res/instruments/instraccordeon.png", IC_KEYBOARD_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Vocal" ), ":/png/instr/res/instruments/instrvocal.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Microphone" ), ":/png/instr/res/instruments/instrmicrophone.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Harmonica" ), ":/png/instr/res/instruments/instrharmonica.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Trumpet" ), ":/png/instr/res/instruments/instrtrumpet.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Trombone" ), ":/png/instr/res/instruments/instrtrombone.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "French Horn" ), ":/png/instr/res/instruments/instrfrenchhorn.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Tuba" ), ":/png/instr/res/instruments/instrtuba.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Saxophone" ), ":/png/instr/res/instruments/instrsaxophone.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Clarinet" ), ":/png/instr/res/instruments/instrclarinet.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Flute" ), ":/png/instr/res/instruments/instrflute.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Violin" ), ":/png/instr/res/instruments/instrviolin.png", IC_STRING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Cello" ), ":/png/instr/res/instruments/instrcello.png", IC_STRING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Double Bass" ), ":/png/instr/res/instruments/instrdoublebass.png", IC_STRING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Recorder" ), ":/png/instr/res/instruments/instrrecorder.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Streamer" ), ":/png/instr/res/instruments/instrstreamer.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Listener" ), ":/png/instr/res/instruments/instrlistener.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Guitar+Vocal" ), ":/png/instr/res/instruments/instrguitarvocal.png", IC_MULTIPLE_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Keyboard+Vocal" ), ":/png/instr/res/instruments/instrkeyboardvocal.png", IC_MULTIPLE_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "None" ), ":/png/instr/res/instruments/none.png", IC_OTHER_INSTRUMENT ) ); // special first element
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Drum Set" ), ":/png/instr/res/instruments/drumset.png", IC_PERCUSSION_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Djembe" ), ":/png/instr/res/instruments/djembe.png", IC_PERCUSSION_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Electric Guitar" ), ":/png/instr/res/instruments/eguitar.png", IC_PLUCKING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Acoustic Guitar" ), ":/png/instr/res/instruments/aguitar.png", IC_PLUCKING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Bass Guitar" ), ":/png/instr/res/instruments/bassguitar.png", IC_PLUCKING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Keyboard" ), ":/png/instr/res/instruments/keyboard.png", IC_KEYBOARD_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Synthesizer" ), ":/png/instr/res/instruments/synthesizer.png", IC_KEYBOARD_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Grand Piano" ), ":/png/instr/res/instruments/grandpiano.png", IC_KEYBOARD_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Accordion" ), ":/png/instr/res/instruments/accordeon.png", IC_KEYBOARD_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Vocal" ), ":/png/instr/res/instruments/vocal.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Microphone" ), ":/png/instr/res/instruments/microphone.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Harmonica" ), ":/png/instr/res/instruments/harmonica.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Trumpet" ), ":/png/instr/res/instruments/trumpet.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Trombone" ), ":/png/instr/res/instruments/trombone.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "French Horn" ), ":/png/instr/res/instruments/frenchhorn.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Tuba" ), ":/png/instr/res/instruments/tuba.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Saxophone" ), ":/png/instr/res/instruments/saxophone.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Clarinet" ), ":/png/instr/res/instruments/clarinet.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Flute" ), ":/png/instr/res/instruments/flute.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Violin" ), ":/png/instr/res/instruments/violin.png", IC_STRING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Cello" ), ":/png/instr/res/instruments/cello.png", IC_STRING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Double Bass" ), ":/png/instr/res/instruments/doublebass.png", IC_STRING_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Recorder" ), ":/png/instr/res/instruments/recorder.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Streamer" ), ":/png/instr/res/instruments/streamer.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Listener" ), ":/png/instr/res/instruments/listener.png", IC_OTHER_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Guitar+Vocal" ), ":/png/instr/res/instruments/guitarvocal.png", IC_MULTIPLE_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Keyboard+Vocal" ), ":/png/instr/res/instruments/keyboardvocal.png", IC_MULTIPLE_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Bodhran" ), ":/png/instr/res/instruments/bodhran.png", IC_PERCUSSION_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Bassoon" ), ":/png/instr/res/instruments/bassoon.png", IC_WIND_INSTRUMENT ) );
vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Oboe" ), ":/png/instr/res/instruments/oboe.png", IC_WIND_INSTRUMENT ) );