Merge branch 'master' into feature_panning

# Conflicts:
#	src/protocol.h
This commit is contained in:
Volker Fischer 2020-05-18 19:03:40 +02:00
commit 78413826a5
42 changed files with 210 additions and 130 deletions

View file

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

View file

@ -23,9 +23,6 @@ Depends:
${shlibs:Depends}, ${shlibs:Depends},
${misc:Depends}, ${misc:Depends},
adduser, adduser,
jackd,
qt5-default,
qtchooser,
Description: Low latency Audio Server/Client Description: Low latency Audio Server/Client
The Jamulus software enables musicians to perform real-time jam sessions over The Jamulus software enables musicians to perform real-time jam sessions over
the internet. There is one server running the Jamulus server software which the internet. There is one server running the Jamulus server software which

View file

@ -105,6 +105,7 @@ public:
{ Protocol.CreateChanInfoMes ( ChInfo ); } { Protocol.CreateChanInfoMes ( ChInfo ); }
void CreateReqChanInfoMes() { Protocol.CreateReqChanInfoMes(); } void CreateReqChanInfoMes() { Protocol.CreateReqChanInfoMes(); }
void CreateVersionAndOSMes() { Protocol.CreateVersionAndOSMes(); }
void SetGain ( const int iChanID, const double dNewGain ); void SetGain ( const int iChanID, const double dNewGain );
double GetGain ( const int iChanID ); double GetGain ( const int iChanID );

View file

@ -161,7 +161,7 @@ MESSAGES (with connection)
| 1 byte licence type | | 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 | | 1 byte option |
@ -169,6 +169,12 @@ MESSAGES (with connection)
option is boolean, true to opt in, false to opt out 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 #### // #### COMPATIBILITY OLD VERSION, TO BE REMOVED ####
- PROTMESSID_OPUS_SUPPORTED: Informs that OPUS codec is supported - PROTMESSID_OPUS_SUPPORTED: Informs that OPUS codec is supported
@ -619,6 +625,10 @@ if ( rand() < ( RAND_MAX / 2 ) ) return false;
case PROTMESSID_REQ_CHANNEL_LEVEL_LIST: case PROTMESSID_REQ_CHANNEL_LEVEL_LIST:
bRet = EvaluateReqChannelLevelListMes ( vecbyMesBodyData ); bRet = EvaluateReqChannelLevelListMes ( vecbyMesBodyData );
break; break;
case PROTMESSID_VERSION_AND_OS:
bRet = EvaluateVersionAndOSMes ( vecbyMesBodyData );
break;
} }
// immediately send acknowledge message // immediately send acknowledge message
@ -1390,6 +1400,71 @@ bool CProtocol::EvaluateReqChannelLevelListMes ( const CVector<uint8_t>& vecData
return false; // no error 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 ---------------------------------------------------- // Connection less messages ----------------------------------------------------
void CProtocol::CreateCLPingMes ( const CHostAddress& InetAddr, const int iMs ) void CProtocol::CreateCLPingMes ( const CHostAddress& InetAddr, const int iMs )

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

@ -55,7 +55,8 @@
#define PROTMESSID_OPUS_SUPPORTED 26 // tells that OPUS codec is supported #define PROTMESSID_OPUS_SUPPORTED 26 // tells that OPUS codec is supported
#define PROTMESSID_LICENCE_REQUIRED 27 // licence required #define PROTMESSID_LICENCE_REQUIRED 27 // licence required
#define PROTMESSID_REQ_CHANNEL_LEVEL_LIST 28 // request the channel level list #define PROTMESSID_REQ_CHANNEL_LEVEL_LIST 28 // request the channel level list
#define PROTMESSID_CHANNEL_PAN 29 // set channel gain for mix #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) // message IDs of connection less messages (CLM)
// DEFINITION -> start at 1000, end at 1999, see IsConnectionLessMessageID // DEFINITION -> start at 1000, end at 1999, see IsConnectionLessMessageID
@ -108,6 +109,7 @@ public:
void CreateLicenceRequiredMes ( const ELicenceType eLicenceType ); void CreateLicenceRequiredMes ( const ELicenceType eLicenceType );
void CreateOpusSupportedMes(); void CreateOpusSupportedMes();
void CreateReqChannelLevelListMes ( const bool bRCL ); void CreateReqChannelLevelListMes ( const bool bRCL );
void CreateVersionAndOSMes();
void CreateCLPingMes ( const CHostAddress& InetAddr, const int iMs ); void CreateCLPingMes ( const CHostAddress& InetAddr, const int iMs );
void CreateCLPingWithNumClientsMes ( const CHostAddress& InetAddr, void CreateCLPingWithNumClientsMes ( const CHostAddress& InetAddr,
@ -230,6 +232,7 @@ protected:
bool EvaluateReqNetwTranspPropsMes(); bool EvaluateReqNetwTranspPropsMes();
bool EvaluateLicenceRequiredMes ( const CVector<uint8_t>& vecData ); bool EvaluateLicenceRequiredMes ( const CVector<uint8_t>& vecData );
bool EvaluateReqChannelLevelListMes ( const CVector<uint8_t>& vecData ); bool EvaluateReqChannelLevelListMes ( const CVector<uint8_t>& vecData );
bool EvaluateVersionAndOSMes ( const CVector<uint8_t>& vecData );
bool EvaluateCLPingMes ( const CHostAddress& InetAddr, bool EvaluateCLPingMes ( const CHostAddress& InetAddr,
const CVector<uint8_t>& vecData ); const CVector<uint8_t>& vecData );
@ -290,6 +293,7 @@ signals:
void ReqNetTranspProps(); void ReqNetTranspProps();
void LicenceRequired ( ELicenceType eLicenceType ); void LicenceRequired ( ELicenceType eLicenceType );
void ReqChannelLevelList ( bool bOptIn ); void ReqChannelLevelList ( bool bOptIn );
void VersionAndOSReceived ( COSUtil::EOpSystemType eOSType, QString strVersion );
void CLPingReceived ( CHostAddress InetAddr, void CLPingReceived ( CHostAddress InetAddr,
int iMs ); 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

View file

@ -81,12 +81,12 @@
<message> <message>
<location filename="../../util.cpp" line="414"/> <location filename="../../util.cpp" line="414"/>
<source>Dutch</source> <source>Dutch</source>
<translation type="unfinished"></translation> <translation>Holländisch</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="416"/> <location filename="../../util.cpp" line="416"/>
<source>German</source> <source>German</source>
<translation type="unfinished"></translation> <translation>Deutsch</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="423"/> <location filename="../../util.cpp" line="423"/>
@ -180,7 +180,7 @@
<message> <message>
<location filename="../../audiomixerboard.cpp" line="658"/> <location filename="../../audiomixerboard.cpp" line="658"/>
<source>Personal Mix at the Server: </source> <source>Personal Mix at the Server: </source>
<translation type="unfinished"></translation> <translation>Eigener Mix am Server: </translation>
</message> </message>
</context> </context>
<context> <context>
@ -641,7 +641,7 @@
<message> <message>
<location filename="../../clientdlg.cpp" line="703"/> <location filename="../../clientdlg.cpp" line="703"/>
<source>Central Server</source> <source>Central Server</source>
<translation type="unfinished"></translation> <translation>Zentralserver</translation>
</message> </message>
<message> <message>
<location filename="../../clientdlg.cpp" line="809"/> <location filename="../../clientdlg.cpp" line="809"/>
@ -1151,22 +1151,22 @@
<message> <message>
<location filename="../../util.h" line="581"/> <location filename="../../util.h" line="581"/>
<source>Custom</source> <source>Custom</source>
<translation type="unfinished"></translation> <translation>Benutzerdefiniert</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="584"/> <location filename="../../util.h" line="584"/>
<source>All Genres</source> <source>All Genres</source>
<translation type="unfinished"></translation> <translation>Alle Genres</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="587"/> <location filename="../../util.h" line="587"/>
<source>Genre Rock</source> <source>Genre Rock</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="590"/> <location filename="../../util.h" line="590"/>
<source>Genre Jazz</source> <source>Genre Jazz</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="593"/> <location filename="../../util.h" line="593"/>
@ -1201,7 +1201,7 @@
<message> <message>
<location filename="../../clientsettingsdlg.cpp" line="606"/> <location filename="../../clientsettingsdlg.cpp" line="606"/>
<source>Predefined Address</source> <source>Predefined Address</source>
<translation type="unfinished"></translation> <translation>Vordefinierte Adresse</translation>
</message> </message>
<message> <message>
<location filename="../../clientsettingsdlg.cpp" line="646"/> <location filename="../../clientsettingsdlg.cpp" line="646"/>
@ -1470,7 +1470,7 @@
<message> <message>
<location filename="../../connectdlgbase.ui" line="35"/> <location filename="../../connectdlgbase.ui" line="35"/>
<source>List</source> <source>List</source>
<translation type="unfinished"></translation> <translation>Liste</translation>
</message> </message>
<message> <message>
<location filename="../../connectdlgbase.ui" line="45"/> <location filename="../../connectdlgbase.ui" line="45"/>
@ -1923,22 +1923,22 @@
<message> <message>
<location filename="../../util.cpp" line="1010"/> <location filename="../../util.cpp" line="1010"/>
<source>Vocal Bass</source> <source>Vocal Bass</source>
<translation type="unfinished"></translation> <translation>Gesang Bass</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1011"/> <location filename="../../util.cpp" line="1011"/>
<source>Vocal Tenor</source> <source>Vocal Tenor</source>
<translation type="unfinished"></translation> <translation>Gesang Tenor</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1012"/> <location filename="../../util.cpp" line="1012"/>
<source>Vocal Alto</source> <source>Vocal Alto</source>
<translation type="unfinished"></translation> <translation>Gesang Alt</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1013"/> <location filename="../../util.cpp" line="1013"/>
<source>Vocal Soprano</source> <source>Vocal Soprano</source>
<translation type="unfinished"></translation> <translation>Gesang Sopran</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2104,7 +2104,7 @@
<message> <message>
<location filename="../../serverdlg.cpp" line="527"/> <location filename="../../serverdlg.cpp" line="527"/>
<source>Predefined Address</source> <source>Predefined Address</source>
<translation type="unfinished"></translation> <translation>Vordefinierte Adresse</translation>
</message> </message>
<message> <message>
<source>Manual</source> <source>Manual</source>

View file

@ -184,7 +184,7 @@
<message> <message>
<location filename="../../audiomixerboard.cpp" line="658"/> <location filename="../../audiomixerboard.cpp" line="658"/>
<source>Personal Mix at the Server: </source> <source>Personal Mix at the Server: </source>
<translation type="unfinished"></translation> <translation>Mezcla Personal en el Servidor: </translation>
</message> </message>
</context> </context>
<context> <context>
@ -645,7 +645,7 @@
<message> <message>
<location filename="../../clientdlg.cpp" line="703"/> <location filename="../../clientdlg.cpp" line="703"/>
<source>Central Server</source> <source>Central Server</source>
<translation type="unfinished"></translation> <translation>Servidor Central</translation>
</message> </message>
<message> <message>
<location filename="../../clientdlg.cpp" line="809"/> <location filename="../../clientdlg.cpp" line="809"/>
@ -1155,22 +1155,22 @@
<message> <message>
<location filename="../../util.h" line="581"/> <location filename="../../util.h" line="581"/>
<source>Custom</source> <source>Custom</source>
<translation type="unfinished"></translation> <translation>Personalizado</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="584"/> <location filename="../../util.h" line="584"/>
<source>All Genres</source> <source>All Genres</source>
<translation type="unfinished"></translation> <translation>Todos los Géneros</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="587"/> <location filename="../../util.h" line="587"/>
<source>Genre Rock</source> <source>Genre Rock</source>
<translation type="unfinished"></translation> <translation>Género Rock</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="590"/> <location filename="../../util.h" line="590"/>
<source>Genre Jazz</source> <source>Genre Jazz</source>
<translation type="unfinished"></translation> <translation>Género Jazz</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="593"/> <location filename="../../util.h" line="593"/>
@ -1205,7 +1205,7 @@
<message> <message>
<location filename="../../clientsettingsdlg.cpp" line="606"/> <location filename="../../clientsettingsdlg.cpp" line="606"/>
<source>Predefined Address</source> <source>Predefined Address</source>
<translation type="unfinished"></translation> <translation>Dirección Preestablecida</translation>
</message> </message>
<message> <message>
<location filename="../../clientsettingsdlg.cpp" line="646"/> <location filename="../../clientsettingsdlg.cpp" line="646"/>
@ -1478,7 +1478,7 @@
<message> <message>
<location filename="../../connectdlgbase.ui" line="35"/> <location filename="../../connectdlgbase.ui" line="35"/>
<source>List</source> <source>List</source>
<translation type="unfinished"></translation> <translation>Lista</translation>
</message> </message>
<message> <message>
<location filename="../../connectdlgbase.ui" line="45"/> <location filename="../../connectdlgbase.ui" line="45"/>
@ -1931,22 +1931,22 @@
<message> <message>
<location filename="../../util.cpp" line="1010"/> <location filename="../../util.cpp" line="1010"/>
<source>Vocal Bass</source> <source>Vocal Bass</source>
<translation type="unfinished"></translation> <translation>Voz bajo</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1011"/> <location filename="../../util.cpp" line="1011"/>
<source>Vocal Tenor</source> <source>Vocal Tenor</source>
<translation type="unfinished"></translation> <translation>Voz Tenor</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1012"/> <location filename="../../util.cpp" line="1012"/>
<source>Vocal Alto</source> <source>Vocal Alto</source>
<translation type="unfinished"></translation> <translation>Voz Alto</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1013"/> <location filename="../../util.cpp" line="1013"/>
<source>Vocal Soprano</source> <source>Vocal Soprano</source>
<translation type="unfinished"></translation> <translation>Voz Soprano</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2112,7 +2112,7 @@
<message> <message>
<location filename="../../serverdlg.cpp" line="527"/> <location filename="../../serverdlg.cpp" line="527"/>
<source>Predefined Address</source> <source>Predefined Address</source>
<translation type="unfinished"></translation> <translation>Dirección Preestablecida</translation>
</message> </message>
<message> <message>
<source>Manual</source> <source>Manual</source>

View file

@ -192,7 +192,7 @@
<message> <message>
<location filename="../../audiomixerboard.cpp" line="658"/> <location filename="../../audiomixerboard.cpp" line="658"/>
<source>Personal Mix at the Server: </source> <source>Personal Mix at the Server: </source>
<translation type="unfinished"></translation> <translation>Mixage personnel au serveur : </translation>
</message> </message>
</context> </context>
<context> <context>
@ -1163,22 +1163,22 @@
<message> <message>
<location filename="../../util.h" line="581"/> <location filename="../../util.h" line="581"/>
<source>Custom</source> <source>Custom</source>
<translation type="unfinished"></translation> <translation>Personnalisé</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="584"/> <location filename="../../util.h" line="584"/>
<source>All Genres</source> <source>All Genres</source>
<translation type="unfinished"></translation> <translation>Tous les genres</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="587"/> <location filename="../../util.h" line="587"/>
<source>Genre Rock</source> <source>Genre Rock</source>
<translation type="unfinished"></translation> <translation>Genre Rock</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="590"/> <location filename="../../util.h" line="590"/>
<source>Genre Jazz</source> <source>Genre Jazz</source>
<translation type="unfinished"></translation> <translation>Genre Jazz</translation>
</message> </message>
<message> <message>
<location filename="../../util.h" line="593"/> <location filename="../../util.h" line="593"/>
@ -1187,7 +1187,7 @@
</message> </message>
<message> <message>
<source>Default (North America)</source> <source>Default (North America)</source>
<translation type="vanished">Défault (Amérique du Nord)</translation> <translation type="vanished">Défaut (Amérique du Nord)</translation>
</message> </message>
<message> <message>
<location filename="../../clientsettingsdlg.cpp" line="369"/> <location filename="../../clientsettingsdlg.cpp" line="369"/>
@ -1482,7 +1482,7 @@
<message> <message>
<location filename="../../connectdlgbase.ui" line="35"/> <location filename="../../connectdlgbase.ui" line="35"/>
<source>List</source> <source>List</source>
<translation type="unfinished"></translation> <translation>Liste</translation>
</message> </message>
<message> <message>
<location filename="../../connectdlgbase.ui" line="45"/> <location filename="../../connectdlgbase.ui" line="45"/>
@ -1935,22 +1935,22 @@
<message> <message>
<location filename="../../util.cpp" line="1010"/> <location filename="../../util.cpp" line="1010"/>
<source>Vocal Bass</source> <source>Vocal Bass</source>
<translation type="unfinished"></translation> <translation>Voix basse</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1011"/> <location filename="../../util.cpp" line="1011"/>
<source>Vocal Tenor</source> <source>Vocal Tenor</source>
<translation type="unfinished"></translation> <translation>Voix ténor</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1012"/> <location filename="../../util.cpp" line="1012"/>
<source>Vocal Alto</source> <source>Vocal Alto</source>
<translation type="unfinished"></translation> <translation>Voix alto</translation>
</message> </message>
<message> <message>
<location filename="../../util.cpp" line="1013"/> <location filename="../../util.cpp" line="1013"/>
<source>Vocal Soprano</source> <source>Vocal Soprano</source>
<translation type="unfinished"></translation> <translation>Voix soprano</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2250,7 +2250,7 @@
<message> <message>
<location filename="../../../linux/sound.cpp" line="40"/> <location filename="../../../linux/sound.cpp" line="40"/>
<source>The Jack server is not running. This software requires a Jack server to run. Normally if the Jack server is not running this software will automatically start the Jack server. It seems that this auto start has not worked. Try to start the Jack server manually.</source> <source>The Jack server is not running. This software requires a Jack server to run. Normally if the Jack server is not running this software will automatically start the Jack server. It seems that this auto start has not worked. Try to start the Jack server manually.</source>
<translation type="unfinished"></translation> <translation>Le serveur Jack n&apos;est pas démarré. Ce logiciel nécessite un serveur Jack pour fonctionner. Normalement, si le serveur Jack n&apos;est pas en cours d&apos;exécution, ce logiciel démarrera automatiquement le serveur Jack. Il semble que ce démarrage automatique n&apos;ait pas fonctionné. Essayez de démarrer le serveur Jack manuellement.</translation>
</message> </message>
<message> <message>
<location filename="../../../linux/sound.cpp" line="60"/> <location filename="../../../linux/sound.cpp" line="60"/>
@ -2395,7 +2395,7 @@
<message> <message>
<location filename="../../soundbase.cpp" line="146"/> <location filename="../../soundbase.cpp" line="146"/>
<source>Please restart the software.</source> <source>Please restart the software.</source>
<translation type="unfinished"></translation> <translation>Veuillez redémarrer le logiciel</translation>
</message> </message>
<message> <message>
<location filename="../../soundbase.cpp" line="147"/> <location filename="../../soundbase.cpp" line="147"/>

View file

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

View file

@ -599,6 +599,9 @@ CreateAndSendChanListForAllConChannels();
vecChannels[iChID].CreateLicReqMes ( eLicenceType ); vecChannels[iChID].CreateLicReqMes ( eLicenceType );
} }
// send version info (for, e.g., feature activation in the client)
vecChannels[iChID].CreateVersionAndOSMes();
// reset the conversion buffers // reset the conversion buffers
DoubleFrameSizeConvBufIn[iChID].Reset(); DoubleFrameSizeConvBufIn[iChID].Reset();
DoubleFrameSizeConvBufOut[iChID].Reset(); DoubleFrameSizeConvBufOut[iChID].Reset();

View file

@ -973,34 +973,34 @@ CVector<CInstPictures::CInstPictProps>& CInstPictures::GetTable()
// instrument picture data base initialization // instrument picture data base initialization
// NOTE: Do not change the order of any instrument in the future! // NOTE: Do not change the order of any instrument in the future!
// NOTE: The very first entry is the "not used" element per definition. // 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", "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/instrdrumset.png", IC_PERCUSSION_INSTRUMENT ) ); 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/instrdjembe.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/instreguitar.png", IC_PLUCKING_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/instraguitar.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/instrbassguitar.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/instrkeyboard.png", IC_KEYBOARD_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/instrsynthesizer.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/instrgrandpiano.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/instraccordeon.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/instrvocal.png", IC_OTHER_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/instrmicrophone.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/instrharmonica.png", IC_WIND_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/instrtrumpet.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/instrtrombone.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/instrfrenchhorn.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/instrtuba.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/instrsaxophone.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/instrclarinet.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/instrflute.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/instrviolin.png", IC_STRING_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/instrcello.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/instrdoublebass.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/instrrecorder.png", IC_OTHER_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/instrstreamer.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/instrlistener.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/instrguitarvocal.png", IC_MULTIPLE_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/instrkeyboardvocal.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", "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", "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 ) ); vecDataBase.Add ( CInstPictProps ( QCoreApplication::translate ( "CMusProfDlg", "Oboe" ), ":/png/instr/res/instruments/oboe.png", IC_WIND_INSTRUMENT ) );