#N canvas 427 30 555 619 10;
#X obj 0 595 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
14 -228856 -66577 0;
#X obj 0 0 cnv 15 552 40 empty \$0-pddp.cnv.header cpole~ 3 12 0 18
-204280 -1 0;
#X obj 0 287 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 8 12 0 13
-228856 -1 0;
#N canvas 480 218 494 405 META 0;
#X text 12 185 LIBRARY internal;
#X text 12 225 WEBSITE http://crca.ucsd.edu/~msp/;
#X text 12 25 LICENSE SIBSD;
#X text 12 205 AUTHOR Miller Puckette;
#X text 12 265 HELP_PATCH_AUTHORS Updated for Pd version-0.38. Jonathan
Wilkes revised the patch to conform to the PDDP template for Pd version
0.42.;
#X text 12 5 KEYWORDS signal filter;
#X text 12 45 DESCRIPTION complex one-pole (recursive) filter \, raw
;
#X text 12 65 INLET_0 signal;
#X text 12 145 OUTLET_0 signal;
#X text 12 85 INLET_1 signal;
#X text 12 105 INLET_2 signal;
#X text 12 125 INLET_3 signal;
#X text 12 165 OUTLET_1 signal;
#X text 12 245 RELEASE_DATE 1997;
#X restore 500 597 pd META;
#X obj 0 424 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 8 12 0
13 -228856 -1 0;
#X obj 0 486 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8 12
0 13 -228856 -1 0;
#X obj 0 543 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 8 12
0 13 -228856 -1 0;
#N canvas 212 309 428 309 Related_objects 0;
#X obj 74 60 rzero~;
#X obj 25 80 cpole~;
#X obj 25 60 rpole~;
#X obj 123 60 rzero_rev~;
#X obj 74 80 czero~;
#X obj 123 80 czero_rev~;
#X text 201 60 real;
#X text 200 81 complex;
#X text 22 44 1-pole;
#X text 71 44 1-zero;
#X text 121 44 1-zero \, reversed;
#X text 47 29 summary of raw filters:;
#X text 18 184 User-friendly Filters;
#X obj 21 213 lop~;
#X obj 72 212 hip~;
#X obj 124 213 bp~;
#X obj 169 214 vcf~;
#X obj 22 274 biquad~;
#X text 18 250 Other Objects;
#X text 18 113 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 obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
14 -204280 -1 0;
#X text 7 1 [cpole~] Related Objects;
#X restore 101 597 pd Related_objects;
#X obj 78 433 cnv 17 3 17 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#X obj 78 296 cnv 17 3 45 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#X text 98 296 signal;
#X text 98 433 signal;
#X obj 492 12 cpole~;
#X obj 57 132 osc~ 100;
#X msg 65 155 clear;
#X obj 84 199 sig~;
#X obj 121 200 sig~;
#X obj 158 200 sig~;
#X obj 56 230 cpole~ 0.9 0.4;
#X msg 67 177 set 0.6 0.8;
#X text 203 181 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 203 223 The transfer function is H(Z) = 1/(1 - aZ^-1).;
#N canvas 45 205 428 355 test 0;
#X obj 66 88 osc~;
#X floatatom 66 65 5 0 0 0 - - -, f 5;
#X obj 8 297 env~ 16384;
#X floatatom 8 321 5 0 0 0 - - -, f 5;
#X obj 94 117 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 66 115 *~;
#X msg 75 142 set 1;
#X floatatom 340 122 4 -1000 1000 0 - - -, f 4;
#X obj 205 325 dac~;
#X obj 205 289 *~;
#X text 70 28 Stuff to test it:;
#X obj 231 116 cos~;
#X obj 67 237 cpole~;
#X obj 251 75 phasor~;
#X floatatom 251 54 5 0 0 0 - - -, f 5;
#X floatatom 122 65 5 0 0 0 - - -, f 5;
#X obj 150 117 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 122 115 *~;
#X obj 122 88 phasor~;
#X floatatom 314 52 5 0 0 0 - - -, f 5;
#X obj 314 75 / 1000;
#X obj 264 117 -~ 0.25;
#X obj 264 139 cos~;
#X obj 340 141 / 1000;
#X obj 230 167 *~;
#X obj 264 167 *~;
#X obj 84 297 env~ 16384;
#X floatatom 84 321 5 0 0 0 - - -, f 5;
#X obj 237 285 dbtorms;
#X floatatom 238 265 5 0 0 0 - - -, f 5;
#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
14 -204280 -1 0;
#X text 7 1 [cpole~] Test;
#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 12 0;
#X connect 6 0 12 0;
#X connect 7 0 23 0;
#X connect 9 0 8 0;
#X connect 9 0 8 1;
#X connect 11 0 24 0;
#X connect 12 0 2 0;
#X connect 12 0 9 0;
#X connect 12 1 26 0;
#X connect 13 0 21 0;
#X connect 13 0 11 0;
#X connect 14 0 13 0;
#X connect 15 0 18 0;
#X connect 16 0 17 1;
#X connect 17 0 12 0;
#X connect 18 0 17 0;
#X connect 19 0 20 0;
#X connect 20 0 13 1;
#X connect 21 0 22 0;
#X connect 22 0 25 0;
#X connect 23 0 25 1;
#X connect 23 0 24 1;
#X connect 24 0 12 2;
#X connect 25 0 12 3;
#X connect 26 0 27 0;
#X connect 28 0 9 1;
#X connect 29 0 28 0;
#X restore 102 552 pd test;
#X text 98 311 clear;
#X text 98 326 set;
#X obj 78 346 cnv 17 3 17 empty \$0-pddp.cnv.let.1 1 5 9 0 16 -228856
-162280 0;
#X text 98 346 signal;
#X obj 78 371 cnv 17 3 17 empty \$0-pddp.cnv.let.2 2 5 9 0 16 -228856
-162280 0;
#X text 98 371 signal;
#X obj 78 396 cnv 17 3 17 empty \$0-pddp.cnv.let.3 3 5 9 0 16 -228856
-162280 0;
#X obj 78 458 cnv 17 3 17 empty \$0-pddp.cnv.let.1 1 5 9 0 16 -228856
-162280 0;
#X text 98 458 signal;
#X text 11 23 complex one-pole (recursive) filter \, raw;
#X text 98 396 signal;
#X text 168 296 - signal to filter (real part).;
#X text 168 311 - clear internal state to zero.;
#X text 168 326 - set internal state (real & imaginary parts).;
#X text 168 346 - signal to filter ( imaginary part ).;
#X text 168 371 - filter coefficient ( real part ).;
#X text 168 396 - filter coefficient ( imaginary part ).;
#X text 169 504 - (optional) coefficient (real).;
#X text 169 519 - (optional) coefficient (imaginary).;
#X text 80 504 1) float;
#X text 80 519 2) float;
#X text 202 134 The action of [cpole~] is:;
#X text 85 68 [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).
;
#X obj 4 597 pddp/pddplink all_about_help_patches.pd -text Usage Guide
;
#X obj 480 51 pddp/dsp;
#X obj 102 572 pddp/pddplink ../3.audio.examples/H12.peaking.pd -text
doc/3.audio.examples/H12.peaking.pd;
#X text 208 160 y[n] = x[n] + a[n] * y[n-1];
#X connect 13 0 18 0;
#X connect 14 0 18 0;
#X connect 15 0 18 1;
#X connect 16 0 18 2;
#X connect 17 0 18 3;
#X connect 19 0 18 0;
