Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions .github/workflows/autobuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -287,10 +287,20 @@ jobs:
- name: Checkout code
uses: actions/checkout@v7
with:
# only Android needs the oboe submodule, so don't fetch it for other builds
submodules: ${{ matrix.config.target_os == 'android' }}
submodules: false
fetch-depth: ${{ matrix.config.checkout_fetch_depth || '1' }}

- name: Initialize Submodules
shell: bash
run: |
# clone mverb for all platforms
git submodule update --init libs/mverb

# clone oboe only for android builds
if [[ "${{ matrix.config.target_os }}" == "android" ]]; then
git submodule update --init libs/oboe
fi

- name: Cache Mac dependencies
if: matrix.config.target_os == 'macos'
uses: actions/cache@v6
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[submodule "libs/oboe"]
path = libs/oboe
url = ../../google/oboe.git
[submodule "libs/mverb"]
path = libs/mverb
url = https://github.com/martineastwood/mverb.git
14 changes: 13 additions & 1 deletion COMPILING.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,19 @@ First of all, you need to get the Jamulus source code. You can either download i
- For .tar.gz [use this link](https://github.com/jamulussoftware/jamulus/archive/latest.tar.gz) to download the latest release
- For .zip [use this link](https://github.com/jamulussoftware/jamulus/archive/latest.zip)
- If you use `git`, [set it up](https://docs.github.com/en/get-started/quickstart/set-up-git) – preferably with SSH if you want to contribute.
Then run `git clone git@github.com:jamulussoftware/jamulus` in Terminal to get the bleeding edge version directly from GitHub.
Then run
```
git clone git@github.com:jamulussoftware/jamulus
```
in Terminal to get the bleeding edge version directly from GitHub.
- The reverberation is done by MVerb and you need to pull it in as a submodule.
```
# Change into the jamulus/ directory
cd jamulus
# Initialize submodule MVerb
git submodule update --init libs/mverb
```


## Linux

Expand Down
5 changes: 4 additions & 1 deletion Jamulus.pro
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ DEFINES += APP_VERSION=\\\"$$VERSION\\\" \
DEFINES += QT_NO_DEPRECATED_WARNINGS

win32 {
# fixes error C7525: inline variables require at least '/std:c++17'
CONFIG += c++17
DEFINES -= UNICODE # fixes issue with ASIO SDK (asiolist.cpp is not unicode compatible)
DEFINES += NOMINMAX # solves a compiler error in qdatetime.h (Qt5)
RC_FILE = src/res/win-mainicon.rc
Expand Down Expand Up @@ -403,7 +405,8 @@ HEADERS += src/plugins/audioreverb.h \
src/recorder/jamrecorder.h \
src/recorder/creaperproject.h \
src/recorder/cwavestream.h \
src/signalhandler.h
src/signalhandler.h \
libs/mverb/MVerb.h

!contains(CONFIG, "serveronly") {
HEADERS += src/client.h \
Expand Down
1 change: 1 addition & 0 deletions libs/mverb
Submodule mverb added at 9f9512
2 changes: 1 addition & 1 deletion src/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1345,7 +1345,7 @@ void CClient::Init()
Channel.SetAudioStreamProperties ( eAudioCompressionType, iCeltNumCodedBytes, iSndCrdFrameSizeFactor, iNumAudioChannels );

// init reverberation
AudioReverb.Init ( eAudioChannelConf, iStereoBlockSizeSam, SYSTEM_SAMPLE_RATE_HZ );
AudioReverb.Init ( eAudioChannelConf, iStereoBlockSizeSam );

// init the sound card conversion buffers
if ( bSndCrdConversionBufferRequired )
Expand Down
8 changes: 3 additions & 5 deletions src/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -189,14 +189,12 @@ class CClient : public QObject
void SetAudioInFader ( const int iNV ) { iAudioInFader = iNV; }

int GetReverbLevel() const { return iReverbLevel; }
int GetReverbPreset() const { return AudioReverb.getPreset(); }
void SetReverbLevel ( const int iNL ) { iReverbLevel = iNL; }
void SetReverbPreset ( const int iNP ) { AudioReverb.setPreset ( iNP ); }

bool IsReverbOnLeftChan() const { return bReverbOnLeftChan; }
void SetReverbOnLeftChan ( const bool bIL )
{
bReverbOnLeftChan = bIL;
AudioReverb.Clear();
}
void SetReverbOnLeftChan ( const bool bIL ) { bReverbOnLeftChan = bIL; }

void SetDoAutoSockBufSize ( const bool bValue );
bool GetDoAutoSockBufSize() const { return Channel.GetDoAutoSockBufSize(); }
Expand Down
25 changes: 25 additions & 0 deletions src/clientsettingsdlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,15 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
cbxInputBoost->setWhatsThis ( strInputBoost );
cbxInputBoost->setAccessibleName ( tr ( "Input Boost combo box" ) );

// reverb preset
QString strReverbPreset = "<b>" + tr ( "Reverb Preset" ) + ":</b> " +
tr ( "Jamulus uses MVerb by Martin Eastwood for reverberation. "
"MVerb comes with a set of presets you can select here. "
"Available Presets: Subtle, Stadium, Cupboard, Dark, Halves " );
lblInputBoost->setWhatsThis ( strReverbPreset );
cbxInputBoost->setWhatsThis ( strReverbPreset );
cbxInputBoost->setAccessibleName ( tr ( "Reverb Preset combo box" ) );

// custom directories
QString strCustomDirectories = "<b>" + tr ( "Custom Directories" ) + ":</b> " +
tr ( "If you need to add additional directories to the Connect dialog Directory drop down, "
Expand Down Expand Up @@ -555,6 +564,15 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
// factor is 1-based while index is 0-based:
cbxInputBoost->setCurrentIndex ( pSettings->iInputBoost - 1 );

// Rever Preset combo box
cbxReverbPreset->clear();
cbxReverbPreset->addItem ( tr ( "Subtle" ) );
cbxReverbPreset->addItem ( tr ( "Stadium" ) );
cbxReverbPreset->addItem ( tr ( "Cupboard" ) );
cbxReverbPreset->addItem ( tr ( "Dark" ) );
cbxReverbPreset->addItem ( tr ( "Halves" ) );
cbxReverbPreset->setCurrentIndex ( pClient->GetReverbPreset() );

// init number of mixer rows
spnMixerRows->setValue ( pSettings->iNumMixerPanelRows );

Expand Down Expand Up @@ -786,6 +804,11 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
this,
&CClientSettingsDlg::OnInputBoostChanged );

QObject::connect ( cbxReverbPreset,
static_cast<void ( QComboBox::* ) ( int )> ( &QComboBox::activated ),
this,
&CClientSettingsDlg::OnReverbPresetChanged );

// buttons
#if defined( _WIN32 ) && !defined( WITH_JACK )
// Driver Setup button is only available for Windows when JACK is not used
Expand Down Expand Up @@ -1389,6 +1412,8 @@ void CClientSettingsDlg::OnInputBoostChanged()
pClient->SetInputBoost ( pSettings->iInputBoost );
}

void CClientSettingsDlg::OnReverbPresetChanged() { pClient->SetReverbPreset ( cbxReverbPreset->currentIndex() ); }

void CClientSettingsDlg::OnAliasTextChanged ( const QString& strNewName )
{
// check length
Expand Down
1 change: 1 addition & 0 deletions src/clientsettingsdlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ public slots:
void OnCustomDirectoriesChanged ( bool bDelete );
void OnNewClientLevelEditingFinished() { pSettings->iNewClientFaderLevel = edtNewClientLevel->text().toInt(); }
void OnInputBoostChanged();
void OnReverbPresetChanged();
void OnSndCrdBufferDelayButtonGroupClicked ( QAbstractButton* button );
void OnSoundcardActivated ( int iSndDevIdx );
void OnLInChanActivated ( int iChanIdx );
Expand Down
Loading
Loading