#N struct peak-template float x float y float amp float ampreal float ampimag float used; #N struct trace-template float x float y float voiceno array bazoo point-template; #N struct point-template float y float amp; #N canvas 163 180 926 633 12; #X floatatom 777 72 0 0 0 0 - - -; #N canvas 516 98 663 557 boo 0; #X obj 103 108 outlet; #X msg 101 80 set \$1; #X obj 103 57 r osc-amp; #X connect 1 0 0 0; #X connect 2 0 1 0; #X restore 777 52 pd; #X obj 781 99 s osc-amp; #X obj 121 513 pack 0 100; #X obj 122 533 line~; #X obj 121 493 dbtorms; #X obj 122 573 *~; #X floatatom 811 225 0 0 0 0 - - -; #X msg 668 269 0; #X floatatom 737 225 0 0 0 0 - - -; #X floatatom 838 290 0 0 0 0 - - -; #X floatatom 647 71 0 0 0 0 - - -; #N canvas 516 98 663 555 boo 0; #X obj 103 108 outlet; #X msg 101 80 set \$1; #X obj 103 57 r grain-amp; #X connect 1 0 0 0; #X connect 2 0 1 0; #X restore 647 51 pd; #N canvas 201 90 556 354 analysis 0; #X obj 286 45 r snapshot; #X obj 81 283 print; #X obj 138 154 t b b b; #X obj 26 189 s done-analysis; #X obj 272 149 s start-analysis; #X obj 209 261 s found-peak; #X obj 139 263 r loud; #X obj 82 262 spigot; #X msg 179 101 1; #X obj 40 99 r fft-done; #X obj 40 129 spigot; #X msg 143 101 0; #X obj 289 84 del 0.01; #X msg 287 66 bang; #X text 238 103 Wait for the next FFT to come by before doing the peak search.; #X obj 443 176 r errthresh; #X msg 446 219 errthresh \$1; #X floatatom 443 199 0 0 0 0 - - -; #X obj 276 173 r window-size; #X obj 220 190 f; #X msg 211 211 \$1 fft-real fft-imag 10; #X obj 211 231 pique; #X connect 0 0 13 0; #X connect 2 0 3 0; #X connect 2 1 19 0; #X connect 2 2 4 0; #X connect 2 2 11 0; #X connect 6 0 7 1; #X connect 7 0 1 0; #X connect 8 0 10 1; #X connect 9 0 10 0; #X connect 10 0 2 0; #X connect 11 0 10 1; #X connect 12 0 8 0; #X connect 13 0 12 0; #X connect 15 0 17 0; #X connect 16 0 21 0; #X connect 17 0 16 0; #X connect 18 0 19 1; #X connect 19 0 20 0; #X connect 20 0 21 0; #X connect 21 0 5 0; #X connect 21 0 7 0; #X restore 351 411 pd analysis; #N canvas 168 244 589 236 peak-template 0; #X obj 81 52 filledpolygon 3 3 3 0 0 0 amp 0 0; #X obj 74 10 struct peak-template float x float y float amp float ampreal float ampimag float used; #X restore 351 516 pd peak-template; #N canvas 0 0 600 386 peak-list 0; #X scalar peak-template 14.6015 330 -247.288 0.111508 -0.0711486 0 \;; #X scalar peak-template 27.1653 330 -217.279 0.0258328 0.0328795 0 \;; #X scalar peak-template 38.6569 330 -224.35 -0.0509761 0.0202439 0 \;; #X scalar peak-template 59.9432 330 -204.752 0.0256193 0.00348008 0 \;; #X scalar peak-template 70.7537 330 -220.483 -0.0080783 0.0465889 0 \;; #X scalar peak-template 82.8075 330 -172.145 -0.007237 -0.00153184 0 \;; #X scalar peak-template 94.3779 330 -170.655 0.00668927 -0.00201552 0 \;; #X scalar peak-template 109.018 330 -196.083 0.015492 -0.0101804 0 \;; #X scalar peak-template 118.207 330 -151.073 -0.00325508 -0.000512459 0 \;; #X scalar peak-template 131.204 330 -166.747 -0.00591408 0.00108779 0 \;; #X restore 351 454 pd peak-list; #N canvas 20 23 472 426 trace-list 1; #X scalar trace-template 0 0 10 \; -199.613 82.4286 \; \;; #X scalar trace-template 0 0 9 \; -242.604 72.4257 \; \;; #X scalar trace-template 0 0 8 \; -267.035 74.7826 \; \;; #X scalar trace-template 0 0 7 \; -297.412 68.2501 \; \;; #X scalar trace-template 0 0 6 \; -308.895 73.4936 \; \;; #X scalar trace-template 0 0 5 \; -319.788 57.3809 \; \;; #X scalar trace-template 0 0 4 \; -328.845 56.8844 \; \;; #X scalar trace-template 0 0 3 \; -338.831 65.3604 \; \;; #X scalar trace-template 0 0 2 \; -344.435 50.3571 \; \;; #X scalar trace-template 0 0 1 \; -351.66 55.5817 \; \;; #X restore 351 494 pd trace-list; #N canvas 56 84 527 179 trace-template 0; #X obj 121 72 plot bazoo 0 1 0 500 5; #X text 121 93 This template describes a pitch/amplitude trace. The array "bazoo" holds the actual points. In this template \, y is always 0 and x is the starting location in pixels. There are 5 pixels per point.; #X obj 125 36 struct trace-template float x float y float voiceno array bazoo point-template; #X restore 351 537 pd trace-template; #N canvas 96 258 494 158 point-template 0; #X text 127 56 This template describes a single point on a pitch trace (cf. trace-template w describes the trace itself.); #X text 127 89 "y" is the field that is shown on the graph \; it's - 4 * pitch. You also get an "amp" field in dB \, which you can't see as a plot (yet).; #X obj 212 14 struct point-template float y float amp; #X restore 351 557 pd point-template; #X msg 746 506 bang; #X obj 8 425 pack 0 100; #X obj 8 449 line~; #X obj 8 405 dbtorms; #X floatatom 545 70 0 0 0 0 - - -; #N canvas 194 37 730 722 output 0; #X obj 295 76 t b f; #X obj 286 100 +; #X obj 515 207 f; #X obj 532 165 f; #X obj 359 210 f; #X obj 83 179 t b; #X obj 82 127 f; #X obj 71 58 inlet; #X text 78 37 mute; #X obj 83 201 f; #X msg 235 153 0; #X msg 74 84 bang; #X obj 83 155 moses 1; #X obj 231 69 t b f; #X obj 222 93 +; #X obj 181 27 r loop-amp; #X obj 395 26 r osc-amp; #X obj 83 236 s loop-amp; #X obj 359 235 s osc-amp; #X obj 591 125 print; #X obj 186 148 f; #X obj 374 168 f; #X obj 225 120 t b b; #X obj 552 23 r grain-amp; #X obj 516 232 s grain-amp; #X connect 0 0 1 0; #X connect 0 1 1 1; #X connect 1 0 6 1; #X connect 2 0 24 0; #X connect 3 0 2 1; #X connect 4 0 18 0; #X connect 5 0 9 0; #X connect 5 0 4 0; #X connect 5 0 2 0; #X connect 6 0 12 0; #X connect 7 0 11 0; #X connect 9 0 17 0; #X connect 10 0 17 0; #X connect 10 0 18 0; #X connect 10 0 24 0; #X connect 11 0 6 0; #X connect 12 0 5 0; #X connect 12 1 22 0; #X connect 13 0 14 0; #X connect 13 1 14 1; #X connect 14 0 1 0; #X connect 15 0 14 0; #X connect 15 0 20 1; #X connect 16 0 13 0; #X connect 16 0 21 1; #X connect 20 0 9 1; #X connect 21 0 4 1; #X connect 22 0 10 0; #X connect 22 1 20 0; #X connect 22 1 21 0; #X connect 22 1 3 0; #X connect 23 0 3 1; #X connect 23 0 0 0; #X restore 820 69 pd output; #N canvas 516 98 663 559 /SUBPATCH/ 0; #X obj 103 108 outlet; #X msg 101 80 set \$1; #X obj 103 57 r loop-amp; #X connect 1 0 0 0; #X connect 2 0 1 0; #X restore 545 50 pd; #N canvas 209 96 518 375 fft 0; #X floatatom 305 194 0 0 0 0 - - -; #X obj 454 160 r sample-rate; #X obj 454 180 t b f; #X obj 304 169 r window-size; #X obj 264 38 r sample-rate; #X obj 238 16 r window-size; #X obj 264 58 t b f; #X obj 238 83 /; #X obj 170 103 bang~; #X obj 169 175 line~; #X obj 238 104 * 1000; #X text 298 104 window size (msec); #X obj 168 281 rfft~; #X obj 170 337 tabsend~ fft-real; #X obj 207 307 tabsend~ fft-imag; #X obj 429 140 r location; #X obj 429 205 *; #X obj 429 228 * 0.001; #X text 498 228 location (samples); #X obj 169 129 f; #X msg 169 152 0 \, 1 \$1; #X obj 113 201 *~; #X obj 113 224 -~; #X obj 81 301 *~; #X obj 81 324 outlet~; #X floatatom 429 252 0 0 0 0 - - -; #X obj 53 127 s fft-done; #X obj 66 31 block~ 2048 1; #X obj 168 255 tabread4~ sample; #X obj 169 211 *~ 0; #X obj 168 232 +~ 0; #X connect 1 0 2 0; #X connect 2 0 16 0; #X connect 2 1 16 1; #X connect 3 0 0 0; #X connect 3 0 29 1; #X connect 4 0 6 0; #X connect 5 0 7 0; #X connect 6 0 7 0; #X connect 6 1 7 1; #X connect 7 0 10 0; #X connect 8 0 19 0; #X connect 8 0 26 0; #X connect 9 0 21 0; #X connect 9 0 21 1; #X connect 9 0 22 1; #X connect 9 0 29 0; #X connect 10 0 19 1; #X connect 12 0 13 0; #X connect 12 1 14 0; #X connect 15 0 16 0; #X connect 16 0 17 0; #X connect 17 0 25 0; #X connect 17 0 30 1; #X connect 19 0 20 0; #X connect 20 0 9 0; #X connect 21 0 22 0; #X connect 22 0 23 0; #X connect 23 0 24 0; #X connect 28 0 12 0; #X connect 28 0 23 1; #X connect 29 0 30 0; #X connect 30 0 28 0; #X restore 22 470 pd fft; #X obj 8 493 *~; #X obj 9 544 hip~ 5; #X obj 9 571 dac~; #X obj 754 529 adc~; #X obj 545 91 s loop-amp; #X msg 820 48 mute; #X text 18 97 click here first; #X text 741 489 live sample; #X text 677 25 AMPLITUDES; #N canvas 5 1 864 622 make-trace 0; #X obj 186 220 * -0.33333; #X obj 91 216 * 10; #X obj 118 136 pointer; #X msg 118 115 next; #X obj 118 97 until; #X obj 387 134 pointer; #X msg 389 108 next; #X obj 200 330 unpack; #X obj 255 332 s amp; #X obj 283 378 s frequency; #X obj 300 361 s pitch; #X obj 251 375 f 0; #X obj 200 348 t b b b b f; #X obj 781 133 pointer; #X obj 744 602 setsize trace-template bazoo; #X obj 744 514 random 200; #X obj 744 532 + 100; #X obj 857 526 pointer; #X obj 218 532 pointer; #X floatatom 356 524 0 0 0 0 - - -; #X floatatom 296 550 0 0 0 0 - - -; #X msg 205 509 bang; #X floatatom 108 461 0 0 0 0 - - -; #X floatatom 40 509 0 0 0 0 - - -; #X floatatom 153 590 0 0 0 0 - - -; #X floatatom 516 556 0 0 0 0 - - -; #X floatatom 356 489 0 0 0 0 - - -; #X floatatom 667 511 0 0 0 0 - - -; #X obj 481 464 pointer; #X msg 508 447 next; #X floatatom 532 512 0 0 0 0 - - -; #X obj 516 539 getsize trace-template bazoo; #X obj 127 563 get point-template y; #X obj 40 533 set point-template y; #X obj 101 486 element trace-template bazoo; #X obj 296 580 setsize trace-template bazoo; #X obj 356 507 set trace-template x; #X obj 356 542 set trace-template y; #X msg 744 497 bang; #X obj 744 549 append trace-template x; #X obj 519 489 get trace-template x y; #X obj 744 567 t b p; #X msg 744 584 5; #X obj 816 93 s clear-traces; #X obj 783 155 s last-in-list; #X msg 780 43 bang; #X obj 780 60 t b b; #X obj 745 156 f 0; #X obj 744 176 s nframe; #X obj 445 337 r nframe; #X obj 429 356 f; #X obj 429 373 + 1; #X obj 429 391 s nframe; #X obj 429 296 r done-frame; #X obj 437 315 s done-adding-traces; #X obj 19 309 r component; #X obj 19 326 unpack; #X obj 73 331 s amp; #X obj 104 370 s frequency; #X obj 120 354 s pitch; #X obj 70 388 s added-to-trace; #X obj 70 370 f 0; #X obj 62 408 s add-to-trace; #X obj 19 344 t b b b b f; #X obj 780 25 r clear-all; #X obj 200 311 r component2; #X obj 251 393 s started-new-trace; #X obj 240 414 s start-new-trace; #X obj 355 41 r done-analysis; #X obj 355 62 t b b b b; #X obj 292 176 r added-to-trace; #X obj 389 89 until; #X obj 456 172 get peak-template x amp; #X obj 552 195 * -0.33333; #X obj 456 190 * 10; #X obj 456 210 pack; #X obj 456 226 s component; #X obj 120 337 ftom; #X obj 387 155 t b p p; #X obj 256 196 set peak-template used; #X obj 259 176 f; #X obj 302 344 ftom; #X msg 175 31 \; done-frame bang; #X obj 21 178 get peak-template used x amp; #X obj 35 236 pack 0 0 0; #X obj 35 255 route 0; #X obj 35 272 s component2; #X obj 549 260 print x1; #X obj 226 276 print x2; #X obj 727 255 add-trace 1; #X obj 728 274 add-trace 2; #X obj 728 291 add-trace 3; #X obj 727 309 add-trace 4; #X obj 728 328 add-trace 5; #X obj 728 345 add-trace 6; #X obj 728 363 add-trace 7; #X obj 729 381 add-trace 8; #X obj 729 399 add-trace 9; #X obj 729 417 add-trace 10; #X msg 484 111 traverse pd-peak-list; #X msg 781 115 traverse pd-trace-list \, bang; #X msg 833 59 \; pd-trace-list clear; #X msg 481 430 traverse pd-trace-list \, next; #X msg 857 509 traverse pd-trace-list \, bang; #X connect 0 0 84 2; #X connect 1 0 84 1; #X connect 2 0 83 0; #X connect 2 1 4 1; #X connect 3 0 2 0; #X connect 4 0 3 0; #X connect 5 0 78 0; #X connect 5 1 71 1; #X connect 6 0 5 0; #X connect 7 0 12 0; #X connect 7 1 8 0; #X connect 11 0 66 0; #X connect 12 2 67 0; #X connect 12 3 11 0; #X connect 12 4 81 0; #X connect 12 4 9 0; #X connect 13 0 44 0; #X connect 15 0 16 0; #X connect 16 0 39 0; #X connect 17 0 39 1; #X connect 18 0 32 0; #X connect 19 0 37 0; #X connect 20 0 35 0; #X connect 21 0 18 0; #X connect 22 0 34 0; #X connect 23 0 33 0; #X connect 26 0 36 0; #X connect 28 0 35 1; #X connect 28 0 36 1; #X connect 28 0 37 1; #X connect 28 0 34 1; #X connect 28 0 40 0; #X connect 28 0 31 0; #X connect 29 0 28 0; #X connect 31 0 25 0; #X connect 32 0 24 0; #X connect 34 0 18 0; #X connect 34 0 33 1; #X connect 38 0 15 0; #X connect 39 0 41 0; #X connect 40 0 30 0; #X connect 40 1 27 0; #X connect 41 0 42 0; #X connect 41 1 14 1; #X connect 42 0 14 0; #X connect 45 0 46 0; #X connect 46 0 100 0; #X connect 46 0 47 0; #X connect 46 1 101 0; #X connect 46 1 43 0; #X connect 47 0 48 0; #X connect 49 0 50 1; #X connect 50 0 51 0; #X connect 51 0 52 0; #X connect 53 0 50 0; #X connect 53 0 54 0; #X connect 55 0 56 0; #X connect 56 0 63 0; #X connect 56 1 57 0; #X connect 61 0 60 0; #X connect 63 2 62 0; #X connect 63 3 61 0; #X connect 63 4 77 0; #X connect 63 4 58 0; #X connect 64 0 45 0; #X connect 65 0 7 0; #X connect 68 0 69 0; #X connect 69 0 82 0; #X connect 69 1 4 0; #X connect 69 2 71 0; #X connect 69 3 99 0; #X connect 70 0 80 1; #X connect 71 0 6 0; #X connect 72 0 74 0; #X connect 72 1 73 0; #X connect 73 0 75 1; #X connect 74 0 75 0; #X connect 75 0 76 0; #X connect 77 0 59 0; #X connect 78 0 80 0; #X connect 78 1 79 1; #X connect 78 2 72 0; #X connect 80 0 79 0; #X connect 81 0 10 0; #X connect 83 0 84 0; #X connect 83 1 1 0; #X connect 83 2 0 0; #X connect 84 0 85 0; #X connect 85 0 86 0; #X connect 99 0 5 0; #X connect 99 0 2 0; #X connect 100 0 13 0; #X connect 102 0 28 0; #X connect 103 0 17 0; #X restore 351 474 pd make-trace; #X floatatom 5 289 0 0 0 0 - - -; #N canvas 0 0 955 721 arrays 0; #X msg 39 202 \; fft-real resize 4096 \; fft-imag resize 4096; #N canvas 0 0 450 300 graph1 0; #X array fft-real 4096 float 0; #X coords 0 1 4096 -1 400 300 1; #X restore 432 41 graph; #N canvas 0 0 450 300 graph2 0; #X array fft-imag 4096 float 0; #X coords 0 1 4096 -1 400 300 1; #X restore 419 265 graph; #X restore 571 515 pd arrays; #X obj 5 309 s location; #X obj 123 412 r loop-amp; #X obj 737 288 f; #X obj 5 248 r location; #X msg 5 268 set \$1; #X obj 777 288 +; #X obj 737 309 moses 900; #X msg 695 329 0; #X msg 694 247 1; #X msg 736 335 \; location \$1 \; snapshot bang; #X msg 655 170 bang \; location 0 \; clear-all bang; #X floatatom 655 305 0 0 0 0 - - -; #X obj 655 225 t b b; #X obj 838 270 r incr; #X obj 8 385 r grain-amp; #X obj 121 473 r osc-amp; #X obj 143 553 catch~ osc-sum; #N canvas 102 67 751 619 osc-bank 0; #X obj 311 433 osc-voice; #X obj 290 451 osc-voice; #X obj 269 471 osc-voice; #X obj 248 490 osc-voice; #X obj 227 510 osc-voice; #X obj 207 528 osc-voice; #X obj 186 547 osc-voice; #X obj 165 566 osc-voice; #X obj 144 586 osc-voice; #X obj 123 410 route 1 2 3 4 5 6 7 8 9 10; #X msg 377 269 0; #X obj 728 489 pointer; #X floatatom 848 417 0 0 0 0 - - -; #X obj 623 351 pointer; #X msg 549 491 next; #X floatatom 623 419 0 0 0 0 - - -; #X obj 231 111 pointer; #X floatatom 368 104 0 0 0 0 - - -; #X floatatom 309 129 0 0 0 0 - - -; #X msg 218 88 bang; #X floatatom 120 40 0 0 0 0 - - -; #X floatatom 53 88 0 0 0 0 - - -; #X floatatom 165 169 0 0 0 0 - - -; #X floatatom 546 137 0 0 0 0 - - -; #X floatatom 368 69 0 0 0 0 - - -; #X floatatom 680 90 0 0 0 0 - - -; #X obj 552 43 pointer; #X msg 581 27 next; #X floatatom 545 92 0 0 0 0 - - -; #X obj 546 120 getsize trace-template bazoo; #X obj 140 142 get point-template y; #X obj 53 113 set point-template y; #X obj 113 66 element trace-template bazoo; #X obj 309 159 setsize trace-template bazoo; #X obj 368 86 set trace-template x; #X obj 368 121 set trace-template y; #X obj 532 68 get trace-template x y; #X floatatom 524 312 0 0 0 0 - - -; #X msg 524 288 1; #X msg 564 288 0; #X obj 623 451 <; #X obj 623 398 get trace-template x voiceno; #X obj 623 374 t p p; #X obj 393 337 until; #X obj 620 233 r start-resynth; #X obj 625 255 t b b; #X obj 504 353 f; #X obj 504 372 sel 0 1; #X obj 668 436 r synth-index; #X obj 621 555 pack f p; #X obj 623 470 sel 0 1; #X obj 305 230 r step-resynth; #X obj 378 288 f; #X obj 378 308 s synth-index; #X obj 636 523 f; #X obj 419 289 + 5; #X obj 621 490 t b b b; #X obj 305 252 t b b b; #X obj 281 301 s osc-tick; #X obj 123 604 osc-voice; #X msg 552 10 traverse pd-trace-list \, next; #X msg 621 288 traverse pd-trace-list \, next; #X connect 9 0 59 0; #X connect 9 1 8 0; #X connect 9 2 7 0; #X connect 9 3 6 0; #X connect 9 4 5 0; #X connect 9 5 4 0; #X connect 9 6 3 0; #X connect 9 7 2 0; #X connect 9 8 1 0; #X connect 9 9 0 0; #X connect 10 0 52 0; #X connect 11 0 49 1; #X connect 13 0 42 0; #X connect 13 1 39 0; #X connect 13 1 43 1; #X connect 14 0 13 0; #X connect 15 0 40 0; #X connect 16 0 30 0; #X connect 17 0 35 0; #X connect 18 0 33 0; #X connect 19 0 16 0; #X connect 20 0 32 0; #X connect 21 0 31 0; #X connect 24 0 34 0; #X connect 26 0 33 1; #X connect 26 0 34 1; #X connect 26 0 35 1; #X connect 26 0 32 1; #X connect 26 0 36 0; #X connect 26 0 29 0; #X connect 27 0 26 0; #X connect 29 0 23 0; #X connect 30 0 22 0; #X connect 32 0 16 0; #X connect 32 0 31 1; #X connect 36 0 28 0; #X connect 36 1 25 0; #X connect 37 0 46 1; #X connect 38 0 37 0; #X connect 39 0 37 0; #X connect 40 0 50 0; #X connect 41 0 15 0; #X connect 41 1 54 1; #X connect 42 0 41 0; #X connect 42 1 11 1; #X connect 43 0 46 0; #X connect 44 0 45 0; #X connect 45 0 61 0; #X connect 45 1 38 0; #X connect 45 1 10 0; #X connect 46 0 47 0; #X connect 47 0 43 1; #X connect 47 1 15 0; #X connect 48 0 40 1; #X connect 49 0 9 0; #X connect 50 0 43 1; #X connect 50 1 56 0; #X connect 51 0 57 0; #X connect 52 0 53 0; #X connect 52 0 55 0; #X connect 54 0 49 0; #X connect 55 0 52 1; #X connect 56 0 14 0; #X connect 56 1 54 0; #X connect 56 2 11 0; #X connect 57 0 58 0; #X connect 57 1 43 0; #X connect 57 2 52 0; #X connect 60 0 26 0; #X connect 61 0 13 0; #X restore 571 494 pd osc-bank; #X obj 646 95 s grain-amp; #N canvas 31 70 662 326 save-list 0; #X floatatom 759 255 0 0 0 0 - - -; #X floatatom 677 254 0 0 0 0 - - -; #X floatatom 599 251 0 0 0 0 - - -; #X floatatom 517 250 0 0 0 0 - - -; #X obj 435 206 pointer; #X obj 307 121 pointer; #X msg 328 47 bang; #X obj 152 200 rmstodb; #X obj 10 201 * 0.1; #X obj 151 220 * -3; #X floatatom 445 247 0 0 0 0 - - -; #X obj 304 27 r start-analysis; #X obj 305 71 t b b; #X msg 456 185 next; #X obj 430 227 get peak-template x y amp ampreal ampimag; #X obj 9 241 append peak-template x y amp ampreal ampimag; #X obj 125 138 r found-peak; #X obj 126 161 unpack 0 0 0 0 0; #X msg 81 201 330; #X msg 356 69 \; pd-peak-list clear; #X msg 305 100 traverse pd-peak-list \, bang; #X msg 437 166 traverse pd-peak-list \, next; #X connect 4 0 14 0; #X connect 5 0 15 5; #X connect 6 0 12 0; #X connect 7 0 9 0; #X connect 8 0 15 0; #X connect 9 0 15 2; #X connect 11 0 12 0; #X connect 12 0 20 0; #X connect 12 1 19 0; #X connect 13 0 4 0; #X connect 14 0 10 0; #X connect 14 1 3 0; #X connect 14 2 2 0; #X connect 14 3 1 0; #X connect 14 4 0 0; #X connect 16 0 17 0; #X connect 17 1 8 0; #X connect 17 2 18 0; #X connect 17 2 7 0; #X connect 17 3 15 3; #X connect 17 4 15 4; #X connect 18 0 15 1; #X connect 20 0 5 0; #X connect 21 0 4 0; #X restore 351 431 pd save-list; #X msg 9 114 \; pd dsp 1 \; window-size 2048 \; sample-rate 44100 \; f-threshold 40 \; incr 10 \; clear-all bang; #X obj 737 245 metro 150; #X floatatom 315 309 0 0 0 0 - - -; #X floatatom 377 309 0 0 0 0 - - -; #X msg 139 349 \; start-resynth bang; #X msg 315 350 \; step-resynth bang; #X obj 315 329 metro 100; #X msg 478 350 \; osc-stop bang; #X text 790 113 resynth; #X text 642 112 analyzed grains; #X text 554 112 original; #X text 653 151 ... and here third to analyze; #N canvas 0 0 276 216 test 0; #X floatatom 56 120 0 0 0 0 - - -; #X obj 56 141 s loud; #X msg 49 84 \; clear-all bang; #X msg 51 52 \; snapshot bang; #X connect 0 0 1 0; #X restore 569 538 pd test; #X text 317 140 read a sample; #X msg 214 163 \; read-sample ../sound/bell.aiff 44100; #N canvas 190 43 405 461 test-signal 0; #X obj 174 293 tabread4~ sample; #X obj 174 268 line~; #X obj 123 146 f; #X obj 330 46 r insamprate; #X obj 177 350 *~; #X obj 213 351 dbtorms; #X obj 213 328 inlet; #X obj 175 415 outlet~; #X obj 190 33 r insamplength; #X msg 174 247 0 \, \$1 \$2; #X obj 174 221 pack 0 0; #X obj 272 190 /; #X obj 389 99 * 0.001; #X obj 175 388 hip~ 5; #X obj 43 5 loadbang; #X text 315 13 sample playback; #X msg 43 25 1; #X obj 43 69 metro 1000; #X floatatom 43 48 0 0 0 0 - - -; #X obj 331 75 t b b f; #X obj 209 84 t b f; #X connect 0 0 4 0; #X connect 1 0 0 0; #X connect 2 0 10 0; #X connect 3 0 19 0; #X connect 4 0 13 0; #X connect 5 0 4 1; #X connect 6 0 5 0; #X connect 8 0 20 0; #X connect 9 0 1 0; #X connect 10 0 9 0; #X connect 11 0 10 1; #X connect 11 0 17 1; #X connect 12 0 11 1; #X connect 13 0 7 0; #X connect 14 0 16 0; #X connect 16 0 18 0; #X connect 17 0 2 0; #X connect 18 0 17 0; #X connect 19 0 16 0; #X connect 19 1 11 0; #X connect 19 2 12 0; #X connect 20 0 16 0; #X connect 20 1 11 0; #X connect 20 1 2 1; #X restore 125 436 pd test-signal; #N canvas 132 255 634 331 insample 0; #N canvas 0 0 450 300 graph1 0; #X array sample 155948 float 0; #X coords 0 1 155947 -1 400 150 1; #X restore 259 18 graph; #X obj 25 70 r read-sample; #X obj 25 95 unpack s f; #X obj 69 121 s insamprate; #X obj 25 171 soundfiler; #X msg 25 147 read -resize \$1 sample; #X obj 25 201 s insamplength; #X msg 464 197 \; sample resize 220500 \; insamplength 220500; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 2 1 3 0; #X connect 4 0 6 0; #X connect 5 0 4 0; #X restore 569 559 pd insample; #X obj 744 553 tabwrite~ sample; #X text 152 0 SINUSOID TRACKING; #X text 129 259 to resynthesize \, "start" once and "step" ad lib. To stop \, stop stepping and hit osc-stop. Note resynth ampliture control above.; #X text 4 17 This patch tries to reconstruct sinusoidal "tracks" from a sampled sound using pique~ and the data structure facilities. It turns out to be quite hard \, not least because pique~ 0.1 puts out all sorts of spurious peaks.; #X msg 213 200 \; read-sample ../sound/voice.wav 44100; #X obj 847 194 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X connect 0 0 2 0; #X connect 1 0 0 0; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 5 0 3 0; #X connect 6 0 28 0; #X connect 7 0 60 1; #X connect 8 0 41 1; #X connect 9 0 60 0; #X connect 10 0 44 1; #X connect 11 0 57 0; #X connect 12 0 11 0; #X connect 19 0 76 0; #X connect 20 0 21 0; #X connect 21 0 27 0; #X connect 22 0 20 0; #X connect 23 0 31 0; #X connect 25 0 23 0; #X connect 26 0 27 1; #X connect 27 0 28 0; #X connect 28 0 29 0; #X connect 28 0 29 1; #X connect 30 0 76 0; #X connect 32 0 24 0; #X connect 37 0 39 0; #X connect 40 0 74 0; #X connect 41 0 44 0; #X connect 41 0 45 0; #X connect 41 0 50 0; #X connect 42 0 43 0; #X connect 43 0 37 0; #X connect 44 0 41 1; #X connect 45 0 48 0; #X connect 45 1 46 0; #X connect 46 0 9 0; #X connect 47 0 9 0; #X connect 49 0 51 0; #X connect 51 0 47 0; #X connect 51 1 8 0; #X connect 52 0 10 0; #X connect 53 0 22 0; #X connect 54 0 5 0; #X connect 55 0 6 1; #X connect 60 0 41 0; #X connect 61 0 65 0; #X connect 62 0 65 1; #X connect 65 0 64 0; #X connect 74 0 28 0; #X connect 81 0 41 0;