#N canvas 139 522 587 257 10;
#X obj 69 38 inlet;
#X obj 69 195 outlet;
#X obj 142 195 outlet;
#X text 70 212 pass on;
#X text 138 212 release;
#X obj 168 37 inlet;
#X text 170 19 modulation message;
#X obj 207 195 outlet;
#X text 204 213 voices active;
#X text 67 20 event message;
#X obj 352 125 list append \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9;
#X obj 352 81 pack 0 \$0;
#N canvas 15 27 871 725 comm 0;
#X obj 79 48 inlet;
#X text 296 446 release;
#X obj 300 659 outlet;
#X text 296 676 release;
#X obj 364 56 inlet;
#X obj 153 571 t a;
#X msg 153 533 -1;
#X obj 118 608 nbx 5 14 -1e+37 1e+37 0 0 empty empty active 0 -8 0
10 -262144 -1 -1 0 256;
#X text 360 38 modulation message;
#X msg 118 534 1;
#X obj 118 570 +;
#X obj 491 660 outlet;
#X text 488 681 voices active;
#X text 77 30 event message;
#X obj 539 339 table \$0-free \$1;
#X obj 539 359 table \$0-assigned \$1;
#X obj 628 47 loadbang;
#X obj 627 212 tabwrite \$0-free;
#X obj 628 123 until;
#X obj 629 151 f;
#X obj 656 152 + 1;
#X obj 628 98 f \$1;
#X obj 565 261 v \$0-freecnt;
#X obj 654 261 tabwrite \$0-assigned;
#X obj 628 72 t b b;
#X msg 675 122 0;
#X obj 606 47 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X msg 666 237 -1;
#X obj 106 139 t a a;
#X obj 188 290 list prepend UPP-\$0;
#X obj 79 201 upp.dilemma;
#X obj 79 654 outlet;
#X text 75 671 overflow;
#X obj 326 289 list prepend start;
#X obj 391 313 list prepend mod;
#X obj 263 355 list append;
#N canvas 0 22 243 358 itervoices 0;
#X obj 62 37 inlet;
#X obj 62 297 outlet;
#X obj 62 98 v \$0-freecnt;
#X obj 62 201 until;
#X obj 62 263 tabread \$0-assigned;
#X msg 131 199 0;
#X obj 62 234 f;
#X obj 89 234 + 1;
#X obj 62 126 - \$1;
#X obj 62 148 * -1;
#X obj 62 73 t b b;
#X connect 0 0 10 0;
#X connect 2 0 8 0;
#X connect 3 0 6 0;
#X connect 4 0 1 0;
#X connect 5 0 6 1;
#X connect 6 0 4 0;
#X connect 6 0 7 0;
#X connect 7 0 6 1;
#X connect 8 0 9 0;
#X connect 9 0 3 0;
#X connect 10 0 2 0;
#X connect 10 1 5 0;
#X restore 364 196 pd itervoices;
#X obj 300 462 r UPP-\$0;
#X obj 195 546 loadbang;
#X msg 193 569 0;
#X msg 188 314 symbol \$1-\$2;
#X obj 188 233 f;
#X obj 106 168 > 0;
#X text 361 216 active voices;
#X obj 630 175 t a b a;
#X obj 118 233 t b a;
#X obj 539 380 table \$0-ids \$1;
#X obj 685 284 tabwrite \$0-ids;
#X text 646 336 stack of free voices;
#X text 666 359 stack of assigned voices;
#X text 637 379 voice positions on assigned stack;
#N canvas 327 105 791 512 allocvoice 0;
#X obj 35 30 inlet;
#X obj 34 449 outlet;
#X obj 62 81 v \$0-freecnt;
#X obj 410 312 tabread \$0-free;
#X text 407 328 voice #;
#X obj 260 448 v \$0-freecnt;
#X obj 130 451 tabwrite \$0-free;
#X msg 130 428 -1;
#X obj 34 426 f;
#X obj 584 452 tabwrite \$0-assigned;
#X text 579 432 val;
#X text 688 434 pos;
#X obj 702 331 - \$1;
#X obj 702 357 * -1;
#X obj 35 59 t b b;
#X obj 62 132 moses 1;
#X obj 232 256 - 1;
#X obj 212 213 t b a a;
#X obj 411 451 tabwrite \$0-ids;
#X obj 410 421 f;
#X obj 410 389 t b a;
#X connect 0 0 14 0;
#X connect 2 0 15 0;
#X connect 3 0 9 0;
#X connect 3 0 8 1;
#X connect 3 0 20 0;
#X connect 7 0 6 0;
#X connect 8 0 1 0;
#X connect 12 0 13 0;
#X connect 13 0 9 1;
#X connect 13 0 19 1;
#X connect 14 0 8 0;
#X connect 14 1 2 0;
#X connect 15 0 8 1;
#X connect 15 1 17 0;
#X connect 16 0 6 1;
#X connect 16 0 3 0;
#X connect 16 0 5 0;
#X connect 17 0 7 0;
#X connect 17 1 16 0;
#X connect 17 2 12 0;
#X connect 19 0 18 0;
#X connect 20 0 19 0;
#X connect 20 1 18 1;
#X restore 106 115 pd allocvoice;
#N canvas 85 115 697 522 freevoice 0;
#X obj 269 28 inlet;
#X obj 269 55 list split 1;
#X obj 460 159 v \$0-freecnt;
#X obj 507 217 v \$0-freecnt;
#X obj 367 472 tabwrite \$0-free;
#X obj 489 188 + 1;
#X text 249 76 voice#;
#X text 82 289 ass index;
#X obj 64 472 tabwrite \$0-assigned;
#X obj 489 246 - \$1;
#X obj 489 267 * -1;
#X obj 489 293 tabread \$0-assigned;
#X text 495 309 get last assigned voice;
#X obj 133 414 f;
#X obj 88 413 f;
#X msg 55 413 -1;
#X text 62 432 clear;
#X obj 103 261 tabread \$0-ids;
#X obj 245 473 tabwrite \$0-ids;
#X msg 186 418 -1;
#X obj 269 99 t a a b;
#X obj 308 417 f;
#X obj 217 417 f;
#X obj 103 323 t b b b a b b a b;
#X connect 0 0 1 0;
#X connect 1 0 20 0;
#X connect 2 0 5 0;
#X connect 2 0 4 1;
#X connect 5 0 9 0;
#X connect 5 0 3 0;
#X connect 9 0 10 0;
#X connect 10 0 14 1;
#X connect 10 0 11 0;
#X connect 11 0 13 1;
#X connect 11 0 21 1;
#X connect 13 0 8 0;
#X connect 14 0 8 1;
#X connect 15 0 8 0;
#X connect 17 0 23 0;
#X connect 19 0 18 0;
#X connect 20 0 17 0;
#X connect 20 1 4 0;
#X connect 20 1 22 1;
#X connect 20 2 2 0;
#X connect 21 0 18 1;
#X connect 22 0 18 1;
#X connect 23 0 15 0;
#X connect 23 1 14 0;
#X connect 23 2 13 0;
#X connect 23 3 8 1;
#X connect 23 4 19 0;
#X connect 23 5 22 0;
#X connect 23 6 18 0;
#X connect 23 7 21 0;
#X restore 339 518 pd freevoice;
#X obj 300 489 t a b a;
#X obj 364 141 t a a;
#X obj 79 89 t a b;
#X obj 263 379 upp.fwd;
#X connect 0 0 55 0;
#X connect 4 0 54 0;
#X connect 5 0 10 1;
#X connect 6 0 10 0;
#X connect 7 0 11 0;
#X connect 9 0 10 0;
#X connect 10 0 5 0;
#X connect 10 0 7 0;
#X connect 16 0 24 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 19 0 44 0;
#X connect 20 0 19 1;
#X connect 21 0 18 0;
#X connect 21 0 22 0;
#X connect 24 0 21 0;
#X connect 24 1 25 0;
#X connect 25 0 19 1;
#X connect 26 0 24 0;
#X connect 27 0 23 0;
#X connect 27 0 47 0;
#X connect 28 0 42 0;
#X connect 28 1 41 1;
#X connect 29 0 40 0;
#X connect 30 0 31 0;
#X connect 30 1 45 0;
#X connect 33 0 35 1;
#X connect 34 0 35 1;
#X connect 35 0 56 0;
#X connect 36 0 29 0;
#X connect 37 0 53 0;
#X connect 38 0 39 0;
#X connect 39 0 5 0;
#X connect 39 0 7 0;
#X connect 40 0 35 0;
#X connect 41 0 29 0;
#X connect 42 0 30 1;
#X connect 44 0 17 0;
#X connect 44 1 27 0;
#X connect 44 2 17 1;
#X connect 44 2 23 1;
#X connect 44 2 47 1;
#X connect 45 0 41 0;
#X connect 45 0 9 0;
#X connect 45 1 33 0;
#X connect 51 0 28 0;
#X connect 53 0 2 0;
#X connect 53 1 6 0;
#X connect 53 2 52 0;
#X connect 54 0 36 0;
#X connect 54 1 34 0;
#X connect 55 0 30 0;
#X connect 55 1 51 0;
#X restore 69 103 pd comm;
#X msg 352 103 upp.comm UPP-\$2 \$1;
#X text 475 23 grrrr.org 2012;
#X obj 247 105 upp.dynpatch \$1;
#X connect 0 0 12 0;
#X connect 5 0 12 1;
#X connect 10 0 15 0;
#X connect 11 0 13 0;
#X connect 12 0 1 0;
#X connect 12 1 2 0;
#X connect 12 2 7 0;
#X connect 13 0 10 0;
#X connect 15 0 11 0;
#X coords 0 0 1 1 100 50 0;
