From b2e49bc7e84efd1039253b0485c5c46693cccf3e Mon Sep 17 00:00:00 2001 From: Ivan Cohen Date: Mon, 7 Dec 2020 17:01:38 +0100 Subject: [PATCH] DSP: Solved an issue with FilterDesign::designFIRLowpassHalfBandEquirippleMethod for low amplitudedB and normalisationTransitionWidth close to 0.5 --- modules/juce_dsp/filter_design/juce_FilterDesign.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/juce_dsp/filter_design/juce_FilterDesign.cpp b/modules/juce_dsp/filter_design/juce_FilterDesign.cpp index f1acc87af4..6ffb31e65a 100644 --- a/modules/juce_dsp/filter_design/juce_FilterDesign.cpp +++ b/modules/juce_dsp/filter_design/juce_FilterDesign.cpp @@ -279,9 +279,14 @@ typename FIR::Coefficients::Ptr else { auto w01 = std::sqrt (kp * kp + (1 - kp * kp) * std::pow (std::cos (MathConstants::pi / (2.0 * n + 1.0)), 2.0)); - auto om01 = std::acos (-w01); - NN = -2.0 * result->getMagnitudeForFrequency (om01 / MathConstants::twoPi, 1.0); + if (std::abs (w01) <= 1.0) + { + auto om01 = std::acos (-w01); + NN = -2.0 * result->getMagnitudeForFrequency (om01 / MathConstants::twoPi, 1.0); + } + else + NN = 2.0 * result->getMagnitudeForFrequency (0.5, 1.0); } for (int i = 0; i < hh.size(); ++i)