#N canvas 478 23 594 668 12;
#X obj 104 126 osc~ 100;
#X msg 122 153 clear;
#N canvas 534 144 522 578 test 0;
#X obj 189 431 env~ 16384;
#X floatatom 189 455 5 0 0 0 - - -;
#X floatatom 359 168 4 -1000 1000 0 - - -;
#X obj 382 452 dac~;
#X obj 372 421 *~;
#X obj 254 186 cos~;
#X floatatom 255 50 5 0 0 0 - - -;
#X obj 255 73 phasor~;
#X floatatom 302 17 5 0 0 0 - - -;
#X obj 301 42 / 1000;
#X obj 295 169 -~ 0.25;
#X obj 295 191 cos~;
#X obj 359 197 / 1000;
#X obj 254 224 *~;
#X obj 295 225 *~;
#X obj 273 429 env~ 16384;
#X floatatom 273 453 5 0 0 0 - - -;
#X obj 424 379 dbtorms;
#X floatatom 425 359 5 0 0 0 - - -;
#X obj 136 191 phasor~;
#X floatatom 136 162 5 0 0 0 - - -;
#X text 61 83 Stuff to test it:;
#X obj 136 272 cpole~;
#X obj 295 269 *~ -1;
#X obj 64 488 env~ 16384;
#X floatatom 64 512 5 0 0 0 - - -;
#X obj 143 488 env~ 16384;
#X floatatom 143 512 5 0 0 0 - - -;
#X obj 143 304 cpole~;
#X obj 160 341 czero_rev~;
#X obj 205 370 czero_rev~;
#X msg 63 195 clear;
#X obj 255 103 cos~;
#X obj 254 134 *~ 0.02;
#X obj 304 100 sig~ 1.1;
#X obj 407 419 *~;
#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 424 542 pd test;
#X text 40 446 (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://msp.ucsd.edu/techniques.htm
for an introduction to the necessary theory.), f 68;
#X obj 153 208 sig~;
#X obj 185 232 sig~;
#X obj 217 255 sig~;
#X text 262 294 coefficient (real and imaginary part);
#X msg 133 179 set 0.6 0.8;
#X text 50 324 The action of czero~ is:;
#X text 66 374 where y[n] is the output \, x[n] the input \, and a[n]
the filter coefficient (all complex numbers). The filter is always
stable., f 64;
#X obj 122 280 czero~ 0.9 0.4;
#X obj 33 14 czero_rev~;
#X text 36 44 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.
, f 64;
#X text 103 347 y[n] = - a[n] * x[n] + x[n-1];
#X text 66 414 The transfer function is H(Z) = -a + Z^-1.;
#X obj 115 623 lop~;
#X text 42 624 see also:;
#X text 386 620 updated for Pd version-0.38;
#X obj 110 561 rzero~;
#X obj 51 586 cpole~;
#X obj 51 561 rpole~;
#X obj 169 561 rzero_rev~;
#X obj 110 586 czero~;
#X obj 169 586 czero_rev~;
#X text 257 561 real;
#X text 256 587 complex;
#X text 48 541 1-pole;
#X text 108 541 1-zero;
#X text 168 541 1-zero \, reversed;
#X text 73 520 summary of raw filters:;
#X text 155 623 etc.: user-friendly filters;
#X text 123 13 - complex one-zero (non-recursive) "reverse" filter
\, raw;
#X text 198 207 <= signal to filter (imaginary part);
#X text 230 232 <= filter coefficient (real part);
#X text 260 255 <= filter coefficient (imaginary part);
#X text 240 280 <= creation arguments initialize filter;
#X text 168 127 <= signal to filter (real part);
#X text 166 152 <= clear internal state to zero;
#X text 219 180 <= set internal state (real&imaginary parts);
#X connect 0 0 11 0;
#X connect 1 0 11 0;
#X connect 4 0 11 1;
#X connect 5 0 11 2;
#X connect 6 0 11 3;
#X connect 8 0 11 0;
