#N canvas 36 32 1304 705 10;
#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 148 172 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 294 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;
#X floatatom 291 27 0 0 0 0 - im -;
#X floatatom 220 27 0 0 0 0 - re -;
#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 354 59 pd GUI;
#N canvas 149 34 774 400 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 298 120 r \$0-P1-im;
#X obj 61 104 r \$0-P1-re;
#X obj 231 169 * -150;
#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 8 0 11 0;
#X connect 9 0 11 0;
#X connect 10 0 3 0;
#X connect 11 0 5 0;
#X restore 238 62 pd Poles;
#X connect 44 0 47 1;
#X connect 45 0 47 0;
#X coords 0 -1 1 1 452 452 2 100 100;
#X restore 819 229 pd Z-Plane-biquad;
#X obj 508 128 knob 40 40 20 12000 1 0 \$0-freq \$0-freq-set Center-Freq
-18 -10 193 15 -262144 -1 -1 0 1;
#X obj 564 400 *~;
#X obj 534 363 noise~;
#X obj 602 148 nbx 5 14 1 100 1 0 \$0-Q empty Q 0 -8 0 10 -228856 -1
-1 1 256;
#X floatatom 633 248 0 0 0 0 - ganho -;
#X floatatom 562 248 0 0 0 0 - im -;
#X floatatom 492 248 0 0 0 0 - re -;
#X text 633 297 ganho;
#X obj 633 279 v g;
#X obj 562 276 v ai;
#X obj 492 276 v ar;
#X text 490 297 coef;
#X text 561 299 coef;
#X text 497 308 re;
#X text 565 311 im;
#X text 53 105 y1[n] = x1[n] + ar * y1[n-1] - ai * y2[n-1] \; y2[n]
= x2[n] + ai * y1[n-1] + ar * y2[n-1];
#X obj 58 503 fexpr~ $x1 + ar * $y1[-1] - ai * $y2[-1] \; ai * $y1[-1]
+ ar * $y2[-1];
#X floatatom 596 363 0 0 0 0 - ganho -;
#X obj 564 448 cpole~;
#X floatatom 628 419 0 0 0 0 - im -;
#X floatatom 610 393 0 0 0 0 - re -;
#X obj 447 558 fexpr~ g * $x1 + ar * $y1[-1] - ai * $y2[-1] \; ai *
$y1[-1] + ar * $y2[-1];
#X obj 656 600 output~;
#X obj 588 477 output~;
#X obj 519 477 output~;
#X obj 447 599 output~;
#X obj 447 530 noise~;
#X obj 509 181 nbx 5 14 -1e+37 1e+37 0 0 \$0-freq-send \$0-freq empty
0 -8 0 10 -228856 -1 -1 0 256;
#X text 488 178 Hz;
#X obj 959 11 noise~;
#X obj 954 71 output~;
#X obj 1072 11 nbx 5 14 1 100 1 0 empty \$0-Q empty 0 -8 0 10 -228856
-1 -1 1 256;
#X obj 1008 12 nbx 5 14 -1e+37 1e+37 0 0 empty \$0-freq-send empty
0 -8 0 10 -228856 -1 -1 0 256;
#X obj 983 41 vcf~ 500 1;
#X obj 1040 73 output~;
#X text 840 41 Compare com [vcf~];
#X text 593 391 re;
#X text 609 418 im;
#X text 599 342 ganho;
#X text 29 146 Onde x1[n] e y1[n] são a entrada e saída real do filtro
\, enquanto x2[n] e y2[n] são a entrada e saída imaginária do filtro.
Já "ar" é a parte real do coeficiente complexo e "ai" é a parte imaginária.
;
#X text 30 52 O [vcf~] pode ser implementado com um [cpole~] \, que
é um filtro de um polo complexo com uma equação de diferença que foi
apresentada no exemplo anterior \, ei-la:;
#N canvas 107 28 632 365 coefficientes 0;
#X obj 339 23 inlet;
#X obj 64 28 inlet;
#X obj 64 123 f;
#X obj 339 70 trigger bang float;
#X obj 255 324 v ampcorrect;
#X obj 292 298 v oneminusr;
#X obj 330 274 v r;
#X obj 368 272 v cf;
#X obj 406 296 v qinv;
#X obj 444 268 v Q;
#X obj 64 195 expr r * cos(cf) \; r * sin(cf) \; ampcorrect * oneminusr
;
#X obj 64 156 trigger bang float;
#X obj 128 252 s im;
#X obj 193 252 s ganho;
#X obj 64 252 s re;
#X obj 255 180 expr 2 - 2 / (Q + 2) \; 1 - r \; if (qinv > 0 \, 1 -
cf * qinv \, 0) \; max($f1 * 2 * pi / sr \, 0) \; 1/Q \; max($f2 \,
1);
#X obj 523 127 loadbang;
#X obj 523 174 v sr;
#X obj 532 234 v pi;
#X obj 532 211 pi;
#X obj 523 152 samplerate~;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 2 0 11 0;
#X connect 3 0 2 0;
#X connect 3 1 15 1;
#X connect 10 0 14 0;
#X connect 10 1 12 0;
#X connect 10 2 13 0;
#X connect 11 0 10 0;
#X connect 11 1 15 0;
#X connect 15 0 4 0;
#X connect 15 1 5 0;
#X connect 15 2 6 0;
#X connect 15 3 7 0;
#X connect 15 4 8 0;
#X connect 15 5 9 0;
#X connect 16 0 20 0;
#X connect 19 0 18 0;
#X connect 20 0 17 0;
#X restore 509 208 pd coefficientes;
#X text 29 380 Perceba que o cálculo da parte real do filtro inclui
as saídas real e imaginária do filtro. Por outro lado \, o [vcf~] filtra
apenas um sinal real. Isso é \, ingora a entrada imaginária do filtro.
Podemos assim simplificar excluindo a segunda entrada. Temos assim
apenas uma entrada real \, mas ainda as saídas real e imaginária \,
como o [vcf~]. Eis como fica num [fexpr~]:;
#X obj 35 240 cnv 15 315 120 empty empty empty 20 12 0 14 -216246 -66577
0;
#X text 176 250 1 - ar*z^-1;
#X text 143 267 1 - 2*ar*z^-1 + |a|^2*z^-2;
#X text 197 290 ai*z^-1;
#X text 146 306 1 - 2*ar*z^-1 + |a|^2*z^-2;
#X text 130 294 ________________________________;
#X text 124 255 ________________________________;
#X text 65 258 Re_H(z) =;
#X text 61 298 Im_H(z) =;
#X text 127 333 onde |a|^2 = ar^2 + ai^2;
#X text 31 216 E eis a Função de Transferência das duas partes:;
#X text 27 571 Entretanto \, além do coeficiente complexo (com uma
parte real "ar" e outra imaginária "ai") temos também um coeficiente
de ganho "g" desse filtro \, vamos inclui-lo no [fexpr~] à direita.
;
#X text 420 30 O subptach [pd coefficientes] calcula os coeficientes
do [vcf~] (ar \, ai e ganho) a partir de uma frequênci central e um
vaor de Q \, e assim implementamos o [vcf~] no [cpole~] ou [fexpr~]:
;
#X text 866 133 Abaixo temos a representação do Polo complexo no Plano
Z. Como ele não forma nenhum par conjugado com outro polo \, trata-se
de fato de um polo complexo! A ação do Polo é similar ao exemplo passado
\, onde o ângulo define a frequência que o filtro realça e o valor
de Q está ligado com a amplitude do Polo.;
#X connect 2 0 19 0;
#X connect 3 0 2 0;
#X connect 4 0 42 1;
#X connect 5 0 9 0;
#X connect 6 0 10 0;
#X connect 7 0 11 0;
#X connect 18 0 2 1;
#X connect 19 0 25 1;
#X connect 19 0 25 0;
#X connect 19 1 24 0;
#X connect 19 1 24 1;
#X connect 20 0 19 3;
#X connect 21 0 19 2;
#X connect 22 0 26 0;
#X connect 22 0 26 1;
#X connect 22 1 23 1;
#X connect 22 1 23 0;
#X connect 27 0 22 0;
#X connect 28 0 42 0;
#X connect 30 0 34 0;
#X connect 32 0 34 2;
#X connect 33 0 34 1;
#X connect 34 0 31 0;
#X connect 34 0 31 1;
#X connect 34 1 35 0;
#X connect 34 1 35 1;
