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

Method setHighShelfParams

src/internal/src/Biquad.cpp:212–250  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

210}
211
212void Biquad::setHighShelfParams(double frequency, double dbGain)
213{
214 // Clip frequencies to between 0 and 1, inclusive.
215 frequency = std::max(0.0, std::min(frequency, 1.0));
216
217 double A = pow(10.0, dbGain / 40);
218
219 if (frequency == 1)
220 {
221 // The z-transform is 1.
222 setNormalizedCoefficients(1, 0, 0,
223 1, 0, 0);
224 }
225 else if (frequency > 0)
226 {
227 double w0 = static_cast<double>(LAB_PI) * frequency;
228 double S = 1; // filter slope (1 is max value)
229 double alpha = 0.5 * sin(w0) * sqrt((A + 1 / A) * (1 / S - 1) + 2);
230 double k = cos(w0);
231 double k2 = 2 * sqrt(A) * alpha;
232 double aPlusOne = A + 1;
233 double aMinusOne = A - 1;
234
235 double b0 = A * (aPlusOne + aMinusOne * k + k2);
236 double b1 = -2 * A * (aMinusOne + aPlusOne * k);
237 double b2 = A * (aPlusOne + aMinusOne * k - k2);
238 double a0 = aPlusOne - aMinusOne * k + k2;
239 double a1 = 2 * (aMinusOne - aPlusOne * k);
240 double a2 = aPlusOne - aMinusOne * k - k2;
241
242 setNormalizedCoefficients(b0, b1, b2, a0, a1, a2);
243 }
244 else
245 {
246 // When frequency = 0, the filter is just a gain, A^2.
247 setNormalizedCoefficients(A * A, 0, 0,
248 1, 0, 0);
249 }
250}
251
252void Biquad::setPeakingParams(double frequency, double Q, double dbGain)
253{

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected