Browse Source

DSP: Slightly tidied filter-design function

tags/2021-05-28
reuk 5 years ago
parent
commit
c540fa4241
No known key found for this signature in database GPG Key ID: 9ADCD339CFC98A11
1 changed files with 10 additions and 15 deletions
  1. +10
    -15
      modules/juce_dsp/filter_design/juce_FilterDesign.cpp

+ 10
- 15
modules/juce_dsp/filter_design/juce_FilterDesign.cpp View File

@@ -270,24 +270,19 @@ typename FIR::Coefficients<FloatType>::Ptr
for (int i = 0; i < hh.size(); ++i)
c[i] = (float) hh[i];
double NN;
if (n % 2 == 0)
{
NN = 2.0 * result->getMagnitudeForFrequency (0.5, 1.0);
}
else
auto NN = [&]
{
if (n % 2 == 0)
return 2.0 * result->getMagnitudeForFrequency (0.5, 1.0);
auto w01 = std::sqrt (kp * kp + (1 - kp * kp) * std::pow (std::cos (MathConstants<double>::pi / (2.0 * n + 1.0)), 2.0));
if (std::abs (w01) <= 1.0)
{
auto om01 = std::acos (-w01);
NN = -2.0 * result->getMagnitudeForFrequency (om01 / MathConstants<double>::twoPi, 1.0);
}
else
NN = 2.0 * result->getMagnitudeForFrequency (0.5, 1.0);
}
if (std::abs (w01) > 1.0)
return 2.0 * result->getMagnitudeForFrequency (0.5, 1.0);
auto om01 = std::acos (-w01);
return -2.0 * result->getMagnitudeForFrequency (om01 / MathConstants<double>::twoPi, 1.0);
}();
for (int i = 0; i < hh.size(); ++i)
c[i] = static_cast<FloatType> ((A * hn[i] + B * hnm[i]) / NN);


Loading…
Cancel
Save