aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2005-11-16 05:57:17 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2005-11-16 05:57:17 +0000
commit7648660873eb26cdaa16f100d5a0f13fd587d40f (patch)
tree9cee6a0eda100f268b48de864bb490d201ff6633
parent301cafdcc30455e8567c82e99ec6c778644047f5 (diff)
This commit was generated by cvs2svn to compensate for changes in r3936,
which included commits to RCS files with non-trunk default branches. svn path=/trunk/abstractions/nqpoly/; revision=3937
-rw-r--r--nqpoly4/minimal-test.pd4
-rw-r--r--nqpoly4/minimal.pd51
-rw-r--r--nqpoly4/nqpoly4.pd95
-rw-r--r--nqpoly4/nqpwrap4.pd32
-rw-r--r--nqpoly4/petal-test.pd41
-rw-r--r--nqpoly4/petal.pd61
-rw-r--r--nqpoly4/phasor.pd54
-rw-r--r--nqpoly4/tabar~.pd63
-rw-r--r--nqpoly4/tabgrain-test.pd109
-rw-r--r--nqpoly4/tabgrain.pd86
10 files changed, 596 insertions, 0 deletions
diff --git a/nqpoly4/minimal-test.pd b/nqpoly4/minimal-test.pd
new file mode 100644
index 0000000..0a0292b
--- /dev/null
+++ b/nqpoly4/minimal-test.pd
@@ -0,0 +1,4 @@
+#N canvas 350 285 450 300 10;
+#X msg 34 38 foo bar;
+#X obj 49 78 nqpoly4 5 minimal param_1 param_2;
+#X connect 0 0 1 0;
diff --git a/nqpoly4/minimal.pd b/nqpoly4/minimal.pd
new file mode 100644
index 0000000..d02bcb4
--- /dev/null
+++ b/nqpoly4/minimal.pd
@@ -0,0 +1,51 @@
+#N canvas 142 151 450 300 10;
+#X obj 13 27 inlet;
+#X obj 123 27 inlet;
+#X obj 13 317 outlet;
+#X obj 48 122 print voice;
+#X obj 30 148 print called_with;
+#X obj 48 98 f \$1;
+#X obj 123 51 t b b;
+#X text 12 297 "available" outlet;
+#X text 13 5 "trigger" inlet;
+#X text 123 5 "loadbang" inlet;
+#X obj 222 144 print created_with;
+#X obj 202 83 f \$1;
+#X obj 236 78 f \$2;
+#X obj 289 61 symbol \$3;
+#X obj 221 116 pack f f s s s s;
+#X obj 351 60 symbol \$4;
+#X obj 288 82 symbol \$5;
+#X obj 348 83 symbol \$6;
+#X obj 14 171 print waiting_1000ms;
+#X obj 14 195 delay 1000;
+#X obj 32 293 print finished;
+#X obj 14 220 t b b b;
+#X obj 50 269 print voice;
+#X obj 50 245 f \$1;
+#X obj 12 53 t b a b;
+#X connect 0 0 24 0;
+#X connect 1 0 6 0;
+#X connect 5 0 3 0;
+#X connect 6 0 11 0;
+#X connect 6 1 12 0;
+#X connect 6 1 13 0;
+#X connect 6 1 15 0;
+#X connect 6 1 16 0;
+#X connect 6 1 17 0;
+#X connect 11 0 14 0;
+#X connect 12 0 14 1;
+#X connect 13 0 14 2;
+#X connect 14 0 10 0;
+#X connect 15 0 14 3;
+#X connect 16 0 14 4;
+#X connect 17 0 14 5;
+#X connect 19 0 21 0;
+#X connect 21 0 2 0;
+#X connect 21 1 20 0;
+#X connect 21 2 23 0;
+#X connect 23 0 22 0;
+#X connect 24 0 18 0;
+#X connect 24 0 19 0;
+#X connect 24 1 4 0;
+#X connect 24 2 5 0;
diff --git a/nqpoly4/nqpoly4.pd b/nqpoly4/nqpoly4.pd
new file mode 100644
index 0000000..aaf1cc6
--- /dev/null
+++ b/nqpoly4/nqpoly4.pd
@@ -0,0 +1,95 @@
+#N canvas 30 116 975 454 10;
+#X obj 16 20 inlet;
+#X obj 114 321 outlet;
+#X obj 290 198 symbol \$0-poly;
+#X obj 93 13 namecanvas \$0-poly;
+#X obj 255 167 t b b;
+#X obj 289 248 t f f;
+#X obj 314 271 + 1;
+#X obj 256 143 until;
+#X obj 147 234 symbol \$0-poly;
+#X obj 172 293 pack s f;
+#X msg 169 336 \; \$1 connect \$2 0 1 0;
+#X obj 451 197 symbol \$2;
+#X obj 547 197 symbol \$3;
+#X obj 607 198 symbol \$4;
+#X obj 671 197 symbol \$5;
+#X obj 736 198 symbol \$6;
+#X obj 260 101 - 1;
+#X obj 255 123 moses 1;
+#X obj 214 20 loadbang;
+#X obj 255 77 \$1;
+#X obj 415 199 + 1;
+#X obj 286 227 f;
+#X obj 392 199 f 1;
+#X text 294 9 usage: nqpoly <number of objects> <abstraction name>
+<up to 4 creation args>;
+#X text 680 24 - don't edit a version of this patch that has been instantiated
+with any arguments (best to just open the nqpoly.pd file directly)
+;
+#X text 680 91 - recreate the "t b b b b" object and the nqpwrap object
+(in that order) by clicking in them and adding a space at the end.
+;
+#X text 297 38 don't save this patch unless you follow the instructions
+to the right.;
+#X text 673 4 editing:;
+#X text 684 137 - increment the indicated numbers if you add any objects
+;
+#X text 176 188 obj index of nqpwrap;
+#X text 212 209 increment;
+#X text 350 221 index of "t b b b b" (increment);
+#X text 336 390 the first argument to the last connect message must
+be the index of the "t b b b b" object (increment);
+#X text 679 70 - delete the connection coming from nqpwrap's outlet
+;
+#X text 313 88 your abstraction is ultimately called with the parameters:
+<index> <number of objects> <arg1> <arg2> <arg3> <arg4>;
+#X obj 294 295 pack f f s s f f s s s s;
+#X text 18 410 nqpoly (v4) - pix.test.at;
+#X obj 517 198 \$1;
+#X obj 188 209 42;
+#X obj 316 220 + 41;
+#X msg 302 327 \; \$3 obj 5 100 nqpwrap4 \$4 \$5 \$6 \$7 \$8 \$9 \$10
+\; \$3 connect \$1 0 \$2 0 \; \$3 connect 41 0 \$2 1;
+#X obj 216 48 t b b b b;
+#X obj 19 117 nqpwrap4 \$2 0 \$1 \$3 \$4 \$5 \$6;
+#X connect 0 0 42 0;
+#X connect 2 0 35 2;
+#X connect 4 0 21 0;
+#X connect 4 1 11 0;
+#X connect 4 1 12 0;
+#X connect 4 1 13 0;
+#X connect 4 1 14 0;
+#X connect 4 1 2 0;
+#X connect 4 1 15 0;
+#X connect 4 1 22 0;
+#X connect 4 1 37 0;
+#X connect 5 0 35 0;
+#X connect 5 1 6 0;
+#X connect 6 0 9 1;
+#X connect 6 0 35 1;
+#X connect 7 0 4 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 11 0 35 3;
+#X connect 12 0 35 6;
+#X connect 13 0 35 7;
+#X connect 14 0 35 8;
+#X connect 15 0 35 9;
+#X connect 16 0 17 0;
+#X connect 17 1 7 0;
+#X connect 18 0 41 0;
+#X connect 19 0 16 0;
+#X connect 20 0 22 1;
+#X connect 21 0 5 0;
+#X connect 22 0 20 0;
+#X connect 22 0 35 4;
+#X connect 22 0 39 0;
+#X connect 35 0 40 0;
+#X connect 37 0 35 5;
+#X connect 38 0 9 1;
+#X connect 39 0 21 1;
+#X connect 41 0 42 1;
+#X connect 41 1 8 0;
+#X connect 41 2 19 0;
+#X connect 41 3 38 0;
diff --git a/nqpoly4/nqpwrap4.pd b/nqpoly4/nqpwrap4.pd
new file mode 100644
index 0000000..c904ed2
--- /dev/null
+++ b/nqpoly4/nqpwrap4.pd
@@ -0,0 +1,32 @@
+#N canvas 71 272 450 300 10;
+#X obj 45 26 inlet;
+#X obj 49 123 spigot;
+#X obj 135 129 spigot;
+#X obj 42 204 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9;
+#X obj 181 253 outlet;
+#X obj 288 15 inlet;
+#X obj 99 63 0;
+#X obj 128 63 1;
+#X obj 201 58 1;
+#X obj 234 58 0;
+#X text 12 5 nqpwrap (v4) - pix.test.at;
+#X text 252 126 this object is used by nqpoly;
+#X obj 42 67 t a a;
+#X obj 47 157 t a b;
+#X connect 0 0 12 0;
+#X connect 1 0 13 0;
+#X connect 2 0 4 0;
+#X connect 3 0 8 0;
+#X connect 3 0 9 0;
+#X connect 5 0 8 0;
+#X connect 5 0 9 0;
+#X connect 5 0 3 1;
+#X connect 6 0 1 1;
+#X connect 7 0 2 1;
+#X connect 8 0 1 1;
+#X connect 9 0 2 1;
+#X connect 12 0 1 0;
+#X connect 12 1 2 0;
+#X connect 13 0 3 0;
+#X connect 13 1 6 0;
+#X connect 13 1 7 0;
diff --git a/nqpoly4/petal-test.pd b/nqpoly4/petal-test.pd
new file mode 100644
index 0000000..dffd3d8
--- /dev/null
+++ b/nqpoly4/petal-test.pd
@@ -0,0 +1,41 @@
+#N canvas 280 123 649 335 10;
+#X obj 17 64 gemwin;
+#X msg 24 34 create;
+#X obj 12 15 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 155 35 gemhead;
+#X obj 128 266 s petalnum;
+#X obj 156 68 s petalin;
+#X obj 200 267 s petalsize;
+#X obj 280 264 s petaltrans;
+#X obj 110 241 line;
+#X floatatom 141 244 5 0 0 0 - - -;
+#X msg 107 221 \$1 1000;
+#X msg 72 187 35;
+#X msg 101 189 21;
+#X msg 127 190 13;
+#X floatatom 204 167 5 0 0 0 - - -;
+#X floatatom 271 185 5 0 0 0 - - -;
+#X obj 162 106 nqpoly4 35 petal;
+#X msg 157 189 8;
+#X text 234 17 this is a silly gem example \, vaguely inspired by a
+question on the list about drawing flowers in gem. just a proof of
+concept.;
+#X text 277 103 make 35 petal objects waiting for commands;
+#X text 151 293 e send the commands out on global sends. all of the
+petals receive all of the commands \, and act accordingly.;
+#X text 325 183 radius of the flower;
+#X text 247 165 radius of the petals;
+#X text 47 167 number of petals;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 5 0;
+#X connect 8 0 4 0;
+#X connect 9 0 4 0;
+#X connect 10 0 8 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 13 0 10 0;
+#X connect 14 0 6 0;
+#X connect 15 0 7 0;
+#X connect 17 0 10 0;
diff --git a/nqpoly4/petal.pd b/nqpoly4/petal.pd
new file mode 100644
index 0000000..a1a2665
--- /dev/null
+++ b/nqpoly4/petal.pd
@@ -0,0 +1,61 @@
+#N canvas 165 185 720 421 10;
+#X obj 117 125 separator;
+#X obj 147 299 circle;
+#X obj 476 187 * 360;
+#X obj 119 206 rotateXYZ 0 0 0;
+#X obj 521 95 t b f;
+#X obj 120 178 color 1 0 0;
+#X obj 112 87 r petalin;
+#X obj 31 258 inlet;
+#X obj 32 292 t b;
+#X obj 31 320 outlet;
+#X obj 434 47 f \$1;
+#X obj 620 17 inlet;
+#X obj 571 73 r petalnum;
+#X obj 568 198 r petaltrans;
+#X obj 124 230 translateXYZ 1 0 0;
+#X obj 478 229 * 1;
+#X obj 570 101 r petalsize;
+#X msg 431 16 bang;
+#X obj 565 127 t b f;
+#X obj 521 123 / 1;
+#X obj 423 152 <= 0;
+#X text 81 323 this object just ignores triggers;
+#X text 107 57 we connect to the global gemhead with a named receive
+;
+#X text 648 71 we get a few global values over receives too;
+#X text 472 46 \$1 is this objects index \, we use it to work out if
+we need to render;
+#X text 28 372 pix.test.at;
+#X text 659 15 we get our fake loadbang on the right inlet still;
+#X text 13 8 draw a petal (really just a circle)..;
+#X text 459 153 if we aren't needed \, scale ourselves to 0 is there
+a better way? email me.;
+#X obj 149 269 scaleXYZ 1;
+#X connect 0 0 5 0;
+#X connect 2 0 3 3;
+#X connect 3 0 14 0;
+#X connect 4 0 19 0;
+#X connect 4 0 20 0;
+#X connect 4 1 19 1;
+#X connect 4 1 20 1;
+#X connect 5 0 3 0;
+#X connect 6 0 0 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 10 0 20 0;
+#X connect 10 0 19 0;
+#X connect 11 0 10 0;
+#X connect 12 0 4 0;
+#X connect 13 0 14 1;
+#X connect 14 0 29 0;
+#X connect 15 0 29 1;
+#X connect 15 0 29 2;
+#X connect 15 0 29 3;
+#X connect 16 0 18 0;
+#X connect 17 0 10 0;
+#X connect 18 0 15 0;
+#X connect 18 1 15 1;
+#X connect 19 0 2 0;
+#X connect 20 0 15 0;
+#X connect 29 0 1 0;
diff --git a/nqpoly4/phasor.pd b/nqpoly4/phasor.pd
new file mode 100644
index 0000000..846b842
--- /dev/null
+++ b/nqpoly4/phasor.pd
@@ -0,0 +1,54 @@
+#N canvas 368 84 480 575 10;
+#X obj 101 89 t b b;
+#X obj 101 122 timer;
+#X obj 149 159 / 1000;
+#X obj 148 188 * \$1;
+#X obj 151 220 +;
+#X text 206 243 phase;
+#X text 181 188 frequency;
+#X obj 164 378 -;
+#X obj 183 350 int;
+#X obj 229 290 < 0;
+#X obj 156 246 t f f f;
+#X obj 207 425 spigot;
+#X obj 253 427 spigot;
+#X obj 270 361 == 0;
+#X obj 203 456 t b f;
+#X obj 207 502 -;
+#X obj 202 478 f 1;
+#X obj 217 542 t f;
+#X obj 60 24 inlet;
+#X obj 94 60 route bang;
+#X obj 228 31 inlet;
+#X text 105 15 bang or frequency;
+#X text 270 17 phase set;
+#X text 236 68 control phasor \, temporally dependent but only outputs
+when it recieves a bang.;
+#X obj 215 577 outlet;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 10 0;
+#X connect 7 0 11 0;
+#X connect 7 0 12 0;
+#X connect 8 0 7 1;
+#X connect 9 0 13 0;
+#X connect 9 0 11 1;
+#X connect 10 0 7 0;
+#X connect 10 1 8 0;
+#X connect 10 2 9 0;
+#X connect 11 0 14 0;
+#X connect 12 0 17 0;
+#X connect 13 0 12 1;
+#X connect 14 0 16 0;
+#X connect 14 1 15 1;
+#X connect 15 0 17 0;
+#X connect 16 0 15 0;
+#X connect 17 0 4 1;
+#X connect 17 0 24 0;
+#X connect 18 0 19 0;
+#X connect 19 0 0 0;
+#X connect 19 1 3 1;
+#X connect 20 0 10 0;
diff --git a/nqpoly4/tabar~.pd b/nqpoly4/tabar~.pd
new file mode 100644
index 0000000..2d3a693
--- /dev/null
+++ b/nqpoly4/tabar~.pd
@@ -0,0 +1,63 @@
+#N canvas 222 268 460 352 10;
+#X obj 22 121 inlet~;
+#X text 68 119 indexing input \, expects a line from 0-1;
+#X obj 74 282 sig~ 1;
+#X obj 88 311 -~;
+#X obj 134 139 inlet;
+#X obj 264 160 inlet;
+#X text 174 139 attack time factor (0 \, 1];
+#X text 303 160 decay time factor (0 \, 1];
+#X obj 157 319 /;
+#X msg 147 293 1;
+#X obj 139 241 t b f;
+#X obj 176 267 moses 1e-29;
+#X msg 176 291 1e-29;
+#X obj 283 323 /;
+#X msg 273 297 1;
+#X obj 265 245 t b f;
+#X obj 302 271 moses 1e-29;
+#X msg 302 295 1e-29;
+#X obj 36 408 *~;
+#X obj 35 430 outlet~;
+#X obj 27 368 clip~ 0 1;
+#X obj 86 370 clip~ 0 1;
+#X obj 23 342 *~ 0;
+#X obj 94 341 *~ 0;
+#X obj 153 215 f \$1;
+#X obj 275 219 f \$2;
+#X obj 205 186 loadbang;
+#X text 19 8 silly name. acts like a TABle \, that contains an Attack
+Release envelope. it expects a line~ that starts and 0 and ends at
+1 \, with the duration of the envelope. the attack and decay factors
+are the fraction (between 0 \, 1) of the note length which should be
+attack/decay. if attack and decay factor sum to more than 1 \, you
+will get decreased volume.;
+#X connect 0 0 3 1;
+#X connect 0 0 22 0;
+#X connect 2 0 3 0;
+#X connect 3 0 23 0;
+#X connect 4 0 10 0;
+#X connect 5 0 15 0;
+#X connect 8 0 22 1;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 10 1 11 0;
+#X connect 11 0 12 0;
+#X connect 11 1 8 1;
+#X connect 12 0 8 1;
+#X connect 13 0 23 1;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 15 1 16 0;
+#X connect 16 0 17 0;
+#X connect 16 1 13 1;
+#X connect 17 0 13 1;
+#X connect 18 0 19 0;
+#X connect 20 0 18 0;
+#X connect 21 0 18 1;
+#X connect 22 0 20 0;
+#X connect 23 0 21 0;
+#X connect 24 0 10 0;
+#X connect 25 0 15 0;
+#X connect 26 0 24 0;
+#X connect 26 0 25 0;
diff --git a/nqpoly4/tabgrain-test.pd b/nqpoly4/tabgrain-test.pd
new file mode 100644
index 0000000..8842ab6
--- /dev/null
+++ b/nqpoly4/tabgrain-test.pd
@@ -0,0 +1,109 @@
+#N canvas 183 46 668 627 10;
+#X obj 36 533 catch~ foo-l;
+#X obj 57 555 catch~ foo-r;
+#X obj 37 583 dac~;
+#X text 249 336 pitch;
+#X text 331 338 attack;
+#X text 373 336 decay;
+#X text 422 336 volume;
+#X floatatom 156 240 5 0 0 0 - - -;
+#X text 164 223 duration;
+#X floatatom 248 356 5 0 0 0 - - -;
+#X floatatom 288 357 5 0 0 0 - - -;
+#X floatatom 325 356 5 0 0 0 - - -;
+#X floatatom 368 355 5 0 0 0 - - -;
+#X floatatom 418 355 5 0 0 0 - - -;
+#X obj 164 382 pack f s f f f f f f f;
+#X floatatom 465 354 5 0 0 0 - - -;
+#X text 473 336 pan;
+#X obj 46 189 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 98 197 5 0 0 0 - - -;
+#X obj 166 440 print d;
+#X obj 515 45 openpanel;
+#X msg 513 18 bang;
+#X obj 519 102 soundfiler;
+#X obj 163 407 nqpoly4 8 tabgrain foo;
+#X obj 155 344 f;
+#X obj 276 230 phasor 1;
+#X obj 310 282 * 0;
+#X obj 312 303 + 0;
+#X text 395 259 range;
+#X text 403 293 start;
+#X floatatom 357 293 0 0 0 0 - - -;
+#X floatatom 356 259 0 0 0 0 - - -;
+#X floatatom 528 127 0 0 0 0 - - -;
+#X obj 110 297 t b b b;
+#X obj 32 334 /;
+#X obj 32 301 t b f;
+#X floatatom 28 368 5 0 0 0 - - -;
+#X text 21 385 density;
+#X obj 378 29 table sampletab;
+#X msg 190 302 symbol sampletab;
+#X text 307 405 first creation argument (foo) is the name used to build
+the throw~ objects. this is so you can have multiple tabgrains running
+at the same time.;
+#X obj 355 211 f;
+#X msg 351 183 bang;
+#X text 389 181 set phasor range to the sample length;
+#X msg 436 274 0;
+#X text 287 338 gliss;
+#X text 20 33 pix.test.at;
+#X msg 468 312 0.5;
+#X msg 234 322 44;
+#X text 95 180 grain frequency;
+#X obj 68 239 metro 40;
+#X msg 154 206 300;
+#X text 6 12 confusing "test" patch for the tabgrain object;
+#X msg 517 76 read -resize \$1 sampletab;
+#X msg 413 316 0.5;
+#X obj 287 174 / 60;
+#X floatatom 287 154 5 0 0 0 - - -;
+#X floatatom 299 200 5 0 0 0 - - -;
+#X msg 287 128 60;
+#X text 292 98 bpm;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 7 0 24 1;
+#X connect 7 0 34 0;
+#X connect 9 0 14 3;
+#X connect 10 0 14 4;
+#X connect 11 0 14 5;
+#X connect 12 0 14 6;
+#X connect 13 0 14 7;
+#X connect 14 0 23 0;
+#X connect 15 0 14 8;
+#X connect 17 0 50 0;
+#X connect 18 0 35 0;
+#X connect 18 0 50 1;
+#X connect 20 0 53 0;
+#X connect 21 0 20 0;
+#X connect 22 0 32 0;
+#X connect 22 0 41 1;
+#X connect 23 0 19 0;
+#X connect 24 0 14 0;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 14 2;
+#X connect 30 0 27 1;
+#X connect 31 0 26 1;
+#X connect 33 0 24 0;
+#X connect 33 1 25 0;
+#X connect 33 1 39 0;
+#X connect 34 0 36 0;
+#X connect 35 0 34 0;
+#X connect 35 1 34 1;
+#X connect 39 0 14 1;
+#X connect 41 0 31 0;
+#X connect 42 0 41 0;
+#X connect 44 0 30 0;
+#X connect 47 0 15 0;
+#X connect 48 0 9 0;
+#X connect 50 0 33 0;
+#X connect 51 0 7 0;
+#X connect 53 0 22 0;
+#X connect 54 0 13 0;
+#X connect 55 0 25 0;
+#X connect 55 0 57 0;
+#X connect 56 0 55 0;
+#X connect 58 0 56 0;
diff --git a/nqpoly4/tabgrain.pd b/nqpoly4/tabgrain.pd
new file mode 100644
index 0000000..6b83adf
--- /dev/null
+++ b/nqpoly4/tabgrain.pd
@@ -0,0 +1,86 @@
+#N canvas 348 197 538 471 10;
+#X obj 186 236 tabar~;
+#X obj 69 131 line~;
+#X msg 68 94 0 \, 1 \$1;
+#X obj 97 211 *~ 0;
+#X obj 94 239 +~ 0;
+#X obj 45 192 *~;
+#X obj 46 214 /~ 2;
+#X obj 49 242 *~ 0;
+#X obj 88 295 +~;
+#X obj 98 326 tabread4~;
+#X msg 133 300 set \$1;
+#X obj 101 350 *~;
+#X obj 215 303 *~ 0;
+#X obj 55 164 *~ 0;
+#X obj 56 268 /~ 1;
+#X obj 108 57 unpack f s f f f f f f f;
+#X msg 298 191 1;
+#X obj 311 169 t b f;
+#X obj 299 216 -;
+#X obj 305 245 pow 2;
+#X msg 293 289 1;
+#X obj 310 268 t b f;
+#X obj 313 316 -;
+#X obj 241 379 *~ 0;
+#X obj 252 199 pow 2;
+#X obj 258 242 -;
+#X obj 318 378 *~ 0;
+#X obj 109 24 inlet;
+#X obj 17 93 delay;
+#X obj 28 414 outlet;
+#X obj 489 14 inlet;
+#X obj 228 412 throw~ \$3-l;
+#X obj 322 411 throw~ \$3-r;
+#X text 10 439 pix.test.at;
+#X text 13 3;
+#X text 153 18 list <duration> <table> <offset> <pitch> <glissando>
+<attack> <decay> <volume> <pan>;
+#X connect 0 0 12 0;
+#X connect 1 0 0 0;
+#X connect 1 0 13 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 8 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 14 0;
+#X connect 8 0 9 0;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
+#X connect 11 0 23 0;
+#X connect 11 0 26 0;
+#X connect 12 0 11 1;
+#X connect 13 0 3 0;
+#X connect 13 0 5 1;
+#X connect 13 0 5 0;
+#X connect 14 0 8 0;
+#X connect 15 0 2 0;
+#X connect 15 0 13 1;
+#X connect 15 0 14 1;
+#X connect 15 0 28 0;
+#X connect 15 1 10 0;
+#X connect 15 2 4 1;
+#X connect 15 3 3 1;
+#X connect 15 4 7 1;
+#X connect 15 5 0 1;
+#X connect 15 6 0 2;
+#X connect 15 7 12 1;
+#X connect 15 8 17 0;
+#X connect 16 0 18 0;
+#X connect 16 0 25 0;
+#X connect 17 0 16 0;
+#X connect 17 1 18 1;
+#X connect 17 1 24 0;
+#X connect 18 0 19 0;
+#X connect 19 0 21 0;
+#X connect 20 0 22 0;
+#X connect 21 0 20 0;
+#X connect 21 1 22 1;
+#X connect 22 0 26 1;
+#X connect 23 0 31 0;
+#X connect 24 0 25 1;
+#X connect 25 0 23 1;
+#X connect 26 0 32 0;
+#X connect 27 0 15 0;
+#X connect 28 0 29 0;