Hi everyone, I'm looking for a 'simple' way to implement allpass filters of varying depth in Matlab. Any suggestion welcome. Thanks, Gus
Modulated allpass filter in Matlab
Started by ●June 24, 2003
Reply by ●June 24, 20032003-06-24
Gustave wrote:> > Hi everyone, > > I'm looking for a 'simple' way to implement allpass filters of varying > depth in Matlab. > Any suggestion welcome. > > Thanks, > > GusI can't help, but I'm curious: what do you mean by "depth"? Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
Reply by ●June 24, 20032003-06-24
Jerry Avins wrote:> Gustave wrote: >> I'm looking for a 'simple' way to implement allpass filters of varying >> depth in Matlab. >> Any suggestion welcome. > I can't help, but I'm curious: what do you mean by "depth"?I think he wants to build a guitar phaser ;-) To Gustave: You could look for "lattice" (or "ladder") filters. The Matlab-code is 2 or 3 lines then ... Mattias
Reply by ●June 25, 20032003-06-25
Gus, You can try the eigenfilter technique in T.Q. Nguyen and et.al., "Eigenfilter Approach for the Design of Allpass Filters Approximating a Given Phase Response", IEEE Trans on Signal Processing, vol 42(9), 09/1994. It approximates the least square error criterion using the Taylor approximation so that the problem can be formulated into a Rayleigh quotient. I've used the iterative technique described in the paper, though not for designing allpass filters, but for other FIR filters. Nonetheless it's easy to implement and works quite well. hth, cf Mattias Schick wrote:> > Jerry Avins wrote: > > Gustave wrote: > >> I'm looking for a 'simple' way to implement allpass filters of > >> varying depth in Matlab. > >> Any suggestion welcome. > > I can't help, but I'm curious: what do you mean by "depth"? > > I think he wants to build a guitar phaser ;-) > > To Gustave: > You could look for "lattice" (or "ladder") filters. > The Matlab-code is 2 or 3 lines then ... > Mattias
Reply by ●June 25, 20032003-06-25
Some details about the filter I'd like to simulate: H(z) = (g+z^-k)/(1+gz^-k) -> transfer function for an allpass filter with fixed delay (trivial to implement with filter.m Matlab script). For an allpass filter of varying depth: H(z) = [g+z^(-k-d)]/[1+gz^(-k-d)] where d is not a constant, but rather a varying quantity: d = int(d0*sin(wt)) Thanks for your inputs. Gustave
Reply by ●June 25, 20032003-06-25
Gustave schrieb:> For an allpass filter of varying depth: > H(z) = [g+z^(-k-d)]/[1+gz^(-k-d)] > where d is not a constant, but rather a varying quantity: > d = int(d0*sin(wt))Hi Gustave, you want an allpass with modulated order? That's a real challenge! ;-) It could be done with cascaded allpasses and setting the amount needed to "passive" (pole(s) @z=0, zero(s) @z=inifinity <= that is the main problem !!). The other way is to tap a filter-cascade ... maybe with crossfade ... Mattias
Reply by ●June 25, 20032003-06-25
i wrote (nonsense;-)> It could be done with cascaded allpasses and setting the amount needed to > "passive" (pole(s) @z=0, zero(s) @z=inifinity <= that is the main problem !!).... in this way they would still be allpasses! Zeros schould also be move to z=0, but when crossing the unit-circle that will temporarily become a highpass (N=1) or a notchfilter (N=2). Mattias