Resonant peak frequencies for phaser effect

I have a conventional phaser setup with allpass filters and feedback.

I can calculate the peaks frequencies of the phaser when the allpass delays are set to 1 (then they work as simple one sample delays). Adding two allpass delays will give an additional peak, and the peak frequencies for peaks i = 1 to N is found by:

(i / (N + 0.5) ) * SampleRate / 2


where N is the number of peaks (and the number of allpass-delays divided by 2). So if you have a 6-stage phaser at 44100, the 3 peaks will be at:

(1 / (3 + 0.5) ) * 44100 / 2 = 6300
(2 / (3 + 0.5) ) * 44100 / 2 = 12600
(3 / (3 + 0.5) ) * 44100 / 2 = 18900


However, these frequencies start warping when the allpass-delays are not set to 1:

How can I calculate the peak frequencies when the allpass-delays are not set to 1?

I refer to the following structure of a phaser (from this article):

Let's call the depth factor $a$, and the feedback factor $f$ ($|f|<1$). I assume that there are $2N$ first order allpass filters, each with transfer function

$$A_0(z)=\frac{z^{-1}-b}{1-bz^{-1}},\quad |b|<1\tag{1}$$

The allpass frequency response is obtained by evaluating (1) on the unit circle $z=e^{j\omega}$:

$$A_0(e^{j\omega})=\frac{e^{-j\omega}-b}{1-be^{-j\omega}}= \frac{e^{-j\omega}-2b+b^2e^{j\omega}}{|1-be^{-j\omega}|^2}=\\ =\frac{(1+b^2)\cos(\omega)-2b+j(b^2-1)\sin(\omega)}{|1-be^{-j\omega}|^2}\tag{2}$$

And since $A_0(z)$ is an allpass function

$$A_0(e^{j\omega})=e^{j\phi(\omega)}\tag{3}$$

From (2) and (3) the phase $\phi(\omega)$ of the allpass satisfies

$$\tan(\phi(\omega))=\frac{(b^2-1)\sin(\omega)}{(1+b^2)\cos(\omega)-2b}\tag{4}$$

If you cascade $2N$ of these allpass filters, the frequency response of this cascade is

$$[A_0(e^{j\omega})]^{2N}=e^{j2N\phi(\omega)}$$

Let us first consider a system without feedback, i.e. $f=0$. The total frequency response of such a system is

$$H(e^{j\omega})=1+ae^{j2N\phi(\omega)}= 1+a\cos(2N\phi(\omega))+ja\sin(2N\phi(\omega))$$

and its squared magnitude is

$$|H(e^{j\omega})|^2=1+2a\cos(2N\phi(\omega))+a^2\tag{5}$$

From (5) it is obvious that the locations of the maxima of $|H(e^{j\omega})|^2$ are independent of the depth paramter $a$, and that they only depend on $N$ and on the allpass phase response $\phi(\omega)$ (i.e. on the paramter $b$). The maxima occur where the argument of the cosine in (5) equals $2\pi k$, $k=0,1,\ldots,N$, which is equivalent to

$$\phi(\omega_k)=\frac{k\pi}{N},\quad k=0,1,\ldots,N$$

where $\omega_k$ are the peak frequencies. With (4) this condition becomes

$$\frac{(b^2-1)\sin(\omega_k)}{(1+b^2)\cos(\omega_k)-2b}=\tan\left(\frac{k\pi}{N}\right),\quad k=0,1,\ldots,N\tag{6}$$

Equation (6) can be used to determine the peak frequencies $\omega_k$. Note that this needs to be done numerically since this equation cannot be solved for $\omega_k$ analytically. There are just some special indices $k$ for which an explicit solution is possible:

$$\begin{array}{rcl}\omega_0&=&0\\ \omega_{N/2}&=&\arccos\left(\frac{2b}{1+b^2}\right)\quad\textrm{if } N \textrm{ is even}\\ \omega_N&=&\pi \end{array}$$

The following figure is an example for $N=4$, $a=0.7$, and $b=0.6$ which shows $|H(e^{j\omega})|$ and the locations of the maxima (shown by 'x') which I've computed using equation (4).

If there is feedback ($f\neq 0$) then the frequency response looks more complicated:

$$H(e^{j\omega})=\frac{1+(a-f)e^{j2N\phi(\omega)}}{1-fe^{j2N\phi(\omega)}}$$

and its squared magnitude is

$$|H(e^{j\omega})|^2=\frac{1+2(a-f)\cos(2N\phi(\omega))+(a-f)^2}{1-2f\cos(2N\phi(\omega))+f^2}$$

Luckily it turns out that feedback doesn't change the location of the peaks, it just makes them 'peakier'. In the following figure the system the frequency response shown above is compared to the response with feedback ($f=0.5$):

• Hmm, the number of allpass filters seem to be missing from this formula, (or maybe I am missing something)? The formula has a linear relationship between peak index (k) and frequency, but as soon as the delays are not 1 the peaks starts warping non-linearly, this is also what gives the phaser its characteristic sound. (I added an image that might help make things clearer) – teadrinker Apr 23 '14 at 13:36
• @teadrinker I used $D$ as the delay which can be fractional, irrespective of the number of allpass filters realizing the delay. What do you mean by "as soon as the delays are not 1"? What are they then? If you have general allpass filters with a non-linear phase response then you must specify the behavior of these allpass filters, otherwise nothing can be said about the peak frequencies. – Matt L. Apr 23 '14 at 13:39
• I based my experiments on the code snippets of these comments. The allpass process function does: Result := inSample * -Fa1 + Fzm1; Fzm1 := Result * Fa1 + inSample. And Fa1 is (1 - delay) / (1 + delay) – teadrinker Apr 23 '14 at 14:18
• @teadrinker OK, so you have $2N$ of these first order allpass filters in series. Do they all use the same parameter Fa1? – Matt L. Apr 23 '14 at 18:06
• Correct, they all use the same Fa1. – teadrinker Apr 24 '14 at 6:14