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 113 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 113 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 594 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 594 of file Reverb.cpp.

Function Documentation

◆ OnlySimpleParametersChanged()

bool OnlySimpleParametersChanged ( const EffectReverbSettings a,
const EffectReverbSettings b 
)

Definition at line 647 of file Reverb.cpp.

648{
649 // A "simple" reverb parameter is one that when changed, does not require the
650 // reverb allpass/comb filters to be reset. This distinction enables us to
651 // code things so that the user can keep hearing the processed sound while
652 // they tweak one of the simple parameters.
653
654 const bool oneSimpleParameterChanged =
655
657 || (a.mHfDamping != b.mHfDamping)
658 || (a.mToneLow != b.mToneLow)
659 || (a.mToneHigh != b.mToneHigh)
660 || (a.mWetGain != b.mWetGain);
661
662
663 const bool allNonSimpleParametersStayedTheSame =
664
665 (a.mRoomSize == b.mRoomSize)
666 && (a.mPreDelay == b.mPreDelay)
667 && (a.mStereoWidth == b.mStereoWidth);
668
669 return oneSimpleParameterChanged && allNonSimpleParametersStayedTheSame;
670}
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 632 of file Reverb.cpp.

633{
634 // With C++20, all of this can be replaced by =default
635 return (a.mRoomSize == b.mRoomSize)
636 && (a.mPreDelay == b.mPreDelay)
637 && (a.mReverberance == b.mReverberance)
638 && (a.mHfDamping == b.mHfDamping)
639 && (a.mToneLow == b.mToneLow)
640 && (a.mToneHigh == b.mToneHigh)
641 && (a.mWetGain == b.mWetGain)
642 && (a.mDryGain == b.mDryGain)
643 && (a.mStereoWidth == b.mStereoWidth)
644 && (a.mWetOnly == b.mWetOnly);
645}

◆ SpinSliderHandlers()

SpinSliderHandlers ( RoomSize  )

Definition at line 614 of file Reverb.cpp.

625{
626 ValidateUI();
627 Publish(EffectSettingChanged{});
628}

References BasicEffectUIServices::ValidateUI().

Here is the call graph for this function:

Variable Documentation

◆ BLOCK

size_t BLOCK = 16384
static

◆ 

const struct { ... } FactoryPresets[]
Initial value:
=
{
{ XO("Vocal I" ), { 70, 20, 40, 99, 100, 50, -12, 0, 70, false } },
{ XO("Vocal II"), { 50, 0, 50, 99, 50, 100, -1, -1, 70, false } },
{ XO("Bathroom"), { 16, 8, 80, 0, 0, 100, -6, 0, 100, false } },
{ XO("Small Room Bright"), { 30, 10, 50, 50, 50, 100, -1, -1, 100, false } },
{ XO("Small Room Dark"), { 30, 10, 50, 50, 100, 0, -1, -1, 100, false } },
{ XO("Medium Room"), { 75, 10, 40, 50, 100, 70, -1, -1, 70, false } },
{ XO("Large Room"), { 85, 10, 40, 50, 100, 80, 0, -6, 90, false } },
{ XO("Church Hall"), { 90, 32, 60, 50, 100, 50, 0, -12, 100, false } },
{ XO("Cathedral"), { 90, 16, 90, 50, 100, 0, 0, -20, 100, false } },
}
XO("Cut/Copy/Paste")

Referenced by EffectReverb::GetFactoryPresets(), and EffectReverb::LoadFactoryPreset().

◆ name

const TranslatableString name

Definition at line 43 of file Reverb.cpp.

Referenced by EffectReverb::GetFactoryPresets().

◆ preset