MCPcopy Create free account
hub / github.com/LabSound/LabSound / setLowShelfParams

Method setLowShelfParams

src/internal/src/Biquad.cpp:172–210  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

170}
171
172void Biquad::setLowShelfParams(double frequency, double dbGain)
173{
174 // Clip frequencies to between 0 and 1, inclusive.
175 frequency = std::max(0.0, std::min(frequency, 1.0));
176
177 double A = pow(10.0, dbGain / 40);
178
179 if (frequency == 1)
180 {
181 // The z-transform is a constant gain.
182 setNormalizedCoefficients(A * A, 0, 0,
183 1, 0, 0);
184 }
185 else if (frequency > 0)
186 {
187 double w0 = static_cast<double>(LAB_PI) * frequency;
188 double S = 1; // filter slope (1 is max value)
189 double alpha = 0.5 * sin(w0) * sqrt((A + 1 / A) * (1 / S - 1) + 2);
190 double k = cos(w0);
191 double k2 = 2 * sqrt(A) * alpha;
192 double aPlusOne = A + 1;
193 double aMinusOne = A - 1;
194
195 double b0 = A * (aPlusOne - aMinusOne * k + k2);
196 double b1 = 2 * A * (aMinusOne - aPlusOne * k);
197 double b2 = A * (aPlusOne - aMinusOne * k - k2);
198 double a0 = aPlusOne + aMinusOne * k + k2;
199 double a1 = -2 * (aMinusOne + aPlusOne * k);
200 double a2 = aPlusOne + aMinusOne * k - k2;
201
202 setNormalizedCoefficients(b0, b1, b2, a0, a1, a2);
203 }
204 else
205 {
206 // When frequency is 0, the z-transform is 1.
207 setNormalizedCoefficients(1, 0, 0,
208 1, 0, 0);
209 }
210}
211
212void Biquad::setHighShelfParams(double frequency, double dbGain)
213{

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected