I would like to be able to implement an All-Pass filter with a frequency-dependent group delay. I need a maximum group delay at low frequency of about 20 samples (for Fs = 44.1kHz), and it needs to fall to zero(-ish) at the Nyquist frequency. Ideally, I would like to specify a corner frequency and a rate at which the delay falls off either side of it. How the heck would I design such a thing?

I'm afraid I'm not sufficiently competent to follow the design approaches I can find on the web that plunge straight into poles, zeros, transfer functions and complex conjugates. What I can do, though, is implement the darned thing efficiently in code once it is designed.

I am able to use Matlab to design FIR and IIR low-pass filters, because it has a built-in tool that spits them out. But it doesn't have an All-Pass filter design tool (at least not one I can find).

  • $\begingroup$ Well as far as I know there aren't much tools because the common design for an all-pass filter is pretty simple. However, following the equation from Wikipedia might help you en.wikipedia.org/wiki/All-pass_filter $\endgroup$
    – meneldal
    Commented Jun 11, 2015 at 4:54
  • $\begingroup$ I didn't see anything that looks "pretty simple" there :( $\endgroup$
    – Richard M
    Commented Jun 11, 2015 at 13:42
  • $\begingroup$ Did you try using this Matlab function? $\endgroup$
    – smyslov
    Commented Jun 11, 2015 at 14:50
  • $\begingroup$ Yes I saw that, but I don't see how to get from my baseline requirements (group delay vs frequency) to where I can make use of this function. $\endgroup$
    – Richard M
    Commented Jun 11, 2015 at 18:38

1 Answer 1


This is an excerpt from the FilterScript user's guide, which should provide you with enough information on how to design the filter. Please refer to the other product resources on the tool's homepage for more information.

FilterScript code for a second order all-pass filter

  • $\begingroup$ Thanks, but you should have edited your other question. I've deleted your other answer and included the link to your website here. $\endgroup$
    – Peter K.
    Commented Jul 1, 2016 at 11:43
  • 1
    $\begingroup$ Thanks for pointing that out! I'll bear that in mind next time. $\endgroup$ Commented Jul 1, 2016 at 12:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.