#N canvas 360 101 781 462 12;
#N canvas 0 50 450 300 (subpatch) 0;
#X array \$0-tab1 100 float 0;
#X coords 0 5 99 0 200 300 1 0 0;
#X restore 528 37 graph;
#X obj 59 266 bng 19 250 50 0 empty empty empty 0 -6 0 8 #dfdfdf #000000 #000000;
#X floatatom 59 338 4 0 0 0 - - - 0;
#X text 583 343 frequency;
#X floatatom 321 300 3 -99 99 0 - \$0-pole - 0;
#X text 466 325 gain=0;
#X obj 90 407 filter-graph2 \$0-tab1;
#X obj 59 295 filter-graph1 100 22050;
#X text 703 339 22050;
#X obj 234 376 rpole~;
#X obj 320 324 / 100;
#X floatatom 273 301 4 -100 100 0 - \$0-zero - 0;
#X obj 273 324 / 100;
#X obj 234 349 rzero~;
#X text 515 30 5;
#X text 523 336 0;
#X text 511 267 1;
#X text 106 109 If the pole is at p and the zero is at q \, the gain at DC is (1-q)/(1-p) and the gain at Nyquist is (1+q)/(1+p). If the pole location is close to plus or minus one \, this can give large gains unless q is in the same vicinity. (try \, for example \, p=90% \, q=70%)., f 50;
#X text 106 206 The crossover region varies from DC to Nyquist as p and q decrease from 100% to -100%., f 50;
#X text 318 278 pole;
#X text 272 278 zero;
#X text 356 278 (in hundredths);
#N canvas 876 177 293 245 init 0;
#X obj 58 24 loadbang;
#X obj 58 51 bng 19 250 50 0 empty empty empty 0 -6 0 8 #dfdfdf #000000 #000000;
#X obj 58 80 f \$0;
#X text 53 174 This subpatch loads initial;
#X text 56 192 values in number boxes.;
#X msg 58 104 \; \$1-pole 60 \; \$1-zero 20;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X restore 328 393 pd init;
#X text 106 58 This patch demonstrates using the raw filters \, [rpole~] and [rzero~] (raw \, real-valued one-pole and one-zero filters) \, to make a shelving filter., f 50;
#X obj 77 18 cnv 5 5 25 empty empty Shelving\ Filter 15 13 0 16 #dfdfdf #202020 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 10 0;
#X connect 7 0 2 0;
#X connect 7 1 6 1;
#X connect 7 1 13 0;
#X connect 7 2 6 2;
#X connect 9 0 6 3;
#X connect 10 0 9 1;
#X connect 11 0 12 0;
#X connect 12 0 13 1;
#X connect 13 0 9 0;
