[PD] [biquad~] as cyclone's [allpass~]?

Alexandre Torres Porres porres at gmail.com
Mon Oct 7 03:43:24 CEST 2013


awesome, thanks a lot, really helpful. I was suspecting something like
that, but couldn't get to this implementation.

And then, one question, doesn't the feedback given by tabsend theoretically
count as a second delay line?

cheers


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

> It's not that either implementation is wrong, they are just two ways of
> doing the same thing. The version that uses two delay lines is the Direct
> Form I. By doing some rearranging of the filter, you convert it to the
> Direct Form II, which only uses one delay line. The end results are the
> same, just one is more efficient.
>
> Look inside [pd allpass] in the attached patch for an ASCII art
> illustration of it.
>
>
> On Sat, Oct 5, 2013 at 3:35 PM, Alexandre Torres Porres <porres at gmail.com>wrote:
>
>> on curtis roads' computer music tutorial, page 418, it shows the same
>> formula, but the figure of the design seems to contradict it. I'm confused.
>> I don't seem to get the same result with one delay line. maybe if you send
>> me a patch that sounds the same as cyclone's allpass I can check it.
>>
>> cheers
>>
>>
>> 2013/10/5 Alexandre Torres Porres <porres at gmail.com>
>>
>>> i dont think there is one way or proper way of doing this, and it is a
>>> general form, from an equation you can find in other references. So, I
>>> don't know why, but Max/Cyclone's allpass use this one: y(n) = -g x(n) +
>>> x(n)-(DR/1000) + g y(n)-(DR/1000)
>>>
>>>
>>> 2013/10/5 Chris Clepper <cgclepper at gmail.com>
>>>
>>>> That means cyclone's allpass~ is not done properly.  Why not do it the
>>>> standard and more efficient way?  When it comes time to do dozens of
>>>> allpasses it will make a difference.
>>>>
>>>>
>>>>
>>>>
>>>> On Sat, Oct 5, 2013 at 1:00 PM, Alexandre Torres Porres <
>>>> porres at gmail.com> wrote:
>>>>
>>>>> 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/20131006/a46732e5/attachment-0001.htm>


More information about the Pd-list mailing list