#N canvas 44 23 1296 717 10;
#X floatatom 150 388 7 0 0 0 Hz #0-freq -;
#X obj 149 340 knob 40 40 20 20000 1 0 \$0-freq \$0-freq-set Cutoff
0 -10 193 15 -262144 -1 -1 3900 1;
#N canvas 471 26 391 376 coeficientes 0;
#N canvas 48 311 320 297 lop 0;
#X obj 44 108 t f f;
#X obj 44 138 expr 1 - $f1;
#N canvas 82 60 259 263 input 0;
#X obj 61 66 expr type_\$0 == 0;
#X obj 61 93 sel 1;
#X obj 61 208 outlet;
#X obj 61 38 r \$0-get-coeff;
#X obj 86 130 r \$0-w;
#X obj 61 160 f;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 3 0 0 0;
#X connect 4 0 5 1;
#X connect 5 0 2 0;
#X restore 44 40 pd input;
#X obj 44 78 clip 0 1;
#X obj 44 167 pack f f 0;
#X obj 44 201 s \$0-coeficientes;
#X connect 0 0 1 0;
#X connect 0 1 4 1;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 5 0;
#X restore 76 125 pd lop;
#N canvas 0 28 434 297 hip 0;
#X obj 132 136 expr 1 - $f1;
#N canvas 76 96 259 263 input 0;
#X obj 61 93 sel 1;
#X obj 61 218 outlet;
#X obj 61 66 expr type_\$0 == 1;
#X obj 61 38 r \$0-get-coeff;
#X obj 86 130 r \$0-w;
#X obj 61 160 f;
#X connect 0 0 5 0;
#X connect 2 0 0 0;
#X connect 3 0 2 0;
#X connect 4 0 5 1;
#X connect 5 0 1 0;
#X restore 133 72 pd input;
#X obj 133 107 clip 0 1;
#X obj 132 211 s \$0-coeficientes;
#X msg 131 170 \$1 1 1;
#X connect 0 0 4 0;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 4 0 3 0;
#X restore 76 147 pd hip;
#X obj 208 44 inlet;
#N canvas 358 223 309 252 filter-type 0;
#X obj 55 33 inlet;
#X obj 55 166 trigger bang float;
#X obj 160 195 v type_\$0;
#X obj 55 195 s \$0-input;
#X obj 55 64 symbol;
#X obj 55 95 sel [lop~] [hip~];
#X msg 55 127 0;
#X msg 104 125 1;
#X connect 0 0 4 0;
#X connect 1 0 3 0;
#X connect 1 1 2 0;
#X connect 4 0 5 0;
#X connect 5 0 6 0;
#X connect 5 1 7 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X restore 208 80 pd filter-type;
#X obj 58 44 inlet;
#N canvas 430 153 790 479 init 0;
#X obj 639 126 s \$0-menu-set;
#X msg 631 90 0;
#X obj 631 44 loadbang;
#X obj 141 59 r \$0-menu;
#X obj 141 88 sel 2 5 7 8 11;
#X obj 222 337 s \$0-sl-1;
#X obj 222 113 sel 3 4 6;
#X obj 235 242 sel 9 10;
#X obj 527 245 r \$0-menu;
#X obj 527 274 sel 8 9 10;
#X obj 527 394 s \$0-sl-2;
#X msg 669 77 \; pd dsp 1;
#X obj 569 193 s \$0-freq-set;
#X msg 569 169 500;
#X obj 631 147 s \$0-sl-1;
#X obj 618 171 s \$0-sl-2;
#X msg 280 270 label \, color 0 0 -1;
#X msg 235 299 label Slope \, label_pos -50 10 \, color 1 -1 -1;
#X msg 141 211 label Q \, label_pos -15 10 \, color 1 -1 -1;
#X msg 222 161 label Resonance \, label_pos -86 10 \, color 1 -1 -1
;
#X msg 609 363 label \, color 0 0 -1;
#X msg 527 327 label Peak \, color 1 -1 -1;
#X msg 546 300 label Threshold \, color 1 -1 -1;
#X connect 1 0 0 0;
#X connect 1 0 14 0;
#X connect 1 0 15 0;
#X connect 2 0 1 0;
#X connect 2 0 11 0;
#X connect 2 0 13 0;
#X connect 3 0 4 0;
#X connect 4 0 18 0;
#X connect 4 1 18 0;
#X connect 4 2 18 0;
#X connect 4 3 18 0;
#X connect 4 4 18 0;
#X connect 4 5 6 0;
#X connect 6 0 19 0;
#X connect 6 1 19 0;
#X connect 6 2 19 0;
#X connect 6 3 7 0;
#X connect 7 0 17 0;
#X connect 7 1 17 0;
#X connect 7 2 16 0;
#X connect 8 0 9 0;
#X connect 9 0 21 0;
#X connect 9 1 22 0;
#X connect 9 2 22 0;
#X connect 9 3 20 0;
#X connect 13 0 12 0;
#X connect 16 0 5 0;
#X connect 17 0 5 0;
#X connect 18 0 5 0;
#X connect 19 0 5 0;
#X connect 20 0 10 0;
#X connect 21 0 10 0;
#X connect 22 0 10 0;
#X restore 222 127 pd init \; GUI;
#N canvas 213 192 570 443 input 0;
#X obj 290 115 loadbang;
#X obj 291 139 samplerate~;
#X obj 134 74 inlet;
#X obj 134 202 clip 0;
#X obj 291 172 / 2;
#X obj 134 311 s \$0-get-coeff;
#X obj 52 202 r \$0-input;
#X obj 372 170 v pi;
#X obj 320 172 v sr;
#X obj 372 144 pi;
#X obj 134 243 expr $f1 * 2*pi / sr;
#X obj 134 283 trigger bang float;
#X obj 250 311 s \$0-w;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 1 0 8 0;
#X connect 2 0 3 0;
#X connect 3 0 10 0;
#X connect 4 0 3 2;
#X connect 6 0 10 0;
#X connect 9 0 7 0;
#X connect 10 0 11 0;
#X connect 11 0 5 0;
#X connect 11 1 12 0;
#X restore 58 80 pd input;
#X obj 129 212 r \$0-coeficientes;
#X obj 127 243 unpack f f f;
#X obj 200 268 s \$0-zero;
#X obj 158 294 s \$0-ganho;
#X obj 120 321 s \$0-polo;
#X connect 2 0 3 0;
#X connect 4 0 6 0;
#X connect 7 0 8 0;
#X connect 8 0 11 0;
#X connect 8 1 10 0;
#X connect 8 2 9 0;
#X restore 150 419 pd coeficientes;
#X msg 237 364 [lop~];
#X msg 246 388 [hip~];
#X obj 237 340 loadbang;
#X obj 52 462 *~;
#X floatatom 67 436 0 0 0 0 - #0-ganho -;
#X text 67 415 ganho;
#X obj 52 377 noise~;
#X text 23 216 Perceba que \, neste exemplo \, o Polo e o Zero possuem
valores apenas no eixo real. Isso é porque tratam-se \, de fato \,
de um polo e um zero real \, com apenas entrada de valor de coeficiente
real. Para que o polo e o zero saiam do eixo real \, é necessário que
sejam complexos e recebam coeficientes complexos como veremos a seguir.
;
#X floatatom 164 475 0 0 0 0 - #0-ganho -;
#X text 163 455 ganho;
#X floatatom 247 475 0 0 0 0 - #0-zero -;
#X text 294 455 polo;
#X floatatom 292 475 0 0 0 0 - #0-polo -;
#X text 244 455 zero;
#X obj 164 501 v a0;
#X obj 145 558 noise~;
#X obj 145 625 output~;
#X obj 292 501 v b1;
#X obj 247 501 v a1;
#X obj 52 581 rpole~;
#X floatatom 85 557 0 0 0 0 - #0-polo -;
#X text 81 539 polo;
#X text 81 469 zero;
#X obj 52 514 rzero~;
#X floatatom 85 489 0 0 0 0 - #0-zero -;
#X obj 52 625 output~;
#N canvas 74 26 1057 399 (subpatch) 0;
#X obj 101 101 cnv 15 878 231 empty empty empty 18 9 1 15 -262144 -1
0;
#N canvas 1075 32 281 428 plot 0;
#N canvas 42 324 537 367 init 0;
#X obj 77 21 loadbang;
#X obj 78 272 s \$0-dbrange;
#X obj 254 97 samplerate~;
#X obj 254 120 v sr_\$0;
#X msg 146 92 1;
#X obj 146 117 atan;
#X obj 146 167 v pi_\$0;
#X obj 146 143 * 4;
#X msg 121 208 400;
#X obj 357 87 table re1_\$0 400;
#X obj 357 107 table im1_\$0 400;
#X obj 357 127 table re2_\$0 400;
#X obj 357 147 table im2_\$0 400;
#N canvas 699 151 437 478 get-complex-freqs 0;
#X msg 232 232 resize \$1;
#X obj 281 276 s re1_\$0;
#X obj 267 301 s im1_\$0;
#X obj 256 332 s re2_\$0;
#X obj 247 362 s im2_\$0;
#X obj 12 299 tabwrite re1_\$0;
#X obj 108 394 tabwrite im2_\$0;
#X obj 232 393 s amp_\$0;
#X obj 50 80 change;
#X obj 251 171 v table_size_\$0;
#X obj 50 113 trigger bang float;
#X obj 232 206 change 400;
#X obj 50 43 inlet;
#X obj 76 363 tabwrite re2_\$0;
#X obj 43 335 tabwrite im1_\$0;
#X obj 50 182 expr cos($f1) \; sin($f1) \; cos($f1 * 2) \; sin($f1
* 2) \; $f2;
#N canvas 11 46 935 668 loop 0;
#X obj 106 192 until;
#X obj 144 241 + 1;
#X msg 124 216 0;
#X obj 106 95 t f f;
#X obj 483 216 until;
#X obj 529 265 + 1;
#X msg 501 241 0;
#X obj 106 270 t f f;
#X obj 211 355 +;
#X obj 106 370 mtof;
#X obj 106 144 t f b f;
#X obj 483 191 t f b f;
#X obj 483 326 /;
#X obj 106 31 inlet;
#X obj 106 574 outlet;
#X obj 259 583 outlet;
#X obj 483 144 expr table_size_\$0 - $f1;
#X obj 483 265 f;
#X obj 483 379 expr pow($f1 \, 0.4);
#X obj 106 241 f;
#X obj 483 296 trigger f f;
#X obj 106 63 expr rint(table_size_\$0 * 0.98);
#X obj 483 407 * 20.6017;
#X text 556 407 MIDI 16;
#X obj 483 498 expr $f1 * (2 * -pi_\$0) / 44100;
#X obj 106 465 expr $f1 * (2 * -pi_\$0) / 44100;
#X obj 86 33 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 106 298 expr (($f1 + 1) * (midi_range_\$0 / $f2)) + 16;
#X connect 0 0 19 0;
#X connect 1 0 19 1;
#X connect 2 0 19 1;
#X connect 3 0 10 0;
#X connect 3 1 16 0;
#X connect 4 0 17 0;
#X connect 5 0 17 1;
#X connect 6 0 17 1;
#X connect 7 0 27 0;
#X connect 7 1 8 0;
#X connect 8 0 15 0;
#X connect 9 0 25 0;
#X connect 10 0 0 0;
#X connect 10 1 2 0;
#X connect 10 2 27 1;
#X connect 11 0 4 0;
#X connect 11 1 6 0;
#X connect 11 2 12 1;
#X connect 12 0 18 0;
#X connect 13 0 21 0;
#X connect 16 0 8 1;
#X connect 16 0 11 0;
#X connect 17 0 5 0;
#X connect 17 0 20 0;
#X connect 18 0 22 0;
#X connect 19 0 1 0;
#X connect 19 0 7 0;
#X connect 20 0 12 0;
#X connect 20 1 15 0;
#X connect 21 0 3 0;
#X connect 22 0 24 0;
#X connect 24 0 14 0;
#X connect 25 0 14 0;
#X connect 26 0 21 0;
#X connect 27 0 9 0;
#X restore 50 143 pd loop;
#X connect 0 0 1 0;
#X connect 0 0 2 0;
#X connect 0 0 3 0;
#X connect 0 0 4 0;
#X connect 0 0 7 0;
#X connect 8 0 10 0;
#X connect 10 0 16 0;
#X connect 10 1 9 0;
#X connect 10 1 11 0;
#X connect 11 0 0 0;
#X connect 12 0 8 0;
#X connect 15 0 5 0;
#X connect 15 1 14 0;
#X connect 15 2 13 0;
#X connect 15 3 6 0;
#X connect 15 4 5 1;
#X connect 15 4 14 1;
#X connect 15 4 13 1;
#X connect 15 4 6 1;
#X connect 16 0 15 0;
#X connect 16 1 15 1;
#X restore 121 236 pd get-complex-freqs;
#X text 151 208 array size;
#X obj 29 304 s \$0-freq-set;
#X obj 77 57 trigger b b b;
#X msg 263 53 \; pd dsp 1;
#X obj 245 199 v midi_range_\$0;
#X obj 245 173 ftom;
#X msg 245 147 8750.55;
#X msg 29 273 20000;
#X msg 78 239 24;
#X connect 0 0 16 0;
#X connect 2 0 3 0;
#X connect 4 0 5 0;
#X connect 5 0 7 0;
#X connect 7 0 6 0;
#X connect 8 0 13 0;
#X connect 16 0 21 0;
#X connect 16 1 8 0;
#X connect 16 1 22 0;
#X connect 16 2 2 0;
#X connect 16 2 4 0;
#X connect 16 2 17 0;
#X connect 16 2 20 0;
#X connect 19 0 18 0;
#X connect 20 0 19 0;
#X connect 21 0 15 0;
#X connect 22 0 1 0;
#X restore 126 195 pd init \; tables;
#N canvas 67 23 1040 236 Z-Transform 0;
#X obj 45 19 inlet;
#X obj 45 200 outlet;
#X obj 45 164 expr sqrt($f1*$f1 + $f2*$f2) / sqrt($f3*$f3 + $f4*$f4)
;
#X text 340 44 (a1) a2 (b1) b2 b3;
#X obj 45 74 expr $f4 + ($f5 * re1_\$0[$f1]) + ($f6 * re2_\$0[$f1])
\; ($f5 * im1_\$0[$f1]) + ($f6 * im2_\$0[$f1]) \; 1 - ($f2 * re1_\$0[$f1])
- ($f3 * re2_\$0[$f1]) \; 0 - ($f2 * im1_\$0[$f1]) - ($f3 * im2_\$0[$f1])
;
#X text 428 75 b1 + (b2 * re1) + (b3 * re2) = reI;
#X text 463 90 (b2 * im1) + (b3 * im2) = imI;
#X text 435 105 1 - (a1 * re1) + (a2 * re2) = reII;
#X text 435 119 0 - (a1 * im1) + (a2 * im2) = imII;
#X text 20 144 reI;
#X text 143 143 imI;
#X text 256 143 reII;
#X text 384 142 imII;
#X text 439 166 ampI / ampII;
#X obj 211 45 unpack f f f f f;
#X obj 211 18 inlet;
#X text 92 20 index;
#X text 260 18 coeficientes;
#X obj 698 68 cnv 15 320 90 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 728 97 H(z) = b1 + (b2 * z^-1) + (b3 * z^-2);
#X text 768 103 _________________________________;
#X text 785 119 1 + (a1 * z^-1) + (a2 * z^-2);
#X text 711 75 Z-Transform:;
#X connect 0 0 4 0;
#X connect 2 0 1 0;
#X connect 4 0 2 0;
#X connect 4 1 2 1;
#X connect 4 2 2 2;
#X connect 4 3 2 3;
#X connect 14 0 4 1;
#X connect 14 1 4 2;
#X connect 14 2 4 3;
#X connect 14 3 4 4;
#X connect 14 4 4 5;
#X connect 15 0 14 0;
#X restore 28 284 pd Z-Transform;
#X obj 28 257 trigger float float;
#X obj 28 185 t bang list;
#N canvas 0 22 181 220 loop 0;
#X obj 28 100 until;
#X obj 68 138 + 1;
#X msg 72 100 0;
#X obj 28 137 f;
#X obj 28 13 inlet;
#X obj 28 173 outlet;
#X obj 28 42 trigger b b;
#X obj 28 71 v table_size_\$0;
#X connect 0 0 3 0;
#X connect 1 0 3 1;
#X connect 2 0 3 1;
#X connect 3 0 1 0;
#X connect 3 0 5 0;
#X connect 4 0 6 0;
#X connect 6 0 7 0;
#X connect 6 1 2 0;
#X connect 7 0 0 0;
#X restore 28 219 pd loop;
#X obj 28 344 tabwrite \$0-Passa-Baixa;
#N canvas 121 22 226 277 db-range 0;
#X obj 42 31 inlet;
#X obj 42 61 rmstodb;
#X obj 42 90 - 100;
#X obj 98 61 r \$0-dbrange;
#X obj 108 109 * -1;
#X obj 41 147 clip;
#X obj 80 183 /;
#X obj 80 216 outlet;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 3 0 4 0;
#X connect 3 0 5 2;
#X connect 3 0 6 1;
#X connect 4 0 5 1;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X restore 28 314 pd db-range;
#X obj 29 23 r \$0-coeficientes;
#X msg 33 158 \$1 0 \$2 \$3 0;
#X obj 50 73 unpack f f f;
#X obj 120 101 * -1;
#X obj 59 129 pack f f f;
#X connect 1 0 6 0;
#X connect 2 0 1 0;
#X connect 2 1 5 1;
#X connect 3 0 4 0;
#X connect 3 1 1 1;
#X connect 4 0 2 0;
#X connect 6 0 5 0;
#X connect 7 0 9 0;
#X connect 8 0 3 0;
#X connect 9 0 11 0;
#X connect 9 1 11 1;
#X connect 9 2 10 0;
#X connect 10 0 11 2;
#X connect 11 0 8 0;
#X restore 113 53 pd plot;
#X obj 106 122 cnv 15 808 190 empty empty empty 20 12 0 14 -1 -262144
0;
#X obj 477 315 cnv 15 15 15 empty empty Kilohertz 18 9 1 16 -262144
-1 0;
#X obj 111 277 cnv 15 798 27 empty empty empty 20 12 0 14 -257983 -66577
0;
#X obj 113 135 hsl 795 29 0 127 0 0 \$0-freq-slider \$0-freq-slider-set
empty -2 -8 0 10 -228856 -228856 -1 0 0;
#X obj 111 165 cnv 15 798 27 empty empty empty 20 12 0 14 -261429 -66577
0;
#X obj 111 221 cnv 15 798 27 empty empty empty 20 12 0 14 -257983 -66577
0;
#X text 215 138 0.05;
#X text 115 138 0.02;
#X obj 111 249 cnv 15 798 27 empty empty empty 20 12 0 14 -241340 -66577
0;
#X text 816 137 10;
#X text 893 138 20;
#X text 741 137 5;
#X text 638 137 2;
#X text 560 138 1;
#X text 474 138 0.5;
#X text 372 138 0.2;
#X text 292 138 0.1;
#X text 916 268 -18;
#X text 916 294 -24;
#X text 922 183 0;
#X obj 930 226 cnv 15 15 15 empty empty dB 18 9 1 17 -262144 -1 0;
#X text 916 238 -12;
#X obj 111 193 cnv 15 798 27 empty empty empty 20 12 0 14 -241340 -66577
0;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 100 170 1;
#X restore 128 135 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 77 170 1;
#X restore 228 135 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 80 170 1;
#X restore 305 135 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 102 170 1;
#X restore 385 135 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 78 170 1;
#X restore 487 135 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 78 170 1;
#X restore 565 135 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 103 170 1;
#X restore 643 135 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 78 170 1;
#X restore 746 135 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 78 170 1;
#X restore 824 135 graph;
#X text 918 211 -6;
#N canvas 391 118 975 563 (subpatch) 0;
#X array \$0-Passa-Baixa 400 float 1;
#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X coords 0 0.5 399 -1 800 170 1;
#X restore 110 135 graph;
#X text 922 154 6;
#X text 112 103 RESPOSTA DE FREQUÊNCIA:;
#X coords 0 -1 1 1 880 233 2 100 100;
#X restore 396 466 pd;
#X obj 145 590 fexpr~ a0*$x - a1*$x[-1] + b1*$y[-1];
#X text 20 26 O Plano Z é um plano complexo - com o eixo real na horizontal
e o eixo imaginário na vertical - usado para representar os Polos (com
um "X") e Zeros (com um "O").;
#X text 20 74 Vejamos a representação dos filtros que acabamos de ver
\, o [lop~] - de um Polo - e [hip~] - de um Polo e um Zero. Abaixo
\, no subpatch [pd coeficientes] \, geramos os coeficientes e escolhemos
o tipo de filtro ([lop~] ou [hip~]) pelo inlet da direita. No inlet
esquerdo temos o controle da frequência de corte. Mais abaixo recebemos
os coeficientes de ganho \, do polo e do zero para a implementação
do filtro. O ganho interfere na resposta de frequência \, mas é importante
notar que o Plano Z não considera o coeficiente de ganho!;
#N canvas 122 91 603 581 Z-Plane-biquad 0;
#X obj 101 101 cnv 15 450 450 empty empty empty 20 12 1 14 -191407
-66577 0;
#X obj 176 176 bng 300 1000 1000 0 \$0-bng \$0-bng-set empty 17 7 0
10 -191407 -245500 -1;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 101 101 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 176 101 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 251 101 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 326 101 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 401 101 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 476 101 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 101 176 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 176 176 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 251 176 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 326 176 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 401 176 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 476 176 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 101 251 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 176 251 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 251 251 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 326 251 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 401 251 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 476 251 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 101 326 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 176 326 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 251 326 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 326 326 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 401 326 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 476 326 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 101 401 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 176 401 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 251 401 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 326 401 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 401 401 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 476 401 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 101 476 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 176 476 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 251 476 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 326 476 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 401 476 graph;
#N canvas 0 22 450 300 (subpatch) 0;
#X coords 0 1 100 -1 75 75 1;
#X restore 476 476 graph;
#X obj 325 101 cnv 1 2 450 empty empty empty 20 12 0 14 -258113 -66577
0;
#X obj 100 325 cnv 1 450 2 empty empty empty 20 12 0 14 -258113 -66577
0;
#X obj 177 177 cnv 15 15 15 empty \$0-pole1 X 145 150 0 14 -191407
-66577 0;
#X obj 177 177 cnv 15 15 15 empty \$0-zero1 empty 145 150 0 14 -191407
-66577 0;
#X obj 177 177 cnv 15 15 15 empty \$0-pole2 empty 145 150 0 14 -191407
-66577 0;
#X obj 177 177 cnv 15 15 15 empty \$0-zero2 empty 145 150 0 14 -191407
-66577 0;
#N canvas 576 25 310 167 z-plane 0;
#N canvas 349 405 416 153 GUI_(PLOT-POLES-AND-ZEROS) 0;
#X obj 67 42 inlet;
#X obj 118 42 inlet;
#X obj 172 45 inlet;
#X obj 223 45 inlet;
#N canvas 149 34 1099 643 Poles 0;
#X obj 183 305 s \$0-pole1;
#X obj 183 251 pack;
#X msg 183 277 label_pos \$1 \$2;
#X obj 183 165 * 150;
#X obj 180 197 + 150;
#X obj 238 214 + 150;
#X obj 177 224 - 5;
#X obj 190 58 inlet;
#X obj 265 57 inlet;
#X obj 311 88 r \$0-P1-im;
#X obj 61 104 r \$0-P1-re;
#X obj 231 169 * -150;
#X msg 387 364 set \$1;
#X obj 387 388 s \$0-p1-sl-set;
#X obj 338 293 expr if ($f1 == $f3 \, sqrt($f1*$f1 + $f2*$f2) \, ($f1
/ 2) + 0.5);
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 6 0;
#X connect 5 0 1 1;
#X connect 6 0 1 0;
#X connect 7 0 3 0;
#X connect 7 0 14 0;
#X connect 8 0 11 0;
#X connect 8 0 14 1;
#X connect 9 0 11 0;
#X connect 10 0 3 0;
#X connect 11 0 5 0;
#X connect 12 0 13 0;
#X connect 14 0 12 0;
#X restore 66 74 pd Poles;
#N canvas 139 108 1193 660 Zeros 0;
#X obj 183 251 pack;
#X msg 183 277 label_pos \$1 \$2;
#X obj 183 165 * 150;
#X obj 180 197 + 150;
#X obj 238 214 + 150;
#X obj 177 224 - 5;
#X obj 190 58 inlet;
#X obj 265 57 inlet;
#X obj 231 169 * -150;
#X obj 183 305 s \$0-zero1;
#X obj 61 104 r \$0-Z1-re;
#X obj 373 84 r \$0-Z1-im;
#X msg 415 364 set \$1;
#X obj 395 395 s \$0-z1-sl-set;
#X obj 94 368 expr abs($f1) > 1.5 || abs($f2) > 1.5;
#X obj 95 395 sel 1 0;
#X msg 107 436 label O;
#X msg 59 432 label;
#X obj 215 410 expr $f1 == 0 && $f2 == 0;
#X obj 207 440 sel 1 0;
#X msg 232 471 label O;
#X msg 178 471 label;
#X obj 246 524 s \$0-zero1;
#X obj 372 291 expr if ($f1 == $f3 \, sqrt($f1*$f1 + $f2*$f2) \, ($f1
/ 2) + 0.5);
#X connect 0 0 1 0;
#X connect 1 0 9 0;
#X connect 2 0 3 0;
#X connect 3 0 5 0;
#X connect 4 0 0 1;
#X connect 5 0 0 0;
#X connect 6 0 2 0;
#X connect 6 0 14 0;
#X connect 6 0 18 0;
#X connect 6 0 23 0;
#X connect 7 0 8 0;
#X connect 7 0 14 1;
#X connect 7 0 18 1;
#X connect 7 0 23 1;
#X connect 8 0 4 0;
#X connect 10 0 2 0;
#X connect 11 0 8 0;
#X connect 12 0 13 0;
#X connect 14 0 15 0;
#X connect 15 0 17 0;
#X connect 15 1 16 0;
#X connect 16 0 9 0;
#X connect 17 0 9 0;
#X connect 18 0 19 0;
#X connect 19 0 21 0;
#X connect 19 1 20 0;
#X connect 20 0 22 0;
#X connect 21 0 22 0;
#X connect 23 0 12 0;
#X restore 172 79 pd Zeros;
#N canvas 14 68 1299 625 GUI 0;
#X obj 117 211 s \$0-P1-im;
#X obj 6 211 s \$0-P1-re;
#X obj 228 211 s \$0-P2-re;
#X obj 339 211 s \$0-P2-im;
#X obj 924 205 s \$0-Z2-im;
#X obj 813 205 s \$0-Z2-re;
#X obj 702 205 s \$0-Z1-im;
#X obj 591 205 s \$0-Z1-re;
#X obj 591 122 expr if (z_pair_\$0 == 1 \, cos($f2 * pi_\$0) * $f1
\, $f1 *2 -1) \; if (z_pair_\$0 == 1 \, sin($f2 * pi_\$0) * $f1 \,
0) \; if (z_pair_\$0 == 1 \, cos($f2 * pi_\$0) * $f1 \, $f2 * 2 -1)
\; if (z_pair_\$0 == 1 \, sin($f2 * pi_\$0) * -$f1 \, 0);
#X obj 6 131 expr if (p_pair_\$0 == 1 \, cos($f2 * pi_\$0) * $f1 \,
$f1 *2 -1) \; if (p_pair_\$0 == 1 \, sin($f2 * pi_\$0) * $f1 \, 0)
\; if (p_pair_\$0 == 1 \, cos($f2 * pi_\$0) * $f1 \, $f2 * 2 -1) \;
if (p_pair_\$0 == 1 \, sin($f2 * pi_\$0) * -$f1 \, 0);
#X obj 486 205 s \$0-coef;
#X obj 234 73 trigger bang float;
#X obj 234 45 r \$0-p2-sl;
#X obj 6 104 r \$0-p1-sl;
#X obj 234 101 s \$0-p1-sl-set;
#X obj 1073 156 s \$0-bng-set;
#X obj 1073 106 tgl 15 0 empty empty empty 17 7 0 10 -1 -262144 -1
1 1;
#X obj 1073 130 metro 1000;
#X obj 1073 81 loadbang;
#X obj 486 67 r \$0-z1-sl;
#X obj 819 65 trigger bang float;
#X obj 819 37 r \$0-z2-sl;
#X obj 819 93 s \$0-z1-sl-set;
#X obj 486 92 trigger bang float;
#X obj 363 62 r \$0-p2-sl-set;
#X obj 363 85 route set;
#X obj 952 73 route set;
#X obj 952 50 r \$0-z2-sl-set;
#X obj 1004 314 v z_pair_\$0;
#X obj 898 309 v p_pair_\$0;
#X obj 895 274 r \$0-pair_p;
#X obj 1013 271 r \$0-pair_z;
#X obj 629 319 unpack;
#X obj 671 366 s \$0-z2-sl-set;
#X msg 671 344 set \$1;
#X obj 631 449 s \$0-z1-sl-set;
#X msg 629 292 1 \$1;
#X obj 627 365 t f f;
#X obj 678 406 s \$0-pair_z-set;
#X msg 517 397 -1 1 0;
#X obj 517 433 unpack f f f;
#X obj 547 496 s \$0-z2-sl-set;
#X msg 547 474 set \$1;
#X obj 523 542 s \$0-z1-sl-set;
#X obj 465 264 r \$0-type;
#X obj 381 303 sel 3 2;
#X msg 424 378 1;
#X obj 400 527 s \$0-z1-sl-set;
#X obj 418 488 s \$0-pair_z-set;
#X obj 259 428 spigot;
#X msg 350 374 0;
#X obj 354 405 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 284 458 f;
#X obj 385 430 t f b f;
#X obj 286 533 s \$0-z2-sl-set;
#X msg 305 502 set \$1;
#X floatatom 492 324 5 0 0 0 - - -;
#X obj 795 459 s \$0-p1-sl-set;
#X msg 828 429 label amp;
#X msg 815 403 label amp_1;
#X msg 953 435 label angle;
#X msg 915 412 label amp_2;
#X obj 920 465 s \$0-p2-sl-set;
#X obj 868 336 sel 0 1;
#X msg 1067 440 label amp;
#X msg 1054 414 label amp_1;
#X msg 1192 446 label angle;
#X msg 1154 423 label amp_2;
#X obj 1107 347 sel 0 1;
#X obj 1034 470 s \$0-z1-sl-set;
#X obj 1159 476 s \$0-z2-sl-set;
#X obj 1166 114 expr atan(1) * 4;
#X obj 1166 145 v pi_\$0;
#X obj 447 327 sel 4;
#X obj 506 364 s \$0-reset;
#X obj 683 490 r \$0-reset;
#X msg 683 513 0.5;
#X obj 688 536 t f f;
#X msg 735 527 0;
#X obj 686 564 t f f;
#X obj 782 543 s \$0-pair_p-set;
#X msg 730 312 set \$1;
#X obj 730 334 s \$0-p2-sl-set;
#X obj 683 590 s \$0-p1-sl-set;
#X connect 8 0 7 0;
#X connect 8 1 6 0;
#X connect 8 2 5 0;
#X connect 8 3 4 0;
#X connect 9 0 1 0;
#X connect 9 1 0 0;
#X connect 9 2 2 0;
#X connect 9 3 3 0;
#X connect 11 0 14 0;
#X connect 11 1 9 1;
#X connect 11 1 49 0;
#X connect 11 1 52 1;
#X connect 12 0 11 0;
#X connect 13 0 9 0;
#X connect 16 0 17 0;
#X connect 17 0 15 0;
#X connect 18 0 16 0;
#X connect 18 0 71 0;
#X connect 19 0 23 0;
#X connect 20 0 22 0;
#X connect 20 1 8 1;
#X connect 21 0 20 0;
#X connect 23 0 10 0;
#X connect 23 1 8 0;
#X connect 24 0 25 0;
#X connect 25 0 9 1;
#X connect 26 0 8 1;
#X connect 27 0 26 0;
#X connect 30 0 29 0;
#X connect 30 0 63 0;
#X connect 31 0 28 0;
#X connect 31 0 68 0;
#X connect 32 0 37 0;
#X connect 32 1 34 0;
#X connect 34 0 33 0;
#X connect 36 0 32 0;
#X connect 37 0 35 0;
#X connect 37 1 38 0;
#X connect 39 0 40 0;
#X connect 40 0 43 0;
#X connect 40 1 42 0;
#X connect 40 2 38 0;
#X connect 42 0 41 0;
#X connect 44 0 45 0;
#X connect 44 0 56 0;
#X connect 45 0 46 0;
#X connect 45 1 39 0;
#X connect 45 1 50 0;
#X connect 45 2 36 0;
#X connect 45 2 50 0;
#X connect 45 2 73 0;
#X connect 46 0 53 0;
#X connect 46 0 51 0;
#X connect 49 0 54 0;
#X connect 50 0 51 0;
#X connect 51 0 49 1;
#X connect 52 0 55 0;
#X connect 53 0 47 0;
#X connect 53 1 52 0;
#X connect 53 2 48 0;
#X connect 55 0 54 0;
#X connect 58 0 57 0;
#X connect 59 0 57 0;
#X connect 60 0 62 0;
#X connect 61 0 62 0;
#X connect 63 0 59 0;
#X connect 63 0 61 0;
#X connect 63 1 58 0;
#X connect 63 1 60 0;
#X connect 64 0 69 0;
#X connect 65 0 69 0;
#X connect 66 0 70 0;
#X connect 67 0 70 0;
#X connect 68 0 65 0;
#X connect 68 0 67 0;
#X connect 68 1 64 0;
#X connect 68 1 66 0;
#X connect 71 0 72 0;
#X connect 73 0 74 0;
#X connect 75 0 76 0;
#X connect 76 0 77 0;
#X connect 77 0 79 0;
#X connect 77 1 34 0;
#X connect 77 1 78 0;
#X connect 77 1 81 0;
#X connect 78 0 38 0;
#X connect 78 0 80 0;
#X connect 79 0 83 0;
#X connect 79 1 35 0;
#X connect 81 0 82 0;
#X restore 283 67 pd GUI;
#X connect 0 0 4 0;
#X connect 1 0 4 1;
#X connect 2 0 5 0;
#X connect 3 0 5 1;
#X restore 36 100 pd GUI_(PLOT-POLES-AND-ZEROS);
#N canvas 502 195 417 257 Coefficients_to_Pole-Zero 0;
#X text 352 132 gain;
#X obj 36 182 outlet;
#X obj 48 155 outlet;
#X obj 173 183 outlet;
#X obj 177 158 outlet;
#X obj 36 38 trigger list list;
#X obj 36 10 inlet;
#N canvas 256 22 607 380 Poles_&_Zeros 0;
#X obj 62 21 inlet;
#X obj 488 172 v kIm_\$0;
#X obj 269 174 v kRe_\$0;
#X obj 70 280 outlet;
#X obj 62 304 outlet;
#X obj 249 280 outlet;
#X obj 242 304 outlet;
#X obj 269 130 expr if($f1 >= 0 \, sqrt(abs($f1)) \, 0) \; if($f1 <
0 \, sqrt(abs($f1)) \, 0);
#X obj 242 203 expr ($f1 + kRe_\$0) / 2 \; kIm_\$0 / 2;
#X obj 62 203 expr ($f1 + kRe_\$0) / 2 \; kIm_\$0 / 2;
#X text 107 20 b1 a0 a1;
#X text 67 324 polo;
#X text 246 325 zero;
#X obj 62 50 expr $f1 \; pow($f1 \, 2) \; $f3 / $f2 \; pow($f3 / $f2
\, 2);
#X connect 0 0 13 0;
#X connect 7 0 2 0;
#X connect 7 1 1 0;
#X connect 8 0 6 0;
#X connect 8 1 5 0;
#X connect 9 0 4 0;
#X connect 9 1 3 0;
#X connect 13 0 9 0;
#X connect 13 1 7 0;
#X connect 13 2 8 0;
#X connect 13 3 7 0;
#X restore 36 63 pd Poles_&_Zeros;
#X obj 323 175 s \$0-gain;
#X msg 323 134 \$2;
#X connect 5 0 7 0;
#X connect 5 1 9 0;
#X connect 6 0 5 0;
#X connect 7 0 1 0;
#X connect 7 1 2 0;
#X connect 7 2 3 0;
#X connect 7 3 4 0;
#X connect 9 0 8 0;
#X restore 36 70 pd Coefficients_to_Pole-Zero;
#X obj 36 34 r \$0-coeficientes;
#X connect 1 0 0 0;
#X connect 1 1 0 1;
#X connect 1 2 0 2;
#X connect 1 3 0 3;
#X connect 2 0 1 0;
#X restore 191 67 pd z-plane;
#X coords 0 -1 1 1 452 452 2 100 100;
#X restore 396 15 pd Z-Plane-biquad;
#X text 880 156 Nos exemplos deste patch \, o valor do Polo vai de
0 a 1 \, enquanto o valor do Zero (no [hip~]) é de 1 \, ou seja \,
chega ao círculo unitário.;
#X text 880 202 Além da Amplitude \, devemos considerar em que o Polo
ou Zero se encontram. No caso \, estamos somente no eixo real horizontal
\, portanto o ângulo é 0!;
#X text 881 248 O ângulo define a frequência \, que é justamente em
radianos por amostra \, ou seja \, definida por um valor de ângulo!
Sendo que a atuação máxima de um Polo ou Zero em uma frequência ocorre
quando se encontram no círculo unitário (amplitude de 1).;
#X text 883 323 Vejamos então o filtro de um Polo. Na medida em que
o Polo se aproxima do círculo unitário \, ele acentua as frequâncias
graves. O ajuste de ganho faz com que o valor máximo de amplitue \,
na resposta de frequência \, seja de 0dB \, se configurando assim como
um filtro Passa Baixa.;
#X text 880 11 Agora vamos interpretar melhor o Plano Z e entender
a influência dos Polos e Zeros! Trocando em miúdos \, um Polo acentua
certas frequências \, enquanto um Zero atenua. Pra memorizar \, podemos
dizer que um Zero "zera" uma frequência.;
#X text 887 398 Já no filtro de um Polo e um Zero \, quando temos ambos
no círculo unitário \, a ação de um cancela a do outro. Já quando o
Polo se aproxima do centro do Plano \, a atuação do Zero \, que é de
atenuar as frequências graves \, ganha força.;
#X text 880 69 Perceba que há um círculo delineado. Chamamos ele de
círculo untário \, porque o valor da amplitude do raio desse círculo
é de 1! Já foi dito que Polos não devem ter um valor maior que 1 senão
o filtro explode. Isso significa que os Polos deve ficar dentro do
círculo unitário!!! Já os zeros não necessariamente.;
#X connect 0 0 2 0;
#X connect 3 0 2 1;
#X connect 4 0 2 1;
#X connect 5 0 3 0;
#X connect 6 0 26 0;
#X connect 7 0 6 1;
#X connect 9 0 6 0;
#X connect 11 0 17 0;
#X connect 13 0 21 0;
#X connect 15 0 20 0;
#X connect 18 0 30 0;
#X connect 22 0 28 0;
#X connect 22 0 28 1;
#X connect 23 0 22 1;
#X connect 26 0 22 0;
#X connect 27 0 26 1;
#X connect 30 0 19 0;
#X connect 30 0 19 1;
