#N canvas 38 23 1256 611 10;
#X obj 563 233 cnv 15 220 90 empty empty empty 20 12 0 14 -261234 -66577
0;
#X text 606 276 H(z) =;
#X text 663 267 -a + z^-1;
#X text 647 273 ________________;
#X text 574 242 Função de Transferência:;
#X obj 88 494 rzero_rev~;
#X text 158 492 =;
#X text 159 468 =;
#X obj 100 468 rpole~;
#X obj 145 442 v a;
#X text 34 413 As equações desses filtros já foram apresentadas e são:
;
#X obj 107 309 rpole~;
#X obj 107 284 rzero_rev~;
#X obj 107 349 output~;
#X obj 204 240 hsl 128 15 0 0.9999 0 0 \$0-a empty empty -2 -8 0 10
-228856 -1 -1 0 1;
#X floatatom 201 262 5 0 0 0 - - -;
#N canvas 172 85 1026 565 (subpatch) 0;
#X obj 101 101 cnv 15 808 192 empty empty empty 20 12 0 14 -1 -262144
0;
#X text 210 131 0.05;
#X obj 106 201 cnv 15 798 83 empty empty empty 20 12 0 14 -257983 -66577
0;
#X obj 106 115 cnv 15 798 85 empty empty empty 20 12 0 14 -241340 -66577
0;
#N canvas 391 118 975 563 (subpatch) 0;
#X array \$0-Fase 400 float 0;
#X coords 0 3.14 399 -3.14 800 170 1;
#X restore 105 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 100 170 1;
#X restore 123 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 77 170 1;
#X restore 223 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 80 170 1;
#X restore 300 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 102 170 1;
#X restore 380 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 78 170 1;
#X restore 482 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 78 170 1;
#X restore 560 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 103 170 1;
#X restore 638 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 78 170 1;
#X restore 741 114 graph;
#N canvas 0 22 450 278 (subpatch) 0;
#X coords 0 1 100 -1 78 170 1;
#X restore 819 114 graph;
#X coords 0 -1 1 1 810 194 2 100 100;
#X restore 414 355 pd;
#X text 397 362 pi;
#X text 391 529 -pi;
#X text 402 448 0;
#N canvas 279 91 1087 677 plot 0;
#X obj 314 80 kalashnikov 400;
#X text 280 78 Loop;
#N canvas 88 89 501 411 H(z) 0;
#X obj 43 79 cnv 15 400 120 empty empty empty 20 12 0 14 -216246 -66577
0;
#X text 275 141 H(z) =;
#X obj 53 159 cartopol;
#X obj 53 44 inlet;
#X text 267 106 Função de Transferência;
#X obj 98 323 outlet;
#X text 106 344 Fase;
#X text 98 44 índice;
#X text 321 139 _______________;
#X text 333 156 1 - a*Z-1;
#X text 337 132 -a + Z-1;
#X obj 143 162 cartopol;
#X obj 98 214 -;
#X obj 98 275 zexy/wrap -1 1;
#X obj 53 90 expr -a + cosW_\$0[$f1] \; sinW_\$0[$f1] \; 1 - a * cosW_\$0[$f1]
\; -a * sinW_\$0[$f1];
#X obj 98 249 expr $f1 / pi;
#X connect 2 1 12 0;
#X connect 3 0 14 0;
#X connect 11 1 12 1;
#X connect 12 0 15 0;
#X connect 13 0 5 0;
#X connect 14 0 2 0;
#X connect 14 1 2 1;
#X connect 14 2 11 0;
#X connect 14 3 11 1;
#X connect 15 0 13 0;
#X restore 357 133 pd H(z);
#X obj 357 160 tabwrite \$0-Fase;
#N canvas 259 145 370 222 init 0;
#X obj 97 27 loadbang;
#X obj 207 60 samplerate~;
#X obj 179 110 expr atan(1) * 4;
#X msg 97 124 \; pd dsp 1;
#X obj 207 83 v sr;
#X obj 179 137 v pi;
#N canvas 760 51 335 250 get-freq 0;
#X obj 88 29 inlet;
#N canvas 192 80 563 633 loop 0;
#X obj 54 192 until;
#X obj 92 241 + 1;
#X msg 72 216 0;
#X obj 54 95 t f f;
#X obj 361 216 until;
#X obj 407 265 + 1;
#X msg 379 241 0;
#X obj 54 270 t f f;
#X obj 159 355 +;
#X obj 54 370 mtof;
#X obj 54 144 t f b f;
#X obj 361 191 t f b f;
#X obj 361 326 /;
#X obj 54 31 inlet;
#X obj 54 574 outlet;
#X obj 207 583 outlet;
#X obj 361 265 f;
#X obj 361 379 expr pow($f1 \, 0.4);
#X obj 54 241 f;
#X obj 361 296 trigger f f;
#X obj 361 407 * 20.6017;
#X text 434 407 MIDI 16;
#X obj 54 298 expr (($f1 + 1) * (midi_range_\$0 / $f2)) + 16;
#X obj 54 63 expr rint(400 * 0.98);
#X obj 361 144 expr 400 - $f1;
#X obj 201 197 v midi_range_\$0;
#X obj 201 171 ftom;
#X msg 201 145 8750.55;
#X obj 54 465 expr $f1 * 2*pi / sr;
#X obj 361 498 expr $f1 * 2*pi / sr;
#X connect 0 0 18 0;
#X connect 1 0 18 1;
#X connect 2 0 18 1;
#X connect 3 0 10 0;
#X connect 3 1 24 0;
#X connect 4 0 16 0;
#X connect 5 0 16 1;
#X connect 6 0 16 1;
#X connect 7 0 22 0;
#X connect 7 1 8 0;
#X connect 8 0 15 0;
#X connect 9 0 28 0;
#X connect 10 0 0 0;
#X connect 10 1 2 0;
#X connect 10 1 27 0;
#X connect 10 2 22 1;
#X connect 11 0 4 0;
#X connect 11 1 6 0;
#X connect 11 2 12 1;
#X connect 12 0 17 0;
#X connect 13 0 23 0;
#X connect 16 0 5 0;
#X connect 16 0 19 0;
#X connect 17 0 20 0;
#X connect 18 0 1 0;
#X connect 18 0 7 0;
#X connect 19 0 12 0;
#X connect 19 1 15 0;
#X connect 20 0 29 0;
#X connect 22 0 9 0;
#X connect 23 0 3 0;
#X connect 24 0 8 1;
#X connect 24 0 11 0;
#X connect 26 0 25 0;
#X connect 27 0 26 0;
#X connect 28 0 14 0;
#X connect 29 0 14 0;
#X restore 88 69 pd loop;
#X obj 61 195 tabwrite sinW_\$0;
#X obj 35 159 tabwrite cosW_\$0;
#X obj 35 105 expr cos($f1) \; sin($f1);
#X obj 176 128 table sinW_\$0 400;
#X obj 176 103 table cosW_\$0 400;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 1 1 3 1;
#X connect 1 1 2 1;
#X connect 4 0 3 0;
#X connect 4 1 2 0;
#X restore 65 167 pd get-freq;
#X text 141 168 tabelas de frequências complexas;
#X connect 0 0 3 0;
#X connect 0 0 2 0;
#X connect 0 0 1 0;
#X connect 0 0 6 0;
#X connect 1 0 4 0;
#X connect 2 0 5 0;
#X restore 545 141 pd init \; tables;
#X obj 314 55 t b f;
#X obj 362 57 v a;
#X obj 357 109 trigger f f;
#X obj 313 34 r \$0-a;
#X connect 0 1 7 0;
#X connect 2 0 3 0;
#X connect 5 0 0 0;
#X connect 5 1 6 0;
#X connect 7 0 2 0;
#X connect 7 1 3 1;
#X connect 8 0 5 0;
#X restore 1178 337 pd plot;
#X text 422 336 RESPOSTA DE FASE:;
#X obj 201 312 line~;
#X msg 201 288 \$1 10;
#X obj 107 234 sig~ 100;
#X obj 107 258 blosc~ saw;
#X text 523 550 0.05;
#X text 423 550 0.02;
#X text 1127 549 10;
#X text 1204 550 20;
#X text 1052 549 5;
#X text 949 549 2;
#X text 871 550 1;
#X text 785 550 0.5;
#X text 683 550 0.2;
#X text 603 550 0.1;
#X text 660 289 1 - a * z^-1;
#X obj 87 560 fexpr~ -a * $x + $x[-1] + a * $y[-1];
#X obj 180 468 fexpr~ $x + a * $y[-1];
#X obj 177 493 fexpr~ -a * $x + $x[-1];
#N canvas 616 23 501 693 achando-H(z) 0;
#X obj 160 548 cnv 15 220 90 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 187 588 H(z) =;
#X text 244 579 -a + z^-1;
#X text 169 276 X(z) =;
#X text 212 273 _____________________;
#X text 228 585 ________________;
#X text 171 557 Função de Transferência:;
#X text 131 139 Y(z) = -a * X(z) + X(z)z^-1 + a * Y(z)z^-1;
#X text 141 200 Y(z) - a*Y(z)z^-1 = -a*X(z) + X(z)z^-1;
#X text 143 231 Y(z) - a*Y(z)z^-1 = X(z) * (-a + z^-1);
#X text 223 266 Y(z) - a*Y(z)z^-1;
#X text 240 287 -a + z^-1;
#X text 241 601 1 - a * z^-1;
#X text 64 24 Da equação de diferença \, vamos pra Função de Transferência
para calcular a resposta de Fase:;
#X text 131 86 y(n) = -a * x(n) + x(n-1) + a * y(n-1);
#X text 90 66 Equação de diferença;
#X text 86 118 Notação da Função de Transferência:;
#X text 83 173 Isolar X(z):;
#X text 94 332 H(z) = Y(z) / X(z);
#X text 133 378 H(z) =;
#X text 183 393 Y(z) - a*Y(z)z^-1 / (-a + z^-1);
#X text 176 375 _________________________________;
#X text 257 361 Y(z);
#X text 155 458 H(z) =;
#X text 215 471 Y(z) - a*Y(z)z^-1;
#X text 212 446 Y(z) * (-a + z^-1);
#X text 198 455 _______________________;
#X restore 689 215 pd achando-H(z);
#X obj 1023 167 biquad~;
#X obj 1023 118 pack;
#X obj 1023 63 r \$0-a;
#X obj 1060 116 * -1;
#X msg 1023 141 \$1 0 \$2 1 0;
#X obj 1023 88 t f f;
#X floatatom 1017 277 0 0 0 0 - - -;
#X floatatom 1086 277 0 0 0 0 - - -;
#N canvas 268 208 449 335 Polo-Zero 0;
#X text 70 267 polo 1;
#X text 249 268 zero 1;
#X obj 315 181 v kIm_\$0;
#X obj 96 183 v kRe_\$0;
#X obj 65 247 outlet;
#X obj 245 247 outlet;
#X obj 96 139 expr if($f1 >= 0 \, sqrt(abs($f1)) \, 0) \; if($f1 <
0 \, sqrt(abs($f1)) \, 0);
#X obj 65 216 expr ($f1 + kRe_\$0) / 2;
#X obj 245 216 expr ($f1 + kRe_\$0) / 2;
#X obj 65 32 r \$0-a;
#X obj 65 63 expr $f1 \; pow($f1 \, 2) \; -1 / -$f1 \; pow(1 / -$f1
\, 2);
#X connect 6 0 3 0;
#X connect 6 1 2 0;
#X connect 7 0 4 0;
#X connect 8 0 5 0;
#X connect 9 0 10 0;
#X connect 10 0 7 0;
#X connect 10 1 6 0;
#X connect 10 2 8 0;
#X connect 10 3 6 0;
#X restore 1017 253 pd Polo-Zero;
#X text 1017 297 Polo;
#X text 1088 299 Zero;
#X text 906 26 Eis como implementar num [biquad~] a partir de "a":
;
#X text 40 107 É a disposição do Polo e Zero que faz com que a atuação
de um cancela a do outro \, fazendo com que a amplitude não seja alterada
\, apenas a fase! Abaixo temos a implementação com [rpole~] e o [rzero_rev~]
\, depois em um [fexpr~] e à direita uma análise do filtro \, um gráfico
da resposta de fase \, como implementá-lo num [biquad~] e a localização
do Polo e do Zero.;
#X text 60 530 Juntando ambas num [fexpr~]:;
#X text 514 26 A partir do [fexpr~] obtemos a equação de diferença
\, o diagrama do filtro e também a Função de Transferência:;
#X obj 539 75 cnv 15 260 120 empty empty empty 20 12 0 14 -228856 -66577
0;
#X text 553 171 y(n) = -a * x(n) + x(n-1) + a * y(n-1);
#X text 980 220 Localizção do Polo e Zero reais:;
#X text 40 19 Vejamos agora outro exemplo de um Passa Tudo que será
usado no próximo exemplo para implementar um "Phaser". Esse filtro
é implementado com o [rpole~] e o [rzero_rev~]. Trata-se \, portanto
\, de um sistema de primeira ordem com 1 Polo e 1 Zero reais \, que
pode ser também implementado no biquad (um sistema de segunda ordem).
;
#X text 589 88 |;
#X text 589 100 |;
#X text 589 112 |;
#X text 570 123 |;
#X text 612 123 |;
#X text 612 143 |;
#X text 570 143 |;
#X text 573 114 _______;
#X text 573 143 _______;
#X text 618 132 -----;
#X text 589 115 v;
#X text 644 114 |;
#X text 644 126 |;
#X text 644 90 |;
#X text 644 102 |;
#X text 644 89 ^;
#X text 730 88 |;
#X text 730 100 |;
#X text 730 112 |;
#X text 711 123 |;
#X text 753 123 |;
#X text 753 143 |;
#X text 711 143 |;
#X text 714 114 _______;
#X text 714 143 _______;
#X text 730 115 v;
#X text 675 114 |;
#X text 675 126 |;
#X text 675 90 |;
#X text 675 102 |;
#X text 675 89 ^;
#X text 751 81 >;
#X text 570 133 | z^-1 |;
#X text 711 133 | z^-1 |;
#X text 677 132 -(*a)-;
#X text 549 80 x[n] ---(*-a)--(+)--(+)----------- y[n];
#X connect 9 0 8 1;
#X connect 9 0 5 1;
#X connect 11 0 13 0;
#X connect 11 0 13 1;
#X connect 12 0 11 0;
#X connect 14 0 15 0;
#X connect 15 0 23 0;
#X connect 22 0 12 1;
#X connect 22 0 11 1;
#X connect 23 0 22 0;
#X connect 24 0 25 0;
#X connect 25 0 12 0;
#X connect 42 0 45 0;
#X connect 43 0 46 0;
#X connect 44 0 42 1;
#X connect 45 0 41 0;
#X connect 46 0 42 0;
#X connect 46 1 44 0;
#X connect 49 0 47 0;
#X connect 49 1 48 0;
