#N canvas 0 0 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 czero_rev~ 3 12
0 18 -204280 -1 0;
#X obj 0 303 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 8 12 0 13
-228856 -1 0;
#N canvas 47 228 494 384 META 0;
#X text 12 195 LIBRARY internal;
#X text 12 235 WEBSITE http://crca.ucsd.edu/~msp/;
#X text 12 215 AUTHOR Miller Puckette;
#X text 12 275 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 25 LICENSE SIBSD;
#X text 12 75 INLET_0 signal set clear;
#X text 12 95 INLET_1 signal;
#X text 12 115 INLET_2 signal;
#X text 12 135 INLET_3 signal;
#X text 12 155 OUTLET_0 signal;
#X text 12 175 OUTLET_1 signal;
#X text 12 255 RELEASE_DATE 1997;
#X text 12 45 DESCRIPTION complex one-zero (non-recursive) "reverse"
filter \, raw;
#X restore 500 597 pd META;
#X obj 0 440 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 8 12 0
13 -228856 -1 0;
#X obj 0 502 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8 12
0 13 -228856 -1 0;
#X obj 0 559 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 8 12
0 13 -228856 -1 0;
#N canvas 41 281 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 19 184 User-friendly Filters;
#X obj 22 213 lop~;
#X obj 73 212 hip~;
#X obj 125 213 bp~;
#X obj 170 214 vcf~;
#X obj 23 274 biquad~;
#X text 19 250 Other Objects;
#X text 19 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 [czero_rev~] Related Objects;
#X restore 101 597 pd Related_objects;
#X obj 78 449 cnv 17 3 17 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#X obj 78 312 cnv 17 3 45 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#X text 98 312 signal;
#X text 98 449 signal;
#N canvas 3 174 550 380 test 0;
#X obj 152 296 env~ 16384;
#X floatatom 152 320 5 0 0 0 - - -;
#X floatatom 499 76 4 -1000 1000 0 - - -;
#X obj 349 324 dac~;
#X obj 349 288 *~;
#X obj 390 70 cos~;
#X floatatom 298 8 5 0 0 0 - - -;
#X obj 298 31 phasor~;
#X floatatom 398 14 5 0 0 0 - - -;
#X obj 397 39 / 1000;
#X obj 423 71 -~ 0.25;
#X obj 423 93 cos~;
#X obj 499 95 / 1000;
#X obj 389 121 *~;
#X obj 423 121 *~;
#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 117 89 phasor~;
#X floatatom 115 60 5 0 0 0 - - -;
#X text 77 13 Stuff to test it:;
#X obj 131 149 cpole~;
#X obj 241 262 *~ -1;
#X obj 21 261 env~ 16384;
#X floatatom 21 285 5 0 0 0 - - -;
#X obj 50 312 env~ 16384;
#X floatatom 50 336 5 0 0 0 - - -;
#X obj 138 181 cpole~;
#X obj 146 216 czero_rev~;
#X obj 154 264 czero_rev~;
#X msg 204 103 clear;
#X obj 262 50 cos~;
#X obj 261 83 *~ 0.02;
#X obj 193 50 sig~ 1.1;
#X obj 448 296 *~;
#X connect 0 0 1 0;
#X connect 2 0 12 0;
#X connect 4 0 3 0;
#X connect 5 0 13 0;
#X connect 6 0 7 0;
#X connect 7 0 32 0;
#X connect 8 0 9 0;
#X connect 9 0 7 1;
#X connect 10 0 11 0;
#X connect 11 0 14 0;
#X connect 12 0 14 1;
#X connect 12 0 13 1;
#X connect 13 0 22 2;
#X connect 13 0 28 2;
#X connect 13 0 29 2;
#X connect 13 0 30 2;
#X connect 14 0 22 3;
#X connect 14 0 23 0;
#X connect 14 0 29 3;
#X connect 15 0 16 0;
#X connect 17 0 4 1;
#X connect 17 0 35 1;
#X connect 18 0 17 0;
#X connect 19 0 22 0;
#X connect 19 0 24 0;
#X connect 19 0 35 0;
#X connect 20 0 19 0;
#X connect 22 0 28 0;
#X connect 22 1 28 1;
#X connect 23 0 28 3;
#X connect 23 0 30 3;
#X connect 24 0 25 0;
#X connect 26 0 27 0;
#X connect 28 0 26 0;
#X connect 28 0 29 0;
#X connect 28 1 29 1;
#X connect 29 0 30 0;
#X connect 29 1 30 1;
#X connect 30 0 0 0;
#X connect 30 0 4 0;
#X connect 30 1 15 0;
#X connect 31 0 22 0;
#X connect 31 0 28 0;
#X connect 32 0 33 0;
#X connect 33 0 5 0;
#X connect 33 0 10 0;
#X connect 34 0 33 0;
#X connect 35 0 3 1;
#X restore 101 568 pd test;
#X text 98 327 clear;
#X text 98 342 set;
#X obj 78 362 cnv 17 3 17 empty \$0-pddp.cnv.let.1 1 5 9 0 16 -228856
-162280 0;
#X text 98 362 signal;
#X obj 78 387 cnv 17 3 17 empty \$0-pddp.cnv.let.2 2 5 9 0 16 -228856
-162280 0;
#X text 98 387 signal;
#X obj 78 412 cnv 17 3 17 empty \$0-pddp.cnv.let.3 3 5 9 0 16 -228856
-162280 0;
#X text 98 412 signal;
#X obj 78 474 cnv 17 3 17 empty \$0-pddp.cnv.let.1 1 5 9 0 16 -228856
-162280 0;
#X text 98 474 signal;
#X obj 460 3 czero_rev~;
#X obj 430 20 pddp/pddplink http://wiki.puredata.info/en/czero_rev~
-text pdpedia: czero_rev~;
#X text 198 196 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 261 176 y[n] = - a[n] * x[n] + x[n-1];
#X text 199 245 The transfer function is H(Z) = -a + Z^-1.;
#X obj 52 127 osc~ 100;
#X msg 60 152 clear;
#X obj 86 203 sig~;
#X obj 120 225 sig~;
#X obj 156 245 sig~;
#X msg 67 178 set 0.6 0.8;
#X obj 51 268 czero_rev~ 0.9 0.4;
#X text 11 23 complex one-zero (non-recursive) "reverse" filter \,
raw;
#X text 158 312 - signal to filter (real part).;
#X text 158 327 - clear internal state to zero.;
#X text 158 342 - set internal state (real & imaginary parts).;
#X text 158 362 - signal to filter ( imaginary part ).;
#X text 158 387 - filter coefficient ( real part ).;
#X text 158 412 - filter coefficient ( imaginary part ).;
#X text 157 521 - (optional) filter coefficient (real part).;
#X text 157 536 - (optional) filter coefficient (imaginary part).;
#X text 80 521 1) float;
#X text 80 536 2) float;
#X text 93 57 [czero_rev~] 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). The impulse response is that of "rzero" reversed in time.
;
#X text 201 155 The action of [czero_rev~] is:;
#X obj 4 597 pddp/pddplink all_about_help_patches.pd -text Usage Guide;
#X obj 455 51 pddp/dsp;
#X connect 28 0 34 0;
#X connect 29 0 34 0;
#X connect 30 0 34 1;
#X connect 31 0 34 2;
#X connect 32 0 34 3;
#X connect 33 0 34 0;
