#N canvas 215 148 633 510 10;
#X declare -path .. -path .;
#X obj 37 21 cnv 15 550 40 empty empty Universal_Polyphonic_Player
10 10 0 14 -233017 -66577 0;
#X text 44 44 synchronous granular playing through audio buffer;
#X text 471 107 to find voice patch;
#X text 465 24 grrrr.org \, 2012-15;
#X obj 440 85 declare -path .. -path .;
#X obj 189 134 nbx 5 14 0.01 10 1 0 empty empty empty 0 -8 0 10 -204786
-1 -1 1.11573 256;
#X obj 192 116 hsl 128 15 0.01 10 1 1 empty empty speed -2 -8 0 10
-204786 -1 -1 8668 1;
#X obj 110 118 nbx 5 14 1 1000 1 1 empty empty grain_length 0 -8 0
10 -204786 -1 -1 100 256;
#X obj 110 138 / 2;
#X msg 68 189 0;
#N canvas 762 55 588 464 play 0;
#X obj 168 388 outlet;
#X text 257 150 attack+sustain;
#X obj 63 60 inlet;
#X obj 496 62 inlet;
#X text 62 43 play 0/1;
#X text 494 44 speed;
#X text 165 409 trigger new grain;
#X obj 257 61 inlet;
#X obj 336 61 inlet;
#X obj 424 62 inlet;
#X text 257 40 attack;
#X text 337 41 sustain;
#X text 420 42 release;
#X obj 337 86 t b a;
#X obj 169 60 inlet;
#X obj 288 129 + 0;
#X text 166 41 set pos;
#X obj 385 200 * 1;
#X obj 495 102 t b a;
#X text 383 217 playpos increment;
#X obj 140 277 +;
#X obj 63 300 t a a;
#X obj 168 358 pack 0 0 0 0;
#X obj 63 216 upp.onward;
#X obj 63 261 f;
#X connect 2 0 23 0;
#X connect 3 0 18 0;
#X connect 7 0 15 0;
#X connect 7 0 22 1;
#X connect 8 0 13 0;
#X connect 9 0 22 3;
#X connect 13 0 15 0;
#X connect 13 1 15 1;
#X connect 13 1 22 2;
#X connect 14 0 24 1;
#X connect 15 0 17 0;
#X connect 15 0 23 1;
#X connect 17 0 20 1;
#X connect 18 0 17 0;
#X connect 18 1 17 1;
#X connect 20 0 24 1;
#X connect 21 0 22 0;
#X connect 21 1 20 0;
#X connect 22 0 0 0;
#X connect 23 0 24 0;
#X connect 24 0 21 0;
#X restore 45 211 pd play ___________;
#X text 419 275 half window for one grain;
#X obj 106 357 moses;
#X obj 154 357 spigot;
#X obj 349 116 tgl 15 0 empty empty loop 17 7 0 10 -204786 -1 -1 0
1;
#X obj 446 435 out-mono;
#X obj 341 187 sample \$0-sample;
#X obj 45 449 bng 15 250 50 0 empty empty overflow 17 7 0 10 -262144
-1 -1;
#X floatatom 330 452 5 0 0 0 voices_active - -, f 5;
#X obj 45 398 list prepend \$0-sample;
#X obj 46 118 tgl 25 0 empty empty play 0 -8 0 10 -258113 -1 -1 0 1
;
#X obj 446 413 catch~ \$0-bus;
#X obj 45 299 nbx 8 14 0 1e+37 0 0 empty empty pos_in_buffer_(samps)
0 -8 0 10 -262144 -1 -1 179594 256;
#X text 192 399 tag;
#X obj 45 240 t a a;
#X obj 454 299 wnd-lin \$0-wnd 1024;
#X obj 103 187 upp.ms2s;
#X obj 45 423 upp.xc 10 spat-mono \$0-bus syn-grain \$0-wnd 1024;
#X obj 341 250 upp.ms2s;
#X connect 5 0 10 5;
#X connect 6 0 5 0;
#X connect 7 0 8 0;
#X connect 8 0 26 0;
#X connect 9 0 10 1;
#X connect 10 0 24 0;
#X connect 12 1 13 0;
#X connect 13 0 9 0;
#X connect 14 0 13 1;
#X connect 16 0 28 0;
#X connect 19 0 27 0;
#X connect 20 0 10 0;
#X connect 21 0 15 0;
#X connect 22 0 12 0;
#X connect 24 0 22 0;
#X connect 24 1 19 0;
#X connect 26 0 10 4;
#X connect 26 0 10 2;
#X connect 27 0 17 0;
#X connect 27 2 18 0;
#X connect 28 0 12 1;
