[PD] [biquad~] as max's phaseshift? (was [biquad~] as cyclone's [allpass~]?)

Alexandre Torres Porres porres at gmail.com
Sun Oct 6 02:14:27 CEST 2013


hi mmb, thanks for showing up :)

hmmmm, my problem was that the phase response graph generated from your Pd
patch based on RBJ looks different than the one from max's phaseshift. But
it just occurred to me that one thing about it might only be a matter of
normalizing it and displaying in the same way.

For example, your patch gives us a drop from 0 to -1 and then from 1 to 0,
while phaseshift in Max is from 0 to -2pi continuously. I'm now considering
that both behaviours could be related, only that your patch "wraps" it
around -1 back to 1. What do you think?

But even so, there's also the issue of getting the Q parameter to behave in
the same way. Max's phaseshift, when set to Q = 0.1 and freq = 4KHz will
give you a linear drop from 0 to -2pi. Now, I can't seem to get that based
on RBJ's cookbook formulas and your patch. But then, another thing I
haven't thought of might be a difference in the scale plot...

One way or another, the Q parameter seems off.

So, as you can see, there are these plotting differences, but I know what
you mean, that is what I was suspecting too, it sure looks like the same
thing at a first glance, meaning you can get to it from a biquad
coefficient perspective. The problem is that max's phaseshift isn't very
clear about what it really is, other than saying it is a second order
filter. But that doesn't have to imply it is the same as a second order
biquad, does it?

Thanks


2013/10/5 Mike Moser-Booth <mmoserbooth at gmail.com>

> From looking at the helpfile for [phaseshift~], this sounds very much like
> the all-pass filter from Robert Bristow-Johnson's EQ Cookbook. You can
> calculate the biquad coefficients for it like this:
>
> w0 = 2*pi*frequency_in_Hz / sample_rate
> alpha = sin(w0)*sinh(ln(2)/2*Q*w0/sin(w0))
>
> fb1 = 2*cos(w0) / (1+alpha)
> fb2 = (-1+alpha) / (1+alpha)
> ff1 = -fb2
> ff2 = -fb1
> ff3 = 1
>
> .mmb
>
>
> On Sat, Oct 5, 2013 at 12:31 PM, Alexandre Torres Porres <porres at gmail.com
> > wrote:
>
>> > the phase response given in phaseshift's help file suggest otherwise.
>>
>> it's more like the response from miller's H14 example...
>>
>> So I guess you can have a 2nd order one (lie phaseshift) by putting two
>> of these together, right? And I suspect it doesn't really need to have
>> anything to do biquad just for being "2nd order", huh?
>>
>> cheers
>>
>>
>> 2013/10/5 Alexandre Torres Porres <porres at gmail.com>
>>
>>> Anyway, next on my list is finding out how to implement max's
>>> [phaseshift~], which is also an allpass filter. There's no Pd clone for it
>>> so it seems, right?
>>>
>>> Well, it doesn't really what it is other than a 2nd order filter. From
>>> that I could think you can generate it with [biquad~], but the phase
>>> response given in phaseshift's help file suggest otherwise.
>>>
>>> any contributions welcome
>>>
>>> thanks a lot
>>>
>>> 2013/10/5 Alexandre Torres Porres <porres at gmail.com>
>>>
>>>> but this way it won't be the same as cyclone's [allpass~], the way I
>>>> did it is equivalent to it (and max's).
>>>>
>>>> cheers
>>>>
>>>>
>>>> 2013/10/3 Chris Clepper <cgclepper at gmail.com>
>>>>
>>>>> You only need one delay line for the allpass.
>>>>>
>>>>> feedforward = input * -gain
>>>>> feedback = delayout * gain
>>>>> delayin = input + feedback
>>>>> output = delayout + feedforward
>>>>>
>>>>> http://www.spinsemi.com/knowledge_base/effects.html#Reverberation
>>>>>
>>>>>
>>>>> On Thu, Oct 3, 2013 at 11:29 AM, Alexandre Torres Porres <
>>>>> porres at gmail.com> wrote:
>>>>>
>>>>>> i hope i guess i figured it out on how to implement it with delay
>>>>>> lines. see attachment. And I realize you can't do this with [fexpr~] or
>>>>>> [biquad~] because the sample delay length is kinda big for that, right?
>>>>>>
>>>>>> cheers
>>>>>>
>>>>>>
>>>>>> 2013/10/3 Alexandre Torres Porres <porres at gmail.com>
>>>>>>
>>>>>>> cool, but do you know how to implement cyclone's [allpass~] with it?
>>>>>>>
>>>>>>> It's really unclear to me what is the relation of this pass filter
>>>>>>> with the one you can generate with biquad coefficients, or with raw
>>>>>>> poles/zeros objects for that matter.
>>>>>>>
>>>>>>> Well, one way or another, it's also unclear to me how to do it with
>>>>>>> delay lines.
>>>>>>>
>>>>>>> seems that it is related to a comb filter, right?
>>>>>>>
>>>>>>> cheers
>>>>>>>
>>>>>>>
>>>>>>> 2013/10/2 Chris Clepper <cgclepper at gmail.com>
>>>>>>>
>>>>>>>> Allpass for reverb is easy to do with delwrite~ and vd~.  I used 32
>>>>>>>> of them today to recreate a famous 'deep space' reverb.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Oct 2, 2013 at 1:53 AM, Alexandre Torres Porres <
>>>>>>>> porres at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> hi there, i see the biquad's coefficients can be set as an allpass
>>>>>>>>> filter, generated by frequency and "Q" parameters. But can it do the same
>>>>>>>>> as cyclone's [allpass~] filer? If yes, them how since the parameters for
>>>>>>>>> [allpass~] are different (delaytime and such).
>>>>>>>>>
>>>>>>>>> One way or another, I guess that my real question is: how to
>>>>>>>>> implement [allpass~] from vanilla objects?
>>>>>>>>>
>>>>>>>>> thanks
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Pd-list at iem.at mailing list
>>>>>>>>> UNSUBSCRIBE and account-management ->
>>>>>>>>> http://lists.puredata.info/listinfo/pd-list
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>> _______________________________________________
>> Pd-list at iem.at mailing list
>> UNSUBSCRIBE and account-management ->
>> http://lists.puredata.info/listinfo/pd-list
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20131005/73193e31/attachment-0001.htm>


More information about the Pd-list mailing list