#N canvas 250 115 501 321 10; #N canvas 243 232 496 328 4_algorithms 0; #N canvas 31 3 710 622 fft-analysis1 0; #X obj 60 523 *~; #X obj 306 397 +~; #X obj 264 397 +~; #X obj 232 427 *~; #X obj 197 427 *~; #X obj 197 452 +~; #X obj 197 477 sqrt~; #X obj 528 342 *~; #X obj 493 342 *~; #X obj 493 367 +~; #X obj 399 256 *~; #X obj 269 147 *~; #X obj 234 147 *~; #X obj 199 147 *~; #X obj 163 147 *~; #X obj 163 172 +~; #X obj 23 573 *~; #X obj 368 141 *~; #X obj 24 48 *~; #X obj 54 297 *~; #X obj 25 21 inlet~; #X obj 24 297 *~; #X obj 152 68 tabreceive~ hanning; #X obj 25 77 rfft~; #X obj 23 548 rifft~; #X obj 23 597 outlet~; #X text 158 52 Hanning window; #X text 50 56 forward real FFT; #X obj 333 141 *~; #X obj 333 167 +~; #X obj 43 263 sig~ 0.001; #X obj 221 98 tabreceive~ last-real; #X text 318 70 previous analysis; #X obj 399 98 tabreceive~ last-imag; #X obj 333 192 rsqrt~; #X text 388 192 inverse modulus; #X obj 234 172 -~; #X obj 347 256 *~; #X text 435 254 encoded as a single complex number; #X text 435 229 amplitude and phase change; #X obj 165 240 *~; #X obj 128 289 tabsend~ last-real; #X obj 165 266 tabsend~ last-imag; #X text 191 240 sic; #X text 543 393 modulus; #X obj 493 448 +~; #X text 522 447 sum of moduli; #X obj 493 393 sqrt~; #X text 244 472 modulus of sum; #X obj 197 503 /~; #X obj 197 529 -~; #X obj 197 554 *~; #X obj 197 579 clip~ 0 1; #X obj 132 423 t b f; #X obj 132 474 -; #X msg 132 449 1; #X obj 132 524 sig~; #X obj 23 525 *~; #X obj 251 509 sig~ 1.5e-20; #X obj 350 538 sel 0; #X msg 350 563 1e+20; #X msg 395 563 -1e+20; #X floatatom 132 499 0 0 0 0 - - -; #X obj 190 335 lrshift~ 1; #X obj 264 335 lrshift~ -1; #X obj 331 373 lrshift~ 1; #X obj 405 373 lrshift~ -1; #X obj 510 419 lrshift~ 1; #X obj 593 422 lrshift~ -1; #X obj 474 22 inlet; #X obj 474 45 switch~ 0; #X obj 132 398 / 300; #X obj 350 512 r \$0flip; #X obj 132 373 r \$0threshold; #X connect 0 0 24 1; #X connect 1 0 3 0; #X connect 1 0 3 1; #X connect 2 0 4 0; #X connect 2 0 4 1; #X connect 3 0 5 1; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 49 0; #X connect 7 0 9 1; #X connect 8 0 9 0; #X connect 9 0 47 0; #X connect 10 0 7 1; #X connect 10 0 1 0; #X connect 10 0 7 0; #X connect 10 0 65 0; #X connect 10 0 66 0; #X connect 11 0 36 1; #X connect 12 0 36 0; #X connect 13 0 15 1; #X connect 14 0 15 0; #X connect 15 0 37 0; #X connect 16 0 25 0; #X connect 17 0 29 1; #X connect 18 0 23 0; #X connect 19 0 0 0; #X connect 20 0 18 0; #X connect 21 0 57 0; #X connect 22 0 16 1; #X connect 22 0 18 1; #X connect 23 0 12 0; #X connect 23 0 14 0; #X connect 23 0 41 0; #X connect 23 0 21 0; #X connect 23 1 13 0; #X connect 23 1 11 0; #X connect 23 1 42 0; #X connect 23 1 19 0; #X connect 24 0 16 0; #X connect 28 0 29 0; #X connect 29 0 34 0; #X connect 30 0 21 1; #X connect 30 0 19 1; #X connect 31 0 14 1; #X connect 31 0 11 1; #X connect 31 0 28 0; #X connect 31 0 28 1; #X connect 33 0 13 1; #X connect 33 0 12 1; #X connect 33 0 17 0; #X connect 33 0 17 1; #X connect 34 0 10 1; #X connect 34 0 37 1; #X connect 34 0 40 0; #X connect 36 0 10 0; #X connect 37 0 8 0; #X connect 37 0 8 1; #X connect 37 0 2 1; #X connect 37 0 63 0; #X connect 37 0 64 0; #X connect 40 0 42 0; #X connect 40 0 41 0; #X connect 45 0 49 1; #X connect 47 0 45 0; #X connect 47 0 67 0; #X connect 47 0 68 0; #X connect 49 0 50 0; #X connect 50 0 51 0; #X connect 51 0 52 0; #X connect 52 0 0 1; #X connect 52 0 57 1; #X connect 53 0 55 0; #X connect 53 1 54 1; #X connect 54 0 62 0; #X connect 55 0 54 0; #X connect 56 0 50 1; #X connect 57 0 24 0; #X connect 58 0 49 1; #X connect 59 0 60 0; #X connect 59 1 61 0; #X connect 60 0 51 1; #X connect 61 0 51 1; #X connect 62 0 56 0; #X connect 63 0 2 0; #X connect 64 0 2 0; #X connect 65 0 1 1; #X connect 66 0 1 1; #X connect 67 0 45 1; #X connect 68 0 45 1; #X connect 69 0 70 0; #X connect 71 0 53 0; #X connect 72 0 59 0; #X connect 73 0 71 0; #X restore 23 129 pd fft-analysis1; #N canvas 42 0 722 636 fft-analysis2 0; #X obj 439 366 *~; #X obj 400 366 *~; #X obj 400 394 -~; #X obj 57 505 *~; #X obj 201 267 *~; #X obj 238 121 *~; #X obj 274 120 *~; #X obj 200 120 *~; #X obj 161 120 *~; #X obj 161 148 +~; #X obj 20 573 *~; #X floatatom 437 457 0 0 0 0 - - -; #X obj 240 184 *~; #X obj 21 56 *~; #X obj 22 27 inlet~; #X obj 74 27 tabreceive~ hanning; #X obj 21 80 rfft~; #X obj 20 549 rifft~; #X obj 20 599 outlet~; #X text 80 9 Hanning window; #X text 50 63 forward real FFT; #X obj 201 183 *~; #X obj 201 212 +~; #X obj 177 61 tabreceive~ last-real; #X text 284 29 previous analysis; #X obj 331 61 tabreceive~ last-imag; #X obj 201 239 rsqrt~; #X text 273 187 inverse modulus; #X obj 239 149 -~; #X obj 161 268 *~; #X obj 141 429 *~; #X obj 95 481 tabsend~ last-real; #X obj 133 457 tabsend~ last-imag; #X text 169 425 sic; #X obj 401 523 -~; #X obj 402 550 *~; #X obj 403 576 clip~ 0 1; #X obj 20 505 *~; #X text 323 121 quotient (current/last); #X obj 437 481 t f f; #X obj 437 506 *; #X obj 190 512 tabsend~ precess-real; #X obj 417 312 tabreceive~ precess-real; #X obj 454 333 tabreceive~ precess-imag; #X obj 230 482 tabsend~ precess-imag; #X text 479 351 imaginary part of quotient; #X obj 400 422 *~; #X text 257 233 normalized quotient \, which encodes the phase precession in the bin between two successive analyses.; #X text 481 368 of successive phase precession; #X text 479 384 values gives pitch stability; #X obj 479 481 sel 0; #X msg 546 511 1e+20; #X msg 479 512 -1e+20; #X obj 20 423 *~ 0.001; #X obj 56 446 *~ 0.001; #X obj 490 27 inlet; #X obj 490 50 switch~ 0; #X obj 437 433 / 300; #X obj 437 406 r \$0threshold; #X obj 479 456 r \$0flip; #X connect 0 0 2 1; #X connect 1 0 2 0; #X connect 2 0 30 0; #X connect 2 0 46 0; #X connect 2 0 46 1; #X connect 3 0 17 1; #X connect 4 0 44 0; #X connect 4 0 1 0; #X connect 5 0 28 0; #X connect 6 0 28 1; #X connect 7 0 9 1; #X connect 8 0 9 0; #X connect 9 0 29 0; #X connect 9 0 21 0; #X connect 9 0 21 1; #X connect 10 0 18 0; #X connect 11 0 39 0; #X connect 12 0 22 1; #X connect 13 0 16 0; #X connect 14 0 13 0; #X connect 15 0 10 1; #X connect 15 0 13 1; #X connect 16 0 6 0; #X connect 16 0 8 0; #X connect 16 0 31 0; #X connect 16 0 53 0; #X connect 16 1 7 0; #X connect 16 1 5 0; #X connect 16 1 32 0; #X connect 16 1 54 0; #X connect 17 0 10 0; #X connect 21 0 22 0; #X connect 22 0 26 0; #X connect 23 0 8 1; #X connect 23 0 5 1; #X connect 25 0 7 1; #X connect 25 0 6 1; #X connect 26 0 4 1; #X connect 26 0 29 1; #X connect 28 0 4 0; #X connect 28 0 12 0; #X connect 28 0 12 1; #X connect 29 0 41 0; #X connect 29 0 0 0; #X connect 30 0 32 0; #X connect 30 0 31 0; #X connect 30 0 41 0; #X connect 30 0 44 0; #X connect 34 0 35 0; #X connect 35 0 36 0; #X connect 36 0 3 1; #X connect 36 0 37 1; #X connect 37 0 17 0; #X connect 39 0 40 0; #X connect 39 1 40 1; #X connect 40 0 34 1; #X connect 42 0 1 1; #X connect 43 0 0 1; #X connect 46 0 34 0; #X connect 50 0 52 0; #X connect 50 1 51 0; #X connect 51 0 35 1; #X connect 52 0 35 1; #X connect 53 0 37 0; #X connect 54 0 3 0; #X connect 55 0 56 0; #X connect 57 0 11 0; #X connect 58 0 57 0; #X connect 59 0 50 0; #X restore 142 130 pd fft-analysis2; #X obj 23 159 outlet~; #X obj 130 107 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1; #X obj 249 106 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1; #X obj 145 60 1; #X obj 145 83 0; #X obj 175 60 1; #X obj 175 83 0; #X obj 204 60 1; #X obj 204 83 0; #X obj 23 15 inlet~; #X obj 356 20 block~ 2048 4; #X text 21 181 1: assume that a bin is pitched if its frequency estimate agrees with estimate from neighboring bins; #X text 21 209 2: assume that a bin is pitched if its frequency and phase extimates are consistent across windows; #X text 21 236 3: assume that a bin is pitched if neighboring bins are 180 degrees out of phase with it; #X obj 232 60 1; #X obj 232 83 0; #X obj 367 109 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1; #X obj 462 110 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1; #X obj 259 60 1; #X obj 260 84 0; #X obj 413 48 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 1 1 ; #N canvas 93 9 157 86 through 0; #X obj 27 27 inlet~; #X obj 27 53 outlet~; #X obj 82 27 inlet; #X obj 82 53 switch~ 0; #X connect 0 0 1 0; #X connect 2 0 3 0; #X restore 348 68 pd through; #N canvas 144 6 696 623 fft-analysis3 0; #X obj 56 514 *~; #X obj 397 247 *~; #X obj 267 138 *~; #X obj 232 138 *~; #X obj 197 138 *~; #X obj 161 138 *~; #X obj 161 163 +~; #X obj 19 564 *~; #X obj 366 132 *~; #X obj 20 64 *~; #X obj 57 280 *~; #X obj 20 39 inlet~; #X obj 19 280 *~; #X obj 75 48 tabreceive~ hanning; #X obj 20 89 rfft~; #X obj 19 539 rifft~; #X obj 19 588 outlet~; #X text 81 32 Hanning window; #X text 77 83 forward real FFT; #X obj 331 132 *~; #X obj 331 158 +~; #X obj 74 254 sig~ 0.001; #X obj 216 48 tabreceive~ last-real; #X text 313 20 previous analysis; #X obj 372 48 tabreceive~ last-imag; #X obj 331 183 rsqrt~; #X text 386 183 inverse modulus; #X obj 232 163 -~; #X obj 345 247 *~; #X text 433 245 encoded as a single complex number; #X text 433 220 amplitude and phase change; #X obj 191 226 *~; #X obj 154 275 tabsend~ last-real; #X obj 191 252 tabsend~ last-imag; #X text 217 226 sic; #X obj 347 394 *~; #X obj 347 419 clip~ 0 1; #X obj 19 514 *~; #X msg 363 364 1e+20; #X msg 408 364 -1e+20; #N canvas 202 18 464 600 stuff 0; #X obj 19 19 inlet~; #X obj 258 21 inlet~; #X obj 144 65 lrshift~ 1; #X obj 258 64 lrshift~ -1; #X obj 33 549 outlet~; #X floatatom 304 433 0 0 0 0 - - -; #X obj 304 457 t f f; #X obj 304 482 *; #X obj 33 510 -~; #X text 89 471 => 180deg = 1 \, 0deg = -1; #X obj 33 213 *~; #X obj 64 212 *~; #X obj 128 213 *~; #X obj 33 256 +~; #X obj 80 256 +~; #X text 118 253 real dot imag; #X obj 58 101 *~; #X obj 92 101 *~; #X obj 146 98 *~; #X obj 258 101 *~; #X obj 292 101 *~; #X obj 327 101 *~; #X obj 57 174 sqrt~; #X obj 187 177 sqrt~; #X obj 318 173 sqrt~; #X obj 33 396 /~; #X obj 80 395 /~; #X obj 33 446 /~ 2; #X text 120 395 cos; #X text 81 444 avg cos; #X obj 49 65 lrshift~ -1; #X obj 350 63 lrshift~ 1; #X text 103 176 magnitude1; #X text 232 177 magnitude2; #X text 361 173 magnitude3; #X obj 54 345 *~; #X obj 96 343 *~; #X obj 98 213 *~; #X obj 33 472 *~ 1; #X obj 304 409 -; #X msg 304 384 1; #X obj 304 333 / 100; #X obj 304 357 t b f; #X obj 304 309 r \$0threshold; #X connect 0 0 2 0; #X connect 0 0 17 0; #X connect 0 0 17 1; #X connect 0 0 30 0; #X connect 0 0 10 1; #X connect 0 0 37 0; #X connect 1 0 3 0; #X connect 1 0 20 0; #X connect 1 0 20 1; #X connect 1 0 31 0; #X connect 1 0 11 0; #X connect 1 0 12 0; #X connect 2 0 18 0; #X connect 2 0 18 1; #X connect 2 0 37 1; #X connect 3 0 19 0; #X connect 3 0 19 1; #X connect 3 0 11 1; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 7 1; #X connect 7 0 8 1; #X connect 8 0 4 0; #X connect 10 0 13 0; #X connect 11 0 13 1; #X connect 12 0 14 1; #X connect 13 0 25 0; #X connect 14 0 26 0; #X connect 16 0 22 0; #X connect 17 0 23 0; #X connect 18 0 24 0; #X connect 19 0 22 0; #X connect 20 0 23 0; #X connect 21 0 24 0; #X connect 22 0 35 0; #X connect 23 0 35 1; #X connect 23 0 36 0; #X connect 24 0 36 1; #X connect 25 0 27 0; #X connect 26 0 27 0; #X connect 27 0 38 0; #X connect 30 0 10 0; #X connect 30 0 16 0; #X connect 30 0 16 1; #X connect 31 0 12 1; #X connect 31 0 21 0; #X connect 31 0 21 1; #X connect 35 0 25 1; #X connect 36 0 26 1; #X connect 37 0 14 0; #X connect 38 0 8 0; #X connect 39 0 5 0; #X connect 40 0 39 0; #X connect 41 0 42 0; #X connect 42 0 40 0; #X connect 42 1 39 1; #X connect 43 0 41 0; #X restore 346 289 pd stuff; #X obj 527 48 inlet; #X obj 527 71 switch~ 0; #X obj 363 339 sel 0; #X obj 363 313 r \$0flip; #X connect 0 0 15 1; #X connect 1 0 40 1; #X connect 2 0 27 1; #X connect 3 0 27 0; #X connect 4 0 6 1; #X connect 5 0 6 0; #X connect 6 0 28 0; #X connect 7 0 16 0; #X connect 8 0 20 1; #X connect 9 0 14 0; #X connect 10 0 0 0; #X connect 11 0 9 0; #X connect 12 0 37 0; #X connect 13 0 7 1; #X connect 13 0 9 1; #X connect 14 0 3 0; #X connect 14 0 5 0; #X connect 14 0 32 0; #X connect 14 0 12 0; #X connect 14 1 4 0; #X connect 14 1 2 0; #X connect 14 1 33 0; #X connect 14 1 10 0; #X connect 15 0 7 0; #X connect 19 0 20 0; #X connect 20 0 25 0; #X connect 21 0 12 1; #X connect 21 0 10 1; #X connect 22 0 5 1; #X connect 22 0 2 1; #X connect 22 0 19 0; #X connect 22 0 19 1; #X connect 24 0 4 1; #X connect 24 0 3 1; #X connect 24 0 8 0; #X connect 24 0 8 1; #X connect 25 0 1 1; #X connect 25 0 28 1; #X connect 25 0 31 0; #X connect 27 0 1 0; #X connect 28 0 40 0; #X connect 31 0 33 0; #X connect 31 0 32 0; #X connect 35 0 36 0; #X connect 36 0 0 1; #X connect 36 0 37 1; #X connect 37 0 15 0; #X connect 38 0 35 1; #X connect 39 0 35 1; #X connect 40 0 35 0; #X connect 41 0 42 0; #X connect 43 0 38 0; #X connect 43 1 39 0; #X connect 44 0 43 0; #X restore 260 131 pd fft-analysis3; #N canvas 80 0 842 635 analysis4 0; #X obj 28 36 inlet~; #X obj 27 591 outlet~; #X obj 537 52 inlet; #X obj 537 78 switch~ 0; #X obj 64 517 *~; #X obj 374 268 *~; #X obj 275 141 *~; #X obj 240 141 *~; #X obj 205 141 *~; #X obj 169 141 *~; #X obj 169 166 +~; #X obj 27 567 *~; #X obj 381 135 *~; #X obj 27 65 *~; #X obj 65 283 *~; #X obj 26 283 *~; #X obj 81 49 tabreceive~ hanning; #X obj 27 90 rfft~; #X obj 27 542 rifft~; #X text 87 33 Hanning window; #X text 53 73 forward real FFT; #X obj 346 135 *~; #X obj 346 161 +~; #X obj 82 256 sig~ 0.001; #X obj 226 50 tabreceive~ last-real; #X text 310 21 previous analysis; #X obj 381 51 tabreceive~ last-imag; #X obj 346 186 rsqrt~; #X text 401 186 inverse modulus; #X obj 240 166 -~; #X obj 330 268 *~; #X text 410 266 encoded as a single complex number; #X text 410 241 amplitude and phase change; #X obj 171 234 *~; #X obj 134 283 tabsend~ last-real; #X obj 171 260 tabsend~ last-imag; #X text 197 234 sic; #X obj 330 499 *~; #X obj 330 524 clip~ 0 1; #X obj 27 517 *~; #X msg 364 472 1e+20; #X msg 409 472 -1e+20; #X obj 364 447 sel 0; #X floatatom 401 344 0 0 0 0 - - -; #X obj 401 368 t f f; #X obj 401 394 *; #X obj 329 411 -~; #X obj 329 345 *~; #X obj 357 345 *~; #X obj 401 319 / 10; #X obj 329 382 +~; #X obj 364 421 r \$0flip; #X obj 401 293 r \$0threshold; #X connect 0 0 13 0; #X connect 2 0 3 0; #X connect 4 0 18 1; #X connect 5 0 48 1; #X connect 5 0 48 0; #X connect 6 0 29 1; #X connect 7 0 29 0; #X connect 8 0 10 1; #X connect 9 0 10 0; #X connect 10 0 30 0; #X connect 11 0 1 0; #X connect 12 0 22 1; #X connect 13 0 17 0; #X connect 14 0 4 0; #X connect 15 0 39 0; #X connect 16 0 11 1; #X connect 16 0 13 1; #X connect 17 0 7 0; #X connect 17 0 9 0; #X connect 17 0 34 0; #X connect 17 0 15 0; #X connect 17 1 8 0; #X connect 17 1 6 0; #X connect 17 1 35 0; #X connect 17 1 14 0; #X connect 18 0 11 0; #X connect 21 0 22 0; #X connect 22 0 27 0; #X connect 23 0 15 1; #X connect 23 0 14 1; #X connect 24 0 9 1; #X connect 24 0 6 1; #X connect 24 0 21 0; #X connect 24 0 21 1; #X connect 26 0 8 1; #X connect 26 0 7 1; #X connect 26 0 12 0; #X connect 26 0 12 1; #X connect 27 0 5 1; #X connect 27 0 30 1; #X connect 27 0 33 0; #X connect 29 0 5 0; #X connect 30 0 47 1; #X connect 30 0 47 0; #X connect 33 0 35 0; #X connect 33 0 34 0; #X connect 37 0 38 0; #X connect 38 0 4 1; #X connect 38 0 39 1; #X connect 39 0 18 0; #X connect 40 0 37 1; #X connect 41 0 37 1; #X connect 42 0 40 0; #X connect 42 1 41 0; #X connect 43 0 44 0; #X connect 44 0 45 0; #X connect 44 1 45 1; #X connect 45 0 46 1; #X connect 46 0 37 0; #X connect 47 0 50 0; #X connect 48 0 50 1; #X connect 49 0 43 0; #X connect 50 0 46 0; #X connect 51 0 42 0; #X connect 52 0 49 0; #X restore 383 132 pd analysis4; #X obj 145 37 sel 1 2 3 4 5 0; #X text 21 264 4: assume that bins with large amplitudes are sinusoidal and bins with small amplitudes are noise; #X obj 145 15 inlet; #X connect 0 0 2 0; #X connect 1 0 2 0; #X connect 3 0 0 1; #X connect 4 0 1 1; #X connect 5 0 3 0; #X connect 6 0 4 0; #X connect 6 0 18 0; #X connect 6 0 19 0; #X connect 6 0 22 0; #X connect 7 0 4 0; #X connect 8 0 3 0; #X connect 8 0 3 0; #X connect 8 0 18 0; #X connect 8 0 19 0; #X connect 8 0 22 0; #X connect 9 0 18 0; #X connect 10 0 4 0; #X connect 10 0 3 0; #X connect 10 0 3 0; #X connect 10 0 4 0; #X connect 10 0 19 0; #X connect 10 0 22 0; #X connect 11 0 1 0; #X connect 11 0 0 0; #X connect 11 0 24 0; #X connect 11 0 25 0; #X connect 11 0 23 0; #X connect 16 0 19 0; #X connect 17 0 4 0; #X connect 17 0 3 0; #X connect 17 0 3 0; #X connect 17 0 4 0; #X connect 17 0 18 0; #X connect 17 0 22 0; #X connect 18 0 24 1; #X connect 19 0 25 1; #X connect 20 0 22 0; #X connect 21 0 4 0; #X connect 21 0 3 0; #X connect 21 0 4 0; #X connect 21 0 18 0; #X connect 21 0 19 0; #X connect 22 0 23 1; #X connect 23 0 2 0; #X connect 24 0 2 0; #X connect 25 0 2 0; #X connect 26 0 5 0; #X connect 26 0 6 0; #X connect 26 1 8 0; #X connect 26 1 7 0; #X connect 26 2 9 0; #X connect 26 2 10 0; #X connect 26 3 16 0; #X connect 26 3 17 0; #X connect 26 4 20 0; #X connect 26 4 21 0; #X connect 26 5 20 0; #X connect 26 5 21 0; #X connect 28 0 26 0; #X restore 40 155 pd 4_algorithms; #X floatatom 333 204 0 0 0 0 - - -; #X msg 333 176 0; #X text 306 157 pitched; #X text 365 156 noisy; #X msg 365 176 1; #N canvas 254 298 202 199 init 0; #X obj 24 14 inlet; #X msg 59 45 2048; #X obj 59 68 s \$0window-size; #X obj 52 113 s \$0flip; #X msg 52 90 0; #X obj 24 157 s \$0threshold; #X msg 24 134 1; #X connect 0 0 1 0; #X connect 0 0 4 0; #X connect 0 0 6 0; #X connect 1 0 2 0; #X connect 4 0 3 0; #X connect 6 0 5 0; #X restore 168 206 pd init; #X obj 199 155 s \$0threshold; #X obj 199 124 inlet; #X obj 39 187 outlet~; #N canvas 211 72 547 396 previous-analysis 0; #N canvas 0 0 450 300 graph1 0; #X array last-real 2048 float 0; #X coords 0 1 2048 -1 200 150 1; #X restore 280 26 graph; #N canvas 0 0 450 300 graph2 0; #X array last-imag 2048 float 0; #X coords 0 1 2048 -1 200 150 1; #X restore 279 213 graph; #X msg 37 132 \; last-real resize 2048 \; last-imag resize 2048; #X restore 156 256 pd previous-analysis; #N canvas 132 61 540 392 hanning-window 0; #X obj 97 218 phasor~; #X obj 97 247 cos~; #X obj 24 347 tabwrite~ hanning; #X obj 31 267 -~; #X obj 30 231 sig~ 1; #X msg 40 191 0; #X text 149 14 CALCULATE HANNING; #X text 149 29 WINDOW TABLE; #N canvas 0 0 450 300 graph1 0; #X array hanning 2048 float 0; #X coords 0 1 2047 -1 200 150 1; #X restore 278 66 graph; #X obj 98 139 / 1024; #X obj 98 181 sig~; #X text 108 321 sample rate / window size; #X msg 24 152 bang; #X obj 70 284 sig~ 0.5; #X obj 52 318 *~; #X obj 71 102 samplerate~; #X obj 26 56 t b f; #X msg 292 268 \; hanning resize 2048; #X obj 26 24 r \$0window-size; #X connect 0 0 1 0; #X connect 1 0 3 1; #X connect 3 0 14 0; #X connect 4 0 3 0; #X connect 5 0 0 1; #X connect 9 0 10 0; #X connect 10 0 0 0; #X connect 12 0 2 0; #X connect 12 0 5 0; #X connect 13 0 14 1; #X connect 14 0 2 0; #X connect 15 0 9 0; #X connect 16 0 15 0; #X connect 16 0 12 0; #X connect 16 1 9 1; #X connect 18 0 16 0; #X restore 28 256 pd hanning-window; #N canvas 18 2 572 540 phase-precession 0; #N canvas 0 0 450 300 graph1 0; #X array precess-real 2048 float 0; #X coords 0 1 2048 -1 400 200 1; #X restore 124 30 graph; #N canvas 0 0 450 300 graph2 0; #X array precess-imag 2048 float 0; #X coords 0 1 2048 -1 400 200 1; #X restore 124 242 graph; #X msg 125 450 \; precess-real resize 2048 \; precess-imag resize 2048 ; #X restore 303 256 pd phase-precession; #X obj 39 124 inlet~; #X obj 140 124 inlet; #X text 34 13 inlets:; #X obj 333 229 s \$0flip; #X obj 139 205 0; #X obj 139 182 loadbang; #X obj 333 124 inlet; #X text 35 31 1) signal; #X text 35 50 2) analysis type: 0 = none \, 1-4 are described in subpatch ; #X text 35 70 3) threshold: the boundary between pitch & noise (more or less); #X text 35 100 4) 0 = pitch \, 1 = noise; #X text 26 282 cristyn magnus (2001-2005) \; http://cmagnus.com/cmagnus ; #X connect 0 0 9 0; #X connect 1 0 16 0; #X connect 2 0 1 0; #X connect 5 0 1 0; #X connect 8 0 7 0; #X connect 13 0 0 0; #X connect 14 0 0 1; #X connect 17 0 0 1; #X connect 18 0 17 0; #X connect 18 0 6 0; #X connect 19 0 16 0;