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

Mike Moser-Booth mmoserbooth at gmail.com
Mon Oct 7 04:27:24 CEST 2013


Yeah, I tend to use them for feedback loops because they only need to be
the block size. Though now that I think about it, you don't need them in
this case. You can just feed [vd~] in to [delwrite~] without that silly
order forcing I did.

.mmb


On Sun, Oct 6, 2013 at 8:43 PM, Alexandre Torres Porres <porres at gmail.com>wrote:

> 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/aaf8bfd3/attachment.htm>


More information about the Pd-list mailing list