#N struct template-toplevel float x float y float z float q array bazoo
template-element;
#N struct template-element float x float y float w;
#N canvas 469 40 552 712 12;
#X declare -stdpath ./;
#N canvas 565 104 469 174 template-toplevel 0;
#X obj 30 97 plot pitch voiceno 3 10 0;
#X obj 30 124 plot amp 0 3 10 0;
#X obj 29 32 struct template-toplevel float x float y float voiceno
array pitch template-pitch array amp template-amp;
#X obj 29 72 filledpolygon 9 9 0 0 -2 0 2 5 2 5 -2;
#X restore 181 423 pd template-toplevel;
#N canvas 164 144 383 111 template-amp 0;
#X obj 15 41 struct template-amp float x float y float w;
#X restore 181 447 pd template-amp;
#N canvas 42 221 414 98 template-pitch 0;
#X obj 21 29 struct template-pitch float x float y float w;
#X restore 181 471 pd template-pitch;
#N canvas 347 73 539 692 synthesis 0;
#X msg 126 275 next;
#X msg 109 217 traverse pd-data \, next;
#X obj 109 305 pointer template-toplevel;
#X obj 109 328 t p p;
#X obj 109 351 get template-toplevel voiceno;
#X obj 109 24 inlet;
#X obj 109 53 route start stop;
#X msg 163 79 \; reset bang;
#X obj 299 55 r reset;
#X obj 155 146 s reset;
#X obj 126 249 r next-evt;
#X obj 109 409 route 0 9 90 900 99 909 990;
#X obj 56 447 voice;
#X obj 56 621 outlet~;
#X msg 299 83 \; reset-stop stop \; time-of-last-evt 0 \; pd-data sort
;
#X obj 378 368 s delay-multiplier;
#X obj 357 285 t b f, f 6;
#X msg 357 312 1000;
#X obj 378 337 /;
#X obj 357 259 r tempo;
#X obj 109 121 t b b b;
#X msg 132 171 \; pd-data sort;
#X obj 56 470 voice;
#X obj 56 493 voice;
#X obj 56 516 voice;
#X obj 56 540 voice;
#X obj 56 563 voice;
#X obj 56 586 voice;
#X obj 109 380 pack f p;
#X connect 0 0 2 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 1 28 1;
#X connect 4 0 28 0;
#X connect 5 0 6 0;
#X connect 6 0 20 0;
#X connect 6 1 7 0;
#X connect 8 0 14 0;
#X connect 10 0 0 0;
#X connect 11 0 12 1;
#X connect 11 1 22 1;
#X connect 11 2 23 1;
#X connect 11 3 24 1;
#X connect 11 4 25 1;
#X connect 11 5 26 1;
#X connect 11 6 27 1;
#X connect 12 0 22 0;
#X connect 16 0 17 0;
#X connect 16 1 18 1;
#X connect 17 0 18 0;
#X connect 18 0 15 0;
#X connect 19 0 16 0;
#X connect 20 0 1 0;
#X connect 20 1 21 0;
#X connect 20 2 9 0;
#X connect 22 0 23 0;
#X connect 23 0 24 0;
#X connect 24 0 25 0;
#X connect 25 0 26 0;
#X connect 26 0 27 0;
#X connect 27 0 13 0;
#X connect 28 0 11 0;
#X restore 156 577 pd synthesis;
#X floatatom 376 523 4 0 0 0 - - - 0;
#X msg 105 540 start;
#X msg 156 540 stop;
#N canvas 1041 67 445 511 data 1;
#X scalar template-toplevel 22 86 0 0 \; 0 0 0 \; \;;
#X scalar template-toplevel 33 80 0 0 \; 0 0 0 \; \;;
#X scalar template-toplevel 57 43.25 0 0 \; 0 0 0 \; \;;
#X scalar template-toplevel 83 80 0 0 \; 0 0 0 \; \;;
#X scalar template-toplevel 161 105 0 0 \; 0 0 0 \; \;;
#X scalar template-toplevel 338 63.5 0 0 \; 0 0 0 \; \;;
#X coords 0 127.75 1 127.5 0 0 0;
#X restore 181 399 pd data;
#X obj 376 550 s tempo;
#X text 49 54 This patch shows an example of how to use data collections
as musical sequences (with apologies to Yuasa and Stockhausen). Here
the black traces show dynamics and the colored ones show pitch. The
fatness of the pitch traces give bandwidth. Any of the three can change
over the life of the event., f 61;
#X text 48 136 To hear the result \, turn the volume up to 70 or so
(higher if it's not loud enough the first time) and hit "start". You
can set the tempo lower if that helps you follow the "score" the first
couple of times., f 61;
#X obj 156 615 output~;
#X text 48 297 This confuses Tk's scroll bars \, by the way \, and
when you resize the window the image still sticks to the top and not
the bottom of the window as it should. When you resize a canvas with
y having positive units (growing upward) \, just hit 'save' and Pd
will check the scrolling and correct if necessary., f 61;
#X text 48 202 Note the screen units in the "data" window (open it
and get "properties" to see them.) Normally \, there are -1 y units
per pixel - that is \, adding 1 to y moves down one pixel. This is
the "natural" y unit for most drawing programs. In the data window
\, each pixel is 0.25 units \, meaning that adding one to a 'y' value
moves it up four pixels., f 61;
#X text 409 523 <= tempo;
#X msg 376 497 60;
#X obj 376 473 loadbang;
#X obj 331 16 declare -stdpath ./;
#X text 323 636 Updated for Pd version 0.52;
#X connect 3 0 11 0;
#X connect 3 0 11 1;
#X connect 4 0 8 0;
#X connect 5 0 3 0;
#X connect 6 0 3 0;
#X connect 15 0 4 0;
#X connect 16 0 15 0;
