Audacity 3.2.0
Classes | Namespaces | Macros | Functions | Variables
Reverb.cpp File Reference
#include "Reverb.h"
#include "EffectEditor.h"
#include "LoadEffects.h"
#include <wx/arrstr.h>
#include <wx/checkbox.h>
#include <wx/slider.h>
#include <wx/spinctrl.h>
#include "Prefs.h"
#include "ShuttleGui.h"
#include "../widgets/valnum.h"
#include "Reverb_libSoX.h"
Include dependency graph for Reverb.cpp:

Go to the source code of this file.

Classes

struct  Reverb_priv_t
 
struct  Reverb_priv_ex
 
struct  EffectReverbState
 
struct  EffectReverb::Editor
 
struct  EffectReverb::Instance
 

Namespaces

namespace  anonymous_namespace{Reverb.cpp}
 

Macros

#define SpinSlider(n)
 
#define SpinSliderHandlers(n)
 
#define SpinSlider(n, p)
 
#define SetSpinSlider(n)
 
#define SpinSliderHandlers(n)
 

Functions

 SpinSliderHandlers (RoomSize) SpinSliderHandlers(PreDelay) SpinSliderHandlers(Reverberance) SpinSliderHandlers(HfDamping) SpinSliderHandlers(ToneLow) SpinSliderHandlers(ToneHigh) SpinSliderHandlers(WetGain) SpinSliderHandlers(DryGain) SpinSliderHandlers(StereoWidth) void EffectReverb
 
bool operator== (const EffectReverbSettings &a, const EffectReverbSettings &b)
 
bool OnlySimpleParametersChanged (const EffectReverbSettings &a, const EffectReverbSettings &b)
 

Variables

struct {
   const TranslatableString   name
 
   EffectReverbSettings   preset
 
FactoryPresets []
 
BuiltinEffectsModule::Registration< EffectReverbanonymous_namespace{Reverb.cpp}::reg
 
static size_t BLOCK = 16384
 

Macro Definition Documentation

◆ SetSpinSlider

#define SetSpinSlider (   n)
Value:
m ## n ## S->SetValue((int) rs.m ## n); \
m ## n ## T->SetValue(wxString::Format(wxT("%d"), (int) rs.m ## n));
wxT("CloseDown"))
#define S(N)
Definition: ToChars.cpp:64

◆ SpinSlider [1/2]

#define SpinSlider (   n)
Value:
wxSpinCtrl *m ## n ## T; \
wxSlider *m ## n ## S;

Definition at line 143 of file Reverb.cpp.

◆ SpinSlider [2/2]

#define SpinSlider (   n,
 
)
Value:
m ## n ## T = S.AddSpinCtrl( p, n.def, n.max, n.min); \
BindTo(*m ## n ## T, wxEVT_SPINCTRL, &Editor::On ## n ## Text);\
\
m ## n ## S = S.Style(wxSL_HORIZONTAL).AddSlider( {}, n.def, n.max, n.min); \
BindTo(*m ## n ## S, wxEVT_SLIDER, &Editor::On ## n ## Slider);

Definition at line 143 of file Reverb.cpp.

◆ SpinSliderHandlers [1/2]

#define SpinSliderHandlers (   n)
Value:
void On ## n ## Slider(wxCommandEvent & evt); \
void On ## n ## Text(wxCommandEvent & evt);

Definition at line 624 of file Reverb.cpp.

◆ SpinSliderHandlers [2/2]

#define SpinSliderHandlers (   n)
Value:
void EffectReverb::Editor::On ## n ## Slider(wxCommandEvent & evt) \
{ \
if (mProcessingEvent) return; \
mProcessingEvent = true; \
m ## n ## T->SetValue(wxString::Format(wxT("%d"), evt.GetInt())); \
mProcessingEvent = false; \
ValidateUI(); \
Publish(EffectSettingChanged{}); \
} \
void EffectReverb::Editor::On ## n ## Text(wxCommandEvent & evt) \
{ \
if (mProcessingEvent) return; \
mProcessingEvent = true; \
m ## n ## S->SetValue(std::clamp<long>(evt.GetInt(), n.min, n.max)); \
mProcessingEvent = false; \
ValidateUI(); \
Publish(EffectSettingChanged{}); \
}
Message sent by EffectEditor when a setting is changed by the user.
Definition: EffectEditor.h:26

Definition at line 624 of file Reverb.cpp.

Function Documentation

◆ OnlySimpleParametersChanged()

bool OnlySimpleParametersChanged ( const EffectReverbSettings a,
const EffectReverbSettings b 
)

Definition at line 677 of file Reverb.cpp.

678{
679 // A "simple" reverb parameter is one that when changed, does not require the
680 // reverb allpass/comb filters to be reset. This distinction enables us to
681 // code things so that the user can keep hearing the processed sound while
682 // they tweak one of the simple parameters.
683
684 const bool oneSimpleParameterChanged =
685
687 || (a.mHfDamping != b.mHfDamping)
688 || (a.mToneLow != b.mToneLow)
689 || (a.mToneHigh != b.mToneHigh)
690 || (a.mWetGain != b.mWetGain);
691
692
693 const bool allNonSimpleParametersStayedTheSame =
694
695 (a.mRoomSize == b.mRoomSize)
696 && (a.mPreDelay == b.mPreDelay)
697 && (a.mStereoWidth == b.mStereoWidth);
698
699 return oneSimpleParameterChanged && allNonSimpleParametersStayedTheSame;
700}
double mStereoWidth
Definition: Reverb.h:42
double mReverberance
Definition: Reverb.h:36
double mHfDamping
Definition: Reverb.h:37
double mRoomSize
Definition: Reverb.h:34
double mPreDelay
Definition: Reverb.h:35
double mToneHigh
Definition: Reverb.h:39

Referenced by EffectReverb::Instance::RealtimeProcess().

Here is the caller graph for this function:

◆ operator==()

bool operator== ( const EffectReverbSettings a,
const EffectReverbSettings b 
)

Definition at line 662 of file Reverb.cpp.

663{
664 // With C++20, all of this can be replaced by =default
665 return (a.mRoomSize == b.mRoomSize)
666 && (a.mPreDelay == b.mPreDelay)
667 && (a.mReverberance == b.mReverberance)
668 && (a.mHfDamping == b.mHfDamping)
669 && (a.mToneLow == b.mToneLow)
670 && (a.mToneHigh == b.mToneHigh)
671 && (a.mWetGain == b.mWetGain)
672 && (a.mDryGain == b.mDryGain)
673 && (a.mStereoWidth == b.mStereoWidth)
674 && (a.mWetOnly == b.mWetOnly);
675}

◆ SpinSliderHandlers()

SpinSliderHandlers ( RoomSize  )

Definition at line 644 of file Reverb.cpp.

655{
656 ValidateUI();
657 Publish(EffectSettingChanged{});
658}

References BasicEffectUIServices::ValidateUI().

Here is the call graph for this function:

Variable Documentation

◆ BLOCK

size_t BLOCK = 16384
static

◆ 

const struct { ... } FactoryPresets[]

◆ name

const TranslatableString name

Definition at line 43 of file Reverb.cpp.

Referenced by EffectReverb::GetFactoryPresets().

◆ preset