#N canvas 21 31 1315 689 10;
#X obj 56 328 cnv 15 300 40 empty empty empty 5 12 0 14 -233017 -66577
0;
#X text 65 337 y(n) = a0 * x(n) + a1 * x(n-1) + b1 * y(n-1);
#X text 7 296 A equação de diferença correspondente é:;
#X obj 179 490 v a0;
#X obj 239 490 v a1;
#X obj 294 490 v b1;
#X floatatom 294 464 0 0 0.99 0 - - -;
#X floatatom 239 464 0 0 0.99 0 - - -;
#X floatatom 179 464 0 0 0.99 0 - - -;
#X text 90 488 coeficientes:;
#X obj 646 176 image SOS.gif;
#X obj 658 461 v a0;
#X obj 711 461 v a1;
#X obj 552 461 v b1;
#X floatatom 552 435 7 0 0.99 0 - - -;
#X floatatom 711 435 7 0 0.99 0 - - -;
#X floatatom 658 435 7 0 0.99 0 - - -;
#X text 459 431 coeficientes:;
#X floatatom 605 435 7 0 0.99 0 - - -;
#X obj 605 461 v b2;
#X floatatom 765 435 7 0 0.99 0 - - -;
#X obj 765 461 v a2;
#X text 885 14 O sistema de segunda ordem é nada mais nada menos que
um [biquad~] \, filtro que já foi apresentado anteriormente!;
#X text 887 60 Vimos que o [biquad~] pode se configurar como diversos
filtros \, dependendo apenas dos valores dos coeficientes.;
#X obj 552 411 unpack float float float float float;
#X obj 481 500 noise~;
#X obj 972 183 loadbang;
#X obj 482 590 output~;
#X obj 972 233 s \$0-coeficientes;
#X obj 1077 318 r \$0-coeficientes;
#X obj 1023 346 biquad~;
#X obj 1023 309 noise~;
#X obj 1023 376 output~;
#X obj 552 389 r \$0-coeficientes;
#X obj 502 285 cnv 15 290 32 empty empty empty 5 12 0 14 -233017 -66577
0;
#X text 513 285 y(n) = a0 * x(n) + a1 * x(n-1) + a2 * x(n-2) \; + b1
* y(n-1) + b2 * y(n-2);
#X text 495 28 Um sistema de segunda ordem possui mais um estágio de
primeira ordem \, e atraso de até duas amostras. Vejamos o diagrama
e a equação de diferença:;
#X text 490 344 Abaixo temos a implementação em um [fexpr~]:;
#X text 905 283 Compare o resultado sonoro abaixo do pfexpr~] com o
[biquad~].;
#X text 656 480 ganho;
#X text 174 509 ganho;
#X obj 76 544 fexpr~ a0 * $x[0] + a1 * $x[-1] + b1 * $y[-1];
#X obj 481 533 fexpr~ a0 * $x[0] + a1 * $x[-1] + a2 * $x[-2] + b1 *
$y[-1] + b2 * $y[-2];
#X text 36 31 O atraso máximo \, em número de amostras \, define a
ordem de um filtro. Um filtro de primeira ordem apenas contém atrasos
de até uma amostra. Já um "Sistema de Primeira Ordem" contém atraso
em feedforward e feedback em até uma amostra \, e possui o seguinte
diagrama:;
#X text 242 512 ff;
#X text 297 511 fb;
#X text 42 388 Temos então o coeficiente "a1" para o atraso em "ff"
(feedforward) e "b1" para o atraso em "fb" (feedback). Temos também
o coeficiente de ganho "a0" \, que atenua ou amplifica o sinal de entrada.
Abaixo temos a implementação em [fexpr~].;
#X text 48 580 Perceba que estamos usando outra abreviação no [fexpr~]
\, em que ele interpreta $x[0] como sendo $x1[0]. Logo \, se o número
da variável é suprimida \, ele entende que se trata do primeiro inlet!
;
#X text 553 483 fb1;
#X text 611 483 fb2;
#X text 716 481 ff1;
#X text 770 481 ff2;
#X text 886 100 O [biquad~] recebe uma lista de 5 coeficientes \, que
correspondem justamente aos coeficientes b1 \, b2 \, a0 \, a1 \, a2
do sistema de segunda ordem ao lado.;
#X text 1062 178 ou: b1 \, b2 \, a0 \, a1 \, a2;
#X text 889 435 ============================================================
;
#X text 893 463 Por fim \, é importante informar que a ordem do filtro
interfere na resposta de frequência. Por exemplo \, um filtro de primeira
ordem tem um decaimento de 6dB por oitava (como o [lop~] \, aliás).
Já um filtro de segunda ordem terá um decaimento de 12 dB por oitava.
Já um de quarta ordem \, 24 dB por oitava. Ligar filtros em cascata
aumentam a ordem. Por exemplo \, dois [lop~] em cascata cria um filtro
de segunda ordem \, já dois [biquad~] geram um de quarta ordem.;
#X obj 925 590 lop~ 300;
#X obj 925 613 lop~ 300;
#X obj 1001 590 biquad~ 1.99 -0.995 0.00246 0 -0.00246;
#X msg 972 208 1.99 -0.995 0.00246 0 -0.00246;
#X obj 1001 612 biquad~ 1.99 -0.995 0.00246 0 -0.00246;
#X text 885 157 Sintaxe da ordem dos coeficientes: fb1 \, fb2 \, ganho
\, ff1 \, ff2;
#X obj 224 194 image ./gifs/FOS.gif;
#X obj 655 176 image ./gifs/SOS.gif;
#X connect 6 0 5 0;
#X connect 7 0 4 0;
#X connect 8 0 3 0;
#X connect 14 0 13 0;
#X connect 15 0 12 0;
#X connect 16 0 11 0;
#X connect 18 0 19 0;
#X connect 20 0 21 0;
#X connect 24 0 14 0;
#X connect 24 1 18 0;
#X connect 24 2 16 0;
#X connect 24 3 15 0;
#X connect 24 4 20 0;
#X connect 25 0 42 0;
#X connect 26 0 59 0;
#X connect 29 0 30 0;
#X connect 30 0 32 0;
#X connect 30 0 32 1;
#X connect 31 0 30 0;
#X connect 33 0 24 0;
#X connect 42 0 27 0;
#X connect 42 0 27 1;
#X connect 56 0 57 0;
#X connect 58 0 60 0;
#X connect 59 0 28 0;
