[PD] biquad~ with elementary filters [was: Re: dinosaurs ...]
Claude Heiland-Allen
claudiusmaximus at goto10.org
Sun Sep 21 16:35:46 CEST 2008
Charles Henry wrote:
> z^-1 is the unit delay operator....
> so,
> Y(z)=z*X(z) means y(n) = x(n+1)
>
> while this is not impossible... it's non-causal. For real-time
> filtering, you can't already know the sample that comes next.
> I've been thinking about it for a little while now. I hope we can figure it out
oops, i got it backwards, thanks for the correction - poles at 0 are
unit delay, zeros at 0 are unit advance
but that means that rzero~ and czero~ as implemented in Pd have an extra
pole at 0, so implementing a biquad~ with czero~ and cpole~ will give a
2 sample delay compared to the "real" biquad~.
snippet of source of sigrzero_perform():
{for (i = 0; i < n; i++){
t_sample next = *in1++;
t_sample coef = *in2++;
*out++ = next - coef * last;
last = next;
}}
when coef = 0, then out = in : no delay or advance, the extra pole at 0
cancels out the zero at 0
> Chuck
Claude
--
http://claudiusmaximus.goto10.org
More information about the Pd-list
mailing list