#N canvas 504 36 528 607 12;
#X declare -stdpath ./;
#X floatatom 137 192 4 0 0 0 - - - 0;
#X obj 70 105 osc~ 100;
#X msg 86 135 clear;
#X obj 21 10 rpole~;
#X msg 94 163 set 1;
#X text 38 335 The transfer function is H(Z) = 1/(1 - aZ^-1)., f 61;
#X obj 70 219 rpole~ 0.9;
#N canvas 909 179 313 353 test 0;
#X obj 76 78 osc~;
#X floatatom 76 55 5 0 0 0 - - - 0;
#X obj 76 282 env~ 16384;
#X floatatom 76 306 5 0 0 0 - - - 0;
#X obj 76 168 rpole~;
#X obj 114 105 tgl 19 0 empty empty empty 0 -6 0 8 #dfdfdf #000000 #000000 0 1;
#X obj 76 105 *~;
#X msg 97 137 set 1;
#X floatatom 151 118 4 -100 100 0 - - - 0;
#X obj 151 143 / 100;
#X text 50 20 Stuff to test it:;
#X obj 93 210 output~;
#X obj 151 72 declare -stdpath ./;
#X connect 0 0 6 0;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 4 0 2 0;
#X connect 4 0 11 0;
#X connect 5 0 6 1;
#X connect 6 0 4 0;
#X connect 7 0 4 0;
#X connect 8 0 9 0;
#X connect 9 0 4 1;
#X restore 415 492 pd test;
#X text 94 272 y[n] = x[n] + a[n] * y[n-1];
#X obj 87 540 lop~;
#X text 8 541 see also:;
#X obj 173 473 rzero~;
#X obj 113 496 cpole~;
#X obj 113 473 rpole~;
#X obj 233 473 rzero_rev~;
#X obj 173 496 czero~;
#X obj 233 496 czero_rev~;
#X text 312 473 real;
#X text 311 495 complex;
#X text 110 454 1-pole;
#X text 170 454 1-zero;
#X text 237 438 1-zero \, reversed, f 8;
#X text 19 478 summary of raw filters:, f 12;
#X obj 128 540 hip~;
#X obj 169 540 bp~;
#X obj 204 540 vcf~;
#X text 285 540 - user-friendly filters;
#X obj 245 540 bob~;
#X obj 375 413 bng 19 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000;
#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 375 446 pd Read-More;
#X obj 10 573 biquad~;
#X text 185 573 - not so friendly;
#X obj 71 572 fexpr~;
#X obj 126 572 slop~, f 7;
#X text 324 570 updated for Pd version 0.42;
#X text 73 10 - real one-pole filter;
#N canvas 698 156 568 277 reference 0;
#X obj 8 45 cnv 5 550 5 empty empty INLETS: 8 18 0 13 #202020 #000000 0;
#X obj 7 75 cnv 1 550 1 empty empty 1st: 8 12 0 13 #9f9f9f #000000 0;
#X obj 8 172 cnv 2 550 2 empty empty OUTLET: 8 12 0 13 #202020 #000000 0;
#X obj 7 248 cnv 5 550 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X obj 8 210 cnv 2 550 2 empty empty ARGUMENT: 8 12 0 13 #202020 #000000 0;
#X text 117 80 signal -;
#X obj 7 136 cnv 1 550 1 empty empty 2nd: 8 12 0 13 #9f9f9f #000000 0;
#X text 117 141 signal -;
#X text 124 115 clear -;
#X text 180 80 real signal to filter., f 49;
#X text 82 97 set <float> -;
#X text 180 97 set internal state., f 49;
#X text 180 115 clear internal state to zero (same as "set 0")., f 49;
#X text 180 141 filter coefficient., f 49;
#X text 117 181 signal - filtered signal.;
#X text 119 220 1) float - filter coefficient (default 0)., f 43;
#X obj 29 16 rpole~;
#X text 81 16 - real one-pole filter.;
#X restore 359 9 pd reference;
#X text 453 9 <= click;
#X obj 3 38 cnv 1 520 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X obj 3 528 cnv 1 520 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X text 30 48 [rpole~] filters an audio signal (left inlet) via a raw one-pole (recursive) real filter \, whose coefficient is controlled by a creation argument or by an audio signal (right inlet)., f 65;
#X text 35 250 The action of [rpole~] is:;
#X text 18 366 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;
#X text 142 106 <- signal to filter;
#X text 131 135 <- clear internal state to zero;
#X text 142 162 <- set internal state;
#X text 172 191 <- filter coefficient (may be a signal);
#X text 151 219 <- creation argument initializes filter coefficient;
#X text 38 297 where y[n] is the output \, x[n] the input \, and a[n] the filter coefficient. The filter is unstable if/when |a[n]| > 1, f 61;
#X connect 0 0 6 1;
#X connect 1 0 6 0;
#X connect 2 0 6 0;
#X connect 4 0 6 0;
#X connect 28 0 29 0;
