#N canvas 102 22 1050 662 10; #X obj 259 59 inlet; #X text 308 60 a1 a2 b0 b1 b2; #N canvas 214 22 1032 847 frequencies 0; #X obj 382 91 symbol \$1; #X obj 382 125 expr size("$s1"); #X obj 483 411 /; #X obj 418 241 i; #X obj 415 367 until; #X obj 415 411 f 0; #X obj 441 411 + 1; #X msg 431 389 0; #X obj 643 315 swap; #X obj 420 265 t f f; #X obj 645 345 -; #X obj 422 492 *; #X obj 645 397 until; #X obj 645 441 f 0; #X obj 671 441 + 1; #X msg 661 419 0; #X obj 422 444 t f f; #X obj 510 517 +; #X obj 422 547 mtof; #X obj 387 186 t b f f f; #X msg 637 163 resize \$1; #X obj 415 314 t f b f; #X obj 422 468 + 1; #X obj 654 528 * 21.8268; #X text 720 527 MIDI 17; #X obj 645 372 t f b f; #X obj 647 499 /; #X obj 422 518 + 17; #X obj 309 19 inlet; #X obj 597 214 s \$0-real.freqs1; #X obj 607 234 s \$0-real.freqs2; #X obj 617 254 s \$0-imag.freqs1; #X obj 627 274 s \$0-imag.freqs2; #X obj 48 50 table \$0-real.freqs1 10; #X obj 48 70 table \$0-real.freqs2 10; #X obj 48 90 table \$0-imag.freqs1 10; #X obj 48 110 table \$0-imag.freqs2 10; #X obj 422 570 / 44100; #X obj 422 642 *; #X obj 437 591 r \$0-pi; #X obj 526 741 tabwrite \$0-real.freqs1; #X obj 559 762 tabwrite \$0-real.freqs2; #X obj 654 570 / 44100; #X obj 654 642 *; #X obj 669 591 r \$0-pi; #X obj 437 618 * 2; #X obj 669 618 * 2; #X msg 302 56 bang; #X obj 592 784 tabwrite \$0-imag.freqs1; #X obj 625 804 tabwrite \$0-imag.freqs2; #X obj 526 679 expr cos(-1*$f1) \; cos(-2*$f1) \; sin(-1*$f1) \; sin(-2*$f1) ; #X obj 510 543 s \$0-freq.index; #X obj 686 498 s \$0-freq.index; #X obj 702 697 r \$0-freq.index; #X obj 645 472 t f f; #X obj 599 128 s \$0-table.size; #X msg 483 386 119.766 \$1; #X obj 418 217 * 0.9; #X obj 50 148 table \$0-mag.temp 10; #X obj 50 168 table \$0-arg.temp 10; #X obj 725 214 s \$0-mag.temp; #X obj 741 238 s \$0-arg.temp; #X text 34 257 This makes tables of complex frequencies from 0 to pi. It should only have to do this once \, unless the size of the table has been changed.; #X obj 388 158 change -1; #X connect 0 0 1 0; #X connect 1 0 63 0; #X connect 2 0 11 1; #X connect 3 0 9 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 5 0 16 0; #X connect 6 0 5 1; #X connect 7 0 5 1; #X connect 8 0 10 0; #X connect 8 1 10 1; #X connect 9 0 21 0; #X connect 9 1 8 0; #X connect 10 0 17 1; #X connect 10 0 25 0; #X connect 11 0 27 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 13 0 54 0; #X connect 14 0 13 1; #X connect 15 0 13 1; #X connect 16 0 22 0; #X connect 16 1 17 0; #X connect 17 0 51 0; #X connect 18 0 37 0; #X connect 19 1 57 0; #X connect 19 2 8 1; #X connect 19 3 20 0; #X connect 19 3 55 0; #X connect 20 0 29 0; #X connect 20 0 30 0; #X connect 20 0 31 0; #X connect 20 0 32 0; #X connect 20 0 60 0; #X connect 20 0 61 0; #X connect 21 0 4 0; #X connect 21 1 7 0; #X connect 21 2 56 0; #X connect 22 0 11 0; #X connect 23 0 42 0; #X connect 25 0 12 0; #X connect 25 1 15 0; #X connect 25 2 26 1; #X connect 26 0 23 0; #X connect 27 0 18 0; #X connect 28 0 0 0; #X connect 37 0 38 0; #X connect 38 0 50 0; #X connect 39 0 45 0; #X connect 42 0 43 0; #X connect 43 0 50 0; #X connect 44 0 46 0; #X connect 45 0 38 1; #X connect 46 0 43 1; #X connect 47 0 0 0; #X connect 50 0 40 0; #X connect 50 1 41 0; #X connect 50 2 48 0; #X connect 50 3 49 0; #X connect 53 0 40 1; #X connect 53 0 41 1; #X connect 53 0 48 1; #X connect 53 0 49 1; #X connect 54 0 26 0; #X connect 54 1 52 0; #X connect 56 0 2 0; #X connect 57 0 3 0; #X connect 63 0 19 0; #X restore 397 136 pd frequencies; #X obj 750 213 loadbang; #X obj 768 277 samplerate~; #X obj 767 305 s \$0-sample.rate; #X msg 707 205 bang; #X msg 710 274 1; #X obj 710 296 atan; #X obj 710 318 * 4; #X obj 749 239 t b b; #X obj 707 346 s \$0-pi; #N canvas 297 22 1143 819 calculate 0; #X obj 492 -28 inlet; #X text 778 390 z-Transform:; #X text 827 417 H(z) = b0 + b1*z^-1 + b2*z^-2; #X text 869 426 ----------------------; #X text 873 437 1 + a1*z^-1 + a2*z^-2; #X obj 492 -2 t b l; #X obj 303 43 r \$0-table.size; #X obj 278 66 f; #X obj 278 112 until; #X obj 278 156 f 0; #X obj 304 156 + 1; #X msg 293 133 0; #X obj 278 179 t f f f f f; #X obj 216 257 tabread \$0-real.freqs1; #X obj 285 285 tabread \$0-imag.freqs1; #X obj 405 304 tabread \$0-real.freqs2; #X obj 472 326 tabread \$0-imag.freqs2; #X obj 720 301 unpack f f f f f; #X obj 509 485 cartopol; #X obj 419 485 cartopol; #X obj 432 533 /; #X obj 480 533 -; #X obj 415 402 expr $f7 + $f8*$f1 + $f9*$f3 \; $f8*$f2 + $f9*$f4 \; 1 - $f5*$f1 - $f6*$f3 \; 0 - $f5*$f2 - $f6*$f4 \;; #X obj 43 665 outlet; #X obj 386 716 tabwrite \$0-mag.temp; #X obj 515 716 tabwrite \$0-arg.temp; #X text 95 665 done; #X msg 86 185 0; #X obj 86 213 s \$0-first; #X obj 244 88 t b b f b; #X obj 370 592 spigot; #X obj 420 592 spigot; #X obj 470 592 spigot; #X obj 520 592 spigot; #X obj 602 511 r \$0-first; #X obj 613 540 == 0; #X obj 433 652 tabread \$0-mag.temp; #X obj 417 684 *; #X obj 578 653 tabread \$0-arg.temp; #X obj 560 679 +; #X obj 447 222 s \$0-temp.index; #X obj 646 587 r \$0-temp.index; #X connect 0 0 5 0; #X connect 5 0 7 0; #X connect 5 1 17 0; #X connect 6 0 7 1; #X connect 7 0 29 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 9 0 12 0; #X connect 10 0 9 1; #X connect 11 0 9 1; #X connect 12 0 13 0; #X connect 12 1 14 0; #X connect 12 2 15 0; #X connect 12 3 16 0; #X connect 12 4 40 0; #X connect 13 0 22 0; #X connect 14 0 22 1; #X connect 15 0 22 2; #X connect 16 0 22 3; #X connect 17 0 22 4; #X connect 17 1 22 5; #X connect 17 2 22 6; #X connect 17 3 22 7; #X connect 17 4 22 8; #X connect 18 0 20 1; #X connect 18 1 21 1; #X connect 19 0 20 0; #X connect 19 1 21 0; #X connect 20 0 31 0; #X connect 20 0 30 0; #X connect 21 0 32 0; #X connect 21 0 33 0; #X connect 22 0 19 0; #X connect 22 1 19 1; #X connect 22 2 18 0; #X connect 22 3 18 1; #X connect 27 0 28 0; #X connect 29 0 23 0; #X connect 29 1 27 0; #X connect 29 2 8 0; #X connect 29 3 11 0; #X connect 30 0 24 0; #X connect 31 0 37 0; #X connect 32 0 25 0; #X connect 33 0 39 0; #X connect 34 0 35 0; #X connect 34 0 30 1; #X connect 34 0 32 1; #X connect 35 0 33 1; #X connect 35 0 31 1; #X connect 36 0 37 1; #X connect 37 0 24 0; #X connect 38 0 39 1; #X connect 39 0 25 0; #X connect 41 0 25 1; #X connect 41 0 38 0; #X connect 41 0 36 0; #X connect 41 0 24 1; #X restore 339 325 pd calculate; #X obj 354 229 list split 5; #X obj 549 59 inlet; #N canvas 0 22 702 451 messages 0; #X obj 126 53 inlet; #X obj 178 275 s \$0-plot.type; #X obj 186 31 loadbang; #X obj 228 245 s \$0-amp.units; #X msg 184 57 phase 0 \, units 0 \, dbrange 24 \, amprange 2; #X obj 124 95 route phase units dbrange amprange; #X obj 257 216 s \$0-dbrange; #X obj 344 218 s \$0-amprange; #X obj 157 348 s \$0-redraw; #X obj 124 204 t b f; #X obj 169 196 t b f; #X obj 232 183 t b f; #X obj 294 175 t b f; #X obj 213 132 expr abs($f1); #X obj 310 135 expr abs($f1); #X connect 0 0 5 0; #X connect 2 0 4 0; #X connect 4 0 5 0; #X connect 5 0 9 0; #X connect 5 1 10 0; #X connect 5 2 13 0; #X connect 5 3 14 0; #X connect 9 0 8 0; #X connect 9 1 1 0; #X connect 10 0 8 0; #X connect 10 1 3 0; #X connect 11 0 8 0; #X connect 11 1 6 0; #X connect 12 0 8 0; #X connect 12 1 7 0; #X connect 13 0 11 0; #X connect 14 0 12 0; #X restore 551 86 pd messages; #X obj 311 110 t b l b b; #X obj 365 173 s \$0-first; #X msg 355 148 1; #X obj 311 276 list; #N canvas 732 22 708 701 scale.and.draw 0; #X obj 186 67 r \$0-table.size; #X obj 163 136 t f b; #X obj 160 164 until; #X obj 163 108 f; #X obj 160 207 f 0; #X obj 186 207 + 1; #X msg 201 165 0; #X obj 197 330 spigot; #X obj 282 332 spigot; #X obj 330 247 r \$0-plot.type; #X obj 266 282 == 0; #X obj 312 519 /; #X obj 435 437 r \$0-pi; #X obj 312 544 zexy/wrap -1 1; #X obj 160 233 t f f; #X obj 214 238 s \$0-plot.index; #X obj 231 669 tabwrite \$1; #X obj 298 637 r \$0-plot.index; #X obj 36 511 rmstodb; #X obj 36 576 clip -24 24; #X obj 36 606 / 24; #X obj 43 478 spigot; #X obj 221 437 spigot; #X obj 214 546 - 1; #X obj 214 578 clip -1 1; #X obj 166 36 inlet; #X obj 49 321 r \$0-amp.units; #X obj 54 409 == 0; #X obj 292 397 tabread \$0-arg.temp; #X obj 184 367 tabread \$0-mag.temp; #X obj 36 540 - 100; #X obj 124 490 r \$0-dbrange; #X obj 84 540 * -1; #X obj 240 462 r \$0-amprange; #X obj 241 484 * 0.5; #X obj 217 508 /; #X obj 75 68 r \$0-redraw; #X connect 0 0 3 1; #X connect 1 0 2 0; #X connect 1 1 6 0; #X connect 2 0 4 0; #X connect 3 0 1 0; #X connect 4 0 5 0; #X connect 4 0 14 0; #X connect 5 0 4 1; #X connect 6 0 4 1; #X connect 7 0 29 0; #X connect 8 0 28 0; #X connect 9 0 10 0; #X connect 9 0 8 1; #X connect 10 0 7 1; #X connect 11 0 13 0; #X connect 12 0 11 1; #X connect 13 0 16 0; #X connect 14 0 8 0; #X connect 14 0 7 0; #X connect 14 1 15 0; #X connect 17 0 16 1; #X connect 18 0 30 0; #X connect 19 0 20 0; #X connect 20 0 16 0; #X connect 21 0 18 0; #X connect 22 0 35 0; #X connect 23 0 24 0; #X connect 24 0 16 0; #X connect 25 0 3 0; #X connect 26 0 22 1; #X connect 26 0 27 0; #X connect 27 0 21 1; #X connect 28 0 11 0; #X connect 29 0 22 0; #X connect 29 0 21 0; #X connect 30 0 19 0; #X connect 31 0 19 2; #X connect 31 0 20 1; #X connect 31 0 32 0; #X connect 32 0 19 1; #X connect 33 0 34 0; #X connect 34 0 35 1; #X connect 35 0 23 0; #X connect 36 0 3 0; #X restore 212 212 pd scale.and.draw; #X text 679 436 .mmb; #X connect 0 0 16 0; #X connect 3 0 10 0; #X connect 4 0 5 0; #X connect 6 0 10 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 11 0; #X connect 10 0 7 0; #X connect 10 1 4 0; #X connect 12 0 19 0; #X connect 13 0 12 0; #X connect 13 1 19 1; #X connect 14 0 15 0; #X connect 16 0 20 0; #X connect 16 1 13 0; #X connect 16 2 18 0; #X connect 16 3 2 0; #X connect 18 0 17 0; #X connect 19 0 13 0;