Skip to content

Commit 89f68fb

Browse files
committed
Merge remote-tracking branch 'upst/master' into autobuild/stable2
2 parents 95102be + fe29dad commit 89f68fb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+528
-153
lines changed

ChangeLog

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44

55
### 3.6.2dev <- NOTE: the release version number will be 3.7.0 ###
66

7-
- introduced new server lists: Any Genre 2, Choral/Barbershop (#875)
7+
- introduced new server lists: Any Genre 3, Choral/Barbershop (#875),
8+
also renamed Default to Any Genre 1, Any Genre to Any Genre 2,
9+
and Classical/Folk/Choral to Classical/Folk.
10+
11+
- central server addresses are now in jamulus.io instead of fischvolk.de (#919)
812

913
- show --clientname as first word in title to avoid clipping in Windows task bar (#789)
1014

@@ -13,12 +17,10 @@
1317
- support http links in the chat dialog, coded by hoffie (#879)
1418

1519
- support Github actions for CodeQL, Publish Release, Autobuild Flatpak,
16-
coded by pljones, ann0see, ranfdev
20+
coded by pljones, nefarius2001, ann0see, ranfdev.
1721

1822
- more detailed version number of unreleased version, coded by nefarius2001 (#475)
1923

20-
- remove ConsoleWriterFactory (#926)
21-
2224
- add new --serverpublicip option to support central servers behind NAT,
2325
coded by hoffie (#954)
2426

@@ -28,7 +30,17 @@
2830

2931
- Highlight the fact that the server is recording in the Mixerboard title (#968), coded by dcorson-ticino.com
3032

31-
TODO fix crash if settings are changed in ASIO4All during a connection (contained in #796)
33+
- Implement new --ctrlmidich syntax allowing to specify fader, pan, mute,
34+
solo buttons (#945). Implementation for mute&solo buttons for now is
35+
only for toggle controllers and does not support headless operation yet.
36+
37+
- Move ASIO Setup button on Windows below driver selection (#977), coded by mulyaj and ann0see
38+
39+
- Gray out input levels and show a message if you're not connected to a server (#847)
40+
41+
- bug fix: remove ConsoleWriterFactory - to resolve suspected memory leak (#926)
42+
43+
- bug fix: fix crash if settings are changed in ASIO4ALL during a connection (contained in #796). Reverts #727 for Windows
3244

3345

3446

Jamulus.pro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,6 @@ HEADERS += src/buffer.h \
400400
src/channel.h \
401401
src/client.h \
402402
src/global.h \
403-
src/multicolorled.h \
404403
src/protocol.h \
405404
src/recorder/jamcontroller.h \
406405
src/server.h \
@@ -423,7 +422,8 @@ HEADERS_GUI = src/audiomixerboard.h \
423422
src/clientdlg.h \
424423
src/serverdlg.h \
425424
src/levelmeter.h \
426-
src/analyzerconsole.h
425+
src/analyzerconsole.h \
426+
src/multicolorled.h
427427

428428
HEADERS_OPUS = libs/opus/celt/arch.h \
429429
libs/opus/celt/bands.h \

android/sound.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
/* Classes ********************************************************************/
3636
class CSound : public CSoundBase, public oboe::AudioStreamCallback
3737
{
38+
Q_OBJECT
39+
3840
public:
3941
static const uint8_t RING_FACTOR;
4042
CSound ( void (*fpNewProcessCallback) ( CVector<short>& psData, void* arg ),

ios/sound.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
/* Classes ********************************************************************/
3434
class CSound : public CSoundBase
3535
{
36+
Q_OBJECT
37+
3638
public:
3739
CSound ( void (*fpNewProcessCallback) ( CVector<short>& psData, void* arg ),
3840
void* arg,

linux/sound.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@
5959
#if WITH_SOUND
6060
class CSound : public CSoundBase
6161
{
62+
Q_OBJECT
63+
6264
public:
6365
CSound ( void (*fpNewProcessCallback) ( CVector<short>& psData, void* arg ),
6466
void* arg,

mac/sound.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
/* Classes ********************************************************************/
3737
class CSound : public CSoundBase
3838
{
39+
Q_OBJECT
40+
3941
public:
4042
CSound ( void (*fpNewProcessCallback) ( CVector<short>& psData, void* arg ),
4143
void* arg,

src/audiomixerboard.cpp

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ void CChannelFader::SetRemoteFaderIsMute ( const bool bIsMute )
458458
if ( bIsMute )
459459
{
460460
// show orange utf8 SPEAKER WITH CANCELLATION STROKE (U+1F507)
461-
pInfoLabel->setText ( "<font color=""orange"">&#128263;</font>" );
461+
pInfoLabel->setText ( "<font color=\"orange\">&#128263;</font>" );
462462
}
463463
else
464464
{
@@ -1246,6 +1246,47 @@ void CAudioMixerBoard::SetFaderLevel ( const int iChannelIdx,
12461246
}
12471247
}
12481248

1249+
void CAudioMixerBoard::SetPanValue ( const int iChannelIdx,
1250+
const int iValue )
1251+
{
1252+
// only apply new pan value if channel index is valid and the panner is visible
1253+
if ( ( iChannelIdx >= 0 ) && ( iChannelIdx < MAX_NUM_CHANNELS )
1254+
&& bDisplayPans )
1255+
{
1256+
if ( vecpChanFader[iChannelIdx]->IsVisible() )
1257+
{
1258+
vecpChanFader[iChannelIdx]->SetPanValue ( iValue );
1259+
}
1260+
}
1261+
}
1262+
1263+
void CAudioMixerBoard::SetFaderIsSolo ( const int iChannelIdx,
1264+
const bool bIsSolo )
1265+
{
1266+
// only apply solo if channel index is valid and the fader is visible
1267+
if ( ( iChannelIdx >= 0 ) && ( iChannelIdx < MAX_NUM_CHANNELS ) )
1268+
1269+
{
1270+
if ( vecpChanFader[iChannelIdx]->IsVisible() )
1271+
{
1272+
vecpChanFader[iChannelIdx]->SetFaderIsSolo ( bIsSolo );
1273+
}
1274+
}
1275+
}
1276+
1277+
void CAudioMixerBoard::SetFaderIsMute ( const int iChannelIdx,
1278+
const bool bIsMute )
1279+
{
1280+
// only apply mute if channel index is valid and the fader is visible
1281+
if ( ( iChannelIdx >= 0 ) && ( iChannelIdx < MAX_NUM_CHANNELS ) )
1282+
{
1283+
if ( vecpChanFader[iChannelIdx]->IsVisible() )
1284+
{
1285+
vecpChanFader[iChannelIdx]->SetFaderIsMute ( bIsMute );
1286+
}
1287+
}
1288+
}
1289+
12491290
void CAudioMixerBoard::SetAllFaderLevelsToNewClientLevel()
12501291
{
12511292
QMutexLocker locker ( &Mutex );

src/audiomixerboard.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,16 @@ class CAudioMixerBoard :
208208
void SetMyChannelID ( const int iChannelIdx ) { iMyChannelID = iChannelIdx; }
209209

210210
void SetFaderLevel ( const int iChannelIdx,
211-
const int iValue );
211+
const int iValue );
212+
213+
void SetPanValue ( const int iChannelIdx,
214+
const int iValue );
215+
216+
void SetFaderIsSolo ( const int iChannelIdx,
217+
const bool bIsSolo );
218+
219+
void SetFaderIsMute ( const int iChannelIdx,
220+
const bool bIsMute );
212221

213222
void SetNumMixerPanelRows ( const int iNNumMixerPanelRows );
214223
int GetNumMixerPanelRows() { return iNumMixerPanelRows; }

src/client.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,15 @@ CClient::CClient ( const quint16 iPortNumber,
184184
QObject::connect ( &Sound, &CSound::ControllerInFaderLevel,
185185
this, &CClient::OnControllerInFaderLevel );
186186

187+
QObject::connect ( &Sound, &CSound::ControllerInPanValue,
188+
this, &CClient::OnControllerInPanValue );
189+
190+
QObject::connect ( &Sound, &CSound::ControllerInFaderIsSolo,
191+
this, &CClient::OnControllerInFaderIsSolo );
192+
193+
QObject::connect ( &Sound, &CSound::ControllerInFaderIsMute,
194+
this, &CClient::OnControllerInFaderIsMute );
195+
187196
QObject::connect ( &Socket, &CHighPrioSocket::InvalidPacketReceived,
188197
this, &CClient::OnInvalidPacketReceived );
189198

@@ -707,6 +716,43 @@ void CClient::OnControllerInFaderLevel ( int iChannelIdx,
707716
emit ControllerInFaderLevel ( iChannelIdx, iValue );
708717
}
709718

719+
void CClient::OnControllerInPanValue ( int iChannelIdx,
720+
int iValue )
721+
{
722+
// in case of a headless client the panners cannot be moved so we need
723+
// to send the controller information directly to the server
724+
#ifdef HEADLESS
725+
// channel index is valid
726+
SetRemoteChanPan ( iChannelIdx, static_cast<float>( iValue ) / AUD_MIX_PAN_MAX);
727+
#endif
728+
729+
emit ControllerInPanValue ( iChannelIdx, iValue );
730+
}
731+
732+
void CClient::OnControllerInFaderIsSolo ( int iChannelIdx,
733+
bool bIsSolo )
734+
{
735+
// in case of a headless client the buttons are not displayed so we need
736+
// to send the controller information directly to the server
737+
#ifdef HEADLESS
738+
// FIXME: no idea what to do here.
739+
#endif
740+
741+
emit ControllerInFaderIsSolo ( iChannelIdx, bIsSolo );
742+
}
743+
744+
void CClient::OnControllerInFaderIsMute ( int iChannelIdx,
745+
bool bIsMute )
746+
{
747+
// in case of a headless client the buttons are not displayed so we need
748+
// to send the controller information directly to the server
749+
#ifdef HEADLESS
750+
// FIXME: no idea what to do here.
751+
#endif
752+
753+
emit ControllerInFaderIsMute ( iChannelIdx, bIsMute );
754+
}
755+
710756
void CClient::OnClientIDReceived ( int iChanID )
711757
{
712758
// for headless mode we support to mute our own signal in the personal mix

src/client.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,9 @@ protected slots:
391391

392392
void OnSndCrdReinitRequest ( int iSndCrdResetType );
393393
void OnControllerInFaderLevel ( int iChannelIdx, int iValue );
394+
void OnControllerInPanValue ( int iChannelIdx, int iValue );
395+
void OnControllerInFaderIsSolo ( int iChannelIdx, bool bIsSolo );
396+
void OnControllerInFaderIsMute ( int iChannelIdx, bool bIsMute );
394397
void OnClientIDReceived ( int iChanID );
395398

396399
signals:
@@ -426,4 +429,7 @@ protected slots:
426429
void Disconnected();
427430
void SoundDeviceChanged ( QString strError );
428431
void ControllerInFaderLevel ( int iChannelIdx, int iValue );
432+
void ControllerInPanValue ( int iChannelIdx, int iValue );
433+
void ControllerInFaderIsSolo ( int iChannelIdx, bool bIsSolo );
434+
void ControllerInFaderIsMute ( int iChannelIdx, bool bIsMute );
429435
};

0 commit comments

Comments
 (0)