#N canvas 118 22 585 669 12;
#X obj 57 126 osc~ 100;
#X msg 65 153 clear;
#X text 109 152 <-- clear internal state to zero;
#N canvas 255 257 585 372 test 0;
#X obj 148 302 env~ 16384;
#X floatatom 148 326 5 0 0 0 - - -, f 5;
#X floatatom 509 76 4 -1000 1000 0 - - -, f 4;
#X obj 349 324 dac~;
#X obj 349 288 *~;
#X obj 390 70 cos~;
#X floatatom 298 8 5 0 0 0 - - -, f 5;
#X obj 298 31 phasor~;
#X floatatom 398 14 5 0 0 0 - - -, f 5;
#X obj 397 39 / 1000;
#X obj 433 71 -~ 0.25;
#X obj 433 93 cos~;
#X obj 509 95 / 1000;
#X obj 389 121 *~;
#X obj 433 121 *~;
#X obj 238 303 env~ 16384;
#X floatatom 238 327 5 0 0 0 - - -, f 5;
#X obj 381 284 dbtorms;
#X floatatom 382 264 5 0 0 0 - - -, f 5;
#X obj 117 89 phasor~;
#X floatatom 115 60 5 0 0 0 - - -, f 5;
#X text 77 13 Stuff to test it:;
#X obj 131 149 cpole~;
#X obj 287 233 *~ -1;
#X obj 21 261 env~ 16384;
#X floatatom 21 285 5 0 0 0 - - -, f 5;
#X obj 50 312 env~ 16384;
#X floatatom 50 336 5 0 0 0 - - -, f 5;
#X obj 138 181 cpole~;
#X obj 146 216 czero_rev~;
#X obj 154 264 czero_rev~;
#X msg 204 103 clear;
#X obj 262 55 cos~;
#X obj 261 83 *~ 0.02;
#X obj 183 50 sig~ 1.1;
#X obj 448 296 *~;
#X connect 0 0 1 0;
#X connect 2 0 12 0;
#X connect 4 0 3 0;
#X connect 5 0 13 0;
#X connect 6 0 7 0;
#X connect 7 0 32 0;
#X connect 8 0 9 0;
#X connect 9 0 7 1;
#X connect 10 0 11 0;
#X connect 11 0 14 0;
#X connect 12 0 14 1;
#X connect 12 0 13 1;
#X connect 13 0 22 2;
#X connect 13 0 28 2;
#X connect 13 0 29 2;
#X connect 13 0 30 2;
#X connect 14 0 22 3;
#X connect 14 0 23 0;
#X connect 14 0 29 3;
#X connect 15 0 16 0;
#X connect 17 0 4 1;
#X connect 17 0 35 1;
#X connect 18 0 17 0;
#X connect 19 0 22 0;
#X connect 19 0 24 0;
#X connect 19 0 35 0;
#X connect 20 0 19 0;
#X connect 22 0 28 0;
#X connect 22 1 28 1;
#X connect 23 0 28 3;
#X connect 23 0 30 3;
#X connect 24 0 25 0;
#X connect 26 0 27 0;
#X connect 28 0 26 0;
#X connect 28 0 29 0;
#X connect 28 1 29 1;
#X connect 29 0 30 0;
#X connect 29 1 30 1;
#X connect 30 0 0 0;
#X connect 30 0 4 0;
#X connect 30 1 15 0;
#X connect 31 0 22 0;
#X connect 31 0 28 0;
#X connect 32 0 33 0;
#X connect 33 0 5 0;
#X connect 33 0 10 0;
#X connect 34 0 33 0;
#X connect 35 0 3 1;
#X restore 452 547 pd test;
#X text 13 423 (Pd also provides a suite of user-friendly filters.
This and other raw filters are provided for situations which the user-friendly
ones can't handle. See Chapter 8 of http://crca.ucsd.edu/~msp/techniques
for an introduction to the necessary theory.);
#X text 121 127 <-- signal to filter (real part);
#X text 132 207 <-- signal to filter (imaginary part);
#X obj 87 208 sig~;
#X obj 118 233 sig~;
#X text 164 233 <-- filter coefficient (real part);
#X obj 148 255 sig~;
#X text 174 280 <-- creation arguments initialize filter;
#X text 202 296 coefficient (real and imaginary part);
#X text 153 180 <-- set internal state (real&imaginary parts);
#X msg 67 179 set 0.6 0.8;
#X text 194 255 <-- filter coefficient (imaginary part);
#X text 17 315 The action of czero~ is:;
#X text 14 356 where y[n] is the output \, x[n] the input \, and a[n]
the filter coefficient (all complex numbers). The filter is always
stable.;
#X obj 56 280 czero~ 0.9 0.4;
#X obj 24 10 czero_rev~;
#X text 114 9 complex one-zero (non-recursive) "reverse" filter \,
raw;
#X text 11 34 Czero_rev~ filters a complex audio signal (first two
inlets) via a one-zero filter \, whose coefficients are controlled
by creation arguments or by another complex audio signal (remaining
two inlets). The impulse response is that of "rzero" reversed in time.
;
#X text 77 336 y[n] = - a[n] * x[n] + x[n-1];
#X text 15 405 The transfer function is H(Z) = -a + Z^-1.;
#X obj 90 602 lop~;
#X text 10 603 see also:;
#X text 334 625 updated for Pd version-0.38;
#X obj 96 549 rzero~;
#X obj 37 574 cpole~;
#X obj 37 549 rpole~;
#X obj 155 549 rzero_rev~;
#X obj 96 574 czero~;
#X obj 155 574 czero_rev~;
#X text 243 549 real;
#X text 242 575 complex;
#X text 34 529 1-pole;
#X text 94 529 1-zero;
#X text 154 529 1-zero \, reversed;
#X text 59 508 summary of raw filters:;
#X text 130 605 etc.: user-friendly filters;
#X connect 0 0 18 0;
#X connect 1 0 18 0;
#X connect 7 0 18 1;
#X connect 8 0 18 2;
#X connect 10 0 18 3;
#X connect 14 0 18 0;
