#N canvas 461 35 572 679 12;
#X obj 47 130 osc~ 100;
#X msg 65 157 clear;
#X obj 107 620 lop~;
#X text 27 621 see also:;
#X text 362 648 updated for Pd version-0.38;
#X obj 113 558 rzero~;
#X obj 54 583 cpole~;
#X obj 54 558 rpole~;
#X obj 172 558 rzero_rev~;
#X obj 113 583 czero~;
#X obj 172 583 czero_rev~;
#X text 260 558 real;
#X text 259 584 complex;
#X text 51 538 1-pole;
#X text 111 538 1-zero;
#X text 171 538 1-zero \, reversed;
#X text 76 517 summary of raw filters:;
#N canvas 471 254 499 378 test 0;
#X obj 127 283 env~ 16384;
#X floatatom 127 307 5 0 0 0 - - -;
#X floatatom 414 112 4 -1000 1000 0 - - -;
#X obj 230 308 dac~;
#X obj 230 272 *~;
#X obj 294 112 cos~;
#X floatatom 229 57 5 0 0 0 - - -;
#X obj 269 119 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 229 117 *~;
#X obj 229 80 phasor~;
#X floatatom 338 53 5 0 0 0 - - -;
#X obj 338 76 / 1000;
#X obj 338 113 -~ 0.25;
#X obj 338 135 cos~;
#X obj 414 137 / 1000;
#X obj 293 178 *~;
#X obj 338 178 *~;
#X obj 325 282 env~ 16384;
#X floatatom 325 306 5 0 0 0 - - -;
#X obj 261 268 dbtorms;
#X floatatom 261 243 5 0 0 0 - - -;
#X obj 230 207 czero~, f 14;
#X floatatom 165 106 4 -1000 1000 0 - - -;
#X obj 56 108 cos~;
#X obj 55 69 phasor~;
#X floatatom 55 44 5 0 0 0 - - -;
#X obj 99 109 -~ 0.25;
#X obj 99 133 cos~;
#X obj 165 135 / 1000;
#X obj 55 161 *~;
#X obj 99 161 *~;
#X text 151 14 Stuff to test it:;
#X connect 0 0 1 0;
#X connect 2 0 14 0;
#X connect 4 0 3 0;
#X connect 4 0 3 1;
#X connect 5 0 15 0;
#X connect 6 0 9 0;
#X connect 7 0 8 1;
#X connect 8 0 21 0;
#X connect 9 0 8 0;
#X connect 10 0 11 0;
#X connect 11 0 5 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 16 0;
#X connect 14 0 16 1;
#X connect 14 0 15 1;
#X connect 15 0 21 2;
#X connect 16 0 21 3;
#X connect 17 0 18 0;
#X connect 19 0 4 1;
#X connect 20 0 19 0;
#X connect 21 0 0 0;
#X connect 21 0 4 0;
#X connect 21 1 17 0;
#X connect 22 0 28 0;
#X connect 23 0 29 0;
#X connect 24 0 26 0;
#X connect 24 0 23 0;
#X connect 25 0 24 0;
#X connect 26 0 27 0;
#X connect 27 0 30 0;
#X connect 28 0 30 1;
#X connect 28 0 29 1;
#X connect 29 0 21 0;
#X connect 30 0 21 1;
#X restore 427 563 pd test;
#X text 147 623 etc.: user-friendly filters;
#X text 26 451 (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 96 212 sig~;
#X obj 128 236 sig~;
#X obj 160 260 sig~;
#X text 207 302 coefficient (real and imaginary part);
#X msg 75 183 set 0.6 0.8;
#X obj 57 12 czero~;
#X text 117 12 complex one-zero (non-recursive) filter \, raw;
#X text 22 46 Czero~ 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).
, f 62;
#X text 30 325 The action of czero~ is:;
#X text 89 346 y[n] = x[n] - a[n] * x[n-1];
#X text 36 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 63;
#X text 28 422 The transfer function is H(Z) = 1 - aZ^-1.;
#X obj 65 284 czero~ 0.9 0.4;
#X text 113 130 <= signal to filter (real part);
#X text 110 157 <= clear internal state to zero;
#X text 162 183 <= set internal state (real&imaginary parts);
#X text 135 211 <= signal to filter (imaginary part);
#X text 170 235 <= filter coefficient (real part);
#X text 179 286 <= creation arguments initialize filter;
#X text 200 260 <= filter coefficient (imaginary part);
#X connect 0 0 32 0;
#X connect 1 0 32 0;
#X connect 20 0 32 1;
#X connect 21 0 32 2;
#X connect 22 0 32 3;
#X connect 24 0 32 0;
