#N canvas 55 58 562 269 10;
#X obj 30 108 inlet;
#X obj 129 107 inlet;
#X text 131 89 modulation message;
#X text 28 90 event message;
#X obj 30 218 outlet;
#X obj 103 218 outlet;
#X text 31 235 pass on;
#X text 99 235 release;
#X obj 168 218 outlet;
#X text 165 236 voices active;
#N canvas 0 22 450 300 \$0-UPP 0;
#X obj 51 40 inlet;
#X obj 182 39 inlet;
#X obj 51 217 outlet;
#X obj 117 217 outlet;
#X obj 182 217 outlet;
#X restore 30 162 pd \$0-UPP;
#X obj 301 106 loadbang;
#X obj 301 130 f \$1;
#X text 334 130 number of voices;
#N canvas 78 120 446 229 gen 0;
#X obj 31 27 inlet;
#X msg 31 118 connect 0 0 5 0 \, connect 1 0 5 1 \, connect 5 0 2 0
\, connect 5 1 3 0 \, connect 5 2 4 0 \, loadbang;
#X obj 31 53 t b a;
#X obj 31 189 upp.fwd;
#X obj 31 162 list prepend pd-\$0-UPP;
#X obj 58 84 list prepend obj 10 100;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 2 1 5 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X restore 301 226 pd gen;
#X obj 301 153 moses 50;
#X msg 301 177 symbol upp.xc;
#X msg 390 177 symbol upp.xf;
#X obj 301 203 list append \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9;
#X text 359 153 <50: upp.xc \, >=50: upp.xf;
#X text 93 163 upp.xc / upp.xf;
#X obj 15 11 cnv 15 530 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 36 23 Main UPP abstraction;
#X text 436 22 grrrr.org 2016;
#X text 36 41 Given voice count \$1 is used to select between upp.xc
or upp.xf;
#X connect 0 0 10 0;
#X connect 1 0 10 1;
#X connect 10 0 4 0;
#X connect 10 1 5 0;
#X connect 10 2 8 0;
#X connect 11 0 12 0;
#X connect 12 0 15 0;
#X connect 15 0 16 0;
#X connect 15 1 17 0;
#X connect 16 0 18 0;
#X connect 17 0 18 0;
#X connect 18 0 14 0;
