#N canvas 79 19 533 567 12; #X obj 54 90 osc~ 100; #X msg 62 117 clear; #X obj 79 547 lop~; #X text 10 550 see also:; #X text 333 549 updated for Pd version-0.38; #X obj 86 497 rzero~; #X obj 37 517 cpole~; #X obj 37 497 rpole~; #X obj 135 497 rzero_rev~; #X obj 86 517 czero~; #X obj 135 517 czero_rev~; #X text 213 497 real; #X text 212 518 complex; #X text 34 481 1-pole; #X text 83 481 1-zero; #X text 133 481 1-zero \, reversed; #X text 59 466 summary of raw filters:; #X text 106 116 <-- clear internal state to zero; #N canvas 255 257 585 372 test 0; #X obj 152 296 env~ 16384; #X floatatom 152 320 5 0 0 0 - - -; #X floatatom 484 121 4 -1000 1000 0 - - -; #X obj 349 324 dac~; #X obj 349 288 *~; #X obj 375 115 cos~; #X floatatom 301 60 5 0 0 0 - - -; #X obj 329 112 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 301 110 *~; #X obj 301 83 phasor~; #X floatatom 382 66 5 0 0 0 - - -; #X obj 382 89 / 1000; #X obj 408 116 -~ 0.25; #X obj 408 138 cos~; #X obj 484 140 / 1000; #X obj 374 166 *~; #X obj 408 166 *~; #X obj 228 296 env~ 16384; #X floatatom 228 320 5 0 0 0 - - -; #X obj 381 284 dbtorms; #X floatatom 382 264 5 0 0 0 - - -; #X obj 245 220 czero~; #X floatatom 201 132 4 -1000 1000 0 - - -; #X obj 92 126 cos~; #X obj 112 85 phasor~; #X floatatom 115 60 5 0 0 0 - - -; #X obj 125 127 -~ 0.25; #X obj 125 149 cos~; #X obj 201 151 / 1000; #X obj 91 177 *~; #X obj 125 177 *~; #X text 214 27 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 459 483 pd test; #X text 113 550 etc.: user-friendly filters; #X text 10 387 (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 118 91 <-- signal to filter (real part); #X text 117 173 <-- signal to filter (imaginary part); #X obj 84 172 sig~; #X obj 115 197 sig~; #X text 149 199 <-- filter coefficient (real part); #X obj 145 219 sig~; #X text 159 246 <-- creation arguments initialize filter; #X text 187 262 coefficient (real and imaginary part); #X text 150 144 <-- set internal state (real&imaginary parts); #X msg 64 143 set 0.6 0.8; #X obj 52 7 czero~; #X text 112 7 complex one-zero (non-recursive) filter \, raw; #X text 8 31 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). ; #X text 179 221 <-- filter coefficient (imaginary part); #X text 14 279 The action of czero~ is:; #X text 73 300 y[n] = x[n] - a[n] * x[n-1]; #X text 11 320 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 text 12 369 The transfer function is H(Z) = 1 - aZ^-1.; #X obj 53 244 czero~ 0.9 0.4; #X connect 0 0 39 0; #X connect 1 0 39 0; #X connect 23 0 39 1; #X connect 24 0 39 2; #X connect 26 0 39 3; #X connect 30 0 39 0;