Audacity 3.2.0
Public Member Functions | Public Attributes | List of all members
EqualizationCurvesList Struct Reference

Maintains a list of preset curves for Equalization effects. More...

#include <EqualizationCurvesList.h>

Collaboration diagram for EqualizationCurvesList:
[legend]

Public Member Functions

 EqualizationCurvesList (EqualizationFilter &params)
 
void EnvelopeUpdated ()
 
void EnvelopeUpdated (const Envelope &env, bool lin)
 
void Select (int sel)
 
void ForceRecalc ()
 

Public Attributes

EQCurveArray mCurves
 
EqualizationFiltermParameters
 
bool mRecalcRequired { false }
 

Detailed Description

Maintains a list of preset curves for Equalization effects.

Definition at line 22 of file EqualizationCurvesList.h.

Constructor & Destructor Documentation

◆ EqualizationCurvesList()

EqualizationCurvesList::EqualizationCurvesList ( EqualizationFilter params)
inlineexplicit

Definition at line 23 of file EqualizationCurvesList.h.

25 {}
EffectDistortionSettings params
Definition: Distortion.cpp:77
EqualizationFilter & mParameters

Member Function Documentation

◆ EnvelopeUpdated() [1/2]

void EqualizationCurvesList::EnvelopeUpdated ( )

Definition at line 30 of file EqualizationCurvesList.cpp.

References EnvelopeUpdated(), EqualizationParameters::IsLinear(), EqualizationFilter::mLinEnvelope, EqualizationFilter::mLogEnvelope, and mParameters.

Referenced by EnvelopeUpdated(), EqualizationBandSliders::EnvLinToLog(), EqualizationBandSliders::ErrMin(), EqualizationBandSliders::Flatten(), EqualizationBandSliders::Invert(), EqualizationUI::OnInterp(), EqualizationPanel::OnMouseEvent(), EqualizationBandSliders::OnSlider(), and EqualizationUI::UpdateDraw().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EnvelopeUpdated() [2/2]

void EqualizationCurvesList::EnvelopeUpdated ( const Envelope env,
bool  lin 
)

Definition at line 38 of file EqualizationCurvesList.cpp.

39{
40 const auto &hiFreq = mParameters.mHiFreq;
41 const auto &drawMode = mParameters.mDrawMode;
42 auto &logEnvelope = mParameters.mLogEnvelope;
43
44 // Allocate and populate point arrays
45 size_t numPoints = env.GetNumberOfPoints();
46 Doubles when{ numPoints };
47 Doubles value{ numPoints };
48 env.GetPoints( when.get(), value.get(), numPoints );
49
50 // Clear the unnamed curve
51 int curve = mCurves.size() - 1;
52 mCurves[ curve ].points.clear();
53
54 if(lin)
55 {
56 // Copy and convert points
57 for (size_t point = 0; point < numPoints; point++)
58 {
59 double freq = when[ point ] * hiFreq;
60 double db = value[ point ];
61
62 // Add it to the curve
63 mCurves[ curve ].points.push_back( EQPoint( freq, db ) );
64 }
65 }
66 else
67 {
68 double loLog = log10( 20. );
69 double hiLog = log10( hiFreq );
70 double denom = hiLog - loLog;
71
72 // Copy and convert points
73 for (size_t point = 0; point < numPoints; point++)
74 {
75 double freq = pow( 10., ( ( when[ point ] * denom ) + loLog ));
76 double db = value[ point ];
77
78 // Add it to the curve
79 mCurves[ curve ].points.push_back( EQPoint( freq, db ) );
80 }
81 }
82
83 // Update unnamed curve (so it's there for next time)
84 //(done in a hurry, may not be the neatest -MJS)
85 if (!drawMode)
86 {
87 size_t numPoints = logEnvelope.GetNumberOfPoints();
88 Doubles when{ numPoints };
89 Doubles value{ numPoints };
90 logEnvelope.GetPoints(when.get(), value.get(), numPoints);
91 for (size_t i = 0, j = 0; j + 2 < numPoints; i++, j++)
92 {
93 if ((value[i] < value[i + 1] + .05) && (value[i] > value[i + 1] - .05) &&
94 (value[i + 1] < value[i + 2] + .05) && (value[i + 1] > value[i + 2] - .05))
95 { // within < 0.05 dB?
96 logEnvelope.Delete(j + 1);
97 numPoints--;
98 j--;
99 }
100 }
101 Select((int) mCurves.size() - 1);
102 }
103
104 // set 'unnamed' as the selected curve
105 Select( (int) mCurves.size() - 1 );
106}
One point in a curve.
size_t GetNumberOfPoints() const
Return number of points.
Definition: Envelope.cpp:723
void GetPoints(double *bufferWhen, double *bufferValue, int bufferLen) const
Returns the sets of when and value pairs.
Definition: Envelope.cpp:738

References Envelope::GetNumberOfPoints(), Envelope::GetPoints(), mCurves, EqualizationParameters::mDrawMode, EqualizationFilter::mHiFreq, EqualizationFilter::mLogEnvelope, mParameters, and Select().

Here is the call graph for this function:

◆ ForceRecalc()

void EqualizationCurvesList::ForceRecalc ( )
inline

Definition at line 31 of file EqualizationCurvesList.h.

References mRecalcRequired.

Referenced by EqualizationBandSliders::Flatten(), EqualizationBandSliders::GraphicEQ(), EqualizationBandSliders::Invert(), EqualizationUI::OnLinFreq(), EqualizationPanel::OnMouseEvent(), EqualizationUI::OnSliderM(), EqualizationUI::PopulateOrExchange(), EqualizationUI::setCurve(), and EqualizationUI::UpdateDraw().

Here is the caller graph for this function:

◆ Select()

void EqualizationCurvesList::Select ( int  sel)

Definition at line 22 of file EqualizationCurvesList.cpp.

23{
24 mParameters.mCurveName = mCurves[ curve ].Name;
25}

References EqualizationParameters::mCurveName, mCurves, and mParameters.

Referenced by EnvelopeUpdated(), EqualizationBandSliders::ErrMin(), and EqualizationUI::setCurve().

Here is the caller graph for this function:

Member Data Documentation

◆ mCurves

EQCurveArray EqualizationCurvesList::mCurves

◆ mParameters

EqualizationFilter& EqualizationCurvesList::mParameters

◆ mRecalcRequired

bool EqualizationCurvesList::mRecalcRequired { false }

Definition at line 35 of file EqualizationCurvesList.h.

Referenced by ForceRecalc(), and EqualizationPanel::OnIdle().


The documentation for this struct was generated from the following files: