#N canvas 751 57 554 672 12;
#X declare -stdpath ./;
#X obj 68 127 osc~ 100;
#X msg 77 154 clear;
#X text 27 407 The transfer function is H(Z) = 1/(1 - aZ^-1).;
#X obj 59 10 cpole~;
#X obj 99 210 sig~;
#X obj 131 233 sig~;
#X obj 163 257 sig~;
#X obj 68 282 cpole~ 0.9 0.4;
#X text 215 299 coefficient (real and imaginary part);
#X text 24 316 The action of cpole~ is:;
#X text 26 358 where y[n] is the output \, x[n] the input \, and a[n]
the filter coefficient (all complex numbers). The filter is unstable
if/when |a[n]|>1.;
#X text 33 47 Cpole~ filters a complex audio signal (first two inlets)
via a one-pole filter \, whose coefficients are controlled by creation
arguments or by another complex audio signal (remaining two inlets).
, f 63;
#X msg 89 181 set 0.6 0.8;
#X text 58 338 y[n] = x[n] + a[n] * y[n-1];
#X text 121 10 - complex one-pole (recursive) filter \, raw;
#N canvas 796 231 441 392 test 0;
#X obj 90 85 osc~;
#X floatatom 90 52 5 0 0 0 - - - 0;
#X obj 146 304 env~ 16384;
#X floatatom 146 328 5 0 0 0 - - - 0;
#X obj 118 114 tgl 15 0 empty empty empty 0 -6 0 8 #fcfcfc #000000
#000000 0 1;
#X obj 90 112 *~;
#X msg 37 114 set 1;
#X floatatom 334 113 4 -1000 1000 0 - - - 0;
#X text 138 14 Stuff to test it:;
#X obj 215 113 cos~;
#X obj 146 225 cpole~;
#X obj 235 75 phasor~;
#X floatatom 235 48 5 0 0 0 - - - 0;
#X floatatom 146 52 5 0 0 0 - - - 0;
#X obj 174 114 tgl 15 0 empty empty empty 0 -6 0 8 #fcfcfc #000000
#000000 0 1;
#X obj 146 112 *~;
#X obj 146 85 phasor~;
#X floatatom 298 46 5 0 0 0 - - - 0;
#X obj 298 75 / 1000;
#X obj 258 113 -~ 0.25;
#X obj 258 140 cos~;
#X obj 334 142 / 1000;
#X obj 215 178 *~;
#X obj 258 178 *~;
#X obj 233 304 env~ 16384;
#X floatatom 233 328 5 0 0 0 - - - 0;
#X obj 49 291 output~;
#X obj 258 238 declare -stdpath ./;
#X connect 0 0 5 0;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 4 0 5 1;
#X connect 5 0 10 0;
#X connect 6 0 10 0;
#X connect 7 0 21 0;
#X connect 9 0 22 0;
#X connect 10 0 2 0;
#X connect 10 0 26 0;
#X connect 10 0 26 1;
#X connect 10 1 24 0;
#X connect 11 0 19 0;
#X connect 11 0 9 0;
#X connect 12 0 11 0;
#X connect 13 0 16 0;
#X connect 14 0 15 1;
#X connect 15 0 10 0;
#X connect 16 0 15 0;
#X connect 17 0 18 0;
#X connect 18 0 11 1;
#X connect 19 0 20 0;
#X connect 20 0 23 0;
#X connect 21 0 23 1;
#X connect 21 0 22 1;
#X connect 22 0 10 2;
#X connect 23 0 10 3;
#X connect 24 0 25 0;
#X restore 410 558 pd test;
#X obj 96 603 lop~;
#X text 17 604 see also:;
#X obj 169 535 rzero~;
#X obj 109 558 cpole~;
#X obj 109 535 rpole~;
#X obj 229 535 rzero_rev~;
#X obj 169 558 czero~;
#X obj 229 558 czero_rev~;
#X text 308 535 real;
#X text 307 557 complex;
#X text 106 516 1-pole;
#X text 166 516 1-zero;
#X text 233 500 1-zero \, reversed, f 8;
#X text 15 540 summary of raw filters:, f 12;
#X obj 137 603 hip~;
#X obj 178 603 bp~;
#X obj 213 603 vcf~;
#X text 294 603 - user-friendly filters;
#X obj 254 603 bob~;
#X obj 381 475 bng 15 250 50 0 empty empty empty 17 7 0 10 #dcdcdc
#000000 #000000;
#X text 25 429 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 (click) =>, f 69;
#N canvas 798 148 456 264 Read-More 0;
#X obj 11 59 inlet;
#X obj 11 190 pdcontrol;
#X msg 11 139 browse http://msp.ucsd.edu/techniques/latest/book-html/node127.html
;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 381 509 pd Read-More;
#X obj 19 636 biquad~;
#X text 194 636 - not so friendly;
#X obj 80 635 fexpr~;
#X obj 135 635 slop~, f 7;
#X text 351 636 updated for Pd version 0.43;
#X text 136 128 <= signal to filter (real part);
#X text 126 153 <= clear internal state to zero;
#X text 178 181 <= set internal state (real&imaginary parts);
#X text 145 211 <= signal to filter (imaginary part);
#X text 177 235 <= filter coefficient (real part);
#X text 208 259 <= filter coefficient (imaginary part);
#X text 193 283 <= creation arguments initialize filter;
#X connect 0 0 7 0;
#X connect 1 0 7 0;
#X connect 4 0 7 1;
#X connect 5 0 7 2;
#X connect 6 0 7 3;
#X connect 12 0 7 0;
#X connect 35 0 37 0;
