Skip to content

Commit 3b78ee6

Browse files
committed
Make reverb buffers protected members
1 parent 1ed2ffd commit 3b78ee6

3 files changed

Lines changed: 27 additions & 19 deletions

File tree

src/clientsettingsdlg.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -382,9 +382,9 @@ CClientSettingsDlg::CClientSettingsDlg ( CClient* pNCliP, CClientSettings* pNSet
382382

383383
// reverb preset
384384
QString strReverbPreset = "<b>" + tr ( "Reverb Preset" ) + ":</b> " +
385-
tr ( "Jamulus uses MVerb by Martin Eastwood for reverberation. "
386-
"MVerb comes with a set of presets you can select here. "
387-
"Available Presets: Subtle, Stadium, Cupboard, Dark, Halves " );
385+
tr ( "Jamulus uses MVerb by Martin Eastwood for reverberation. "
386+
"MVerb comes with a set of presets you can select here. "
387+
"Available Presets: Subtle, Stadium, Cupboard, Dark, Halves " );
388388
lblInputBoost->setWhatsThis ( strReverbPreset );
389389
cbxInputBoost->setWhatsThis ( strReverbPreset );
390390
cbxInputBoost->setAccessibleName ( tr ( "Reverb Preset combo box" ) );
@@ -1412,10 +1412,7 @@ void CClientSettingsDlg::OnInputBoostChanged()
14121412
pClient->SetInputBoost ( pSettings->iInputBoost );
14131413
}
14141414

1415-
void CClientSettingsDlg::OnReverbPresetChanged()
1416-
{
1417-
pClient->SetReverbPreset ( cbxReverbPreset->currentIndex() );
1418-
}
1415+
void CClientSettingsDlg::OnReverbPresetChanged() { pClient->SetReverbPreset ( cbxReverbPreset->currentIndex() ); }
14191416

14201417
void CClientSettingsDlg::OnAliasTextChanged ( const QString& strNewName )
14211418
{

src/plugins/audioreverb.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,30 @@ void CAudioReverb::Init ( const EAudChanConf eNAudioChannelConf, const int iNSte
1313
{
1414
eAudioChannelConf = eNAudioChannelConf;
1515
iStereoBlockSizeSam = iNStereoBlockSizeSam;
16+
17+
// Jamulus uses interleaved stereo, mverb operates on a 2-dimensional array instead
18+
// Calculate the number of frames for each channel ( iStereoBlockSizeSam / 2 )
19+
numFrames = iStereoBlockSizeSam >> 1;
20+
21+
// These buffers get filled with dry signal and are then passed to mverb
22+
// They need to be vectors as the windows builds fail when arrays are used
23+
bufL.resize ( numFrames );
24+
bufR.resize ( numFrames );
25+
26+
mverb->setSampleRate ( static_cast<float> ( SYSTEM_SAMPLE_RATE_HZ ) );
27+
loadPreset();
1628
}
1729

1830
void CAudioReverb::loadPreset()
1931
{
2032
for ( int i = 0; i < MVerb<float>::NUM_PARAMS; i++ )
2133
{
22-
mverb.setParameter ( i, presets[iPreset][i] );
34+
mverb->setParameter ( i, presets[iPreset][i] );
2335
}
2436
}
2537

2638
void CAudioReverb::Process ( CVector<int16_t>& vecsStereoInOut, const bool bReverbOnLeftChan, const float fReverbGain )
2739
{
28-
// Jamulus uses interleaved stereo, mverb operates on a 2-dimensional array instead
29-
// Calculate the number of frames for each channel ( iStereoBlockSizeSam / 2 )
30-
const int numFrames = iStereoBlockSizeSam >> 1;
31-
32-
// These buffers get filled with dry signal and are then passed to mverb
33-
// They need to be vectors as the windows builds fail when arrays are used
34-
std::vector<float> bufL ( numFrames );
35-
std::vector<float> bufR ( numFrames );
3640

3741
// One buffer to pass to mverb's process function
3842
float* fInput[2] = { bufL.data(), bufR.data() };
@@ -55,7 +59,7 @@ void CAudioReverb::Process ( CVector<int16_t>& vecsStereoInOut, const bool bReve
5559
}
5660
}
5761

58-
mverb.process ( fInput, fInput, numFrames );
62+
mverb->process ( fInput, fInput, numFrames );
5963

6064
for ( int i = 0, j = 0; j < numFrames; i += 2, j++ )
6165
{

src/plugins/audioreverb.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ class CAudioReverb
1616
public:
1717
CAudioReverb()
1818
{
19-
mverb.setSampleRate ( static_cast<float> ( SYSTEM_SAMPLE_RATE_HZ ) );
2019
fMaxShort = static_cast<float> ( _MAXSHORT );
2120
iPreset = STADIUM;
21+
22+
// Create MVerb on the heap
23+
mverb = std::unique_ptr<MVerb<float>> ( new MVerb<float>() );
24+
mverb->setSampleRate ( SYSTEM_SAMPLE_RATE_HZ );
2225
loadPreset();
2326
}
2427

@@ -38,14 +41,18 @@ class CAudioReverb
3841
int getPreset() const { return iPreset; };
3942

4043
protected:
41-
MVerb<float> mverb;
44+
std::unique_ptr<MVerb<float>> mverb;
4245

4346
void loadPreset();
4447
EAudChanConf eAudioChannelConf;
4548
int iStereoBlockSizeSam;
4649
float fMaxShort;
4750
int iPreset;
4851

52+
int numFrames;
53+
std::vector<float> bufL;
54+
std::vector<float> bufR;
55+
4956
enum
5057
{
5158
SUBTLE = 0,

0 commit comments

Comments
 (0)