added an indicator that another client has muted me (#257)
This commit is contained in:
parent
4b8c7de166
commit
ce0024cb74
5 changed files with 70 additions and 41 deletions
56
ChangeLog
56
ChangeLog
|
@ -4,25 +4,19 @@
|
||||||
|
|
||||||
3.5.4git
|
3.5.4git
|
||||||
|
|
||||||
- introduce genre-based server lists (Ticket #139)
|
- introduce genre-based server lists (#139)
|
||||||
|
|
||||||
- implement panning for channels, coded by tarmoj (Ticket #52, #145)
|
- implement panning for channels, coded by tarmoj (#52, #145)
|
||||||
|
|
||||||
|
- added an indicator that another client has muted me (#257)
|
||||||
|
|
||||||
- duplicate Central Server type dropdown to Connection Setup (#157)
|
- duplicate Central Server type dropdown to Connection Setup (#157)
|
||||||
|
|
||||||
- added vocal bass/tenor/alto/soprano instrument icons created by Alberstein8 (Ticket #131)
|
- added vocal bass/tenor/alto/soprano instrument icons created by Alberstein8 (#131)
|
||||||
|
|
||||||
- support intermediate Reaper RPP file while recording, coded by pljones (Ticket #170)
|
- support intermediate Reaper RPP file while recording, coded by pljones (#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 WIP support internationalization
|
|
||||||
|
|
||||||
TODO show mute state of others
|
|
||||||
|
|
||||||
TODO fix incorrect what's this help texts
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,23 +31,23 @@ TODO fix incorrect what's this help texts
|
||||||
- for CoreAudio and 4 channel input, support mixing channels 1&2 with 3&4
|
- for CoreAudio and 4 channel input, support mixing channels 1&2 with 3&4
|
||||||
|
|
||||||
- added bassoon/oboe/harp instrument icons created by dszgit,
|
- added bassoon/oboe/harp instrument icons created by dszgit,
|
||||||
congas/bongo created by bspeer (Ticket #131)
|
congas/bongo created by bspeer (#131)
|
||||||
|
|
||||||
- link to docs from application Help menu (Ticket #90)
|
- link to docs from application Help menu (#90)
|
||||||
|
|
||||||
- support Mac CoreAudio aggregated devices (Ticket #138)
|
- support Mac CoreAudio aggregated devices (#138)
|
||||||
|
|
||||||
- added translations: French by trebmuh, Portuguese by Snayler,
|
- added translations: French by trebmuh, Portuguese by Snayler,
|
||||||
Spanish by ignotus666, Dutch by jerogee, German by corrados (Ticket #77)
|
Spanish by ignotus666, Dutch by jerogee, German by corrados (#77)
|
||||||
|
|
||||||
- new design for the About dialog (Ticket #189)
|
- new design for the About dialog (#189)
|
||||||
|
|
||||||
- new command line option -d to disconnect all clients on shutdown of the server (Ticket #161)
|
- new command line option -d to disconnect all clients on shutdown of the server (#161)
|
||||||
|
|
||||||
- bug fix: for mono capture jack audio interface Jamulus complains it
|
- bug fix: for mono capture jack audio interface Jamulus complains it
|
||||||
cannot make connections (Ticket #137)
|
cannot make connections (#137)
|
||||||
|
|
||||||
- bug fix: fixed that Jamulus segfaults when jackd is restarted (Ticket #122, #127)
|
- bug fix: fixed that Jamulus segfaults when jackd is restarted (#122, #127)
|
||||||
|
|
||||||
- bug fix: better handling of disconnect message in the client
|
- bug fix: better handling of disconnect message in the client
|
||||||
|
|
||||||
|
@ -68,21 +62,21 @@ TODO fix incorrect what's this help texts
|
||||||
|
|
||||||
- improved Mac installer, coded by doloopuntil
|
- improved Mac installer, coded by doloopuntil
|
||||||
|
|
||||||
- support to open ASIO driver setup(s) if startup failed due to incorrect driver settings (Ticket #117)
|
- support to open ASIO driver setup(s) if startup failed due to incorrect driver settings (#117)
|
||||||
|
|
||||||
- added -v/--version command line argument to output version information (Ticket #121)
|
- added -v/--version command line argument to output version information (#121)
|
||||||
|
|
||||||
- added bodhran and other instrument icons, bodhran created by bomm (Ticket #131)
|
- added bodhran and other instrument icons, bodhran created by bomm (#131)
|
||||||
|
|
||||||
- bug fix: if small network buffers are used we get much better audio quality when drop outs occur
|
- bug fix: if small network buffers are used we get much better audio quality when drop outs occur
|
||||||
|
|
||||||
- bug fix: if names given with the -o option were too long, the server registration failed (Ticket #91)
|
- bug fix: if names given with the -o option were too long, the server registration failed (#91)
|
||||||
|
|
||||||
- bug fix: audio level changes if Buffer Delay is changed (Ticket #106)
|
- bug fix: audio level changes if Buffer Delay is changed (#106)
|
||||||
|
|
||||||
- bug fix: do not reset fader level meters if number of clients change
|
- bug fix: do not reset fader level meters if number of clients change
|
||||||
|
|
||||||
- bug fix: fixed a crash with JackRouter 64 bit ASIO driver (Ticket #93, thanks to elliotclee)
|
- bug fix: fixed a crash with JackRouter 64 bit ASIO driver (#93, thanks to elliotclee)
|
||||||
|
|
||||||
|
|
||||||
3.5.1 (2020-04-18)
|
3.5.1 (2020-04-18)
|
||||||
|
@ -114,21 +108,21 @@ TODO fix incorrect what's this help texts
|
||||||
|
|
||||||
- the unit of the mixer faders is now dB using the range -50 dB to 0 dB
|
- the unit of the mixer faders is now dB using the range -50 dB to 0 dB
|
||||||
|
|
||||||
- increased LED luminance (Ticket #71)
|
- increased LED luminance (#71)
|
||||||
|
|
||||||
- bug fix: the server welcome message may appear twice if the server list was double clicked
|
- bug fix: the server welcome message may appear twice if the server list was double clicked
|
||||||
|
|
||||||
|
|
||||||
3.4.7 (2020-04-11)
|
3.4.7 (2020-04-11)
|
||||||
|
|
||||||
- added support for alternative Central Servers to solve the 200 server registration limit (Ticket #50)
|
- added support for alternative Central Servers to solve the 200 server registration limit (#50)
|
||||||
|
|
||||||
- added support for 64 samples frame size in the server (if server runs in 64 or 128 samples
|
- added support for 64 samples frame size in the server (if server runs in 64 or 128 samples
|
||||||
mode it is still compatible to both, 64 and 128 samples frame size clients)
|
mode it is still compatible to both, 64 and 128 samples frame size clients)
|
||||||
|
|
||||||
- added multichannel CoreAudio support, coded by emlynmac (#44)
|
- added multichannel CoreAudio support, coded by emlynmac (#44)
|
||||||
|
|
||||||
- fixed server not visible if in same local network, coded by pljones (Ticket #27)
|
- fixed server not visible if in same local network, coded by pljones (#27)
|
||||||
|
|
||||||
|
|
||||||
3.4.6 (2020-04-09)
|
3.4.6 (2020-04-09)
|
||||||
|
@ -139,7 +133,7 @@ TODO fix incorrect what's this help texts
|
||||||
|
|
||||||
- store fader mute state in the ini file, coded by doloopuntil
|
- store fader mute state in the ini file, coded by doloopuntil
|
||||||
|
|
||||||
- fixed low-res icon issue (Ticket #28)
|
- fixed low-res icon issue (#28)
|
||||||
|
|
||||||
|
|
||||||
3.4.5 (2020-04-04)
|
3.4.5 (2020-04-04)
|
||||||
|
@ -161,7 +155,7 @@ TODO fix incorrect what's this help texts
|
||||||
|
|
||||||
- added support for controlling the audio mixer faders with a MIDI controller (MacOS and Linux)
|
- added support for controlling the audio mixer faders with a MIDI controller (MacOS and Linux)
|
||||||
|
|
||||||
- added command line argument for disabling auto jack connection (Ticket #49)
|
- added command line argument for disabling auto jack connection (#49)
|
||||||
|
|
||||||
- audio recording for the server, coded by pljones
|
- audio recording for the server, coded by pljones
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ CChannelFader::CChannelFader ( QWidget* pNW,
|
||||||
pFader = new QSlider ( Qt::Vertical, pLevelsBox );
|
pFader = new QSlider ( Qt::Vertical, pLevelsBox );
|
||||||
pPan = new QDial ( pLevelsBox );
|
pPan = new QDial ( pLevelsBox );
|
||||||
pPanLabel = new QLabel ( tr ( "Pan" ) , pLevelsBox );
|
pPanLabel = new QLabel ( tr ( "Pan" ) , pLevelsBox );
|
||||||
|
pInfoLabel = new QLabel ( "", pLevelsBox );
|
||||||
|
|
||||||
pMuteSoloBox = new QWidget ( pFrame );
|
pMuteSoloBox = new QWidget ( pFrame );
|
||||||
pcbMute = new QCheckBox ( tr ( "Mute" ), pMuteSoloBox );
|
pcbMute = new QCheckBox ( tr ( "Mute" ), pMuteSoloBox );
|
||||||
|
@ -111,6 +112,7 @@ CChannelFader::CChannelFader ( QWidget* pNW,
|
||||||
pMuteSoloGrid->addWidget ( pcbMute, 0, Qt::AlignLeft );
|
pMuteSoloGrid->addWidget ( pcbMute, 0, Qt::AlignLeft );
|
||||||
pMuteSoloGrid->addWidget ( pcbSolo, 0, Qt::AlignLeft );
|
pMuteSoloGrid->addWidget ( pcbSolo, 0, Qt::AlignLeft );
|
||||||
|
|
||||||
|
pMainGrid->addWidget ( pInfoLabel, 0, Qt::AlignHCenter );
|
||||||
pMainGrid->addLayout ( pPanGrid );
|
pMainGrid->addLayout ( pPanGrid );
|
||||||
pMainGrid->addWidget ( pLevelsBox, 0, Qt::AlignHCenter );
|
pMainGrid->addWidget ( pLevelsBox, 0, Qt::AlignHCenter );
|
||||||
pMainGrid->addWidget ( pMuteSoloBox, 0, Qt::AlignHCenter );
|
pMainGrid->addWidget ( pMuteSoloBox, 0, Qt::AlignHCenter );
|
||||||
|
@ -135,6 +137,13 @@ CChannelFader::CChannelFader ( QWidget* pNW,
|
||||||
pFader->setAccessibleName ( tr ( "Local mix level setting of the current audio "
|
pFader->setAccessibleName ( tr ( "Local mix level setting of the current audio "
|
||||||
"channel at the server" ) );
|
"channel at the server" ) );
|
||||||
|
|
||||||
|
pInfoLabel->setWhatsThis ( "<b>" + tr ( "Status Indicator" ) + ":</b> " + tr (
|
||||||
|
"Shows a status indication about the client which is assigned to this channel. "
|
||||||
|
"Supported indicators are:" ) + "<ul><li>" + tr (
|
||||||
|
"Speaker with cancellation stroke: Indicates that the other client has muted you." ) +
|
||||||
|
"</li></ul>" );
|
||||||
|
pInfoLabel->setAccessibleName ( tr ( "Status indicator label" ) );
|
||||||
|
|
||||||
pPan->setWhatsThis ( "<b>" + tr ( "Panning" ) + ":</b> " + tr (
|
pPan->setWhatsThis ( "<b>" + tr ( "Panning" ) + ":</b> " + tr (
|
||||||
"Sets the panning position from Left to Right of the channel. "
|
"Sets the panning position from Left to Right of the channel. "
|
||||||
"Works only in stero or preferably mono in/stereo out mode." ) );
|
"Works only in stero or preferably mono in/stereo out mode." ) );
|
||||||
|
@ -275,6 +284,9 @@ void CChannelFader::SetupFaderTag ( const ESkillLevel eSkillLevel )
|
||||||
|
|
||||||
void CChannelFader::Reset()
|
void CChannelFader::Reset()
|
||||||
{
|
{
|
||||||
|
// general initializations
|
||||||
|
SetRemoteFaderIsMute ( false );
|
||||||
|
|
||||||
// init gain and pan 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 );
|
pFader->setValue ( AUD_MIX_FADER_MAX );
|
||||||
pPan->setValue ( AUD_MIX_PAN_MAX / 2 );
|
pPan->setValue ( AUD_MIX_PAN_MAX / 2 );
|
||||||
|
@ -339,6 +351,19 @@ void CChannelFader::SetFaderIsMute ( const bool bIsMute )
|
||||||
pcbMute->setChecked ( bIsMute );
|
pcbMute->setChecked ( bIsMute );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CChannelFader::SetRemoteFaderIsMute ( const bool bIsMute )
|
||||||
|
{
|
||||||
|
if ( bIsMute )
|
||||||
|
{
|
||||||
|
// utf8 SPEAKER WITH CANCELLATION STROKE (U+1F507)
|
||||||
|
pInfoLabel->setText ( "<font color=""orange"">🔇</font>" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pInfoLabel->setText ( "" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CChannelFader::SendFaderLevelToServer ( const int iLevel )
|
void CChannelFader::SendFaderLevelToServer ( const int iLevel )
|
||||||
{
|
{
|
||||||
// if mute flag is set or other channel is on solo, do not apply the new
|
// if mute flag is set or other channel is on solo, do not apply the new
|
||||||
|
@ -831,6 +856,19 @@ void CAudioMixerBoard::SetFaderLevel ( const int iChannelIdx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CAudioMixerBoard::SetRemoteFaderIsMute ( const int iChannelIdx,
|
||||||
|
const bool bIsMute )
|
||||||
|
{
|
||||||
|
// only apply remote mute state if channel index is valid and the fader is visible
|
||||||
|
if ( ( iChannelIdx >= 0 ) && ( iChannelIdx < MAX_NUM_CHANNELS ) )
|
||||||
|
{
|
||||||
|
if ( vecpChanFader[iChannelIdx]->IsVisible() )
|
||||||
|
{
|
||||||
|
vecpChanFader[iChannelIdx]->SetRemoteFaderIsMute ( bIsMute );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CAudioMixerBoard::UpdateSoloStates()
|
void CAudioMixerBoard::UpdateSoloStates()
|
||||||
{
|
{
|
||||||
// first check if any channel has a solo state active
|
// first check if any channel has a solo state active
|
||||||
|
|
|
@ -66,6 +66,7 @@ public:
|
||||||
void SetPanValue ( const int iPan );
|
void SetPanValue ( const int iPan );
|
||||||
void SetFaderIsSolo ( const bool bIsSolo );
|
void SetFaderIsSolo ( const bool bIsSolo );
|
||||||
void SetFaderIsMute ( const bool bIsMute );
|
void SetFaderIsMute ( const bool bIsMute );
|
||||||
|
void SetRemoteFaderIsMute ( const bool bIsMute );
|
||||||
int GetFaderLevel() { return pFader->value(); }
|
int GetFaderLevel() { return pFader->value(); }
|
||||||
int GetPanValue() { return pPan->value(); }
|
int GetPanValue() { return pPan->value(); }
|
||||||
void Reset();
|
void Reset();
|
||||||
|
@ -86,6 +87,7 @@ protected:
|
||||||
QSlider* pFader;
|
QSlider* pFader;
|
||||||
QDial* pPan;
|
QDial* pPan;
|
||||||
QLabel* pPanLabel;
|
QLabel* pPanLabel;
|
||||||
|
QLabel* pInfoLabel;
|
||||||
|
|
||||||
QCheckBox* pcbMute;
|
QCheckBox* pcbMute;
|
||||||
QCheckBox* pcbSolo;
|
QCheckBox* pcbSolo;
|
||||||
|
@ -143,6 +145,7 @@ public:
|
||||||
void SetGUIDesign ( const EGUIDesign eNewDesign );
|
void SetGUIDesign ( const EGUIDesign eNewDesign );
|
||||||
void SetDisplayChannelLevels ( const bool eNDCL );
|
void SetDisplayChannelLevels ( const bool eNDCL );
|
||||||
void SetPanIsSupported();
|
void SetPanIsSupported();
|
||||||
|
void SetRemoteFaderIsMute ( const int iChannelIdx, const bool bIsMute );
|
||||||
|
|
||||||
void SetFaderLevel ( const int iChannelIdx,
|
void SetFaderLevel ( const int iChannelIdx,
|
||||||
const int iValue );
|
const int iValue );
|
||||||
|
|
|
@ -780,14 +780,6 @@ void CClientDlg::OnChatTextReceived ( QString strChatText )
|
||||||
UpdateDisplay();
|
UpdateDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CClientDlg::OnMuteStateHasChangedReceived ( int iChanID, bool bIsMuted )
|
|
||||||
{
|
|
||||||
|
|
||||||
// TEST
|
|
||||||
qDebug() << "mute state changed: iChanID " << iChanID << " bIsMuted " << bIsMuted;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void CClientDlg::OnLicenceRequired ( ELicenceType eLicenceType )
|
void CClientDlg::OnLicenceRequired ( ELicenceType eLicenceType )
|
||||||
{
|
{
|
||||||
// right now only the creative common licence is supported
|
// right now only the creative common licence is supported
|
||||||
|
|
|
@ -167,7 +167,6 @@ public slots:
|
||||||
|
|
||||||
void OnConClientListMesReceived ( CVector<CChannelInfo> vecChanInfo );
|
void OnConClientListMesReceived ( CVector<CChannelInfo> vecChanInfo );
|
||||||
void OnChatTextReceived ( QString strChatText );
|
void OnChatTextReceived ( QString strChatText );
|
||||||
void OnMuteStateHasChangedReceived ( int iChanID, bool bIsMuted );
|
|
||||||
void OnLicenceRequired ( ELicenceType eLicenceType );
|
void OnLicenceRequired ( ELicenceType eLicenceType );
|
||||||
|
|
||||||
void OnChangeChanGain ( int iId, double dGain )
|
void OnChangeChanGain ( int iId, double dGain )
|
||||||
|
@ -199,6 +198,9 @@ public slots:
|
||||||
CVector<CChannelInfo> vecChanInfo )
|
CVector<CChannelInfo> vecChanInfo )
|
||||||
{ ConnectDlg.SetConnClientsList ( InetAddr, vecChanInfo ); }
|
{ ConnectDlg.SetConnClientsList ( InetAddr, vecChanInfo ); }
|
||||||
|
|
||||||
|
void OnMuteStateHasChangedReceived ( int iChanID, bool bIsMuted )
|
||||||
|
{ MainMixerBoard->SetRemoteFaderIsMute ( iChanID, bIsMuted ); }
|
||||||
|
|
||||||
void OnCLChannelLevelListReceived ( CHostAddress /* unused */,
|
void OnCLChannelLevelListReceived ( CHostAddress /* unused */,
|
||||||
CVector<uint16_t> vecLevelList )
|
CVector<uint16_t> vecLevelList )
|
||||||
{ MainMixerBoard->SetChannelLevels ( vecLevelList ); }
|
{ MainMixerBoard->SetChannelLevels ( vecLevelList ); }
|
||||||
|
|
Loading…
Reference in a new issue