added an indicator that another client has muted me (#257)

This commit is contained in:
Volker Fischer 2020-05-21 18:26:33 +02:00
parent 4b8c7de166
commit ce0024cb74
5 changed files with 70 additions and 41 deletions

View file

@ -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

View file

@ -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"">&#128263;</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

View file

@ -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 );

View file

@ -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

View file

@ -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 ); }