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

_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to