#N canvas 222 113 821 785 10;
#X obj 405 551 r amp;
#X obj 466 531 element trace-template bazoo;
#X obj 365 578 set point-template y amp;
#X obj 382 454 r pitch;
#X obj 366 496 f;
#X obj 366 520 * -4;
#X obj 442 417 pointer;
#X obj 443 608 f 1;
#X obj 326 252 f;
#X obj 326 191 f;
#X obj 326 215 sel 0;
#X floatatom 201 220 0;
#X obj 24 72 r add-to-trace;
#X obj 326 143 r start-new-trace;
#X obj 341 305 r nframe;
#X floatatom 203 100 0;
#X obj 22 419 r pitch;
#X obj 75 245 r frequency;
#X obj 68 561 r amp;
#X text 141 200 current pitch;
#X obj 24 262 mtof;
#X obj 24 190 sel 1;
#X obj 24 214 t b b;
#X obj 24 286 -;
#X obj 24 310 abs;
#X obj 24 334 <;
#X obj 79 314 r f-threshold;
#X obj 24 358 sel 1;
#X obj 21 461 f;
#X obj 59 268 f;
#X obj 24 238 f;
#X text 34 374 if this happens \, add to the trace;
#X obj 533 114 r done-adding-traces;
#X obj 533 165 sel 0;
#X obj 583 89 - 1;
#X obj 14 45 f 2;
#X obj 13 385 t b b;
#X obj 203 34 r clear-traces;
#X obj 203 58 f 0;
#X obj 24 166 f;
#X obj 533 141 f;
#X obj 93 403 pointer;
#X text 160 397 current trace;
#X obj 115 454 getsize trace-template bazoo;
#X obj 155 504 + 1;
#X obj 155 528 setsize trace-template bazoo;
#X obj 126 557 element trace-template bazoo;
#X obj 115 478 t f f;
#X obj 21 586 set point-template y amp;
#X obj 93 427 t b p p;
#X obj 21 485 * -4;
#X obj 13 633 s added-to-trace;
#X obj 13 609 f 1;
#X obj 40 97 r added-to-trace;
#X obj 24 118 f;
#X obj 24 142 sel 0;
#X obj 342 170 r started-new-trace;
#X obj 326 276 sel 0;
#X obj 443 633 s started-new-trace;
#X text 535 482 last trace in list;
#X text 514 411 reentrancy protection \; should go away;
#X obj 541 464 s last-in-list;
#X obj 615 350 r last-in-list;
#X obj 443 474 t b b p;
#X obj 465 507 f 0;
#X obj 326 357 * 5;
#X obj 326 332 f;
#X obj 292 300 f 2;
#X text 238 52 "state" -- 0 if free \, 1 if making a trace \, and 2 if we've added a point for the current frame;
#X obj 546 307 f \$1;
#X text 585 306 voice number;
#X obj 442 391 append trace-template x voiceno;
#X obj 516 278 t f b;
#X connect 0 0 2 1;
#X connect 1 0 2 2;
#X connect 3 0 4 1;
#X connect 4 0 5 0;
#X connect 4 0 11 0;
#X connect 5 0 2 0;
#X connect 6 0 63 0;
#X connect 6 0 41 1;
#X connect 7 0 58 0;
#X connect 8 0 57 0;
#X connect 9 0 10 0;
#X connect 10 0 8 0;
#X connect 11 0 30 1;
#X connect 12 0 54 0;
#X connect 13 0 9 0;
#X connect 14 0 66 1;
#X connect 15 0 39 1;
#X connect 15 0 40 1;
#X connect 15 0 8 1;
#X connect 16 0 28 1;
#X connect 17 0 29 1;
#X connect 18 0 48 1;
#X connect 20 0 23 0;
#X connect 21 0 22 0;
#X connect 22 0 30 0;
#X connect 22 1 29 0;
#X connect 23 0 24 0;
#X connect 24 0 25 0;
#X connect 25 0 27 0;
#X connect 26 0 25 1;
#X connect 27 0 36 0;
#X connect 28 0 50 0;
#X connect 28 0 11 0;
#X connect 29 0 23 1;
#X connect 30 0 20 0;
#X connect 32 0 40 0;
#X connect 33 1 34 0;
#X connect 34 0 15 0;
#X connect 35 0 15 0;
#X connect 36 0 35 0;
#X connect 36 0 52 0;
#X connect 36 1 41 0;
#X connect 37 0 38 0;
#X connect 38 0 15 0;
#X connect 39 0 21 0;
#X connect 40 0 33 0;
#X connect 41 0 49 0;
#X connect 43 0 47 0;
#X connect 44 0 45 0;
#X connect 46 0 48 2;
#X connect 47 0 46 0;
#X connect 47 1 44 0;
#X connect 49 0 28 0;
#X connect 49 1 43 0;
#X connect 49 2 45 1;
#X connect 49 2 46 1;
#X connect 50 0 48 0;
#X connect 52 0 51 0;
#X connect 53 0 54 1;
#X connect 54 0 55 0;
#X connect 55 0 39 0;
#X connect 56 0 9 1;
#X connect 57 0 66 0;
#X connect 57 0 67 0;
#X connect 62 0 71 2;
#X connect 63 0 4 0;
#X connect 63 0 7 0;
#X connect 63 1 64 0;
#X connect 63 2 1 1;
#X connect 63 2 61 0;
#X connect 64 0 1 0;
#X connect 65 0 72 0;
#X connect 66 0 65 0;
#X connect 67 0 15 0;
#X connect 69 0 71 1;
#X connect 71 0 6 0;
#X connect 72 0 71 0;
#X connect 72 1 69 0;