aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorN.N. <chr15m@users.sourceforge.net>2007-07-10 07:47:46 +0000
committerN.N. <chr15m@users.sourceforge.net>2007-07-10 07:47:46 +0000
commit3faf17f7b713905f582def227df90dac15f3468d (patch)
treea429f621d2aad8db85d902fde422d3ff1e859bd6
This commit was generated by cvs2svn to compensate for changes in r7969,svn2git-root
which included commits to RCS files with non-trunk default branches. svn path=/trunk/abstractions/s-abstractions/; revision=7970
-rw-r--r--README12
-rw-r--r--TODO7
-rw-r--r--blosc/bandlimited_oscillators.pd10
-rw-r--r--blosc/blsaw~-help.pd78
-rw-r--r--blosc/blsaw~.pd297
-rw-r--r--blosc/blsquare~-help.pd80
-rw-r--r--blosc/blsquare~.pd342
-rw-r--r--blosc/bltriangle~-help.pd80
-rw-r--r--blosc/bltriangle~.pd357
-rw-r--r--cell-receive.pd11
-rw-r--r--examples/controlsurface-example.pd8
-rw-r--r--examples/s-varenv-example.pd531
-rw-r--r--examples/varseq-example.pd10
-rw-r--r--install14
-rw-r--r--pd_start.pd116
-rw-r--r--s-303vcf~.pd33
-rw-r--r--s-303~.pd187
-rw-r--r--s-adsynth~.pd48
-rw-r--r--s-arranger-help.pd47
-rw-r--r--s-arranger.pd380
-rw-r--r--s-autocompressor~.pd121
-rw-r--r--s-bassdrum~.pd65
-rw-r--r--s-beat-help.pd32
-rw-r--r--s-beat.pd280
-rw-r--r--s-bitcrusher~.pd22
-rw-r--r--s-boomdrum~.pd45
-rw-r--r--s-breaker~.pd247
-rw-r--r--s-connect.pd4
-rw-r--r--s-controlsurface.pd111
-rw-r--r--s-conway-help.pd30
-rw-r--r--s-conway.pd444
-rw-r--r--s-default.pd13
-rw-r--r--s-delayunit~.pd40
-rw-r--r--s-env-help.pd24
-rw-r--r--s-env.pd486
-rw-r--r--s-env~-help.pd573
-rw-r--r--s-env~.pd281
-rw-r--r--s-ezdac~.pd66
-rw-r--r--s-filtdelay~.pd48
-rw-r--r--s-filter~.pd37
-rw-r--r--s-freqnoise~-help.pd8
-rw-r--r--s-freqnoise~.pd192
-rw-r--r--s-ftoms.pd6
-rw-r--r--s-fuzz~.pd25
-rw-r--r--s-gain~.pd22
-rw-r--r--s-hex.pd57
-rw-r--r--s-jail.pd8
-rw-r--r--s-krafty~.pd42
-rw-r--r--s-loader.pd28
-rw-r--r--s-lookup.pd17
-rw-r--r--s-metro.pd78
-rw-r--r--s-microenv.pd297
-rw-r--r--s-midictl.pd50
-rw-r--r--s-midiloop-help.pd44
-rw-r--r--s-midiloop.pd163
-rw-r--r--s-midimemory-help.pd9
-rw-r--r--s-midimemory.pd68
-rw-r--r--s-midimonitor.pd26
-rw-r--r--s-midimono.pd46
-rw-r--r--s-midinote.pd9
-rw-r--r--s-miditrigger.pd18
-rw-r--r--s-mseq-help.pd34
-rw-r--r--s-mseq.pd43
-rw-r--r--s-nadsr~-help.pd38
-rw-r--r--s-nadsr~.pd551
-rw-r--r--s-obiwanbd~-help.pd7
-rw-r--r--s-obiwanbd~.pd135
-rw-r--r--s-obiwancym~-help.pd7
-rw-r--r--s-obiwancym~.pd138
-rw-r--r--s-obiwansd~-help.pd6
-rw-r--r--s-obiwansd~.pd203
-rw-r--r--s-oldschool~.pd76
-rw-r--r--s-perc~.pd92
-rw-r--r--s-pluck~.pd116
-rw-r--r--s-recorder~.pd35
-rw-r--r--s-repeater~.pd55
-rw-r--r--s-reverb-echo.pd17
-rw-r--r--s-reverb~.pd118
-rw-r--r--s-samplepiece~.pd107
-rw-r--r--s-seq-help.pd23
-rw-r--r--s-seq.pd484
-rw-r--r--s-seq16.pd34
-rw-r--r--s-sigmoid~.pd8
-rw-r--r--s-smooth.pd16
-rw-r--r--s-snare~.pd83
-rw-r--r--s-spooky~.pd387
-rw-r--r--s-synth~.pd57
-rw-r--r--s-tabval.pd16
-rw-r--r--s-togs.pd98
-rw-r--r--s-tracker-help.pd24
-rw-r--r--s-tracker.pd236
-rw-r--r--s-varenv.pd344
-rw-r--r--s-varseq-help.pd25
-rw-r--r--s-varseq.pd429
-rw-r--r--s-xfader~.pd28
-rw-r--r--s-zhzxh~.pd9
-rwxr-xr-xsfimport7
-rw-r--r--sssad/README.txt55
-rw-r--r--sssad/_sssad/list_argument.pd20
-rw-r--r--sssad/_sssad/singleton-help.pd42
-rw-r--r--sssad/_sssad/singleton.pd121
-rw-r--r--sssad/_sssad/sssad-persistence.pd17
-rw-r--r--sssad/auto.pd6
-rw-r--r--sssad/datastore-help.pd30
-rw-r--r--sssad/datastore.pd64
-rw-r--r--sssad/load.pd23
-rw-r--r--sssad/panel.pd92
-rw-r--r--sssad/sssad-help.pd99
-rw-r--r--sssad/sssad.pd31
-rw-r--r--sssad/value.pd11
-rw-r--r--sx/addnoise.pd36
-rw-r--r--sx/binter.pd17
-rw-r--r--sx/blend.pd17
-rw-r--r--sx/blob-help.pd19
-rw-r--r--sx/blob.pd105
-rw-r--r--sx/blob2.pd66
-rw-r--r--sx/drift.pd24
-rw-r--r--sx/explode-help.pd16
-rw-r--r--sx/explode.pd100
-rw-r--r--sx/fakecyl.pd26
-rw-r--r--sx/gemwin.pd114
-rw-r--r--sx/hutz.pd54
-rw-r--r--sx/mirrorball.pd13
-rw-r--r--sx/netgeom-help.pd23
-rw-r--r--sx/netgeom.pd43
-rw-r--r--sx/normal.pd45
-rw-r--r--sx/phitz.pd32
-rw-r--r--sx/pinger.pd46
-rw-r--r--sx/props.pd124
-rw-r--r--sx/ring.pd61
-rw-r--r--sx/rumble.pd37
-rw-r--r--sx/shadow.pd19
-rw-r--r--sx/sigplane.pd22
-rw-r--r--sx/unit.pd28
-rw-r--r--sx/vibber-help.pd7
-rw-r--r--sx/vibber.pd101
-rw-r--r--sx/voibu.pd86
-rw-r--r--sx/wander.pd205
-rw-r--r--sx/wobtower.pd108
-rwxr-xr-xuninstall7
-rw-r--r--utils/net_triangle.py115
-rw-r--r--vead~.pd48
142 files changed, 13291 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..f25730d
--- /dev/null
+++ b/README
@@ -0,0 +1,12 @@
+This is a collection of abstractions for puredata, created by Chris McCormick.
+
+These require puredata 0.39-2 from http://crca.ucsd.edu/~msp/software.html
+
+To install, run ./install from this directory. Then run pd as per normal.
+To uninstall run ./uninstall from this directory. The old file is in .pdrc.bak
+
+Have fun.
+
+chris@mccormick.cx
+http://mccormick.cx
+
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..8ef6cee
--- /dev/null
+++ b/TODO
@@ -0,0 +1,7 @@
+* adsr style envelope with sustain and settable length, which takes midi notes as triggers
+* auto-learning midi input abstractions
+* sample looper like susloop~
+* make the envelope self resizing
+* make 'basic' elements (sliders, numberboxes, etc) with [sssad/auto] in them
+* make s-midiloop
+* make the spectal panner
diff --git a/blosc/bandlimited_oscillators.pd b/blosc/bandlimited_oscillators.pd
new file mode 100644
index 0000000..a039e94
--- /dev/null
+++ b/blosc/bandlimited_oscillators.pd
@@ -0,0 +1,10 @@
+#N canvas 501 290 343 157 10;
+#N canvas 690 174 154 104 abslist 0;
+#X msg 19 11 blsaw~;
+#X msg 20 38 blsquare~;
+#X msg 20 65 bltriangle~;
+#X restore 12 12 pd abslist;
+#X msg 12 37 version 0.2.0;
+#X text 13 64 bandlimited oscillators;
+#X text 13 84 copyright by roman haefeli;
+#X text 14 106 published under the gnu public license;
diff --git a/blosc/blsaw~-help.pd b/blosc/blsaw~-help.pd
new file mode 100644
index 0000000..c78799d
--- /dev/null
+++ b/blosc/blsaw~-help.pd
@@ -0,0 +1,78 @@
+#N canvas 285 15 647 568 10;
+#X obj 31 224 *~;
+#X obj 32 253 dac~;
+#X obj 111 243 pow 2;
+#X obj 114 218 hsl 128 15 0 1 0 0 empty empty volume -2 -8 0 10 -262144
+-1 -1 3100 1;
+#X obj 111 284 line~;
+#X obj 111 263 pack f 20;
+#X obj 283 212 cnv 15 350 130 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X text 290 223 synopsis:;
+#X text 289 278 inlet1: signal (frequency);
+#X text 289 298 inlet2: float (set phase);
+#X obj 184 354 cnv 15 450 120 empty empty empty 20 12 0 14 -241291
+-66577 0;
+#X floatatom 262 408 7 0 0 0 - - -;
+#X text 315 410 Hz;
+#X text 194 408 border @;
+#X text 14 519 copyright by Roman Haefeli;
+#X text 14 540 published under the GNU Public License;
+#X obj 244 484 cnv 15 390 25 empty empty empty 20 12 0 14 -258699 -66577
+0;
+#X text 252 490 due to bandlimitation peaks above/below +/-1 may occur
+;
+#X obj 34 61 hsl 128 15 20 17000 1 0 empty empty frequency -2 -8 0
+10 -262144 -1 -1 7544 1;
+#X obj 31 83 pack f 100;
+#X obj 31 104 line~;
+#X msg 18 493 version 0.2.0;
+#X text 220 83 if the instance containing the tables is deleted \,
+the other instances won't work anymore. reload the patch then.;
+#X text 261 361 try different values for <number of tables>:;
+#N canvas 573 67 190 308 compute_bandlimited_range 0;
+#X msg 21 34 get_num_of_tables;
+#X obj 21 97 route num_of_tables;
+#X obj 21 12 loadbang;
+#X obj 21 128 t b f;
+#X obj 21 152 samplerate~;
+#X obj 21 174 / 2;
+#X obj 21 203 /;
+#X obj 21 229 outlet;
+#X obj 21 56 s BLSAW;
+#X obj 21 76 r BLSAW;
+#X obj 51 177 + 1;
+#X connect 0 0 8 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 10 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 9 0 1 0;
+#X connect 10 0 6 1;
+#X restore 262 379 pd compute_bandlimited_range;
+#X text 260 431 if frequency above border -> bandlimited saw;
+#X text 260 447 if frequency below border -> raw saw;
+#X text 290 250 [blsaw~ <number of tables>];
+#X text 290 319 outlet: signal (bandlimited saw at given f);
+#X text 219 28 if [blsaw~] is instantiated more than once \, only the
+first instance creates the tables. if the argument value differs \,
+the biggest is taken.;
+#X text 221 129 the number of tables is at the same time the number
+of harmonics of the table with the highest number of harmonics. this
+value defines also the frequency \, below which [blsaw~] switches to
+a raw saw.;
+#X obj 32 151 blsaw~ 40;
+#X connect 0 0 1 0;
+#X connect 0 0 1 1;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 1;
+#X connect 5 0 4 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 20 0 31 0;
+#X connect 24 0 11 0;
+#X connect 31 0 0 0;
diff --git a/blosc/blsaw~.pd b/blosc/blsaw~.pd
new file mode 100644
index 0000000..8969f73
--- /dev/null
+++ b/blosc/blsaw~.pd
@@ -0,0 +1,297 @@
+#N canvas 62 77 344 334 10;
+#X text 120 257 copyright by Roman Haefeli;
+#X text 36 284 Published under the GNU Public License;
+#N canvas 0 0 646 649 oscillator~ 0;
+#N canvas 314 100 498 265 number_of_harmonics_allowed 0;
+#X obj 135 68 / 2;
+#X obj 15 151 /;
+#X obj 135 44 samplerate~;
+#X obj 15 98 t b f;
+#X text 241 49 sr / 2 = nyquist frequency;
+#X obj 15 229 outlet;
+#X obj 14 18 inlet~;
+#X obj 15 121 f;
+#X obj 135 21 loadbang;
+#X text 104 209 harmonics never should exceed the nyquist frequency
+;
+#X obj 15 49 snapshot~;
+#X obj 78 21 bang~;
+#X obj 15 72 change;
+#X obj 15 177 int;
+#X obj 15 200 change;
+#X connect 0 0 7 1;
+#X connect 1 0 13 0;
+#X connect 2 0 0 0;
+#X connect 3 0 7 0;
+#X connect 3 1 1 1;
+#X connect 6 0 10 0;
+#X connect 7 0 1 0;
+#X connect 8 0 2 0;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
+#X connect 12 0 3 0;
+#X connect 13 0 14 0;
+#X connect 14 0 5 0;
+#X restore 161 113 pd number_of_harmonics_allowed;
+#X obj 40 33 inlet~;
+#X obj 39 456 outlet~;
+#X obj 287 374 snapshot~;
+#X obj 206 273 == 0;
+#X obj 206 377 f;
+#X obj 206 356 sel 1;
+#X obj 246 320 change;
+#X obj 287 348 sel 1;
+#X text 33 494 number of harmononics;
+#X text 32 512 without exceeding nyquist;
+#X text 31 531 at given frequeny:;
+#X text 251 520 best method:;
+#X obj 559 178 inlet;
+#X text 565 150 phase;
+#X text 340 346 sync phase \, when switching dsp on;
+#X msg 408 69 get_num_of_tables;
+#X obj 408 132 route num_of_tables;
+#X obj 408 23 loadbang;
+#X obj 40 272 phasor~;
+#X text 196 81 get the number of tables ->;
+#X text 227 496 |;
+#X text 227 505 |;
+#X text 227 514 |;
+#X text 227 523 |;
+#X text 227 533 |;
+#X text 227 542 |;
+#X text 227 551 |;
+#X text 227 560 |;
+#X text 227 567 |;
+#X text 227 576 |;
+#X text 227 585 |;
+#X text 227 594 |;
+#X text 227 604 |;
+#X text 25 541 __________________________________________________;
+#X text 25 575 __________________________________________________;
+#X obj 161 223 >;
+#X obj 408 91 s BLSAW;
+#X obj 408 111 r BLSAW;
+#X text 246 563 bandlimited saw;
+#X text 245 595 raw saw;
+#X obj 161 143 t f f;
+#X text 199 221 switch to raw saw \, when number of allowed harmonics
+exceeds num_of_tables;
+#X text 32 565 0 < n <= num_of_tables;
+#X text 40 596 n > num_of_tables;
+#N canvas 0 0 448 226 bandlimited_saw 0;
+#X obj 16 31 inlet~;
+#X obj 71 33 inlet;
+#X obj 261 34 inlet;
+#X obj 17 192 outlet~;
+#X msg 71 96 set \$1;
+#X obj 261 124 switch~;
+#X obj 347 36 inlet;
+#X text 69 14 choose table;
+#X text 346 17 set phase;
+#X text 256 14 switch dsp;
+#X obj 71 71 makefilename BLSAW%d;
+#X obj 17 134 tabosc4~;
+#X connect 0 0 11 0;
+#X connect 1 0 10 0;
+#X connect 2 0 5 0;
+#X connect 4 0 11 0;
+#X connect 6 0 11 1;
+#X connect 10 0 4 0;
+#X connect 11 0 3 0;
+#X restore 166 405 pd bandlimited_saw;
+#N canvas 438 301 207 227 raw_saw 0;
+#X obj 6 16 inlet~;
+#X obj 7 156 outlet~;
+#X obj 118 21 inlet;
+#X obj 118 46 switch~;
+#X obj 7 66 *~ -2;
+#X obj 7 92 +~ 1;
+#X connect 0 0 4 0;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X restore 40 401 pd raw_saw;
+#X obj 408 46 del 0;
+#X connect 0 0 41 0;
+#X connect 1 0 45 0;
+#X connect 1 0 0 0;
+#X connect 1 0 19 0;
+#X connect 3 0 45 3;
+#X connect 4 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 45 1;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 7 0 45 2;
+#X connect 8 0 3 0;
+#X connect 13 0 45 3;
+#X connect 13 0 19 1;
+#X connect 16 0 37 0;
+#X connect 17 0 36 1;
+#X connect 18 0 47 0;
+#X connect 19 0 3 0;
+#X connect 19 0 46 0;
+#X connect 36 0 4 0;
+#X connect 36 0 46 1;
+#X connect 38 0 17 0;
+#X connect 41 0 36 0;
+#X connect 41 1 5 1;
+#X connect 45 0 2 0;
+#X connect 46 0 2 0;
+#X connect 47 0 16 0;
+#X restore 19 161 pd oscillator~;
+#X obj 19 136 inlet~;
+#X obj 112 137 inlet;
+#X obj 19 185 outlet~;
+#N canvas 555 327 605 504 lookup-table-creation 0;
+#X obj 15 195 until;
+#X obj 15 217 f;
+#X obj 50 217 + 1;
+#X obj 58 195 1;
+#X obj 80 345 pack f s;
+#X obj 15 125 t f b b;
+#X msg 136 270 clear;
+#X obj 15 248 t b f f;
+#X obj 15 407 f;
+#X obj 15 474 send;
+#X msg 80 374 obj 10 \$1 table \$2 515;
+#X text 282 374 create the necessary tables;
+#X text 238 439 fill each table with the appropriate sinesum \,;
+#X text 237 457 respectively the appropriate number of harmonics.;
+#X obj 131 318 makefilename BLSAW%d;
+#N canvas 535 94 218 342 bandlimited_saw_sinesum 0;
+#X obj 43 67 until;
+#X obj 21 38 t b f b;
+#X obj 84 67 1;
+#X obj 43 99 f 1;
+#X obj 84 99 + 1;
+#X obj 43 194 list prepend;
+#X obj 154 195 list;
+#X obj 21 233 list;
+#X obj 135 129 b;
+#X obj 21 278 list trim;
+#X obj 21 16 inlet;
+#X obj 21 300 outlet;
+#X obj 21 256 list prepend sinesum 512;
+#X obj 43 143 pow -1;
+#X obj 43 167 * 0.63662;
+#X text 120 167 = 2 / pi;
+#X connect 0 0 3 0;
+#X connect 1 0 7 0;
+#X connect 1 1 0 0;
+#X connect 1 2 2 0;
+#X connect 1 2 8 0;
+#X connect 2 0 3 1;
+#X connect 3 0 4 0;
+#X connect 3 0 13 0;
+#X connect 4 0 3 1;
+#X connect 5 0 6 0;
+#X connect 5 0 7 1;
+#X connect 6 0 5 1;
+#X connect 7 0 12 0;
+#X connect 8 0 7 1;
+#X connect 8 0 5 1;
+#X connect 9 0 11 0;
+#X connect 10 0 1 0;
+#X connect 12 0 9 0;
+#X connect 13 0 14 0;
+#X connect 14 0 5 0;
+#X restore 15 442 pd bandlimited_saw_sinesum;
+#X obj 80 317 * 20;
+#X obj 80 396 s pd-\$0-lookup-tables-saw;
+#X obj 138 123 r \$0-create_additional_tables;
+#X obj 15 28 r \$0-create_tables;
+#X obj 15 66 \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 7 0;
+#X connect 2 0 1 1;
+#X connect 3 0 1 1;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 5 1 3 0;
+#X connect 5 2 6 0;
+#X connect 6 0 17 0;
+#X connect 7 0 8 0;
+#X connect 7 1 16 0;
+#X connect 7 2 8 1;
+#X connect 7 2 14 0;
+#X connect 8 0 15 0;
+#X connect 10 0 17 0;
+#X connect 14 0 4 1;
+#X connect 14 0 9 1;
+#X connect 15 0 9 0;
+#X connect 16 0 4 0;
+#X connect 18 0 0 0;
+#X connect 19 0 20 0;
+#X connect 20 0 5 0;
+#X restore 22 66 pd lookup-table-creation;
+#N canvas 647 5 291 900 \$0-lookup-tables-saw 0;
+#X restore 22 94 pd \$0-lookup-tables-saw;
+#X msg 204 226 version 0.2.0;
+#N canvas 169 33 537 620 singleton-communication 0;
+#X obj 127 22 loadbang;
+#X obj 171 100 + 1;
+#X obj 16 96 spigot;
+#X obj 149 153 == 1;
+#X obj 127 47 t b b b;
+#X obj 270 225 \$1;
+#X obj 127 184 t b b;
+#X msg 270 246 newdollar1 \$1;
+#X obj 125 396 > \$1;
+#X obj 134 419 sel 1;
+#X obj 134 441 f;
+#X text 189 397 if new is bigger \, use new number_of_tables;
+#X obj 134 373 t f f f;
+#X obj 178 502 - \$1;
+#X obj 178 526 moses 1;
+#X obj 222 549 s \$0-create_additional_tables;
+#X obj 127 214 f;
+#X obj 127 240 sel 1;
+#X obj 127 264 s \$0-create_tables;
+#X obj 18 348 route get_num_of_tables newdollar1;
+#X obj 18 423 \$1;
+#X msg 18 461 num_of_tables \$1;
+#X obj 171 77 value BLSAW.instance;
+#X obj 149 131 value BLSAW.instance;
+#X obj 270 267 s BLSAW;
+#X obj 16 69 r BLSAW;
+#X obj 16 120 s \$0-BLSAW;
+#X obj 18 319 r \$0-BLSAW;
+#X obj 18 488 s BLSAW;
+#X connect 0 0 4 0;
+#X connect 1 0 23 0;
+#X connect 2 0 26 0;
+#X connect 3 0 2 1;
+#X connect 3 0 16 1;
+#X connect 4 0 6 0;
+#X connect 4 1 23 0;
+#X connect 4 2 22 0;
+#X connect 5 0 7 0;
+#X connect 6 0 16 0;
+#X connect 6 1 5 0;
+#X connect 7 0 24 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 1;
+#X connect 10 0 13 1;
+#X connect 10 0 20 1;
+#X connect 12 0 8 0;
+#X connect 12 1 10 1;
+#X connect 12 2 13 0;
+#X connect 13 0 14 0;
+#X connect 14 1 15 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 19 0 20 0;
+#X connect 19 1 12 0;
+#X connect 20 0 21 0;
+#X connect 21 0 28 0;
+#X connect 22 0 1 0;
+#X connect 23 0 3 0;
+#X connect 25 0 2 0;
+#X connect 27 0 19 0;
+#X restore 21 36 pd singleton-communication;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
diff --git a/blosc/blsquare~-help.pd b/blosc/blsquare~-help.pd
new file mode 100644
index 0000000..2f0ef28
--- /dev/null
+++ b/blosc/blsquare~-help.pd
@@ -0,0 +1,80 @@
+#N canvas 257 21 661 564 10;
+#X obj 31 224 *~;
+#X obj 32 253 dac~;
+#X obj 111 243 pow 2;
+#X obj 114 218 hsl 128 15 0 1 0 0 empty empty volume -2 -8 0 10 -262144
+-1 -1 200 1;
+#X obj 111 284 line~;
+#X obj 111 263 pack f 20;
+#X obj 283 212 cnv 15 350 130 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X text 290 223 synopsis:;
+#X text 289 278 inlet1: signal (frequency);
+#X text 289 298 inlet2: float (set phase);
+#X text 290 319 outlet: signal (bandlimited square at given f);
+#X obj 184 354 cnv 15 450 120 empty empty empty 20 12 0 14 -241291
+-66577 0;
+#N canvas 573 67 190 308 compute_bandlimited_range 0;
+#X msg 21 34 get_num_of_tables;
+#X obj 21 56 s BLSQUARE;
+#X obj 21 76 r BLSQUARE;
+#X obj 21 97 route num_of_tables;
+#X obj 21 12 loadbang;
+#X obj 21 128 t b f;
+#X obj 21 152 samplerate~;
+#X obj 21 174 / 2;
+#X obj 51 194 * 2;
+#X obj 51 217 + 1;
+#X obj 21 238 /;
+#X obj 21 264 outlet;
+#X connect 0 0 1 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 5 1 8 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 1;
+#X connect 10 0 11 0;
+#X restore 262 383 pd compute_bandlimited_range;
+#X floatatom 262 408 7 0 0 0 - - -;
+#X text 315 410 Hz;
+#X text 260 431 if frequency above border -> bandlimited square;
+#X text 260 447 if frequency below border -> raw square;
+#X text 194 408 border @;
+#X text 14 519 copyright by Roman Haefeli;
+#X text 14 540 published under the GNU Public License;
+#X obj 244 484 cnv 15 390 25 empty empty empty 20 12 0 14 -258699 -66577
+0;
+#X text 252 490 due to bandlimitation peaks above/below +/-1 may occur
+;
+#X obj 34 61 hsl 128 15 20 17000 1 0 empty empty frequency -2 -8 0
+10 -262144 -1 -1 5613 1;
+#X obj 31 83 pack f 100;
+#X obj 31 104 line~;
+#X obj 32 151 blsquare~ 30;
+#X msg 18 493 version 0.2.0;
+#X text 290 250 [blsquare~ <number of tables>];
+#X text 219 28 if [blsquare~] is instantiated more than once \, only
+the first instance creates the tables. if the argument value differs
+\, the biggest is taken.;
+#X text 220 83 if the instance containing the tables is deleted \,
+the other instances won't work anymore. reload the patch then.;
+#X text 261 361 try different values for <number of tables>:;
+#X text 221 129 the number of tables is at the same time the number
+of harmonics of the table with the highest number of harmonics. this
+value defines also the frequency \, below which [blsquare~] switches
+to a raw square.;
+#X connect 0 0 1 0;
+#X connect 0 0 1 1;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 1;
+#X connect 5 0 4 0;
+#X connect 12 0 13 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 25 0;
+#X connect 25 0 0 0;
diff --git a/blosc/blsquare~.pd b/blosc/blsquare~.pd
new file mode 100644
index 0000000..bb9c0d8
--- /dev/null
+++ b/blosc/blsquare~.pd
@@ -0,0 +1,342 @@
+#N canvas 257 128 333 328 10;
+#X text 137 277 copyright by Roman Haefeli;
+#X text 53 304 Published under the GNU Public License;
+#N canvas 0 0 655 649 oscillator 0;
+#N canvas 314 100 514 407 number_of_harmonics_allowed 0;
+#X obj 135 68 / 2;
+#X obj 15 151 /;
+#X obj 15 174 int;
+#X obj 135 44 samplerate~;
+#X obj 15 241 * 0.5;
+#X obj 15 261 int;
+#X obj 15 282 * 2;
+#X obj 15 221 - 1;
+#X obj 15 305 + 1;
+#X obj 15 328 change;
+#X obj 15 199 change;
+#X obj 15 98 t b f;
+#X text 241 49 sr / 2 = nyquist frequency;
+#X obj 15 353 outlet;
+#X obj 14 18 inlet~;
+#X obj 15 121 f;
+#X obj 135 21 loadbang;
+#X text 119 216 harmonics never should exceed the nyquist frequency
+;
+#X obj 15 49 snapshot~;
+#X obj 78 21 bang~;
+#X obj 15 72 change;
+#X connect 0 0 15 1;
+#X connect 1 0 2 0;
+#X connect 2 0 10 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 7 0 4 0;
+#X connect 8 0 9 0;
+#X connect 9 0 13 0;
+#X connect 10 0 7 0;
+#X connect 11 0 15 0;
+#X connect 11 1 1 1;
+#X connect 14 0 18 0;
+#X connect 15 0 1 0;
+#X connect 16 0 3 0;
+#X connect 18 0 20 0;
+#X connect 19 0 18 0;
+#X connect 20 0 11 0;
+#X restore 150 113 pd number_of_harmonics_allowed;
+#N canvas 499 174 190 222 raw_square 0;
+#X obj 19 13 inlet~;
+#X obj 19 180 outlet~;
+#X obj 102 18 inlet;
+#X obj 102 43 switch~;
+#X obj 19 122 -~;
+#X obj 19 48 -~ 0.5;
+#X obj 18 76 wrap~;
+#X obj 18 99 -~ 0.5;
+#X obj 19 148 *~ 2;
+#X connect 0 0 5 0;
+#X connect 2 0 3 0;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 0 4 1;
+#X connect 6 0 7 0;
+#X connect 7 0 4 0;
+#X connect 8 0 1 0;
+#X restore 29 404 pd raw_square;
+#N canvas 0 0 448 226 bandlimited_square 0;
+#X obj 16 31 inlet~;
+#X obj 71 33 inlet;
+#X obj 261 34 inlet;
+#X obj 17 192 outlet~;
+#X msg 71 96 set \$1;
+#X obj 261 124 switch~;
+#X obj 347 36 inlet;
+#X text 69 14 choose table;
+#X text 346 17 set phase;
+#X text 256 14 switch dsp;
+#X obj 71 71 makefilename BLSQUARE%d;
+#X obj 17 134 tabosc4~;
+#X connect 0 0 11 0;
+#X connect 1 0 10 0;
+#X connect 2 0 5 0;
+#X connect 4 0 11 0;
+#X connect 6 0 11 1;
+#X connect 10 0 4 0;
+#X connect 11 0 3 0;
+#X restore 155 405 pd bandlimited_square;
+#X obj 166 192 * 2;
+#X obj 297 374 snapshot~;
+#X obj 150 143 t f f f;
+#X obj 202 273 == 0;
+#X obj 202 377 f;
+#X obj 202 356 sel 1;
+#X obj 249 319 change;
+#X obj 297 348 sel 1;
+#X obj 548 178 inlet;
+#X text 550 151 phase;
+#X text 350 346 sync phase \, when switching dsp on;
+#X text 188 221 switch to raw square \, when number of allowed harmonics
+exceeds num_of_tables*2;
+#X msg 397 69 get_num_of_tables;
+#X obj 397 91 s BLSQUARE;
+#X obj 397 111 r BLSQUARE;
+#X obj 397 132 route num_of_tables;
+#X obj 397 11 loadbang;
+#X obj 29 272 phasor~;
+#X text 185 81 get the number of tables ->;
+#X obj 150 223 >;
+#X obj 30 7 inlet~;
+#X obj 28 456 outlet~;
+#X text 33 494 number of harmononics;
+#X text 32 512 without exceeding nyquist;
+#X text 31 531 at given frequeny:;
+#X text 251 520 best method:;
+#X text 245 595 raw square;
+#X text 246 563 bandlimited square;
+#X text 227 496 |;
+#X text 227 505 |;
+#X text 227 514 |;
+#X text 227 523 |;
+#X text 227 533 |;
+#X text 227 542 |;
+#X text 227 551 |;
+#X text 227 560 |;
+#X text 227 567 |;
+#X text 227 576 |;
+#X text 227 585 |;
+#X text 227 594 |;
+#X text 227 604 |;
+#X text 25 541 __________________________________________________;
+#X text 25 575 __________________________________________________;
+#X text 40 596 n > num_of_tables*2;
+#X text 32 565 0 < n < num_of_tables*2;
+#X obj 397 42 del 0;
+#X connect 0 0 5 0;
+#X connect 1 0 24 0;
+#X connect 2 0 24 0;
+#X connect 3 0 22 1;
+#X connect 4 0 2 3;
+#X connect 5 0 22 0;
+#X connect 5 1 7 1;
+#X connect 6 0 8 0;
+#X connect 6 0 9 0;
+#X connect 7 0 2 1;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 9 0 2 2;
+#X connect 10 0 4 0;
+#X connect 11 0 2 3;
+#X connect 11 0 20 1;
+#X connect 15 0 16 0;
+#X connect 17 0 18 0;
+#X connect 18 0 3 0;
+#X connect 19 0 48 0;
+#X connect 20 0 1 0;
+#X connect 20 0 4 0;
+#X connect 22 0 1 1;
+#X connect 22 0 6 0;
+#X connect 23 0 20 0;
+#X connect 23 0 0 0;
+#X connect 23 0 2 0;
+#X connect 48 0 15 0;
+#X restore 20 188 pd oscillator;
+#X obj 19 161 inlet~;
+#X obj 106 161 inlet;
+#X obj 20 214 outlet~;
+#X msg 221 246 version 0.2.0;
+#N canvas 555 327 605 504 lookup-table-creation 0;
+#N canvas 535 94 265 461 bandlimited_square_sinesum 0;
+#X obj 43 67 until;
+#X obj 21 38 t b f b;
+#X obj 84 67 1;
+#X obj 43 99 f 1;
+#X obj 84 99 + 1;
+#X obj 43 125 t f f;
+#X obj 43 153 % 2;
+#X obj 43 176 sel 0 1;
+#X obj 43 203 0;
+#X obj 69 203 f;
+#X obj 69 227 t b f;
+#X obj 69 249 pack 1 f;
+#X obj 69 274 /;
+#X obj 43 334 list prepend;
+#X obj 142 335 list;
+#X obj 21 363 list;
+#X obj 154 252 b;
+#X obj 21 408 list trim;
+#X obj 21 16 inlet;
+#X obj 21 430 outlet;
+#X obj 21 386 list prepend sinesum 512;
+#X obj 69 299 * 1.27324;
+#X text 145 298 = 4 / pi;
+#X connect 0 0 3 0;
+#X connect 1 0 15 0;
+#X connect 1 1 0 0;
+#X connect 1 2 2 0;
+#X connect 1 2 16 0;
+#X connect 2 0 3 1;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 1;
+#X connect 5 0 6 0;
+#X connect 5 1 9 1;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 13 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 11 1;
+#X connect 11 0 12 0;
+#X connect 12 0 21 0;
+#X connect 13 0 14 0;
+#X connect 13 0 15 1;
+#X connect 14 0 13 1;
+#X connect 15 0 20 0;
+#X connect 16 0 15 1;
+#X connect 16 0 13 1;
+#X connect 17 0 19 0;
+#X connect 18 0 1 0;
+#X connect 20 0 17 0;
+#X connect 21 0 13 0;
+#X restore 15 442 pd bandlimited_square_sinesum;
+#X obj 15 195 until;
+#X obj 15 217 f;
+#X obj 50 217 + 1;
+#X obj 58 195 1;
+#X obj 15 238 * 2;
+#X obj 15 260 - 1;
+#X obj 80 345 pack f s;
+#X obj 15 100 t f b b;
+#X msg 136 270 clear;
+#X obj 80 317 * 10;
+#X obj 15 282 t b f f;
+#X obj 15 407 f;
+#X obj 15 474 send;
+#X msg 80 374 obj 10 \$1 table \$2 515;
+#X obj 131 318 makefilename BLSQUARE%d;
+#X text 131 214 for synthesizing a square only odd numbers of harmonics
+;
+#X text 131 231 occur. ( 1 \, 3 \, 5 \, 7 \, etc.);
+#X text 282 374 create the necessary tables;
+#X text 238 439 fill each table with the appropriate sinesum \,;
+#X text 237 457 respectively the appropriate number of harmonics.;
+#X obj 138 123 r \$0-create_additional_tables;
+#X obj 15 33 r \$0-create_tables;
+#X obj 15 66 \$1;
+#X obj 80 396 s pd-\$0-lookup-tables-square;
+#X connect 0 0 13 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 1;
+#X connect 5 0 6 0;
+#X connect 6 0 11 0;
+#X connect 7 0 14 0;
+#X connect 8 0 1 0;
+#X connect 8 1 4 0;
+#X connect 8 2 9 0;
+#X connect 9 0 24 0;
+#X connect 10 0 7 0;
+#X connect 11 0 12 0;
+#X connect 11 1 10 0;
+#X connect 11 2 12 1;
+#X connect 11 2 15 0;
+#X connect 12 0 0 0;
+#X connect 14 0 24 0;
+#X connect 15 0 7 1;
+#X connect 15 0 13 1;
+#X connect 21 0 1 0;
+#X connect 22 0 23 0;
+#X connect 23 0 8 0;
+#X restore 21 70 pd lookup-table-creation;
+#N canvas 647 5 291 900 \$0-lookup-tables-square 0;
+#X restore 21 105 pd \$0-lookup-tables-square;
+#N canvas 169 33 537 620 singleton-communication 0;
+#X obj 16 69 r BLSQUARE;
+#X obj 127 22 loadbang;
+#X obj 171 77 value BLSQUARE.instance;
+#X obj 171 100 + 1;
+#X obj 149 131 value BLSQUARE.instance;
+#X obj 16 96 spigot;
+#X obj 149 153 == 1;
+#X obj 16 120 s \$0-BLSQUARE;
+#X obj 18 319 r \$0-BLSQUARE;
+#X obj 127 47 t b b b;
+#X obj 270 225 \$1;
+#X obj 127 184 t b b;
+#X msg 270 246 newdollar1 \$1;
+#X obj 270 267 s BLSQUARE;
+#X obj 125 396 > \$1;
+#X obj 134 419 sel 1;
+#X obj 134 441 f;
+#X text 189 397 if new is bigger \, use new number_of_tables;
+#X obj 134 373 t f f f;
+#X obj 178 502 - \$1;
+#X obj 178 526 moses 1;
+#X obj 222 549 s \$0-create_additional_tables;
+#X obj 127 214 f;
+#X obj 127 240 sel 1;
+#X obj 127 264 s \$0-create_tables;
+#X obj 18 348 route get_num_of_tables newdollar1;
+#X obj 18 423 \$1;
+#X msg 18 461 num_of_tables \$1;
+#X obj 18 488 s BLSQUARE;
+#X connect 0 0 5 0;
+#X connect 1 0 9 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 1;
+#X connect 6 0 22 1;
+#X connect 8 0 25 0;
+#X connect 9 0 11 0;
+#X connect 9 1 4 0;
+#X connect 9 2 2 0;
+#X connect 10 0 12 0;
+#X connect 11 0 22 0;
+#X connect 11 1 10 0;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 14 1;
+#X connect 16 0 19 1;
+#X connect 16 0 26 1;
+#X connect 18 0 14 0;
+#X connect 18 1 16 1;
+#X connect 18 2 19 0;
+#X connect 19 0 20 0;
+#X connect 20 1 21 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 25 0 26 0;
+#X connect 25 1 18 0;
+#X connect 26 0 27 0;
+#X connect 27 0 28 0;
+#X restore 21 36 pd singleton-communication;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
diff --git a/blosc/bltriangle~-help.pd b/blosc/bltriangle~-help.pd
new file mode 100644
index 0000000..1b03069
--- /dev/null
+++ b/blosc/bltriangle~-help.pd
@@ -0,0 +1,80 @@
+#N canvas 351 47 650 572 10;
+#X obj 31 224 *~;
+#X obj 32 253 dac~;
+#X obj 111 243 pow 2;
+#X obj 114 218 hsl 128 15 0 1 0 0 empty empty volume -2 -8 0 10 -262144
+-1 -1 0 1;
+#X obj 111 284 line~;
+#X obj 111 263 pack f 20;
+#X obj 283 212 cnv 15 350 130 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X text 290 223 synopsis:;
+#X text 289 278 inlet1: signal (frequency);
+#X text 289 298 inlet2: float (set phase);
+#X text 290 319 outlet: signal (bandlimited square at given f);
+#X obj 183 354 cnv 15 450 120 empty empty empty 20 12 0 14 -241291
+-66577 0;
+#X floatatom 262 408 7 0 0 0 - - -;
+#X text 315 410 Hz;
+#X text 194 408 border @;
+#X text 14 519 copyright by Roman Haefeli;
+#X text 14 540 published under the GNU Public License;
+#X obj 244 484 cnv 15 390 25 empty empty empty 20 12 0 14 -258699 -66577
+0;
+#X text 252 490 due to bandlimitation peaks above/below +/-1 may occur
+;
+#X obj 34 61 hsl 128 15 20 17000 1 0 empty empty frequency -2 -8 0
+10 -262144 -1 -1 3000 1;
+#X obj 31 83 pack f 100;
+#X obj 31 104 line~;
+#X msg 18 493 version 0.2.0;
+#X text 220 83 if the instance containing the tables is deleted \,
+the other instances won't work anymore. reload the patch then.;
+#X text 261 361 try different values for <number of tables>:;
+#N canvas 573 67 190 308 compute_bandlimited_range 0;
+#X msg 21 34 get_num_of_tables;
+#X obj 21 97 route num_of_tables;
+#X obj 21 12 loadbang;
+#X obj 21 128 t b f;
+#X obj 21 152 samplerate~;
+#X obj 21 174 / 2;
+#X obj 51 194 * 2;
+#X obj 51 217 + 1;
+#X obj 21 238 /;
+#X obj 21 264 outlet;
+#X obj 21 56 s BLTRIANGLE;
+#X obj 21 76 r BLTRIANGLE;
+#X connect 0 0 10 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 9 0;
+#X connect 11 0 1 0;
+#X restore 262 383 pd compute_bandlimited_range;
+#X text 219 28 if [bltriangle~] is instantiated more than once \, only
+the first instance creates the tables. if the argument value differs
+\, the biggest is taken.;
+#X text 221 129 the number of tables is at the same time the number
+of harmonics of the table with the highest number of harmonics. this
+value defines also the frequency \, below which [bltriangle~] switches
+to a raw triangle.;
+#X text 290 250 [bltriangle~ <number of tables>];
+#X text 260 431 if frequency above border -> bandlimited triangle;
+#X text 260 447 if frequency below border -> raw triangle;
+#X obj 32 151 bltriangle~ 20;
+#X connect 0 0 1 0;
+#X connect 0 0 1 1;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 1;
+#X connect 5 0 4 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 31 0;
+#X connect 25 0 12 0;
+#X connect 31 0 0 0;
diff --git a/blosc/bltriangle~.pd b/blosc/bltriangle~.pd
new file mode 100644
index 0000000..3d63937
--- /dev/null
+++ b/blosc/bltriangle~.pd
@@ -0,0 +1,357 @@
+#N canvas 203 22 341 345 10;
+#X text 130 266 copyright by Roman Haefeli;
+#X text 46 293 Published under the GNU Public License;
+#N canvas 0 0 626 647 oscilllator~ 0;
+#N canvas 314 100 514 407 number_of_harmonics_allowed 0;
+#X obj 135 68 / 2;
+#X obj 15 151 /;
+#X obj 15 174 int;
+#X obj 135 44 samplerate~;
+#X obj 15 241 * 0.5;
+#X obj 15 261 int;
+#X obj 15 282 * 2;
+#X obj 15 221 - 1;
+#X obj 15 305 + 1;
+#X obj 15 328 change;
+#X obj 15 199 change;
+#X obj 15 98 t b f;
+#X text 241 49 sr / 2 = nyquist frequency;
+#X obj 15 353 outlet;
+#X obj 14 18 inlet~;
+#X obj 15 121 f;
+#X obj 135 21 loadbang;
+#X text 119 216 harmonics never should exceed the nyquist frequency
+;
+#X obj 15 49 snapshot~;
+#X obj 78 21 bang~;
+#X obj 15 72 change;
+#X connect 0 0 15 1;
+#X connect 1 0 2 0;
+#X connect 2 0 10 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 7 0 4 0;
+#X connect 8 0 9 0;
+#X connect 9 0 13 0;
+#X connect 10 0 7 0;
+#X connect 11 0 15 0;
+#X connect 11 1 1 1;
+#X connect 14 0 18 0;
+#X connect 15 0 1 0;
+#X connect 16 0 3 0;
+#X connect 18 0 20 0;
+#X connect 19 0 18 0;
+#X connect 20 0 11 0;
+#X restore 161 113 pd number_of_harmonics_allowed;
+#X obj 40 33 inlet~;
+#X obj 39 463 outlet~;
+#X obj 177 192 * 2;
+#X obj 322 360 snapshot~;
+#X obj 161 143 t f f f;
+#X obj 218 273 == 0;
+#X obj 218 377 f;
+#X obj 218 356 sel 1;
+#X obj 270 302 change;
+#X obj 322 334 sel 1;
+#X text 33 494 number of harmononics;
+#X text 32 512 without exceeding nyquist;
+#X text 31 531 at given frequeny:;
+#X text 251 520 best method:;
+#X obj 559 178 inlet;
+#X text 565 150 phase;
+#X text 375 332 sync phase \, when switching dsp on;
+#X text 199 221 switch to raw square \, when number of allowed harmonics
+exceeds num_of_tables*2;
+#X msg 408 69 get_num_of_tables;
+#X obj 408 132 route num_of_tables;
+#X obj 408 20 loadbang;
+#X obj 40 272 phasor~;
+#X text 196 81 get the number of tables ->;
+#X text 227 496 |;
+#X text 227 505 |;
+#X text 227 514 |;
+#X text 227 523 |;
+#X text 227 533 |;
+#X text 227 542 |;
+#X text 227 551 |;
+#X text 227 560 |;
+#X text 227 567 |;
+#X text 227 576 |;
+#X text 227 585 |;
+#X text 227 594 |;
+#X text 227 604 |;
+#X text 25 541 __________________________________________________;
+#X text 25 575 __________________________________________________;
+#X obj 161 223 >;
+#X text 40 596 n > num_of_tables*2;
+#X text 32 565 0 < n < num_of_tables*2;
+#X obj 408 91 s BLTRIANGLE;
+#X obj 408 111 r BLTRIANGLE;
+#N canvas 499 174 200 210 raw_triangle 0;
+#X obj 19 13 inlet~;
+#X obj 18 159 outlet~;
+#X obj 102 18 inlet;
+#X obj 102 43 switch~;
+#X obj 43 41 *~ -1;
+#X obj 43 63 +~ 1;
+#X obj 19 86 min~;
+#X obj 18 110 *~ 4;
+#X obj 18 136 -~ 1;
+#X connect 0 0 6 0;
+#X connect 0 0 4 0;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 1 0;
+#X restore 40 411 pd raw_triangle;
+#N canvas 0 0 448 226 bandlimited_triangle 0;
+#X obj 16 31 inlet~;
+#X obj 71 33 inlet;
+#X obj 261 34 inlet;
+#X obj 17 192 outlet~;
+#X msg 71 96 set \$1;
+#X obj 261 124 switch~;
+#X obj 347 36 inlet;
+#X text 69 14 choose table;
+#X text 346 17 set phase;
+#X text 256 14 switch dsp;
+#X obj 71 71 makefilename BLTRIANGLE%d;
+#X obj 17 134 tabosc4~;
+#X connect 0 0 11 0;
+#X connect 1 0 10 0;
+#X connect 2 0 5 0;
+#X connect 4 0 11 0;
+#X connect 6 0 11 1;
+#X connect 10 0 4 0;
+#X connect 11 0 3 0;
+#X restore 166 412 pd bandlimited_triangle;
+#X text 246 563 bandlimited triangle;
+#X text 245 595 raw triangle;
+#X obj 84 247 + 0.25;
+#X obj 322 385 + 0.75;
+#X obj 408 45 del 0;
+#X connect 0 0 5 0;
+#X connect 1 0 45 0;
+#X connect 1 0 0 0;
+#X connect 1 0 22 0;
+#X connect 3 0 39 1;
+#X connect 4 0 49 0;
+#X connect 5 0 39 0;
+#X connect 5 1 7 1;
+#X connect 6 0 8 0;
+#X connect 6 0 9 0;
+#X connect 7 0 45 1;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 9 0 45 2;
+#X connect 10 0 4 0;
+#X connect 15 0 45 3;
+#X connect 15 0 48 0;
+#X connect 19 0 42 0;
+#X connect 20 0 3 0;
+#X connect 21 0 50 0;
+#X connect 22 0 44 0;
+#X connect 22 0 4 0;
+#X connect 39 0 44 1;
+#X connect 39 0 6 0;
+#X connect 43 0 20 0;
+#X connect 44 0 2 0;
+#X connect 45 0 2 0;
+#X connect 48 0 22 1;
+#X connect 49 0 45 3;
+#X connect 50 0 19 0;
+#X restore 22 168 pd oscilllator~;
+#X obj 21 137 inlet~;
+#X obj 122 137 inlet;
+#X obj 21 196 outlet~;
+#N canvas 555 327 605 504 lookup-table-creation 0;
+#X obj 15 195 until;
+#X obj 15 217 f;
+#X obj 50 217 + 1;
+#X obj 58 195 1;
+#X obj 15 238 * 2;
+#X obj 15 260 - 1;
+#X obj 80 345 pack f s;
+#X obj 15 105 t f b b;
+#X msg 136 270 clear;
+#X obj 80 317 * 10;
+#X obj 15 282 t b f f;
+#X obj 15 407 f;
+#X obj 15 474 send;
+#X msg 80 374 obj 10 \$1 table \$2 515;
+#X text 131 231 occur. ( 1 \, 3 \, 5 \, 7 \, etc.);
+#X text 282 374 create the necessary tables;
+#X text 238 439 fill each table with the appropriate sinesum \,;
+#X text 237 457 respectively the appropriate number of harmonics.;
+#X obj 131 318 makefilename BLTRIANGLE%d;
+#N canvas 535 94 364 553 bandlimited_triangle_sinesum 0;
+#X obj 43 67 until;
+#X obj 21 38 t b f b;
+#X obj 84 67 1;
+#X obj 43 99 f 1;
+#X obj 43 415 list prepend;
+#X obj 142 416 list;
+#X obj 21 444 list;
+#X obj 21 489 list trim;
+#X obj 21 16 inlet;
+#X obj 21 511 outlet;
+#X obj 21 467 list prepend sinesum 512;
+#X obj 191 274 b;
+#X obj 83 99 + 1;
+#X obj 43 175 sel 0 1;
+#X obj 43 200 0;
+#X obj 70 201 f;
+#X obj 43 125 t f f;
+#X obj 43 151 mod 2;
+#X obj 100 245 mod 4;
+#X obj 70 222 t f f;
+#X obj 100 267 sel 3;
+#X obj 136 290 b;
+#X obj 100 290 -1;
+#X obj 136 312 1;
+#X obj 70 323 pow -2;
+#X obj 70 349 *;
+#X obj 70 376 * 0.810571;
+#X text 163 375 = 8 / (pi^2);
+#X connect 0 0 3 0;
+#X connect 1 0 6 0;
+#X connect 1 1 0 0;
+#X connect 1 2 2 0;
+#X connect 1 2 11 0;
+#X connect 2 0 3 1;
+#X connect 3 0 12 0;
+#X connect 3 0 16 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 1;
+#X connect 5 0 4 1;
+#X connect 6 0 10 0;
+#X connect 7 0 9 0;
+#X connect 8 0 1 0;
+#X connect 10 0 7 0;
+#X connect 11 0 6 1;
+#X connect 11 0 4 1;
+#X connect 12 0 3 1;
+#X connect 13 0 14 0;
+#X connect 13 1 15 0;
+#X connect 14 0 4 0;
+#X connect 15 0 19 0;
+#X connect 16 0 17 0;
+#X connect 16 1 15 1;
+#X connect 17 0 13 0;
+#X connect 18 0 20 0;
+#X connect 19 0 24 0;
+#X connect 19 1 18 0;
+#X connect 20 0 22 0;
+#X connect 20 1 21 0;
+#X connect 21 0 23 0;
+#X connect 22 0 25 1;
+#X connect 23 0 25 1;
+#X connect 24 0 25 0;
+#X connect 25 0 26 0;
+#X connect 26 0 4 0;
+#X restore 15 442 pd bandlimited_triangle_sinesum;
+#X text 131 214 for synthesizing a triangle only odd numbered of harmonics
+;
+#X obj 15 16 r \$0-create_tables;
+#X obj 15 59 \$1;
+#X obj 122 142 r \$0-create_additional_tables;
+#X obj 80 410 s pd-\$0-lookup-tables-triangle;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 1;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 5 0 10 0;
+#X connect 6 0 13 0;
+#X connect 7 0 0 0;
+#X connect 7 1 3 0;
+#X connect 7 2 8 0;
+#X connect 8 0 24 0;
+#X connect 9 0 6 0;
+#X connect 10 0 11 0;
+#X connect 10 1 9 0;
+#X connect 10 2 11 1;
+#X connect 10 2 18 0;
+#X connect 11 0 19 0;
+#X connect 13 0 24 0;
+#X connect 18 0 6 1;
+#X connect 18 0 12 1;
+#X connect 19 0 12 0;
+#X connect 21 0 22 0;
+#X connect 22 0 7 0;
+#X connect 23 0 0 0;
+#X restore 21 63 pd lookup-table-creation;
+#N canvas 169 33 537 620 singleton-communication 0;
+#X obj 127 22 loadbang;
+#X obj 171 100 + 1;
+#X obj 16 96 spigot;
+#X obj 149 153 == 1;
+#X obj 127 47 t b b b;
+#X obj 270 225 \$1;
+#X obj 127 184 t b b;
+#X msg 270 246 newdollar1 \$1;
+#X obj 125 396 > \$1;
+#X obj 134 419 sel 1;
+#X obj 134 441 f;
+#X text 189 397 if new is bigger \, use new number_of_tables;
+#X obj 134 373 t f f f;
+#X obj 178 502 - \$1;
+#X obj 178 526 moses 1;
+#X obj 222 549 s \$0-create_additional_tables;
+#X obj 127 214 f;
+#X obj 127 240 sel 1;
+#X obj 127 264 s \$0-create_tables;
+#X obj 18 348 route get_num_of_tables newdollar1;
+#X obj 18 423 \$1;
+#X msg 18 461 num_of_tables \$1;
+#X obj 171 77 value BLTRIANGLE.instance;
+#X obj 149 131 value BLTRIANGLE.instance;
+#X obj 270 267 s BLTRIANGLE;
+#X obj 16 69 r BLTRIANGLE;
+#X obj 16 120 s \$0-BLTRIANGLE;
+#X obj 18 319 r \$0-BLTRIANGLE;
+#X obj 18 488 s BLTRIANGLE;
+#X connect 0 0 4 0;
+#X connect 1 0 23 0;
+#X connect 2 0 26 0;
+#X connect 3 0 2 1;
+#X connect 3 0 16 1;
+#X connect 4 0 6 0;
+#X connect 4 1 23 0;
+#X connect 4 2 22 0;
+#X connect 5 0 7 0;
+#X connect 6 0 16 0;
+#X connect 6 1 5 0;
+#X connect 7 0 24 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 1;
+#X connect 10 0 13 1;
+#X connect 10 0 20 1;
+#X connect 12 0 8 0;
+#X connect 12 1 10 1;
+#X connect 12 2 13 0;
+#X connect 13 0 14 0;
+#X connect 14 1 15 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 19 0 20 0;
+#X connect 19 1 12 0;
+#X connect 20 0 21 0;
+#X connect 21 0 28 0;
+#X connect 22 0 1 0;
+#X connect 23 0 3 0;
+#X connect 25 0 2 0;
+#X connect 27 0 19 0;
+#X restore 21 36 pd singleton-communication;
+#X msg 214 235 version 0.2.0;
+#N canvas 647 5 291 900 \$0-lookup-tables-triangle 0;
+#X restore 21 91 pd \$0-lookup-tables-triangle;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
diff --git a/cell-receive.pd b/cell-receive.pd
new file mode 100644
index 0000000..8b4aa31
--- /dev/null
+++ b/cell-receive.pd
@@ -0,0 +1,11 @@
+#N canvas 402 283 553 376 10;
+#X obj 4 5 r \$1;
+#X text 142 5 Adds this cell's value to it's neighbour's accumulation
+buffer;
+#X obj 97 70 \$2;
+#X obj 4 43 t f b;
+#X obj 4 91 tabwrite \$3cur;
+#X connect 0 0 3 0;
+#X connect 2 0 4 1;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
diff --git a/examples/controlsurface-example.pd b/examples/controlsurface-example.pd
new file mode 100644
index 0000000..9942ce2
--- /dev/null
+++ b/examples/controlsurface-example.pd
@@ -0,0 +1,8 @@
+#N canvas 271 151 450 300 10;
+#X obj 107 24 s-controlsurface;
+#X floatatom 107 5 5 0 0 0 - - -;
+#X floatatom 107 260 5 0 0 0 - - -;
+#X floatatom 316 260 5 0 0 0 - - -;
+#X connect 0 0 2 0;
+#X connect 0 1 3 0;
+#X connect 1 0 0 0;
diff --git a/examples/s-varenv-example.pd b/examples/s-varenv-example.pd
new file mode 100644
index 0000000..65df735
--- /dev/null
+++ b/examples/s-varenv-example.pd
@@ -0,0 +1,531 @@
+#N struct 1078template float x float y array 1078arrayvals 1078arraytemplate
+;
+#N struct 1078arraytemplate float x float y;
+#N canvas 351 280 523 187 10;
+#X obj 11 158 tabwrite~ view;
+#N canvas 0 0 450 300 graph3 0;
+#X array view 4410 float 3;
+#A 0 1 0.99972 0.999441 0.999161 0.998882 0.998602 0.998322 0.998043
+0.997763 0.997484 0.997204 0.996924 0.996645 0.996365 0.996086 0.995806
+0.995526 0.995247 0.994967 0.994687 0.994408 0.994128 0.993849 0.993569
+0.993289 0.99301 0.99273 0.992451 0.992171 0.991891 0.991612 0.991332
+0.991053 0.990773 0.990493 0.990214 0.989934 0.989655 0.989375 0.989095
+0.988816 0.988536 0.988257 0.987977 0.987697 0.987418 0.987138 0.986859
+0.986579 0.986299 0.98602 0.98574 0.985461 0.985181 0.984901 0.984622
+0.984342 0.984062 0.983783 0.983503 0.983224 0.982944 0.982664 0.982385
+0.982105 0.981826 0.981546 0.981266 0.980987 0.980707 0.980428 0.980148
+0.979868 0.979589 0.979309 0.97903 0.97875 0.97847 0.978191 0.977911
+0.977632 0.977352 0.977072 0.976793 0.976513 0.976234 0.975954 0.975674
+0.975395 0.975115 0.974836 0.974556 0.974276 0.973997 0.973717 0.973437
+0.973158 0.972878 0.972599 0.972319 0.972039 0.97176 0.97148 0.971201
+0.970921 0.970641 0.970362 0.970082 0.969803 0.969523 0.969243 0.968964
+0.968684 0.968405 0.968125 0.967845 0.967566 0.967286 0.967007 0.966727
+0.966447 0.966168 0.965888 0.965609 0.965329 0.965049 0.96477 0.96449
+0.964211 0.963931 0.963651 0.963372 0.963092 0.962812 0.962533 0.962253
+0.961974 0.961694 0.961414 0.961135 0.960855 0.960576 0.960296 0.960016
+0.959737 0.959457 0.959178 0.958898 0.958618 0.958339 0.958059 0.95778
+0.9575 0.95722 0.956941 0.956661 0.956382 0.956102 0.955822 0.955543
+0.955263 0.954984 0.954704 0.954424 0.954145 0.953865 0.953586 0.953306
+0.953026 0.952747 0.952467 0.952187 0.951908 0.951628 0.951349 0.951069
+0.950789 0.95051 0.95023 0.949951 0.949671 0.949391 0.949112 0.948832
+0.948553 0.948273 0.947993 0.947714 0.947434 0.947155 0.946875 0.946595
+0.946316 0.946036 0.945757 0.945477 0.945197 0.944918 0.944638 0.944359
+0.944079 0.943799 0.94352 0.94324 0.942961 0.942681 0.942401 0.942122
+0.941842 0.941562 0.941283 0.941003 0.940724 0.940444 0.940164 0.939885
+0.939605 0.939326 0.939046 0.938766 0.938487 0.938207 0.937928 0.937648
+0.937368 0.937089 0.936809 0.93653 0.93625 0.93597 0.935691 0.935411
+0.935132 0.934852 0.934572 0.934293 0.934013 0.933734 0.933454 0.933174
+0.932895 0.932615 0.932335 0.932056 0.931776 0.931497 0.931217 0.930937
+0.930658 0.930378 0.930099 0.929819 0.929539 0.92926 0.92898 0.928701
+0.928421 0.928141 0.927862 0.927582 0.927303 0.927023 0.926743 0.926464
+0.926184 0.925905 0.925625 0.925345 0.925066 0.924786 0.924507 0.924227
+0.923947 0.923668 0.923388 0.923109 0.922829 0.922549 0.92227 0.92199
+0.92171 0.921431 0.921151 0.920872 0.920592 0.920312 0.920033 0.919753
+0.919474 0.919194 0.918914 0.918635 0.918355 0.918076 0.917796 0.917516
+0.917237 0.916957 0.916678 0.916398 0.916118 0.915839 0.915559 0.91528
+0.915 0.91472 0.914441 0.914161 0.913882 0.913602 0.913322 0.913043
+0.912763 0.912484 0.912204 0.911924 0.911645 0.911365 0.911085 0.910806
+0.910526 0.910247 0.909967 0.909687 0.909408 0.909128 0.908849 0.908569
+0.908289 0.90801 0.90773 0.907451 0.907171 0.906891 0.906612 0.906332
+0.906053 0.905773 0.905493 0.905214 0.904934 0.904655 0.904375 0.904095
+0.903816 0.903536 0.903257 0.902977 0.902697 0.902418 0.902138 0.901859
+0.901579 0.901299 0.90102 0.90074 0.90046 0.900181 0.899901 0.899622
+0.899342 0.899062 0.898783 0.898503 0.898224 0.897944 0.897664 0.897385
+0.897105 0.896826 0.896546 0.896266 0.895987 0.895707 0.895428 0.895148
+0.894868 0.894589 0.894309 0.89403 0.89375 0.89347 0.893191 0.892911
+0.892632 0.892352 0.892072 0.891793 0.891513 0.891234 0.890954 0.890674
+0.890395 0.890115 0.889835 0.889556 0.889276 0.888997 0.888717 0.888437
+0.888158 0.887878 0.887599 0.887319 0.887039 0.88676 0.88648 0.886201
+0.885921 0.885641 0.885362 0.885082 0.884803 0.884523 0.884243 0.883964
+0.883684 0.883405 0.883125 0.882845 0.882566 0.882286 0.882007 0.881727
+0.881447 0.881168 0.880888 0.880608 0.880329 0.880049 0.87977 0.87949
+0.87921 0.878931 0.878651 0.878372 0.878092 0.877812 0.877533 0.877253
+0.876974 0.876694 0.876414 0.876135 0.875855 0.875576 0.875296 0.875016
+0.874737 0.874457 0.874178 0.873898 0.873618 0.873339 0.873059 0.87278
+0.8725 0.87222 0.871941 0.871661 0.871382 0.871102 0.870822 0.870543
+0.870263 0.869983 0.869704 0.869424 0.869145 0.868865 0.868585 0.868306
+0.868026 0.867747 0.867467 0.867187 0.866908 0.866628 0.866349 0.866069
+0.865789 0.86551 0.86523 0.864951 0.864671 0.864391 0.864112 0.863832
+0.863553 0.863273 0.862993 0.862714 0.862434 0.862155 0.861875 0.861595
+0.861316 0.861036 0.860757 0.860477 0.860197 0.859918 0.859638 0.859358
+0.859079 0.858799 0.85852 0.85824 0.85796 0.857681 0.857401 0.857122
+0.856842 0.856562 0.856283 0.856003 0.855724 0.855444 0.855164 0.854885
+0.854605 0.854326 0.854046 0.853766 0.853487 0.853207 0.852928 0.852648
+0.852368 0.852089 0.851809 0.85153 0.85125 0.85097 0.850691 0.850411
+0.850132 0.849852 0.849572 0.849293 0.849013 0.848733 0.848454 0.848174
+0.847895 0.847615 0.847335 0.847056 0.846776 0.846497 0.846217 0.845937
+0.845658 0.845378 0.845099 0.844819 0.844539 0.84426 0.84398 0.843701
+0.843421 0.843141 0.842862 0.842582 0.842303 0.842023 0.841743 0.841464
+0.841184 0.840905 0.840625 0.840345 0.840066 0.839786 0.839507 0.839227
+0.838947 0.838668 0.838388 0.838108 0.837829 0.837549 0.83727 0.83699
+0.83671 0.836431 0.836151 0.835872 0.835592 0.835312 0.835033 0.834753
+0.834474 0.834194 0.833914 0.833635 0.833355 0.833076 0.832796 0.832516
+0.832237 0.831957 0.831678 0.831398 0.831118 0.830839 0.830559 0.83028
+0.83 0.82972 0.829441 0.829161 0.828882 0.828602 0.828322 0.828043
+0.827763 0.827483 0.827204 0.826924 0.826645 0.826365 0.826085 0.825806
+0.825526 0.825247 0.824967 0.824687 0.824408 0.824128 0.823849 0.823569
+0.823289 0.82301 0.82273 0.822451 0.822171 0.821891 0.821612 0.821332
+0.821053 0.820773 0.820493 0.820214 0.819934 0.819655 0.819375 0.819095
+0.818816 0.818536 0.818256 0.817977 0.817697 0.817418 0.817138 0.816858
+0.816579 0.816299 0.81602 0.81574 0.81546 0.815181 0.814901 0.814622
+0.814342 0.814062 0.813783 0.813503 0.813224 0.812944 0.812664 0.812385
+0.812105 0.811826 0.811546 0.811266 0.810987 0.810707 0.810428 0.810148
+0.809868 0.809589 0.809309 0.80903 0.80875 0.80847 0.808191 0.807911
+0.807631 0.807352 0.807072 0.806793 0.806513 0.806233 0.805954 0.805674
+0.805395 0.805115 0.804835 0.804556 0.804276 0.803997 0.803717 0.803437
+0.803158 0.802878 0.802599 0.802319 0.802039 0.80176 0.80148 0.801201
+0.800921 0.800641 0.800362 0.800082 0.799803 0.799523 0.799243 0.798964
+0.798684 0.798405 0.798125 0.797845 0.797566 0.797286 0.797006 0.796727
+0.796447 0.796168 0.795888 0.795608 0.795329 0.795049 0.79477 0.79449
+0.79421 0.793931 0.793651 0.793372 0.793092 0.792812 0.792533 0.792253
+0.791974 0.791694 0.791414 0.791135 0.790855 0.790576 0.790296 0.790016
+0.789737 0.789457 0.789178 0.788898 0.788618 0.788339 0.788059 0.78778
+0.7875 0.78722 0.786941 0.786661 0.786381 0.786102 0.785822 0.785543
+0.785263 0.784983 0.784704 0.784424 0.784145 0.783865 0.783585 0.783306
+0.783026 0.782747 0.782467 0.782187 0.781908 0.781628 0.781349 0.781069
+0.780789 0.78051 0.78023 0.779951 0.779671 0.779391 0.779112 0.778832
+0.778553 0.778273 0.777993 0.777714 0.777434 0.777155 0.776875 0.776595
+0.776316 0.776036 0.775756 0.775477 0.775197 0.774918 0.774638 0.774358
+0.774079 0.773799 0.77352 0.77324 0.77296 0.772681 0.772401 0.772122
+0.771842 0.771562 0.771283 0.771003 0.770724 0.770444 0.770164 0.769885
+0.769605 0.769326 0.769046 0.768766 0.768487 0.768207 0.767928 0.767648
+0.767368 0.767089 0.766809 0.76653 0.76625 0.76597 0.765691 0.765411
+0.765131 0.764852 0.764572 0.764293 0.764013 0.763733 0.763454 0.763174
+0.762895 0.762615 0.762335 0.762056 0.761776 0.761497 0.761217 0.760937
+0.760658 0.760378 0.760099 0.759819 0.759539 0.75926 0.75898 0.758701
+0.758421 0.758141 0.757862 0.757582 0.757303 0.757023 0.756743 0.756464
+0.756184 0.755904 0.755625 0.755345 0.755066 0.754786 0.754506 0.754227
+0.753947 0.753668 0.753388 0.753108 0.752829 0.752549 0.75227 0.75199
+0.75171 0.751431 0.751151 0.750872 0.750592 0.750312 0.750033 0.749753
+0.749474 0.749194 0.748914 0.748635 0.748355 0.748076 0.747796 0.747516
+0.747237 0.746957 0.746678 0.746398 0.746118 0.745839 0.745559 0.745279
+0.745 0.74472 0.744441 0.744161 0.743881 0.743602 0.743322 0.743043
+0.742763 0.742483 0.742204 0.741924 0.741645 0.741365 0.741085 0.740806
+0.740526 0.740247 0.739967 0.739687 0.739408 0.739128 0.738849 0.738569
+0.738289 0.73801 0.73773 0.737451 0.737171 0.736891 0.736612 0.736332
+0.736053 0.735773 0.735493 0.735214 0.734934 0.734654 0.734375 0.734095
+0.733816 0.733536 0.733256 0.732977 0.732697 0.732418 0.732138 0.731858
+0.731579 0.731299 0.73102 0.73074 0.73046 0.730181 0.729901 0.729622
+0.729342 0.729062 0.728783 0.728503 0.728224 0.727944 0.727664 0.727385
+0.727105 0.726826 0.726546 0.726266 0.725987 0.725707 0.725428 0.725148
+0.724868 0.724589 0.724309 0.724029 0.72375 0.72347 0.723191 0.722911
+0.722631 0.722352 0.722072 0.721793 0.721513 0.721233 0.720954 0.720674
+;
+#A 1000 0.720395 0.720115 0.719835 0.719556 0.719276 0.718997 0.718717
+0.718437 0.718158 0.717878 0.717599 0.717319 0.717039 0.71676 0.71648
+0.716201 0.715921 0.715641 0.715362 0.715082 0.714803 0.714523 0.714243
+0.713964 0.713684 0.713404 0.713125 0.712845 0.712566 0.712286 0.712006
+0.711727 0.711447 0.711168 0.710888 0.710608 0.710329 0.710049 0.70977
+0.70949 0.70921 0.708931 0.708651 0.708372 0.708092 0.707812 0.707533
+0.707253 0.706974 0.706694 0.706414 0.706135 0.705855 0.705576 0.705296
+0.705016 0.704737 0.704457 0.704177 0.703898 0.703618 0.703339 0.703059
+0.702779 0.7025 0.70222 0.701941 0.701661 0.701381 0.701102 0.700822
+0.700543 0.700263 0.699983 0.699704 0.699424 0.699145 0.698865 0.698585
+0.698306 0.698026 0.697747 0.697467 0.697187 0.696908 0.696628 0.696349
+0.696069 0.695789 0.69551 0.69523 0.694951 0.694671 0.694391 0.694112
+0.693832 0.693552 0.693273 0.692993 0.692714 0.692434 0.692154 0.691875
+0.691595 0.691316 0.691036 0.690756 0.690477 0.690197 0.689918 0.689638
+0.689358 0.689079 0.688799 0.68852 0.68824 0.68796 0.687681 0.687401
+0.687122 0.686842 0.686562 0.686283 0.686003 0.685724 0.685444 0.685164
+0.684885 0.684605 0.684326 0.684046 0.683766 0.683487 0.683207 0.682927
+0.682648 0.682368 0.682089 0.681809 0.681529 0.68125 0.68097 0.680691
+0.680411 0.680131 0.679852 0.679572 0.679293 0.679013 0.678733 0.678454
+0.678174 0.677895 0.677615 0.677335 0.677056 0.676776 0.676497 0.676217
+0.675937 0.675658 0.675378 0.675099 0.674819 0.674539 0.67426 0.67398
+0.673701 0.673421 0.673141 0.672862 0.672582 0.672302 0.672023 0.671743
+0.671464 0.671184 0.670904 0.670625 0.670345 0.670066 0.669786 0.669506
+0.669227 0.668947 0.668668 0.668388 0.668108 0.667829 0.667549 0.66727
+0.66699 0.66671 0.666431 0.666151 0.665872 0.665592 0.665312 0.665033
+0.664753 0.664474 0.664194 0.663914 0.663635 0.663355 0.663076 0.662796
+0.662516 0.662237 0.661957 0.661677 0.661398 0.661118 0.660839 0.660559
+0.660279 0.66 0.65972 0.659441 0.659161 0.658881 0.658602 0.658322
+0.658043 0.657763 0.657483 0.657204 0.656924 0.656645 0.656365 0.656085
+0.655806 0.655526 0.655247 0.654967 0.654687 0.654408 0.654128 0.653849
+0.653569 0.653289 0.65301 0.65273 0.652451 0.652171 0.651891 0.651612
+0.651332 0.651052 0.650773 0.650493 0.650214 0.649934 0.649654 0.649375
+0.649095 0.648816 0.648536 0.648256 0.647977 0.647697 0.647418 0.647138
+0.646858 0.646579 0.646299 0.64602 0.64574 0.64546 0.645181 0.644901
+0.644622 0.644342 0.644062 0.643783 0.643503 0.643224 0.642944 0.642664
+0.642385 0.642105 0.641825 0.641546 0.641266 0.640987 0.640707 0.640427
+0.640148 0.639868 0.639589 0.639309 0.639029 0.63875 0.63847 0.638191
+0.637911 0.637631 0.637352 0.637072 0.636793 0.636513 0.636233 0.635954
+0.635674 0.635395 0.635115 0.634835 0.634556 0.634276 0.633997 0.633717
+0.633437 0.633158 0.632878 0.632599 0.632319 0.632039 0.63176 0.63148
+0.6312 0.630921 0.630641 0.630362 0.630082 0.629802 0.629523 0.629243
+0.628964 0.628684 0.628404 0.628125 0.627845 0.627566 0.627286 0.627006
+0.626727 0.626447 0.626168 0.625888 0.625608 0.625329 0.625049 0.62477
+0.62449 0.62421 0.623931 0.623651 0.623372 0.623092 0.622812 0.622533
+0.622253 0.621974 0.621694 0.621414 0.621135 0.620855 0.620575 0.620296
+0.620016 0.619737 0.619457 0.619177 0.618898 0.618618 0.618339 0.618059
+0.617779 0.6175 0.61722 0.616941 0.616661 0.616381 0.616102 0.615822
+0.615543 0.615263 0.614983 0.614704 0.614424 0.614145 0.613865 0.613585
+0.613306 0.613026 0.612747 0.612467 0.612187 0.611908 0.611628 0.611349
+0.611069 0.610789 0.61051 0.61023 0.60995 0.609671 0.609391 0.609112
+0.608832 0.608552 0.608273 0.607993 0.607714 0.607434 0.607154 0.606875
+0.606595 0.606316 0.606036 0.605756 0.605477 0.605197 0.604918 0.604638
+0.604358 0.604079 0.603799 0.60352 0.60324 0.60296 0.602681 0.602401
+0.602122 0.601842 0.601562 0.601283 0.601003 0.600724 0.600444 0.600164
+0.599885 0.599605 0.599325 0.599046 0.598766 0.598487 0.598207 0.597927
+0.597648 0.597368 0.597089 0.596809 0.596529 0.59625 0.59597 0.595691
+0.595411 0.595131 0.594852 0.594572 0.594293 0.594013 0.593733 0.593454
+0.593174 0.592895 0.592615 0.592335 0.592056 0.591776 0.591497 0.591217
+0.590937 0.590658 0.590378 0.590099 0.589819 0.589539 0.58926 0.58898
+0.5887 0.588421 0.588141 0.587862 0.587582 0.587302 0.587023 0.586743
+0.586464 0.586184 0.585904 0.585625 0.585345 0.585066 0.584786 0.584506
+0.584227 0.583947 0.583668 0.583388 0.583108 0.582829 0.582549 0.58227
+0.58199 0.58171 0.581431 0.581151 0.580872 0.580592 0.580312 0.580033
+0.579753 0.579473 0.579194 0.578914 0.578635 0.578355 0.578075 0.577796
+0.577516 0.577237 0.576957 0.576677 0.576398 0.576118 0.575839 0.575559
+0.575279 0.575 0.57472 0.574441 0.574161 0.573881 0.573602 0.573322
+0.573043 0.572763 0.572483 0.572204 0.571924 0.571645 0.571365 0.571085
+0.570806 0.570526 0.570247 0.569967 0.569687 0.569408 0.569128 0.568848
+0.568569 0.568289 0.56801 0.56773 0.56745 0.567171 0.566891 0.566612
+0.566332 0.566052 0.565773 0.565493 0.565214 0.564934 0.564654 0.564375
+0.564095 0.563816 0.563536 0.563256 0.562977 0.562697 0.562418 0.562138
+0.561858 0.561579 0.561299 0.56102 0.56074 0.56046 0.560181 0.559901
+0.559622 0.559342 0.559062 0.558783 0.558503 0.558223 0.557944 0.557664
+0.557385 0.557105 0.556825 0.556546 0.556266 0.555987 0.555707 0.555427
+0.555148 0.554868 0.554589 0.554309 0.554029 0.55375 0.55347 0.553191
+0.552911 0.552631 0.552352 0.552072 0.551793 0.551513 0.551233 0.550954
+0.550674 0.550395 0.550115 0.549835 0.549556 0.549276 0.548997 0.548717
+0.548437 0.548158 0.547878 0.547598 0.547319 0.547039 0.54676 0.54648
+0.5462 0.545921 0.545641 0.545362 0.545082 0.544802 0.544523 0.544243
+0.543964 0.543684 0.543404 0.543125 0.542845 0.542566 0.542286 0.542006
+0.541727 0.541447 0.541168 0.540888 0.540608 0.540329 0.540049 0.53977
+0.53949 0.53921 0.538931 0.538651 0.538372 0.538092 0.537812 0.537533
+0.537253 0.536973 0.536694 0.536414 0.536135 0.535855 0.535575 0.535296
+0.535016 0.534737 0.534457 0.534177 0.533898 0.533618 0.533339 0.533059
+0.532779 0.5325 0.53222 0.531941 0.531661 0.531381 0.531102 0.530822
+0.530543 0.530263 0.529983 0.529704 0.529424 0.529145 0.528865 0.528585
+0.528306 0.528026 0.527746 0.527467 0.527187 0.526908 0.526628 0.526348
+0.526069 0.525789 0.52551 0.52523 0.52495 0.524671 0.524391 0.524112
+0.523832 0.523552 0.523273 0.522993 0.522714 0.522434 0.522154 0.521875
+0.521595 0.521316 0.521036 0.520756 0.520477 0.520197 0.519918 0.519638
+0.519358 0.519079 0.518799 0.51852 0.51824 0.51796 0.517681 0.517401
+0.517121 0.516842 0.516562 0.516283 0.516003 0.515723 0.515444 0.515164
+0.514885 0.514605 0.514325 0.514046 0.513766 0.513487 0.513207 0.512927
+0.512648 0.512368 0.512089 0.511809 0.511529 0.51125 0.51097 0.510691
+0.510411 0.510131 0.509852 0.509572 0.509293 0.509013 0.508733 0.508454
+0.508174 0.507895 0.507615 0.507335 0.507056 0.506776 0.506496 0.506217
+0.505937 0.505658 0.505378 0.505098 0.504819 0.504539 0.50426 0.50398
+0.5037 0.503421 0.503141 0.502862 0.502582 0.502302 0.502023 0.501743
+0.501464 0.501184 0.500904 0.500625 0.500345 0.500066 0.499786 0.499506
+0.499227 0.498947 0.498668 0.498388 0.498108 0.497829 0.497549 0.49727
+0.49699 0.49671 0.496431 0.496151 0.495871 0.495592 0.495312 0.495033
+0.494753 0.494473 0.494194 0.493914 0.493635 0.493355 0.493075 0.492796
+0.492516 0.492237 0.491957 0.491677 0.491398 0.491118 0.490839 0.490559
+0.490279 0.49 0.48972 0.489441 0.489161 0.488881 0.488602 0.488322
+0.488043 0.487763 0.487483 0.487204 0.486924 0.486645 0.486365 0.486085
+0.485806 0.485526 0.485246 0.484967 0.484687 0.484408 0.484128 0.483848
+0.483569 0.483289 0.48301 0.48273 0.48245 0.482171 0.481891 0.481612
+0.481332 0.481052 0.480773 0.480493 0.480214 0.479934 0.479654 0.479375
+0.479095 0.478816 0.478536 0.478256 0.477977 0.477697 0.477418 0.477138
+0.476858 0.476579 0.476299 0.47602 0.47574 0.47546 0.475181 0.474901
+0.474621 0.474342 0.474062 0.473783 0.473503 0.473223 0.472944 0.472664
+0.472385 0.472105 0.471825 0.471546 0.471266 0.470987 0.470707 0.470427
+0.470148 0.469868 0.469589 0.469309 0.469029 0.46875 0.46847 0.468191
+0.467911 0.467631 0.467352 0.467072 0.466793 0.466513 0.466233 0.465954
+0.465674 0.465394 0.465115 0.464835 0.464556 0.464276 0.463996 0.463717
+0.463437 0.463158 0.462878 0.462598 0.462319 0.462039 0.46176 0.46148
+0.4612 0.460921 0.460641 0.460362 0.460082 0.459802 0.459523 0.459243
+0.458964 0.458684 0.458404 0.458125 0.457845 0.457566 0.457286 0.457006
+0.456727 0.456447 0.456168 0.455888 0.455608 0.455329 0.455049 0.454769
+0.45449 0.45421 0.453931 0.453651 0.453371 0.453092 0.452812 0.452533
+0.452253 0.451973 0.451694 0.451414 0.451135 0.450855 0.450575 0.450296
+0.450016 0.449737 0.449457 0.449177 0.448898 0.448618 0.448339 0.448059
+0.447779 0.4475 0.44722 0.446941 0.446661 0.446381 0.446102 0.445822
+0.445543 0.445263 0.444983 0.444704 0.444424 0.444144 0.443865 0.443585
+0.443306 0.443026 0.442746 0.442467 0.442187 0.441908 0.441628 0.441348
+0.441069;
+#A 2000 0.440789 0.44051 0.44023 0.43995 0.439671 0.439391 0.439112
+0.438832 0.438552 0.438273 0.437993 0.437714 0.437434 0.437154 0.436875
+0.436595 0.436316 0.436036 0.435756 0.435477 0.435197 0.434918 0.434638
+0.434358 0.434079 0.433799 0.433519 0.43324 0.43296 0.432681 0.432401
+0.432121 0.431842 0.431562 0.431283 0.431003 0.430723 0.430444 0.430164
+0.429885 0.429605 0.429325 0.429046 0.428766 0.428487 0.428207 0.427927
+0.427648 0.427368 0.427089 0.426809 0.426529 0.42625 0.42597 0.425691
+0.425411 0.425131 0.424852 0.424572 0.424293 0.424013 0.423733 0.423454
+0.423174 0.422894 0.422615 0.422335 0.422056 0.421776 0.421496 0.421217
+0.420937 0.420658 0.420378 0.420098 0.419819 0.419539 0.41926 0.41898
+0.4187 0.418421 0.418141 0.417862 0.417582 0.417302 0.417023 0.416743
+0.416464 0.416184 0.415904 0.415625 0.415345 0.415066 0.414786 0.414506
+0.414227 0.413947 0.413668 0.413388 0.413108 0.412829 0.412549 0.412269
+0.41199 0.41171 0.411431 0.411151 0.410871 0.410592 0.410312 0.410033
+0.409753 0.409473 0.409194 0.408914 0.408635 0.408355 0.408075 0.407796
+0.407516 0.407237 0.406957 0.406677 0.406398 0.406118 0.405839 0.405559
+0.405279 0.405 0.40472 0.404441 0.404161 0.403881 0.403602 0.403322
+0.403042 0.402763 0.402483 0.402204 0.401924 0.401644 0.401365 0.401085
+0.400806 0.400526 0.400246 0.399967 0.399687 0.399408 0.399128 0.398848
+0.398569 0.398289 0.39801 0.39773 0.39745 0.397171 0.396891 0.396612
+0.396332 0.396052 0.395773 0.395493 0.395214 0.394934 0.394654 0.394375
+0.394095 0.393816 0.393536 0.393256 0.392977 0.392697 0.392417 0.392138
+0.391858 0.391579 0.391299 0.391019 0.39074 0.39046 0.390181 0.389901
+0.389621 0.389342 0.389062 0.388783 0.388503 0.388223 0.387944 0.387664
+0.387385 0.387105 0.386825 0.386546 0.386266 0.385987 0.385707 0.385427
+0.385148 0.384868 0.384589 0.384309 0.384029 0.38375 0.38347 0.383191
+0.382911 0.382631 0.382352 0.382072 0.381792 0.381513 0.381233 0.380954
+0.380674 0.380394 0.380115 0.379835 0.379556 0.379276 0.378996 0.378717
+0.378437 0.378158 0.377878 0.377598 0.377319 0.377039 0.37676 0.37648
+0.3762 0.375921 0.375641 0.375362 0.375082 0.374802 0.374523 0.374243
+0.373964 0.373684 0.373404 0.373125 0.372845 0.372566 0.372286 0.372006
+0.371727 0.371447 0.371167 0.370888 0.370608 0.370329 0.370049 0.369769
+0.36949 0.36921 0.368931 0.368651 0.368371 0.368092 0.367812 0.367533
+0.367253 0.366973 0.366694 0.366414 0.366135 0.365855 0.365575 0.365296
+0.365016 0.364737 0.364457 0.364177 0.363898 0.363618 0.363339 0.363059
+0.362779 0.3625 0.36222 0.361941 0.361661 0.361381 0.361102 0.360822
+0.360542 0.360263 0.359983 0.359704 0.359424 0.359144 0.358865 0.358585
+0.358306 0.358026 0.357746 0.357467 0.357187 0.356908 0.356628 0.356348
+0.356069 0.355789 0.35551 0.35523 0.35495 0.354671 0.354391 0.354112
+0.353832 0.353552 0.353273 0.352993 0.352714 0.352434 0.352154 0.351875
+0.351595 0.351315 0.351036 0.350756 0.350477 0.350197 0.349917 0.349638
+0.349358 0.349079 0.348799 0.348519 0.34824 0.34796 0.347681 0.347401
+0.347121 0.346842 0.346562 0.346283 0.346003 0.345723 0.345444 0.345164
+0.344885 0.344605 0.344325 0.344046 0.343766 0.343487 0.343207 0.342927
+0.342648 0.342368 0.342089 0.341809 0.341529 0.34125 0.34097 0.34069
+0.340411 0.340131 0.339852 0.339572 0.339292 0.339013 0.338733 0.338454
+0.338174 0.337894 0.337615 0.337335 0.337056 0.336776 0.336496 0.336217
+0.335937 0.335658 0.335378 0.335098 0.334819 0.334539 0.33426 0.33398
+0.3337 0.333421 0.333141 0.332862 0.332582 0.332302 0.332023 0.331743
+0.331464 0.331184 0.330904 0.330625 0.330345 0.330065 0.329786 0.329506
+0.329227 0.328947 0.328667 0.328388 0.328108 0.327829 0.327549 0.327269
+0.32699 0.32671 0.326431 0.326151 0.325871 0.325592 0.325312 0.325033
+0.324753 0.324473 0.324194 0.323914 0.323635 0.323355 0.323075 0.322796
+0.322516 0.322237 0.321957 0.321677 0.321398 0.321118 0.320839 0.320559
+0.320279 0.32 0.320069 0.320139 0.320208 0.320277 0.320347 0.320416
+0.320486 0.320555 0.320625 0.320694 0.320764 0.320833 0.320902 0.320972
+0.321041 0.321111 0.32118 0.32125 0.321319 0.321389 0.321458 0.321527
+0.321597 0.321666 0.321736 0.321805 0.321875 0.321944 0.322014 0.322083
+0.322152 0.322222 0.322291 0.322361 0.32243 0.3225 0.322569 0.322639
+0.322708 0.322778 0.322847 0.322916 0.322986 0.323055 0.323125 0.323194
+0.323264 0.323333 0.323402 0.323472 0.323541 0.323611 0.32368 0.32375
+0.323819 0.323889 0.323958 0.324028 0.324097 0.324166 0.324236 0.324305
+0.324375 0.324444 0.324514 0.324583 0.324653 0.324722 0.324791 0.324861
+0.32493 0.325 0.325069 0.325139 0.325208 0.325278 0.325347 0.325416
+0.325486 0.325555 0.325625 0.325694 0.325764 0.325833 0.325903 0.325972
+0.326041 0.326111 0.32618 0.32625 0.326319 0.326389 0.326458 0.326528
+0.326597 0.326666 0.326736 0.326805 0.326875 0.326944 0.327014 0.327083
+0.327153 0.327222 0.327291 0.327361 0.32743 0.3275 0.327569 0.327639
+0.327708 0.327778 0.327847 0.327916 0.327986 0.328055 0.328125 0.328194
+0.328264 0.328333 0.328403 0.328472 0.328541 0.328611 0.32868 0.32875
+0.328819 0.328889 0.328958 0.329028 0.329097 0.329166 0.329236 0.329305
+0.329375 0.329444 0.329514 0.329583 0.329653 0.329722 0.329791 0.329861
+0.32993 0.33 0.330069 0.330139 0.330208 0.330278 0.330347 0.330416
+0.330486 0.330555 0.330625 0.330694 0.330764 0.330833 0.330903 0.330972
+0.331041 0.331111 0.33118 0.33125 0.331319 0.331389 0.331458 0.331528
+0.331597 0.331666 0.331736 0.331805 0.331875 0.331944 0.332014 0.332083
+0.332153 0.332222 0.332291 0.332361 0.33243 0.3325 0.332569 0.332639
+0.332708 0.332778 0.332847 0.332916 0.332986 0.333055 0.333125 0.333194
+0.333264 0.333333 0.333403 0.333472 0.333541 0.333611 0.33368 0.33375
+0.333819 0.333889 0.333958 0.334028 0.334097 0.334166 0.334236 0.334305
+0.334375 0.334444 0.334514 0.334583 0.334653 0.334722 0.334791 0.334861
+0.33493 0.335 0.335069 0.335139 0.335208 0.335278 0.335347 0.335416
+0.335486 0.335555 0.335625 0.335694 0.335764 0.335833 0.335903 0.335972
+0.336041 0.336111 0.33618 0.33625 0.336319 0.336389 0.336458 0.336528
+0.336597 0.336666 0.336736 0.336805 0.336875 0.336944 0.337014 0.337083
+0.337153 0.337222 0.337292 0.337361 0.33743 0.3375 0.337569 0.337639
+0.337708 0.337778 0.337847 0.337916 0.337986 0.338055 0.338125 0.338194
+0.338264 0.338333 0.338403 0.338472 0.338542 0.338611 0.33868 0.33875
+0.338819 0.338889 0.338958 0.339028 0.339097 0.339167 0.339236 0.339305
+0.339375 0.339444 0.339514 0.339583 0.339653 0.339722 0.339792 0.339861
+0.33993 0.34 0.340069 0.340139 0.340208 0.340278 0.340347 0.340417
+0.340486 0.340555 0.340625 0.340694 0.340764 0.340833 0.340903 0.340972
+0.341042 0.341111 0.34118 0.34125 0.341319 0.341389 0.341458 0.341528
+0.341597 0.341667 0.341736 0.341805 0.341875 0.341944 0.342014 0.342083
+0.342153 0.342222 0.342292 0.342361 0.34243 0.3425 0.342569 0.342639
+0.342708 0.342778 0.342847 0.342917 0.342986 0.343055 0.343125 0.343194
+0.343264 0.343333 0.343403 0.343472 0.343542 0.343611 0.34368 0.34375
+0.343819 0.343889 0.343958 0.344028 0.344097 0.344167 0.344236 0.344305
+0.344375 0.344444 0.344514 0.344583 0.344653 0.344722 0.344792 0.344861
+0.34493 0.345 0.345069 0.345139 0.345208 0.345278 0.345347 0.345417
+0.345486 0.345555 0.345625 0.345694 0.345764 0.345833 0.345903 0.345972
+0.346042 0.346111 0.34618 0.34625 0.346319 0.346389 0.346458 0.346528
+0.346597 0.346667 0.346736 0.346805 0.346875 0.346944 0.347014 0.347083
+0.347153 0.347222 0.347292 0.347361 0.34743 0.3475 0.347569 0.347639
+0.347708 0.347778 0.347847 0.347917 0.347986 0.348055 0.348125 0.348194
+0.348264 0.348333 0.348403 0.348472 0.348542 0.348611 0.34868 0.34875
+0.348819 0.348889 0.348958 0.349028 0.349097 0.349167 0.349236 0.349305
+0.349375 0.349444 0.349514 0.349583 0.349653 0.349722 0.349792 0.349861
+0.34993 0.35 0.350069 0.350139 0.350208 0.350278 0.350347 0.350417
+0.350486 0.350555 0.350625 0.350694 0.350764 0.350833 0.350903 0.350972
+0.351042 0.351111 0.35118 0.35125 0.351319 0.351389 0.351458 0.351528
+0.351597 0.351667 0.351736 0.351806 0.351875 0.351944 0.352014 0.352083
+0.352153 0.352222 0.352292 0.352361 0.352431 0.3525 0.352569 0.352639
+0.352708 0.352778 0.352847 0.352917 0.352986 0.353056 0.353125 0.353194
+0.353264 0.353333 0.353403 0.353472 0.353542 0.353611 0.353681 0.35375
+0.353819 0.353889 0.353958 0.354028 0.354097 0.354167 0.354236 0.354306
+0.354375 0.354444 0.354514 0.354583 0.354653 0.354722 0.354792 0.354861
+0.354931 0.355 0.355069 0.355139 0.355208 0.355278 0.355347 0.355417
+0.355486 0.355556 0.355625 0.355694 0.355764 0.355833 0.355903 0.355972
+0.356042 0.356111 0.356181 0.35625 0.356319 0.356389 0.356458 0.356528
+0.356597 0.356667 0.356736 0.356806 0.356875 0.356944 0.357014 0.357083
+0.357153 0.357222 0.357292 0.357361 0.357431 0.3575 0.357569 0.357639
+0.357708 0.357778 0.357847 0.357917 0.357986 0.358056 0.358125 0.358194
+0.358264 0.358333 0.358403 0.358472 0.358542 0.358611 0.358681 0.35875
+0.358819 0.358889 0.358958 0.359028 0.359097 0.359167 0.359236 0.359306
+0.359375;
+#A 3000 0.359444 0.359514 0.359583 0.359653 0.359722 0.359792 0.359861
+0.359931 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36
+0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36
+0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36
+0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36
+0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.36 0.359625 0.35925
+0.358875 0.3585 0.358125 0.35775 0.357375 0.357 0.356625 0.35625 0.355875
+0.3555 0.355125 0.35475 0.354375 0.354 0.353625 0.35325 0.352875 0.3525
+0.352125 0.35175 0.351375 0.351 0.350625 0.35025 0.349875 0.3495 0.349125
+0.34875 0.348375 0.348 0.347625 0.34725 0.346875 0.3465 0.346125 0.34575
+0.345375 0.345 0.344625 0.34425 0.343875 0.3435 0.343125 0.34275 0.342375
+0.342 0.341625 0.34125 0.340875 0.3405 0.340125 0.33975 0.339375 0.339
+0.338625 0.33825 0.337875 0.3375 0.337125 0.33675 0.336375 0.336 0.335625
+0.33525 0.334875 0.3345 0.334125 0.33375 0.333375 0.333 0.332625 0.33225
+0.331875 0.3315 0.331125 0.33075 0.330375 0.33 0.329625 0.32925 0.328875
+0.3285 0.328125 0.32775 0.327375 0.327 0.326625 0.32625 0.325875 0.3255
+0.325125 0.32475 0.324375 0.324 0.323625 0.32325 0.322875 0.3225 0.322125
+0.32175 0.321375 0.321 0.320625 0.32025 0.319875 0.3195 0.319125 0.31875
+0.318375 0.318 0.317625 0.31725 0.316875 0.3165 0.316125 0.31575 0.315375
+0.315 0.314625 0.31425 0.313875 0.3135 0.313125 0.31275 0.312375 0.312
+0.311625 0.31125 0.310875 0.3105 0.310125 0.30975 0.309375 0.309 0.308625
+0.30825 0.307875 0.3075 0.307125 0.30675 0.306375 0.306 0.305625 0.30525
+0.304875 0.3045 0.304125 0.30375 0.303375 0.303 0.302625 0.30225 0.301875
+0.3015 0.301125 0.30075 0.300375 0.3 0.299625 0.29925 0.298875 0.2985
+0.298125 0.29775 0.297375 0.297 0.296625 0.29625 0.295875 0.2955 0.295125
+0.29475 0.294375 0.294 0.293625 0.29325 0.292875 0.2925 0.292125 0.29175
+0.291375 0.291 0.290625 0.29025 0.289875 0.2895 0.289125 0.28875 0.288375
+0.288 0.287625 0.28725 0.286875 0.2865 0.286125 0.28575 0.285375 0.285
+0.284625 0.28425 0.283875 0.2835 0.283125 0.28275 0.282375 0.282 0.281625
+0.28125 0.280875 0.2805 0.280125 0.27975 0.279375 0.279 0.278625 0.27825
+0.277875 0.2775 0.277125 0.27675 0.276375 0.276 0.275625 0.27525 0.274875
+0.2745 0.274125 0.27375 0.273375 0.273 0.272625 0.27225 0.271875 0.2715
+0.271125 0.27075 0.270375 0.27 0.269625 0.26925 0.268875 0.2685 0.268125
+0.26775 0.267375 0.267 0.266625 0.26625 0.265875 0.2655 0.265125 0.26475
+0.264375 0.264 0.263625 0.26325 0.262875 0.2625 0.262125 0.26175 0.261375
+0.261 0.260625 0.26025 0.259875 0.2595 0.259125 0.25875 0.258375 0.258
+0.257625 0.25725 0.256875 0.2565 0.256125 0.25575 0.255375 0.255 0.254625
+0.25425 0.253875 0.2535 0.253125 0.25275 0.252375 0.252 0.251625 0.25125
+0.250875 0.2505 0.250125 0.24975 0.249375 0.249 0.248625 0.24825 0.247875
+0.2475 0.247125 0.24675 0.246375 0.246 0.245625 0.24525 0.244875 0.2445
+0.244125 0.24375 0.243375 0.243 0.242625 0.24225 0.241875 0.2415 0.241125
+0.24075 0.240375 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24
+0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.24 0.245
+0.25 0.255 0.26 0.265 0.27 0.275 0.28 0.285 0.29 0.295 0.3 0.305 0.31
+0.315 0.32 0.325 0.33 0.335 0.34 0.345 0.35 0.355 0.36 0.365 0.37 0.375
+0.38 0.385 0.39 0.395 0.4 0.405 0.41 0.415 0.42 0.425 0.43 0.435 0.44
+0.445 0.45 0.455 0.46 0.465 0.47 0.475 0.48 0.485 0.49 0.495 0.5 0.505
+0.51 0.515 0.52 0.525 0.53 0.535 0.54 0.545 0.55 0.555 0.56 0.558906
+0.557813 0.556719 0.555625 0.554531 0.553438 0.552344 0.55125 0.550156
+0.549062 0.547969 0.546875 0.545781 0.544688 0.543594 0.5425 0.541406
+0.540313 0.539219 0.538125 0.537031 0.535937 0.534844 0.53375 0.532656
+0.531563 0.530469 0.529375 0.528281 0.527188 0.526094;
+#A 4000 0.525 0.523906 0.522812 0.521719 0.520625 0.519531 0.518438
+0.517344 0.51625 0.515156 0.514063 0.512969 0.511875 0.510781 0.509687
+0.508594 0.5075 0.506406 0.505313 0.504219 0.503125 0.502031 0.500938
+0.499844 0.49875 0.497656 0.496563 0.495469 0.494375 0.493281 0.492188
+0.491094 0.49 0.488906 0.487813 0.486719 0.485625 0.484531 0.483438
+0.482344 0.48125 0.480156 0.479062 0.477969 0.476875 0.475781 0.474688
+0.473594 0.4725 0.471406 0.470313 0.469219 0.468125 0.467031 0.465937
+0.464844 0.46375 0.462656 0.461563 0.460469 0.459375 0.458281 0.457188
+0.456094 0.455 0.453906 0.452813 0.451719 0.450625 0.449531 0.448438
+0.447344 0.44625 0.445156 0.444063 0.442969 0.441875 0.440781 0.439688
+0.438594 0.4375 0.436406 0.435313 0.434219 0.433125 0.432031 0.430937
+0.429844 0.42875 0.427656 0.426563 0.425469 0.424375 0.423281 0.422188
+0.421094 0.42 0.418906 0.417813 0.416719 0.415625 0.414531 0.413438
+0.412344 0.41125 0.410156 0.409063 0.407969 0.406875 0.405781 0.404688
+0.403594 0.4025 0.401406 0.400313 0.399219 0.398125 0.397031 0.395938
+0.394844 0.39375 0.392656 0.391563 0.390469 0.389375 0.388281 0.387188
+0.386094 0.385 0.383906 0.382813 0.381719 0.380625 0.379531 0.378438
+0.377344 0.37625 0.375156 0.374063 0.372969 0.371875 0.370781 0.369688
+0.368594 0.3675 0.366406 0.365313 0.364219 0.363125 0.362031 0.360938
+0.359844 0.35875 0.357656 0.356563 0.355469 0.354375 0.353281 0.352188
+0.351094 0.35 0.348906 0.347813 0.346719 0.345625 0.344531 0.343438
+0.342344 0.34125 0.340156 0.339063 0.337969 0.336875 0.335781 0.334688
+0.333594 0.3325 0.331406 0.330313 0.329219 0.328125 0.327031 0.325938
+0.324844 0.32375 0.322656 0.321563 0.320469 0.319375 0.318281 0.317188
+0.316094 0.315 0.313906 0.312813 0.311719 0.310625 0.309531 0.308438
+0.307344 0.30625 0.305156 0.304063 0.302969 0.301875 0.300781 0.299688
+0.298594 0.2975 0.296406 0.295313 0.294219 0.293125 0.292031 0.290938
+0.289844 0.28875 0.287656 0.286563 0.285469 0.284375 0.283281 0.282188
+0.281094 0.28 0.277813 0.275625 0.273438 0.27125 0.269063 0.266875
+0.264688 0.2625 0.260313 0.258125 0.255938 0.25375 0.251563 0.249375
+0.247188 0.245 0.242813 0.240625 0.238438 0.23625 0.234063 0.231875
+0.229688 0.2275 0.225313 0.223125 0.220938 0.21875 0.216563 0.214375
+0.212188 0.21 0.207813 0.205625 0.203438 0.20125 0.199063 0.196875
+0.194688 0.1925 0.190313 0.188125 0.185938 0.18375 0.181563 0.179375
+0.177188 0.175 0.172813 0.170625 0.168438 0.16625 0.164063 0.161875
+0.159688 0.1575 0.155313 0.153125 0.150938 0.14875 0.146563 0.144375
+0.142188 0.14 0.137813 0.135625 0.133438 0.13125 0.129063 0.126875
+0.124688 0.1225 0.120313 0.118125 0.115938 0.11375 0.111563 0.109375
+0.107188 0.105 0.102813 0.100625 0.0984375 0.09625 0.0940625 0.091875
+0.0896875 0.0875 0.0853125 0.083125 0.0809375 0.07875 0.0765625 0.074375
+0.0721875 0.07 0.0678125 0.065625 0.0634375 0.06125 0.0590625 0.056875
+0.0546875 0.0525 0.0503125 0.048125 0.0459375 0.04375 0.0415625 0.039375
+0.0371875 0.035 0.0328125 0.030625 0.0284375 0.02625 0.0240625 0.021875
+0.0196875 0.0175 0.0153125 0.013125 0.0109375 0.00875 0.0065625 0.004375
+0.0021875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 1 4409 -1 200 140 1;
+#X restore 295 16 graph;
+#X msg 11 4 bang;
+#X floatatom 221 27 5 0 0 0 - - -;
+#X msg 28 27 100;
+#X obj 221 156 print;
+#X obj 28 49 s-varenv;
+#X connect 2 0 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 6 0;
+#X connect 6 0 0 0;
+#X connect 6 1 5 0;
diff --git a/examples/varseq-example.pd b/examples/varseq-example.pd
new file mode 100644
index 0000000..34da01c
--- /dev/null
+++ b/examples/varseq-example.pd
@@ -0,0 +1,10 @@
+#N struct 1088template float x float y float z float q;
+#N canvas 249 214 444 162 10;
+#X floatatom 7 72 5 0 0 0 - - -;
+#X floatatom 7 124 5 0 0 0 - - -;
+#X text 7 3 Make some triangles by dragging the little vertical lines.
+Then loop through the sequence by changing the first number box. The
+lengths of the triangles will appear in the second number box.;
+#X obj 7 90 s-varseq 2 4;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
diff --git a/install b/install
new file mode 100644
index 0000000..92014b3
--- /dev/null
+++ b/install
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+touch ~/.pdrc
+
+if [ "`grep -c pd_start.pd ~/.pdrc`" == "0" ]
+then
+ path=`pwd`
+ cmd="-open `pwd`/pd_start.pd"
+ echo Adding $cmd to your ~/.pdrc file
+ echo $cmd >> ~/.pdrc
+ echo Adding $path to your pd path
+ echo -path $path >> ~/.pdrc
+fi
+
diff --git a/pd_start.pd b/pd_start.pd
new file mode 100644
index 0000000..552a25c
--- /dev/null
+++ b/pd_start.pd
@@ -0,0 +1,116 @@
+#N struct 1078template float x float y float z;
+#N struct 1089template float x float y array 1089arrayvals 1089arraytemplate
+;
+#N struct 1089arraytemplate float x float y;
+#N struct 1090template float x float y array 1090arrayvals 1090arraytemplate
+;
+#N struct 1090arraytemplate float x float y;
+#N canvas 4 22 197 416 10;
+#X obj 7 346 s-recorder~;
+#X obj 9 9 s-metro time;
+#N canvas 227 22 766 663 all-abstractions 0;
+#X obj 12 91 s-ezdac~ [name];
+#X text 606 56 crush your sound;
+#X obj 9 635 s-connect [source] [destination];
+#X text 7 617 connect a receive to a send;
+#X obj 608 6 s-bitcrusher~ [name];
+#X obj 613 203 s-filter~ [name];
+#X text 612 287 a regular old vcf;
+#X text 10 175 audio output (stereo);
+#X text 609 178 a digital delay unit;
+#X obj 612 94 s-delayunit~ [name];
+#X text 11 313 simple sinewave percussion;
+#X obj 13 351 s-pluck~ [name];
+#X floatatom 197 103 5 0 127 0 example - -;
+#X obj 197 123 s [name]-volume;
+#X text 11 434 karplus-strong string pluck;
+#X text 11 7 here are all the abstractions in this library. Note that
+almost all of them can be assigned an optional [name]. This can be
+used to send and receive on. For example if you give ez-dac~ a [name]
+of 'output' you can change the volume using a [s output-volume] object.
+see the example below.;
+#X obj 13 224 s-perc~ [name];
+#X text 14 556 make snappy sounds;
+#N canvas 227 21 768 664 midi-stuff 0;
+#X text 7 6 This collection of abstractions can help you with managing
+midi inputs and data streams.;
+#X obj 27 248 s-midimemory;
+#X text 26 89 This guy listens on midi channel label 1 \, for midi
+controller label 2 and sends the output to the receive called [name].
+It also outputs that midi controller at the left outlet.;
+#X obj 26 153 s-midinote 1 [name];
+#X text 27 175 This fellow listens for notes on channel 1 and sends
+packed note/volume pairs to [name] and out of the left inlet. You can
+link it into all the abstractions in this library which take note pairs.
+;
+#X text 28 267 Listens to a stream of numbers between 0 and 127 on
+the left inlet and remembers them.;
+#X obj 26 69 s-midictl 2 1 [name];
+#X restore 328 124 pd midi-stuff;
+#X text 327 145 open this for midi helpers;
+#X text 13 570 takes midi note pairs;
+#X text 10 448 takes midi note pairs;
+#X obj 14 472 s-snare~ [name];
+#N canvas 227 22 770 665 sequencer-stuff 0;
+#X obj 9 9 s-togs;
+#X floatatom 362 131 5 0 0 0 - - -;
+#X text 14 39 [s-togs] = produces codes suitable for m-seq;
+#X floatatom 9 60 5 0 0 0 - - -;
+#X text 8 146 [s-seq16] = produces codes for [s-mseq 2 16 0] from the
+right outlet. given an argument of 'time' it produces beat triggers
+from the left outlet.;
+#X obj 9 91 s-seq16 time;
+#X obj 9 128 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 388 550 timer - the name of the s-metro [eg 'time'];
+#X text 389 578 the left inlet is to retrive tick n of the sequence
+;
+#X text 389 608 set the right inlet to 1 to invert the sequence;
+#X text 387 461 this is a mathematical sequencer. you can construct
+sequences using a single number decoded in the base specified.;
+#X text 388 505 arg 1 - the base in which the sequence is specified
+;
+#X text 388 520 arg 2 - the length in ticks of the sequence;
+#X text 388 535 arg 3 - the code which designates the sequence;
+#X text 389 593 the middle inlet takes a new code;
+#X text 391 635 bases higher than 2 with long sequences are expensive
+;
+#X obj 388 441 s-mseq 1 2 3 [timer];
+#X floatatom 9 213 5 0 0 0 - - -;
+#X floatatom 9 280 5 0 0 0 - - -;
+#X obj 9 231 s-varseq 6 3;
+#X connect 0 0 3 0;
+#X connect 5 0 6 0;
+#X connect 5 1 1 0;
+#X connect 17 0 19 0;
+#X connect 19 0 18 0;
+#X restore 329 170 pd sequencer-stuff;
+#X text 327 192 open this for sequence helpers;
+#X text 10 328 takes midi note pairs like;
+#X msg 197 328 60 127;
+#X obj 453 19 s-reverb~ [name];
+#N canvas 229 20 766 667 envelopes 0;
+#X text 13 125 This is a quick little envelope of four fixed points.
+Send in a number of milliseconds - outputs a signal in the shape of
+the envelope.;
+#X obj 15 19 s-microenv q;
+#X obj 11 174 s-varenv;
+#X text 11 275 this is a variable-size envelope filter. Send a number
+of milliseconds into the left inlet and the envelope signal will be
+sent out of the left outlet~ stretched over that number of milliseconds
+\, and normalised. send a number to the right inlet and pairs of position/time
+values will be sent out of the right inlet corresponding to the point
+number you specify at the inlet.;
+#X restore 179 208 pd envelopes;
+#X text 178 229 open this to view the different types of envelopes
+in this library.;
+#X obj 196 473 s-adsynth~ [name];
+#X text 195 562 takes midi note pairs;
+#X text 196 548 basic FM synthesis;
+#X text 452 120 simple stereo reverb;
+#X connect 12 0 13 0;
+#X restore 7 136 pd all-abstractions;
+#X text 6 102 open this;
+#X obj 7 240 s-midimonitor;
+#X text 6 118 for a list of abstractions;
+#X obj 7 157 sssad/panel;
diff --git a/s-303vcf~.pd b/s-303vcf~.pd
new file mode 100644
index 0000000..cf1c8f9
--- /dev/null
+++ b/s-303vcf~.pd
@@ -0,0 +1,33 @@
+#N canvas 533 313 450 300 10;
+#X obj 73 110 lop~;
+#X obj 100 182 +~;
+#X obj 114 161 *~;
+#X obj 73 12 inlet~;
+#X obj 101 232 outlet~;
+#X obj 182 12 inlet;
+#X obj 130 12 inlet;
+#X obj 100 206 clip~ -0.8 0.8;
+#X obj 179 113 * 0.75;
+#X obj 130 42 mtof;
+#X obj 56 147 *~ 0.8;
+#X obj 182 42 / 5;
+#X obj 114 110 vcf~;
+#X obj 115 134 vcf~;
+#X connect 0 0 10 0;
+#X connect 1 0 7 0;
+#X connect 2 0 1 1;
+#X connect 3 0 0 0;
+#X connect 3 0 12 0;
+#X connect 5 0 11 0;
+#X connect 6 0 9 0;
+#X connect 7 0 4 0;
+#X connect 8 0 2 1;
+#X connect 8 0 13 2;
+#X connect 9 0 0 1;
+#X connect 9 0 12 1;
+#X connect 9 0 13 1;
+#X connect 10 0 1 0;
+#X connect 11 0 8 0;
+#X connect 11 0 12 2;
+#X connect 12 0 13 0;
+#X connect 13 0 2 0;
diff --git a/s-303~.pd b/s-303~.pd
new file mode 100644
index 0000000..af913fc
--- /dev/null
+++ b/s-303~.pd
@@ -0,0 +1,187 @@
+#N canvas 181 249 765 420 10;
+#X obj 248 9 inlet note;
+#X obj 324 9 inlet nextnote;
+#X obj 514 9 inlet accent;
+#X obj 429 9 inlet slide;
+#X obj 150 308 s-303vcf~;
+#X obj 149 351 *~;
+#X obj 414 225 *~ 2;
+#X obj 150 126 phasor~ 220;
+#X obj 149 155 *~;
+#X obj 211 260 +;
+#X obj 415 95 *;
+#X obj 305 208 * 3;
+#X obj 425 200 *;
+#X obj 174 280 +;
+#X obj 149 390 outlet~;
+#N canvas 266 146 695 534 303note 0;
+#X obj 43 23 inlet;
+#X obj 265 24 inlet;
+#X obj 413 31 inlet;
+#X text 26 2 current note;
+#X text 261 5 next note;
+#X text 412 10 slide;
+#X obj 36 489 outlet~;
+#X obj 41 144 mtof;
+#X obj 232 144 mtof;
+#X obj 50 211 pack 0 0;
+#X obj 195 230 f;
+#X obj 195 255 pack 0 30;
+#X obj 205 204 delay 20;
+#X obj 78 366 line~;
+#X obj 232 166 t b f;
+#X obj 305 163 / 6;
+#X obj 147 284 spigot;
+#X obj 83 282 spigot;
+#X obj 120 234 * -1;
+#X obj 120 257 + 1;
+#X obj 321 185 * 2;
+#X obj 287 185 * 4;
+#X obj 305 140 r \$2/ticksize;
+#X connect 0 0 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 16 1;
+#X connect 2 0 18 0;
+#X connect 7 0 9 0;
+#X connect 8 0 14 0;
+#X connect 9 0 17 0;
+#X connect 10 0 11 0;
+#X connect 11 0 16 0;
+#X connect 12 0 10 0;
+#X connect 13 0 6 0;
+#X connect 14 0 12 0;
+#X connect 14 1 10 1;
+#X connect 15 0 20 0;
+#X connect 15 0 21 0;
+#X connect 16 0 13 0;
+#X connect 17 0 13 0;
+#X connect 18 0 19 0;
+#X connect 19 0 17 1;
+#X connect 20 0 11 1;
+#X connect 21 0 12 1;
+#X connect 22 0 15 0;
+#X restore 149 94 pd 303note;
+#X obj 267 233 clip 0 127;
+#X obj 273 255 clip 0 127;
+#X obj 579 369 outlet~ envelope-sig;
+#X obj 454 369 outlet envelope;
+#X obj 11 29 hsl 64 16 0 127 0 1 \$0/cutoff \$1/cutoff cutoff -2 -6
+0 8 -260818 -1 -1 0 1;
+#X obj 178 157 r \$0/cutoff;
+#X obj 214 180 r \$0/resonance;
+#X obj 11 59 hsl 64 16 0 127 0 1 \$0/resonance \$1/resonance resonance
+-2 -6 0 8 -260818 -1 -1 775 1;
+#X obj 441 173 r \$0/envmod;
+#N canvas 0 18 999 671 envelope 0;
+#X obj 330 30 inlet;
+#X text 327 7 decay;
+#X obj 133 258 line~;
+#X obj 330 127 / 127;
+#X obj 173 153 *;
+#X obj 242 188 *;
+#X obj 148 180 / 127;
+#X obj 330 102 + 1;
+#X obj 134 305 expr~ tan($v1) * cos($v1);
+#X obj 97 258 line;
+#X obj 131 402 outlet;
+#X obj 50 402 outlet~;
+#X obj 131 356 expr tan($f1) * cos($f1);
+#X obj 86 130 t b b;
+#X obj 97 166 1;
+#X obj 22 163 + 1;
+#X obj 51 371 *~;
+#X obj 22 78 / 50;
+#X obj 131 378 *;
+#X obj 173 98 r \$2/ticksize;
+#X obj 189 123 r \$2/ticksperbeat;
+#X obj 22 27 inlet acent;
+#X obj 106 27 inlet trigger;
+#X obj 159 228 pack 0 200;
+#X obj 159 206 delay 200;
+#X obj 83 226 pack f 200;
+#X obj 106 51 select 1;
+#X connect 0 0 7 0;
+#X connect 2 0 8 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 1;
+#X connect 4 0 6 0;
+#X connect 5 0 23 1;
+#X connect 6 0 24 1;
+#X connect 6 0 25 1;
+#X connect 7 0 3 0;
+#X connect 8 0 16 0;
+#X connect 9 0 12 0;
+#X connect 12 0 18 0;
+#X connect 13 0 24 0;
+#X connect 13 1 14 0;
+#X connect 14 0 25 0;
+#X connect 15 0 16 1;
+#X connect 15 0 18 1;
+#X connect 16 0 11 0;
+#X connect 17 0 15 0;
+#X connect 18 0 10 0;
+#X connect 19 0 4 0;
+#X connect 20 0 4 1;
+#X connect 21 0 17 0;
+#X connect 22 0 26 0;
+#X connect 23 0 2 0;
+#X connect 23 0 9 0;
+#X connect 24 0 23 0;
+#X connect 25 0 2 0;
+#X connect 25 0 9 0;
+#X connect 26 0 13 0;
+#X restore 415 137 pd envelope;
+#X obj 10 90 hsl 64 16 0 127 0 1 \$0/envmod \$1/envmod envmod -2 -6
+0 8 -260818 -1 -1 3875 1;
+#X obj 9 121 hsl 64 16 0 127 0 1 \$0/decay \$1/decay decay -2 -6 0
+8 -260818 -1 -1 5500 1;
+#X obj 8 153 hsl 64 16 0 127 0 1 \$0/accent \$1/accent accent -2 -6
+0 8 -260818 -1 -1 6300 1;
+#X obj 431 67 r \$0/accent;
+#X obj 487 113 r \$0/decay;
+#X obj 170 202 t b f;
+#X obj 214 205 t b f;
+#X obj 142 32 s \$0/trigger;
+#X obj 237 126 r \$0/trigger;
+#X obj 451 90 r \$0/trigger;
+#X obj 142 9 inlet trigger;
+#X obj 533 150 sssad/auto \$0/cutoff \$1/cutoff;
+#X obj 533 173 sssad/auto \$0/resonance \$1/resonance;
+#X obj 533 196 sssad/auto \$0/envmod \$1/envmod;
+#X obj 533 219 sssad/auto \$0/decay \$1/decay;
+#X obj 533 243 sssad/auto \$0/accent \$1/accent;
+#X connect 0 0 15 0;
+#X connect 1 0 15 1;
+#X connect 2 0 10 0;
+#X connect 3 0 15 2;
+#X connect 4 0 5 0;
+#X connect 5 0 14 0;
+#X connect 6 0 5 1;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 4 2;
+#X connect 10 0 25 0;
+#X connect 11 0 16 0;
+#X connect 12 0 17 0;
+#X connect 13 0 4 1;
+#X connect 15 0 7 0;
+#X connect 16 0 9 0;
+#X connect 17 0 13 0;
+#X connect 21 0 31 0;
+#X connect 22 0 32 0;
+#X connect 24 0 12 1;
+#X connect 25 0 6 0;
+#X connect 25 0 18 0;
+#X connect 25 1 11 0;
+#X connect 25 1 12 0;
+#X connect 25 1 19 0;
+#X connect 29 0 10 1;
+#X connect 30 0 25 2;
+#X connect 31 0 13 0;
+#X connect 31 1 13 1;
+#X connect 32 0 9 0;
+#X connect 32 1 9 1;
+#X connect 34 0 8 1;
+#X connect 35 0 25 1;
+#X connect 36 0 33 0;
+#X coords 0 -1 1 1 120 180 1 0 0;
diff --git a/s-adsynth~.pd b/s-adsynth~.pd
new file mode 100644
index 0000000..65b5068
--- /dev/null
+++ b/s-adsynth~.pd
@@ -0,0 +1,48 @@
+#N canvas 269 139 580 496 10;
+#X obj 177 282 osc~;
+#X obj 177 255 +~;
+#X obj 177 169 osc~;
+#X obj 277 196 mtof;
+#X obj 177 146 mtof;
+#X obj 178 312 *~;
+#X obj 6 53 nbx 5 14 0 127 0 1 \$0/modamp \$1/modamp modamp 0 -6 0
+8 -260818 -1 -1 44 256;
+#X obj 5 26 nbx 5 14 0 127 0 1 \$0/modshift \$1/modshift modshift 0
+-6 0 8 -260818 -1 -1 52 256;
+#X obj 134 26 s-miditrigger;
+#X obj 134 2 inlet;
+#X obj 177 336 outlet~;
+#X obj 215 176 mtof;
+#X obj 178 197 *~ 440;
+#X obj 177 123 + 0;
+#X obj 193 101 - 64;
+#X msg 144 100 bang;
+#X obj 193 74 t b f;
+#X obj 213 282 line~;
+#X obj 213 260 pack f 3;
+#X obj 319 8 sssad/auto \$0/modshift \$1/modshift;
+#X obj 319 29 sssad/auto \$0/modamp \$1/modamp;
+#X obj 193 50 r \$0/modshift;
+#X obj 215 154 r \$0/modamp;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 12 0;
+#X connect 3 0 1 1;
+#X connect 4 0 2 0;
+#X connect 5 0 10 0;
+#X connect 8 1 3 0;
+#X connect 8 1 13 0;
+#X connect 8 2 18 0;
+#X connect 9 0 8 0;
+#X connect 11 0 12 1;
+#X connect 12 0 1 0;
+#X connect 13 0 4 0;
+#X connect 14 0 13 1;
+#X connect 15 0 13 0;
+#X connect 16 0 15 0;
+#X connect 16 1 14 0;
+#X connect 17 0 5 1;
+#X connect 18 0 17 0;
+#X connect 21 0 16 0;
+#X connect 22 0 11 0;
+#X coords 0 -1 1 1 85 70 1 1 1;
diff --git a/s-arranger-help.pd b/s-arranger-help.pd
new file mode 100644
index 0000000..1579340
--- /dev/null
+++ b/s-arranger-help.pd
@@ -0,0 +1,47 @@
+#N struct 1236rect float x float y float w float x0 float y0 float
+t;
+#N struct 1236cursor float x;
+#N struct 1236lines float x;
+#N canvas 23 142 951 464 10;
+#X floatatom 9 91 5 0 0 0 - - -;
+#X obj 763 116 sssad/datastore;
+#N canvas 23 85 835 601 datastore 0;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD blah/blocks 178 29 4 3 52 48 3 2 144 108 3 3
+104 52 3 1 97 32 0 2 48 0 3 1 20 0 0 1 37 8 1 2 110 24 2 6 \; SSSAD_ADMIN
+set \;;
+#X connect 0 0 1 0;
+#X restore 763 182 pd datastore;
+#X obj 9 42 metro 100;
+#X obj 9 64 f;
+#X obj 38 64 + 1;
+#X obj 9 21 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1;
+#X msg 39 21 0;
+#X floatatom 9 380 5 0 0 0 - - -;
+#X floatatom 29 399 5 0 0 0 - - -;
+#X floatatom 49 380 5 0 0 0 - - -;
+#X floatatom 69 399 5 0 0 0 - - -;
+#X floatatom 89 380 5 0 0 0 - - -;
+#X obj 9 346 route 0 1 2 3 4;
+#X text 137 10 You can arrange parts of your tune using this simple
+mechanism. Each 'track' down the left hand side will output the number
+of the block that is currently being traversed \, or zero if there
+is none. Add blocks or clear all blocks using the buttons at the bottom.
+;
+#X text 136 81 args: [name] [length of the arrangement] [distance between
+grey markers] [ticker name] [ticks per bar];
+#X obj 9 115 s-arranger blah 200 4 time/tick 16;
+#X text 770 36 Click load!;
+#X connect 0 0 16 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 1;
+#X connect 6 0 3 0;
+#X connect 7 0 4 1;
+#X connect 13 0 8 0;
+#X connect 13 1 9 0;
+#X connect 13 2 10 0;
+#X connect 13 3 11 0;
+#X connect 13 4 12 0;
+#X connect 16 0 13 0;
diff --git a/s-arranger.pd b/s-arranger.pd
new file mode 100644
index 0000000..3cb314e
--- /dev/null
+++ b/s-arranger.pd
@@ -0,0 +1,380 @@
+#N struct 1314cursor float x;
+#N canvas 0 16 999 675 10;
+#X text 6 627 template definition:;
+#X obj 72 205 bng 12 250 50 0 \$0new empty add_block 16 9 0 8 -260818
+-1 -1;
+#N canvas 134 279 506 489 1314data 0;
+#X scalar 1314cursor 0 \;;
+#X coords 0 -1 770 180 770 180 1;
+#X restore 19 22 pd \$0data;
+#X obj 19 205 bng 12 250 50 0 \$0clear empty clear 16 9 0 8 -260818
+-1 -1;
+#X text 8 40 1;
+#X text 8 50 2;
+#X text 8 60 3;
+#X text 8 70 4;
+#X text 8 30 0;
+#X text 8 80 5;
+#X text 8 90 6;
+#X text 8 100 7;
+#X text 8 110 8;
+#X text 8 120 9;
+#X text 8 130 A;
+#X text 8 140 B;
+#X text 8 150 C;
+#X text 8 160 D;
+#X text 8 170 E;
+#X text 8 180 F;
+#N canvas 67 68 640 606 1314lines 0;
+#X obj 7 7 struct \$0lines float x;
+#X obj 423 397 pointer;
+#X obj 316 174 t b b;
+#X obj 346 196 \$0;
+#X obj 346 218 makefilename pd-%ddata;
+#X msg 423 374 traverse \$1 \, bang;
+#X msg 529 218 \; \$1 clear \;;
+#X obj 529 174 \$0;
+#X obj 529 196 makefilename pd-%ddata;
+#X text 527 151 clear the data;
+#X obj 294 78 loadbang;
+#X obj 316 333 until;
+#X obj 316 354 f;
+#X obj 347 354 + 1;
+#X obj 316 266 t b b;
+#X obj 346 288 0;
+#X obj 316 423 append \$0lines x;
+#X obj 358 78 r \$0clear;
+#X obj 7 27 drawpolygon 333 1 8 11 8 170;
+#X obj 153 263 pointer;
+#X obj 39 168 t b b;
+#X obj 69 190 \$0;
+#X obj 69 212 makefilename pd-%ddata;
+#X msg 153 240 traverse \$1 \, bang;
+#X obj 39 286 append \$0cursor x;
+#X msg 39 241 0;
+#X text 36 134 create the cursor;
+#X obj 294 117 t b b b;
+#X text 320 155 create the lines;
+#X obj 316 288 \$2;
+#X obj 316 310 / \$3;
+#X obj 316 376 * 3;
+#X obj 316 397 * \$3;
+#X obj 39 309 s \$0cursorp;
+#X connect 1 0 16 1;
+#X connect 2 0 14 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 0;
+#X connect 10 0 27 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 12 0 31 0;
+#X connect 13 0 12 1;
+#X connect 14 0 29 0;
+#X connect 14 1 15 0;
+#X connect 15 0 12 1;
+#X connect 17 0 27 0;
+#X connect 19 0 24 1;
+#X connect 20 0 25 0;
+#X connect 20 1 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 19 0;
+#X connect 24 0 33 0;
+#X connect 25 0 24 0;
+#X connect 27 0 20 0;
+#X connect 27 1 2 0;
+#X connect 27 2 7 0;
+#X connect 29 0 30 0;
+#X connect 30 0 11 0;
+#X connect 31 0 32 0;
+#X connect 32 0 16 0;
+#X restore 79 647 pd \$0lines;
+#N canvas 382 73 583 576 1314rect 0;
+#X obj 126 529 pointer;
+#X obj 12 433 t b b;
+#X text 438 55 main bar;
+#X text 438 93 end: red;
+#X text 439 129 begin: black;
+#X obj 12 410 r \$0new;
+#X obj 42 455 \$0;
+#X obj 42 477 makefilename pd-%ddata;
+#X msg 126 506 traverse \$1 \, bang;
+#X obj 285 412 r \$0clear;
+#X msg 285 479 \; \$1 clear \;;
+#X obj 285 435 \$0;
+#X obj 285 457 makefilename pd-%ddata;
+#X text 284 393 clear the data;
+#X text 10 393 create a new block;
+#X obj 7 9 struct \$0rect float x float y float w float x0 float y0
+float t;
+#X obj 12 559 append \$0rect x y w t;
+#X msg 12 535 10 10 20 1;
+#X obj 7 42 filledpolygon 777 0 1 x0(0:300)(0:900)(1) y0(0:15)(0:150)(1)
+w(0:300)(0:900)(1) y0(0:15)(0:150)(1) w(0:300)(0:900)(1) y0(0:15)(10:160)(1)
+x0(0:300)(0:900)(1) y0(0:15)(10:160)(1);
+#X obj 7 101 drawpolygon 900 5 w(0:300)(0:900)(1) y0(0:15)(0:150)(1)
+w(0:300)(0:900)(1) y0(0:15)(11:161)(1);
+#X obj 7 134 drawpolygon 0 5 x0(0:300)(0:900)(1) y0(0:15)(0:150)(1)
+x0(0:300)(0:900)(1) y0(0:15)(11:161)(1);
+#X obj 7 167 drawnumber t(0:20)(0:20) x0(0:300)(10:910)(1) y0(0:15)(0:150)(1)
+;
+#X connect 0 0 16 4;
+#X connect 1 0 17 0;
+#X connect 1 1 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 0;
+#X connect 17 0 16 0;
+#X restore 8 647 pd \$0rect;
+#N canvas 67 68 640 606 1314cursor 0;
+#X obj 7 27 drawpolygon 900 1 8 11 8 170;
+#X obj 7 7 struct \$0cursor float x;
+#X restore 157 647 pd \$0cursor;
+#X obj 4 256 inlet;
+#X obj 373 647 namecanvas \$0arranger;
+#N canvas 43 35 764 635 setup 0;
+#X obj 109 326 pack f s;
+#X obj 160 280 \$0;
+#X obj 109 256 t f b;
+#X msg 109 349 \; \$2 obj 20 23 cnv 15 \$1 178 empty empty empty 20
+12 0 14 -260818 -66577 0 \;;
+#X obj 160 303 makefilename %darranger;
+#X obj 131 187 pack f s;
+#X obj 182 140 \$0;
+#X obj 131 117 t f b;
+#X obj 182 163 makefilename pd-%ddata;
+#X msg 131 212 \; \$2 donecanvasdialog 1 -1 1 0 -1 \$1 180 \$1 180
+25 40;
+#X obj 131 93 + 2;
+#X obj 87 71 t f f f;
+#X obj 87 427 pack f s;
+#X msg 87 450 \; \$2 donecanvasdialog 1 -1 1 0 -1 \$1 220 \$1 220 0
+0;
+#X obj 87 25 s-default \$2 256;
+#X obj 87 47 * 3;
+#X obj 87 402 + 28;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 4 0 0 1;
+#X connect 4 0 12 1;
+#X connect 5 0 9 0;
+#X connect 6 0 8 0;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 5 1;
+#X connect 10 0 7 0;
+#X connect 11 0 16 0;
+#X connect 11 1 2 0;
+#X connect 11 2 10 0;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
+#X connect 15 0 11 0;
+#X connect 16 0 12 0;
+#X restore 7 601 pd setup;
+#X text 2 223 args: [name] [length] [bars per section] [ticker name]
+[ticks per bar];
+#X obj 47 256 r \$4;
+#X obj 4 379 int;
+#X obj 4 401 change;
+#X obj 4 356 /;
+#X obj 141 508 r \$0cursorp;
+#X obj 97 531 pointer;
+#X obj 4 554 set \$0cursor x;
+#X obj 4 514 * 3;
+#X obj 20 335 s-default \$5 \$3;
+#N canvas 485 99 507 438 save 0;
+#X obj 176 16 r SSSAD_SAVE;
+#X obj 214 199 until;
+#X obj 172 338 list prepend;
+#X obj 265 338 t l;
+#X obj 149 367 list;
+#X obj 176 41 t b b b b;
+#X msg 214 112 traverse \$1 \, next;
+#X obj 214 68 \$0;
+#X obj 214 91 makefilename pd-%ddata;
+#X obj 7 415 outlet;
+#X obj 214 135 pointer \$0rect;
+#X obj 274 260 get \$0rect w x0 y0 t;
+#X obj 274 290 pack f f f f;
+#X msg 294 186 next;
+#X obj 7 394 sssad/sssad \$1/blocks;
+#X obj 214 160 t b p;
+#X connect 0 0 5 0;
+#X connect 1 0 13 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 4 0 14 1;
+#X connect 5 0 4 0;
+#X connect 5 2 7 0;
+#X connect 5 3 2 1;
+#X connect 6 0 10 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 0;
+#X connect 10 0 15 0;
+#X connect 10 2 1 1;
+#X connect 11 0 12 0;
+#X connect 11 1 12 1;
+#X connect 11 2 12 2;
+#X connect 11 3 12 3;
+#X connect 12 0 2 0;
+#X connect 13 0 10 0;
+#X connect 14 0 9 0;
+#X connect 15 0 1 0;
+#X connect 15 1 11 0;
+#X restore 278 623 pd save;
+#N canvas 64 35 650 643 load 0;
+#X obj 21 6 inlet;
+#X obj 21 65 until;
+#X obj 21 103 list append;
+#X obj 120 148 bang;
+#X obj 205 202 \$0;
+#X obj 205 225 makefilename pd-%ddata;
+#X obj 21 32 t b l b b;
+#X obj 21 148 list split 4;
+#X obj 152 78 \$0;
+#X msg 205 246 traverse \$1 \, bang;
+#X obj 205 269 pointer;
+#X obj 21 381 append \$0rect w x0 y0 t x y;
+#X msg 127 292 10;
+#X obj 21 186 t l b;
+#X obj 21 292 unpack f f f f;
+#X msg 152 99 \; \$1clear bang \;;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 7 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 5 0 9 0;
+#X connect 6 0 1 0;
+#X connect 6 1 2 1;
+#X connect 6 2 4 0;
+#X connect 6 3 8 0;
+#X connect 7 0 13 0;
+#X connect 7 1 2 1;
+#X connect 7 2 3 0;
+#X connect 8 0 15 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 6;
+#X connect 12 0 11 5;
+#X connect 12 0 11 4;
+#X connect 13 0 14 0;
+#X connect 13 1 12 0;
+#X connect 14 0 11 0;
+#X connect 14 1 11 1;
+#X connect 14 2 11 2;
+#X connect 14 3 11 3;
+#X restore 278 647 pd load;
+#X obj 4 448 t f b f;
+#N canvas 274 37 621 620 lookup 0;
+#X obj 12 7 inlet;
+#X obj 69 539 outlet;
+#X obj 74 274 until;
+#X msg 74 187 traverse \$1 \, next;
+#X obj 74 143 \$0;
+#X obj 74 166 makefilename pd-%ddata;
+#X obj 74 210 pointer \$0rect;
+#X obj 115 302 get \$0rect w x0 y0 t;
+#X msg 162 262 next;
+#X obj 74 235 t b p;
+#X obj 349 189 f;
+#X obj 294 374 &&;
+#X obj 294 398 select 1;
+#X obj 294 347 >=;
+#X obj 364 346 <=;
+#X obj 198 572 tabwrite \$0vals;
+#X text 409 6 Temporary storage for values;
+#X obj 412 28 table \$0vals 16;
+#X obj 104 105 \$0;
+#X msg 104 130 \; \$1vals const 0 \;;
+#X obj 55 51 t b b b f;
+#X obj 69 397 until;
+#X obj 99 475 tabread \$0vals;
+#X msg 69 375 16;
+#X msg 99 375 0;
+#X obj 69 419 f;
+#X obj 97 419 + 1;
+#X obj 55 337 t b b b;
+#X obj 230 445 pack f f;
+#X obj 207 475 list;
+#X obj 207 500 unpack f f;
+#X obj 224 548 f;
+#X obj 207 522 t b f;
+#X obj 69 448 t f f;
+#X obj 69 507 pack f f;
+#X connect 0 0 20 0;
+#X connect 2 0 8 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 9 0;
+#X connect 6 2 2 1;
+#X connect 7 0 13 0;
+#X connect 7 1 14 0;
+#X connect 7 2 28 0;
+#X connect 7 3 28 1;
+#X connect 8 0 6 0;
+#X connect 9 0 2 0;
+#X connect 9 1 7 0;
+#X connect 10 0 13 1;
+#X connect 10 0 14 1;
+#X connect 11 0 12 0;
+#X connect 12 0 29 0;
+#X connect 13 0 11 0;
+#X connect 14 0 11 1;
+#X connect 18 0 19 0;
+#X connect 20 0 27 0;
+#X connect 20 1 4 0;
+#X connect 20 2 18 0;
+#X connect 20 3 10 0;
+#X connect 21 0 25 0;
+#X connect 22 0 34 1;
+#X connect 23 0 21 0;
+#X connect 24 0 25 1;
+#X connect 25 0 26 0;
+#X connect 25 0 33 0;
+#X connect 26 0 25 1;
+#X connect 27 1 23 0;
+#X connect 27 2 24 0;
+#X connect 28 0 29 1;
+#X connect 29 0 30 0;
+#X connect 30 0 32 0;
+#X connect 30 1 31 1;
+#X connect 31 0 15 0;
+#X connect 32 0 31 0;
+#X connect 32 1 15 1;
+#X connect 33 0 34 0;
+#X connect 33 1 22 0;
+#X connect 34 0 1 0;
+#X restore 228 484 pd lookup;
+#X obj 228 508 outlet;
+#X obj 4 424 mod \$2;
+#X text 694 653 inspired by FB's quantized sequencer demo!;
+#X obj 279 508 s \$1/values;
+#X connect 23 0 30 0;
+#X connect 27 0 30 0;
+#X connect 28 0 29 0;
+#X connect 29 0 41 0;
+#X connect 30 0 28 0;
+#X connect 31 0 32 1;
+#X connect 32 0 33 1;
+#X connect 34 0 33 0;
+#X connect 35 0 30 1;
+#X connect 36 0 37 0;
+#X connect 38 0 34 0;
+#X connect 38 1 32 0;
+#X connect 38 2 39 0;
+#X connect 39 0 40 0;
+#X connect 39 0 43 0;
+#X connect 41 0 38 0;
+#X coords 0 -1 796 220 796 220 1 0 0;
diff --git a/s-autocompressor~.pd b/s-autocompressor~.pd
new file mode 100644
index 0000000..64c3162
--- /dev/null
+++ b/s-autocompressor~.pd
@@ -0,0 +1,121 @@
+#N canvas 255 105 459 100 10;
+#X obj 5 41 nbx 5 14 0 127 0 1 \$0/squelch \$1/squelch squelch 0 -8
+0 8 -260818 -1 -1 1 256;
+#N canvas 177 92 646 523 fft-analysis 0;
+#X obj 115 409 *~;
+#X obj 75 409 *~;
+#X obj 76 114 *~;
+#X obj 77 88 inlet~;
+#X obj 76 137 rfft~;
+#X obj 75 466 *~;
+#X obj 171 177 *~;
+#X obj 75 432 rifft~;
+#X obj 75 504 outlet~;
+#X obj 137 177 *~;
+#X obj 137 200 +~;
+#X obj 461 85 block~ 1024 4;
+#X obj 137 351 clip~;
+#X obj 110 114 tabreceive~ \$0-hann;
+#X obj 177 329 expr 0.01*$f1*$f1;
+#X obj 137 381 *~ 0.00065;
+#X obj 137 225 +~ 1e-20;
+#X obj 136 262 q8_rsqrt~;
+#X obj 109 466 tabreceive~ \$0-hann;
+#X text 211 174 squared magnitude;
+#X text 219 225 protect against divide-by-zero;
+#X text 223 261 quick 8-bit-accurate reciprocal square root;
+#X text 222 277 (done by table lookup - about 0.25% accurate);
+#X text 193 351 limit the gain to squelch*squelch/100;
+#X text 238 381 normalize for 1024-point \, overlap-4 Hann;
+#X text 151 409 multiply gain by real and complex part;
+#X text 152 429 of the amplitude;
+#X text 130 137 outputs complex amplitudes;
+#X text 31 5 This is Miller's compressor. Any mistakes are my own.
+;
+#X obj 177 306 r \$0/squelch;
+#X msg 461 129 \; window-size 1024 \;;
+#X obj 461 107 loadbang;
+#X obj 75 485 *~ 32;
+#X connect 0 0 7 1;
+#X connect 1 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 9 0;
+#X connect 4 0 9 1;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 4 1 6 1;
+#X connect 4 1 0 0;
+#X connect 5 0 32 0;
+#X connect 6 0 10 1;
+#X connect 7 0 5 0;
+#X connect 9 0 10 0;
+#X connect 10 0 16 0;
+#X connect 12 0 15 0;
+#X connect 13 0 2 1;
+#X connect 14 0 12 2;
+#X connect 15 0 0 1;
+#X connect 15 0 1 1;
+#X connect 16 0 17 0;
+#X connect 17 0 12 0;
+#X connect 18 0 5 1;
+#X connect 29 0 14 0;
+#X connect 31 0 30 0;
+#X connect 32 0 8 0;
+#X restore 92 22 pd fft-analysis;
+#N canvas 0 110 565 454 hann-window 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-hann 1024 float 0;
+#X coords 0 1 1023 0 300 100 1;
+#X restore 82 311 graph;
+#X obj 378 165 osc~;
+#X obj 378 190 *~ -0.5;
+#X obj 378 214 +~ 0.5;
+#X obj 331 247 tabwrite~ \$0-hann;
+#X obj 37 88 r window-size;
+#X obj 38 173 /;
+#X obj 127 142 samplerate~;
+#X obj 38 251 s window-sec;
+#X obj 177 204 swap;
+#X obj 177 228 /;
+#X obj 177 252 s window-hz;
+#X obj 49 201 * 1000;
+#X obj 49 228 s window-msec;
+#X obj 38 115 t f b f;
+#X msg 173 92 resize \$1;
+#X obj 173 116 s \$0-hann;
+#X obj 330 105 r window-hz;
+#X msg 382 130 0;
+#X obj 330 131 t f b;
+#X text 15 8 calculate Hann window table (variable window size) and
+constants window-hz (fundamental frequency of analysis) \, window-sec
+and window-msec (analysis window size in seconds and msec).;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 14 0;
+#X connect 6 0 8 0;
+#X connect 6 0 12 0;
+#X connect 7 0 6 1;
+#X connect 7 0 9 1;
+#X connect 9 0 10 0;
+#X connect 9 1 10 1;
+#X connect 10 0 11 0;
+#X connect 12 0 13 0;
+#X connect 14 0 6 0;
+#X connect 14 0 9 0;
+#X connect 14 1 7 0;
+#X connect 14 2 15 0;
+#X connect 15 0 16 0;
+#X connect 17 0 19 0;
+#X connect 18 0 1 1;
+#X connect 19 0 1 0;
+#X connect 19 1 4 0;
+#X connect 19 1 18 0;
+#X restore 335 44 pd hann-window;
+#X obj 92 1 inlet~;
+#X obj 92 43 outlet~;
+#X obj 209 22 sssad/auto \$0/squelch \$1/squelch;
+#X connect 1 0 4 0;
+#X connect 3 0 1 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/s-bassdrum~.pd b/s-bassdrum~.pd
new file mode 100644
index 0000000..2ea0661
--- /dev/null
+++ b/s-bassdrum~.pd
@@ -0,0 +1,65 @@
+#N canvas 334 77 605 560 10;
+#X obj 141 20 inlet;
+#X msg 341 91 0;
+#X msg 403 68 1;
+#X obj 373 42 t b b;
+#X obj 373 125 vcf~;
+#X obj 373 267 outlet~;
+#X obj 443 68 mtof~;
+#X obj 178 85 s \$0-volume;
+#X obj 26 47 nbx 3 14 0 127 0 1 \$0-note \$0-note note 0 -6 0 8 -260818
+-1 -1 40 256;
+#X obj 75 47 bng 14 250 50 0 \$0-shot \$0-shot shot 0 -6 0 8 -260818
+-1 -1;
+#X obj 443 43 r \$0-note;
+#X obj 28 76 hsl 64 16 0 127 0 1 \$0-ring \$0-ring ring -2 -6 0 8 -260818
+-1 -1 4961 1;
+#X obj 500 67 r \$0-ring;
+#X obj 373 20 r \$0-shot;
+#X obj 373 243 *~;
+#X obj 418 125 r \$0-volume;
+#X obj 418 146 / 64;
+#X obj 171 106 s \$0-note;
+#X obj 141 64 t b f;
+#X obj 141 127 s \$0-shot;
+#X obj 8 155 s-connect \$1-note \$0-note;
+#X obj 8 176 s-connect \$1-shot \$0-shot;
+#X obj 8 197 s-connect \$1-ring \$0-ring;
+#X obj 8 218 s-connect \$1-volume \$0-volume;
+#X obj 28 107 hsl 64 16 0 127 0 1 \$0-volume \$0-volume volume -2 -6
+0 8 -260818 -1 -1 3175 1;
+#X obj 341 68 delay 10;
+#X obj 418 210 *;
+#X obj 455 146 r \$0-ring;
+#X obj 430 169 t b f;
+#X obj 141 42 unpack;
+#X obj 120 317 sssad/auto \$0-ring \$1-ring;
+#X obj 121 339 sssad/auto \$0-volume \$1-volume;
+#X obj 121 363 sssad/auto \$0-note \$1-note;
+#X obj 8 431 s-connect \$1/note \$0-note;
+#X obj 8 452 s-connect \$1/shot \$0-shot;
+#X obj 8 473 s-connect \$1/ring \$0-ring;
+#X obj 8 494 s-connect \$1/volume \$0-volume;
+#X connect 0 0 29 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 25 0;
+#X connect 3 1 2 0;
+#X connect 4 0 14 0;
+#X connect 6 0 4 1;
+#X connect 10 0 6 0;
+#X connect 12 0 4 2;
+#X connect 13 0 3 0;
+#X connect 14 0 5 0;
+#X connect 15 0 16 0;
+#X connect 16 0 26 0;
+#X connect 18 0 19 0;
+#X connect 18 1 17 0;
+#X connect 25 0 1 0;
+#X connect 26 0 14 1;
+#X connect 27 0 28 0;
+#X connect 28 0 26 0;
+#X connect 28 1 26 1;
+#X connect 29 0 18 0;
+#X connect 29 1 7 0;
+#X coords 0 -1 1 1 85 108 1 20 20;
diff --git a/s-beat-help.pd b/s-beat-help.pd
new file mode 100644
index 0000000..c936101
--- /dev/null
+++ b/s-beat-help.pd
@@ -0,0 +1,32 @@
+#N struct 1318template float x array 1318arrayvals 1318arraytemplate
+;
+#N struct 1318arraytemplate float x;
+#N canvas 14 21 450 300 10;
+#X obj 33 175 s-beat nubeat;
+#X floatatom 33 222 5 0 0 0 - - -;
+#X floatatom 33 153 5 0 0 0 - - -;
+#X obj 33 106 metro;
+#X obj 33 130 f;
+#X obj 70 131 + 1;
+#X msg 33 61 600;
+#X obj 33 85 t b f;
+#X msg 226 153 nubeat/beatsize \$1;
+#X text 30 12 add some points to the beat as per the instructions below
+;
+#X text 31 36 then bang here to start with 600ms beats;
+#X msg 91 85 0;
+#X text 124 84 reset beat to zero;
+#X text 86 223 hold down the ctrl key to add/delete tick points;
+#X obj 340 58 sssad/panel;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 1;
+#X connect 6 0 7 0;
+#X connect 7 0 3 0;
+#X connect 7 1 3 1;
+#X connect 7 1 8 0;
+#X connect 8 0 0 1;
+#X connect 11 0 4 1;
diff --git a/s-beat.pd b/s-beat.pd
new file mode 100644
index 0000000..a34980b
--- /dev/null
+++ b/s-beat.pd
@@ -0,0 +1,280 @@
+#N struct 1287template float x array 1287arrayvals 1287arraytemplate
+;
+#N struct 1287arraytemplate float x;
+#N canvas 260 24 721 668 10;
+#N canvas 0 16 999 675 1287data 0;
+#X scalar 1287template 0 \; 0 \; \;;
+#X coords 0 0 192 16 192 16 1;
+#X restore 4 18 pd \$0data;
+#N canvas 183 252 599 314 1287template 0;
+#X obj 17 53 struct \$0template float x array \$0arrayvals \$0arraytemplate
+;
+#X obj 17 74 print;
+#X obj 17 30 plot -x x(0:189)(0:189) \$0arrayvals 0 0 0 0 0;
+#X connect 0 0 1 0;
+#X restore 236 36 pd \$0template;
+#N canvas 435 201 450 300 1287arraytemplate 0;
+#X obj 24 65 print;
+#X obj 24 43 struct \$0arraytemplate float x;
+#X obj 24 22 filledpolygon 333 333 1 0 2 2 2 2 6 0 6 0 14;
+#X connect 1 0 0 0;
+#X restore 236 13 pd \$0arraytemplate;
+#N canvas 0 0 439 363 initarray 0;
+#X obj 163 211 pointer;
+#X text 186 35 click here to re-initialize;
+#X msg 300 176 \; \$1 clear;
+#X obj 163 96 \$0;
+#X msg 163 188 traverse \$1 \, bang;
+#X obj 163 119 makefilename pd-%ddata;
+#X obj 35 251 append \$0template x;
+#X msg 35 219 0;
+#X obj 133 12 loadbang;
+#X obj 133 72 t b b b;
+#X obj 68 114 outlet;
+#X obj 163 140 t s s;
+#X obj 77 9 inlet;
+#X connect 0 0 6 1;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 5 0 11 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 1 7 0;
+#X connect 9 2 3 0;
+#X connect 11 0 4 0;
+#X connect 11 1 2 0;
+#X connect 12 0 9 0;
+#X restore 415 69 pd initarray;
+#X obj 415 182 pointer;
+#X obj 453 253 setsize \$0template \$0arrayvals;
+#X msg 415 159 traverse \$1 \, next;
+#X obj 415 115 \$0;
+#X obj 415 138 makefilename pd-%ddata;
+#X obj 415 91 delay 10;
+#X obj 357 391 inlet;
+#X text 20 391 this is how long you want the envelope to take.;
+#X text 414 7 args: [name] [number of points];
+#X obj 415 391 t p p;
+#X obj 453 229 1;
+#N canvas 343 66 484 592 envgen 0;
+#X obj 102 260 element \$0template \$0arrayvals;
+#X obj 171 400 *;
+#X obj 102 145 f;
+#X obj 130 145 + 1;
+#X msg 102 95 0;
+#X obj 171 469 t b f;
+#X obj 242 538 delay;
+#X obj 242 559 s \$0-loop;
+#X obj 23 102 r \$0-loop;
+#X obj 102 238 spigot;
+#X obj 171 358 - 3;
+#X obj 171 378 / 186;
+#X obj 171 422 t f f;
+#X obj 171 446 -;
+#X obj 175 154 getsize \$0template \$0arrayvals;
+#X obj 102 3 inlet;
+#X obj 307 235 inlet;
+#X obj 102 30 t b f b;
+#X obj 175 132 pointer;
+#X msg 175 109 traverse \$1 \, next;
+#X obj 175 65 \$0;
+#X obj 175 88 makefilename pd-%ddata;
+#X msg 222 421 0;
+#X obj 168 239 select 0;
+#X text 333 319 redraw;
+#X obj 102 281 t p p;
+#X obj 102 314 get \$0arraytemplate x;
+#X obj 290 339 set \$0arraytemplate x;
+#X obj 102 169 t f f f;
+#X obj 171 492 f;
+#X obj 170 576 outlet;
+#X obj 170 536 - 1;
+#X obj 111 487 *;
+#X obj 175 175 t f f;
+#X obj 132 213 <= 1;
+#X obj 170 555 +;
+#X obj 221 377 r \$0-beatsize;
+#X obj 171 512 select 0;
+#X connect 0 0 25 0;
+#X connect 1 0 12 0;
+#X connect 2 0 3 0;
+#X connect 2 0 28 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 5 0 29 0;
+#X connect 5 1 6 1;
+#X connect 6 0 7 0;
+#X connect 8 0 2 0;
+#X connect 9 0 0 0;
+#X connect 10 0 11 0;
+#X connect 11 0 1 0;
+#X connect 12 0 13 1;
+#X connect 12 1 13 0;
+#X connect 13 0 5 0;
+#X connect 14 0 33 0;
+#X connect 15 0 17 0;
+#X connect 16 0 0 1;
+#X connect 17 0 4 0;
+#X connect 17 1 32 0;
+#X connect 17 2 20 0;
+#X connect 18 0 14 0;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 19 0;
+#X connect 22 0 13 1;
+#X connect 23 0 22 0;
+#X connect 25 0 26 0;
+#X connect 25 1 27 1;
+#X connect 26 0 10 0;
+#X connect 26 0 27 0;
+#X connect 28 0 9 0;
+#X connect 28 1 34 0;
+#X connect 28 2 29 1;
+#X connect 29 0 37 0;
+#X connect 31 0 35 0;
+#X connect 32 0 35 1;
+#X connect 33 0 34 1;
+#X connect 33 1 32 1;
+#X connect 34 0 9 1;
+#X connect 34 0 23 0;
+#X connect 35 0 30 0;
+#X connect 36 0 1 1;
+#X connect 37 1 31 0;
+#X restore 357 416 pd envgen;
+#X obj 456 329 element \$0template \$0arrayvals;
+#X msg 456 306 0;
+#X obj 415 206 t p p b p;
+#N canvas 212 221 507 438 save 0;
+#X obj 7 394 sssad/sssad \$1;
+#X obj 57 11 r SSSAD_SAVE;
+#X obj 76 239 element \$0template \$0arrayvals;
+#X obj 76 217 f;
+#X obj 104 217 + 1;
+#X obj 76 194 until;
+#X msg 113 172 0;
+#X obj 53 333 list prepend;
+#X obj 146 333 t l;
+#X obj 30 362 list;
+#X obj 57 36 t b b b b;
+#X obj 281 217 inlet;
+#X obj 76 127 pointer;
+#X msg 76 104 traverse \$1 \, next;
+#X obj 76 60 \$0;
+#X obj 76 83 makefilename pd-%ddata;
+#X obj 76 148 getsize \$0template \$0arrayvals;
+#X obj 7 415 outlet;
+#X obj 76 260 get \$0arraytemplate x;
+#X connect 0 0 17 0;
+#X connect 1 0 10 0;
+#X connect 2 0 18 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 0;
+#X connect 6 0 3 1;
+#X connect 7 0 8 0;
+#X connect 7 0 9 1;
+#X connect 8 0 7 1;
+#X connect 9 0 0 1;
+#X connect 10 0 9 0;
+#X connect 10 1 14 0;
+#X connect 10 2 6 0;
+#X connect 10 3 7 1;
+#X connect 11 0 2 1;
+#X connect 12 0 16 0;
+#X connect 13 0 12 0;
+#X connect 14 0 15 0;
+#X connect 15 0 13 0;
+#X connect 16 0 5 0;
+#X connect 18 0 7 0;
+#X restore 445 416 pd save;
+#N canvas 64 35 650 643 load 0;
+#X obj 21 6 inlet;
+#X obj 21 65 until;
+#X obj 21 103 list append;
+#X obj 120 148 bang;
+#X obj 361 235 pointer;
+#X obj 156 305 setsize \$0template \$0arrayvals;
+#X msg 361 212 traverse \$1 \, next;
+#X obj 361 168 \$0;
+#X obj 361 191 makefilename pd-%ddata;
+#X msg 172 126 0;
+#X obj 156 232 f;
+#X obj 185 232 + 1;
+#X obj 21 32 t b l b b;
+#X obj 183 342 element \$0template \$0arrayvals;
+#X obj 156 258 t f f;
+#X obj 186 281 + 1;
+#X obj 27 389 set \$0arraytemplate x;
+#X obj 21 148 list split 1;
+#X obj 49 174 t f b;
+#X connect 0 0 12 0;
+#X connect 1 0 2 0;
+#X connect 2 0 17 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 1;
+#X connect 4 0 13 1;
+#X connect 6 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 0;
+#X connect 9 0 10 1;
+#X connect 10 0 11 0;
+#X connect 10 0 14 0;
+#X connect 11 0 10 1;
+#X connect 12 0 1 0;
+#X connect 12 1 2 1;
+#X connect 12 2 9 0;
+#X connect 12 3 7 0;
+#X connect 13 0 16 1;
+#X connect 14 0 13 0;
+#X connect 14 1 15 0;
+#X connect 15 0 5 0;
+#X connect 17 0 18 0;
+#X connect 17 1 2 1;
+#X connect 17 2 3 0;
+#X connect 18 0 16 0;
+#X connect 18 1 10 0;
+#X restore 445 440 pd load;
+#X msg 415 48 bang;
+#X msg 314 330 0;
+#X obj 5 19 cnv 15 190 15 empty empty empty 20 12 0 14 -260818 -66577
+0;
+#X obj 314 356 set \$0arraytemplate x;
+#X obj 434 282 t b b p;
+#X obj 357 440 outlet;
+#X obj 285 441 s \$1/tick;
+#X obj 107 2 nbx 4 14 0 20000 0 0 \$0-beatsize \$0-beatsize beatsize
+42 8 0 8 -260818 -1 -1 4000 256;
+#X obj 25 92 s-connect \$1/beatsize \$0-beatsize;
+#X obj 597 44 inlet;
+#X obj 597 67 list;
+#X msg 597 89 \; \$1 \$2 \;;
+#X connect 3 0 9 0;
+#X connect 4 0 18 0;
+#X connect 6 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 0;
+#X connect 9 0 7 0;
+#X connect 10 0 15 0;
+#X connect 13 0 15 1;
+#X connect 13 1 19 0;
+#X connect 14 0 5 0;
+#X connect 15 0 26 0;
+#X connect 15 0 27 0;
+#X connect 16 0 24 1;
+#X connect 17 0 16 0;
+#X connect 18 0 13 0;
+#X connect 18 1 25 0;
+#X connect 18 2 14 0;
+#X connect 18 3 5 1;
+#X connect 19 0 20 0;
+#X connect 21 0 3 0;
+#X connect 22 0 24 0;
+#X connect 25 0 22 0;
+#X connect 25 1 17 0;
+#X connect 25 2 16 1;
+#X connect 30 0 31 0;
+#X connect 31 0 32 0;
+#X coords 0 -1 1 1 200 40 1 0 0;
diff --git a/s-bitcrusher~.pd b/s-bitcrusher~.pd
new file mode 100644
index 0000000..1a93b1f
--- /dev/null
+++ b/s-bitcrusher~.pd
@@ -0,0 +1,22 @@
+#N canvas 137 66 476 483 10;
+#X obj 146 345 samphold~;
+#X obj 204 321 phasor~;
+#X obj 5 29 nbx 3 16 0 127 0 1 \$0/bits \$1/bits bits 0 -6 0 8 -260818
+-1 -1 77 256;
+#X obj 139 298 inlet~;
+#X obj 134 379 outlet~;
+#X obj 54 286 noise~;
+#X obj 56 310 *~ 0.001;
+#X obj 44 29 hsl 50 16 0 127 0 0 \$0/bits \$1/bits empty -2 -6 0 8
+-260818 -1 -1 3900 1;
+#X obj 204 296 mtof;
+#X obj 204 267 r \$0/bits;
+#X obj 222 413 sssad/auto \$0/bits \$1/bits;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 3 0 0 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 8 0 1 0;
+#X connect 9 0 8 0;
+#X coords 0 0 1 1 100 50 1 0 0;
diff --git a/s-boomdrum~.pd b/s-boomdrum~.pd
new file mode 100644
index 0000000..6223456
--- /dev/null
+++ b/s-boomdrum~.pd
@@ -0,0 +1,45 @@
+#N canvas 296 69 653 600 10;
+#X obj 99 210 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 99 166 t b b;
+#X obj 84 460 s-ezdac~ out4;
+#X obj 15 321 line~;
+#X msg 65 257 1;
+#X obj 83 432 *~;
+#X obj 127 190 delay 10;
+#X obj 15 225 pack 0 500;
+#X floatatom 52 167 5 0 0 0 - - -;
+#X obj 15 369 expr~ -ln(1 - $v1);
+#X obj 99 232 s-filter~ bass;
+#X obj 15 392 clip~ -10 10;
+#X obj 441 336 inlet;
+#X obj 441 359 unpack f f;
+#X obj 441 381 t b f;
+#X obj 441 486 s \$0-shot;
+#X msg 441 464 bang;
+#X obj 506 381 / 12;
+#X obj 506 404 s \$0-vol;
+#X obj 471 435 s \$0-cutoff;
+#X connect 0 0 10 0;
+#X connect 1 0 0 0;
+#X connect 1 0 7 0;
+#X connect 1 1 4 0;
+#X connect 1 1 6 0;
+#X connect 3 0 9 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
+#X connect 5 0 2 1;
+#X connect 6 0 0 0;
+#X connect 7 0 3 0;
+#X connect 8 0 7 1;
+#X connect 9 0 11 0;
+#X connect 10 0 5 1;
+#X connect 11 0 5 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 13 1 17 0;
+#X connect 14 0 16 0;
+#X connect 14 1 19 0;
+#X connect 16 0 15 0;
+#X connect 17 0 18 0;
+#X coords 0 -1 1 1 85 60 1 5 5;
diff --git a/s-breaker~.pd b/s-breaker~.pd
new file mode 100644
index 0000000..3b2c286
--- /dev/null
+++ b/s-breaker~.pd
@@ -0,0 +1,247 @@
+#N struct 1082-template float time float id;
+#N canvas 228 22 766 664 10;
+#X obj 8 428 loadbang;
+#X msg 8 467 0;
+#X obj 8 514 f;
+#X obj 39 514 + 1;
+#X obj 419 22 bng 14 250 50 0 \$0-add \$0-add add 18 12 0 8 -260818
+-1 -1;
+#X obj 15 488 r \$0-add;
+#X obj 368 22 bng 14 250 50 0 \$0-clear \$0-clear clear 18 12 0 8 -260818
+-1 -1;
+#X msg 48 365 \; \$1 clear;
+#X obj 48 302 \$0;
+#X obj 48 281 r \$0-clear;
+#X obj 8 617 pack f f;
+#X obj 59 593 * 16;
+#X obj 79 428 r \$0-clear;
+#X obj 97 594 s \$0-count;
+#N canvas 308 113 599 543 1082-template 0;
+#X msg 181 264 traverse \$1 \, bang;
+#X obj 181 286 pointer;
+#X obj 4 150 inlet;
+#X obj 181 220 \$0;
+#X obj 181 242 makefilename pd-%d-data;
+#X msg 4 286 1;
+#X obj 4 25 drawpolygon 5312 1 time(1:507)(1:507) 1 time(1:507)(1:507)
+200;
+#X obj 4 4 struct \$0-template float time float id;
+#X obj 4 308 append \$0-template time id;
+#X obj 92 286 r \$0-count;
+#X obj 4 172 t b b;
+#X obj 4 59 drawpolygon 18 1 time(1:507)(1:507) 200 time(1:507)(3:510)
+200 time(1:507)(3:510) 209 time(1:507)(1:507) 209 time(1:507)(1:507)
+200;
+#X obj 4 106 drawnumber id time(3:510) 0 18;
+#X connect 0 0 1 0;
+#X connect 1 0 8 2;
+#X connect 2 0 10 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 8 0;
+#X connect 9 0 8 1;
+#X connect 10 0 5 0;
+#X connect 10 1 3 0;
+#X restore 8 638 pd \$0-template;
+#X obj 48 344 makefilename pd-%d-data;
+#X obj 139 281 loadbang;
+#X obj 139 302 s \$0-clear;
+#N canvas 0 16 999 675 1082-data 0;
+#X scalar 1082-template 65 1 \;;
+#X coords 0 0 510 210 510 210 1;
+#X restore 13 39 pd \$0-data;
+#X msg 11 281 bang;
+#X obj 238 643 outlet~;
+#X text 8 262 clear all break points;
+#X text 6 408 add a new thing;
+#X text 282 264 takes in note pairs;
+#N canvas 0 0 450 300 graph3 0;
+#X array \$0-sample 170688 float 2;
+#X coords 0 1 170688 -1 510 210 1;
+#X restore 13 39 graph;
+#X obj 14 40 cnv 15 508 208 empty empty empty 20 12 0 14 -166441 -66577
+0;
+#N canvas 229 22 765 663 loadybits 0;
+#X obj 176 594 outlet~;
+#X obj 176 503 line~;
+#X obj 176 461 pack f f;
+#X obj 176 525 tabread4~ \$0-sample;
+#X obj 192 10 r \$0-open;
+#X obj 192 32 openpanel;
+#X obj 192 126 soundfiler;
+#X obj 192 79 pack s s;
+#X obj 264 9 loadbang;
+#X obj 264 32 \$0;
+#X msg 192 101 read -resize \$1 \$2;
+#X obj 176 372 f;
+#X obj 109 123 t b b;
+#X obj 54 159 r \$0-stop;
+#X msg 359 9 bang;
+#X msg 264 53 symbol \$1-sample;
+#X obj 109 101 r \$0-shot;
+#X obj 199 548 r \$0-vol;
+#X obj 176 572 *~ 1;
+#X obj 248 148 r \$0-freq;
+#X obj 227 372 f;
+#X obj 248 336 t b f;
+#X obj 227 423 * 1;
+#X obj 278 394 / 229.335;
+#X obj 227 394 / 44.1;
+#X obj 15 95 inlet;
+#X obj 45 212 f;
+#X obj 29 239 *;
+#X obj 15 123 t f b;
+#X obj 139 461 f;
+#X obj 192 148 t f f f;
+#X obj 227 307 -;
+#X obj 227 279 t b f;
+#X obj 29 262 t f f;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 18 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 30 0;
+#X connect 7 0 10 0;
+#X connect 8 0 9 0;
+#X connect 9 0 15 0;
+#X connect 10 0 6 0;
+#X connect 11 0 2 0;
+#X connect 12 0 11 0;
+#X connect 12 1 29 0;
+#X connect 13 0 29 0;
+#X connect 14 0 9 0;
+#X connect 15 0 7 1;
+#X connect 16 0 12 0;
+#X connect 17 0 18 1;
+#X connect 18 0 0 0;
+#X connect 19 0 21 0;
+#X connect 20 0 24 0;
+#X connect 21 0 20 0;
+#X connect 21 1 23 0;
+#X connect 22 0 2 1;
+#X connect 23 0 22 1;
+#X connect 24 0 22 0;
+#X connect 25 0 28 0;
+#X connect 26 0 27 1;
+#X connect 27 0 33 0;
+#X connect 28 0 27 0;
+#X connect 28 1 26 0;
+#X connect 29 0 1 0;
+#X connect 30 0 31 0;
+#X connect 30 1 11 1;
+#X connect 30 2 26 1;
+#X connect 31 0 20 1;
+#X connect 32 0 31 0;
+#X connect 32 1 31 1;
+#X connect 33 0 29 1;
+#X connect 33 1 32 0;
+#X restore 238 620 pd loadybits;
+#X obj 239 265 inlet;
+#X obj 239 365 unpack f f;
+#X obj 239 387 t b f;
+#X obj 239 509 s \$0-shot;
+#X msg 239 487 bang;
+#X obj 304 412 s \$0-vol;
+#X obj 304 389 / 127;
+#X obj 269 461 s \$0-freq;
+#X obj 269 412 mtof;
+#X obj 269 437 expr 60000 / $f1;
+#X obj 320 22 bng 14 250 50 0 \$0-open \$0-open open 18 10 0 8 -260818
+-1 -1;
+#X obj 8 540 t f f f;
+#X obj 460 22 nbx 3 14 0 32 0 0 \$0-start \$1-start start 34 12 0 8
+-260818 -1 -1 1 256;
+#N canvas 234 44 715 636 lookup 0;
+#X obj 14 475 outlet;
+#X msg 116 296 next;
+#X obj 269 329 pointer;
+#X obj 269 222 \$0;
+#X obj 65 217 until;
+#X obj 65 249 f;
+#X obj 93 249 + 1;
+#X msg 150 200 0;
+#X msg 269 271 traverse \$1;
+#X obj 65 94 mod;
+#X obj 81 44 r \$0-count;
+#X obj 14 22 inlet;
+#X obj 269 422 / 510;
+#X obj 269 247 makefilename pd-%d-data;
+#X obj 14 44 select 0;
+#X msg 14 66 0;
+#X obj 269 351 get \$0-template time id;
+#X obj 269 401 spigot;
+#X obj 425 372 ==;
+#X obj 65 115 t b b b f;
+#X obj 81 159 r \$0-count;
+#X obj 65 185 f;
+#X obj 428 450 print equal;
+#X obj 81 69 + 1;
+#X connect 1 0 2 0;
+#X connect 2 0 16 0;
+#X connect 3 0 13 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 1;
+#X connect 7 0 5 0;
+#X connect 8 0 2 0;
+#X connect 9 0 19 0;
+#X connect 10 0 23 0;
+#X connect 11 0 14 0;
+#X connect 12 0 0 0;
+#X connect 13 0 8 0;
+#X connect 14 0 15 0;
+#X connect 14 1 9 0;
+#X connect 15 0 0 0;
+#X connect 16 0 17 0;
+#X connect 16 1 18 0;
+#X connect 17 0 12 0;
+#X connect 18 0 17 1;
+#X connect 18 0 22 0;
+#X connect 19 0 21 0;
+#X connect 19 1 7 0;
+#X connect 19 2 3 0;
+#X connect 19 3 18 1;
+#X connect 20 0 21 1;
+#X connect 21 0 4 0;
+#X connect 23 0 9 1;
+#X restore 476 445 pd lookup;
+#X obj 239 286 t l b;
+#X obj 269 310 f;
+#X obj 285 286 r \$0-start;
+#X obj 476 619 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 38 0;
+#X connect 3 0 2 1;
+#X connect 5 0 2 0;
+#X connect 8 0 15 0;
+#X connect 9 0 8 0;
+#X connect 10 0 14 0;
+#X connect 11 0 10 1;
+#X connect 12 0 1 0;
+#X connect 15 0 7 0;
+#X connect 16 0 17 0;
+#X connect 19 0 8 0;
+#X connect 26 0 20 0;
+#X connect 27 0 41 0;
+#X connect 28 0 29 0;
+#X connect 28 1 33 0;
+#X connect 29 0 31 0;
+#X connect 29 1 35 0;
+#X connect 31 0 30 0;
+#X connect 33 0 32 0;
+#X connect 35 0 36 0;
+#X connect 36 0 34 0;
+#X connect 38 0 10 0;
+#X connect 38 1 11 0;
+#X connect 38 2 13 0;
+#X connect 40 0 44 0;
+#X connect 40 0 26 0;
+#X connect 41 0 28 0;
+#X connect 41 1 42 0;
+#X connect 42 0 40 0;
+#X connect 43 0 42 1;
+#X coords 0 0 516 232 516 232 1 10 20;
diff --git a/s-connect.pd b/s-connect.pd
new file mode 100644
index 0000000..5ea016c
--- /dev/null
+++ b/s-connect.pd
@@ -0,0 +1,4 @@
+#N canvas 128 97 309 173 10;
+#X obj 7 7 r \$1;
+#X obj 7 30 s \$2;
+#X connect 0 0 1 0;
diff --git a/s-controlsurface.pd b/s-controlsurface.pd
new file mode 100644
index 0000000..226618e
--- /dev/null
+++ b/s-controlsurface.pd
@@ -0,0 +1,111 @@
+#N canvas 239 16 721 668 10;
+#N canvas 0 16 999 675 1075data 0;
+#X coords 0 0 210 210 210 210 1;
+#X restore 13 39 pd \$0data;
+#N canvas 507 228 452 378 1075template 0;
+#X obj 3 4 struct \$0template float x0 float y0 float id float c;
+#X msg 195 257 traverse \$1 \, bang;
+#X obj 195 279 pointer;
+#X obj 4 107 inlet;
+#X obj 3 48 filledpolygon c 0 1 x0(0:200)(0:200) y0(0:200)(0:200) x0(0:200)(10:210)
+y0(0:200)(0:200) x0(0:200)(10:210) y0(0:200)(10:210) x0(0:200)(0:200)
+y0(0:200)(10:210);
+#X msg 4 282 100 100 \$1 \$2;
+#X obj 4 304 append \$0template x0 y0 id c;
+#X obj 195 235 makefilename pd-%ddata;
+#X obj 195 213 \$0;
+#X obj 4 131 t l b;
+#X connect 1 0 2 0;
+#X connect 2 0 6 4;
+#X connect 3 0 9 0;
+#X connect 5 0 6 0;
+#X connect 7 0 1 0;
+#X connect 8 0 7 0;
+#X connect 9 0 5 0;
+#X connect 9 1 8 0;
+#X restore 8 602 pd \$0template;
+#X obj 8 392 loadbang;
+#X msg 8 431 0;
+#X obj 8 478 f;
+#X obj 39 478 + 1;
+#X obj 187 22 bng 14 250 50 0 \$0-add \$0-add add 18 12 0 8 -260818
+-1 -1;
+#X obj 15 452 r \$0-add;
+#X obj 136 22 bng 14 250 50 0 \$0-clear \$0-clear clear 18 12 0 8 -260818
+-1 -1;
+#X msg 526 85 \; \$1 clear;
+#X obj 526 64 makefilename pd-%ddata;
+#X obj 526 43 \$0;
+#X obj 526 22 r \$0-clear;
+#X obj 8 499 t f f;
+#X obj 8 581 pack f f;
+#X obj 59 557 * 16;
+#X obj 69 392 r \$0-clear;
+#X obj 261 177 inlet;
+#X obj 465 564 outlet;
+#X msg 312 451 next;
+#X obj 465 484 pointer;
+#X obj 465 377 \$0;
+#X obj 465 402 makefilename pd-%ddata;
+#X obj 261 372 until;
+#X obj 291 331 > 0;
+#X obj 261 310 t f f;
+#X obj 261 352 spigot;
+#X obj 261 404 f;
+#X obj 289 404 + 1;
+#X obj 261 424 t b f;
+#X msg 336 355 0;
+#X msg 465 426 traverse \$1;
+#X obj 364 433 ==;
+#X obj 261 270 t f b b f;
+#X obj 465 516 spigot;
+#X obj 465 540 get \$0template x0 y0 id c;
+#X obj 521 564 outlet;
+#X obj 14 40 cnv 15 208 208 empty empty empty 20 12 0 14 -260818 -66577
+0;
+#X obj 57 498 s \$0-count;
+#X obj 261 224 mod;
+#X obj 277 202 r \$0-count;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 0 13 0;
+#X connect 4 0 38 0;
+#X connect 5 0 4 1;
+#X connect 7 0 4 0;
+#X connect 10 0 9 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 14 0;
+#X connect 13 1 15 0;
+#X connect 14 0 1 0;
+#X connect 15 0 14 1;
+#X connect 16 0 3 0;
+#X connect 17 0 39 0;
+#X connect 19 0 20 0;
+#X connect 20 0 34 0;
+#X connect 21 0 22 0;
+#X connect 22 0 31 0;
+#X connect 23 0 27 0;
+#X connect 24 0 26 1;
+#X connect 25 0 26 0;
+#X connect 25 1 24 0;
+#X connect 26 0 23 0;
+#X connect 27 0 28 0;
+#X connect 27 0 29 0;
+#X connect 28 0 27 1;
+#X connect 29 0 19 0;
+#X connect 29 1 32 0;
+#X connect 30 0 27 0;
+#X connect 31 0 20 0;
+#X connect 32 0 34 1;
+#X connect 33 0 25 0;
+#X connect 33 1 30 0;
+#X connect 33 2 21 0;
+#X connect 33 3 32 1;
+#X connect 34 0 35 0;
+#X connect 35 0 18 0;
+#X connect 35 1 36 0;
+#X connect 39 0 33 0;
+#X connect 40 0 39 1;
+#X coords 0 0 216 232 216 232 1 10 20;
diff --git a/s-conway-help.pd b/s-conway-help.pd
new file mode 100644
index 0000000..3a9ebc3
--- /dev/null
+++ b/s-conway-help.pd
@@ -0,0 +1,30 @@
+#N canvas 180 199 660 440 10;
+#X obj 13 175 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 106 198 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 13 330 print;
+#X text 34 174 Bang for a generation;
+#X text 126 198 Bang to output the current CA state;
+#X obj 530 376 sssad/datastore;
+#N canvas 0 0 450 300 datastore 0;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD x/state 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 \; SSSAD_ADMIN set \;;
+#X connect 0 0 1 0;
+#X restore 530 355 pd datastore;
+#X text 87 387 If you have [sssad] you can load the 'glider' configuration
+here.;
+#X text 10 8 This is an implementation of conway's game of life in
+puredata. The arguments are [width] [height] and [name] - you probably
+don't want to create one much bigger than 16x16 as it will slow yr
+computer right down while creating it. Left inlet bangs will advance
+the simulation one generation. Right inlet bangs will print out the
+entire table of all values. You can save the current state of your
+CA with the [sssad] abstractions by Frank Barknecht. See [sssad/datastore]
+and [sssad/panel] for example.;
+#X obj 13 221 s-conway 8 8 x;
+#X connect 0 0 9 0;
+#X connect 1 0 9 1;
+#X connect 9 0 2 0;
diff --git a/s-conway.pd b/s-conway.pd
new file mode 100644
index 0000000..7a2f75d
--- /dev/null
+++ b/s-conway.pd
@@ -0,0 +1,444 @@
+#N canvas 0 16 999 675 10;
+#X obj 912 -2 table \$0tng;
+#X obj 912 19 table \$0cur;
+#X obj 873 61 loadbang;
+#X msg 873 181 \; \$1tng resize \$2 \; \$1cur resize \$2 \;;
+#X obj 873 159 pack f f;
+#X obj 873 135 \$0;
+#X obj 924 136 * \$2;
+#X obj 873 93 t b b;
+#X obj 924 114 \$1;
+#X msg 935 61 bang;
+#N canvas 17 168 979 522 make-grid 0;
+#X obj 6 6 inlet;
+#X text 128 6 bang me to make the grid;
+#X obj 54 290 f;
+#X obj 6 442 pack f f s f;
+#X obj 329 244 \$0;
+#X obj 329 222 loadbang;
+#X obj 41 352 * 10;
+#X obj 6 352 * 10;
+#X msg 6 465 \; \$4grid obj \$1 \$2 tgl 8 0 \$3out \$3in empty 0 -6
+0 8 -262144 -1 -1 0 1 \;;
+#X obj 291 335 * 20;
+#X obj 226 361 +;
+#X obj 242 335 * \$1;
+#X obj 275 375 +;
+#X obj 200 330 t f f;
+#X obj 269 354 * 20;
+#X obj 344 317 \$0;
+#X obj 344 340 makefilename pd-%dgridrecs;
+#X obj 6 30 t b b;
+#X obj 599 460 pack f f f;
+#X obj 599 437 \$0;
+#X obj 599 374 t b f;
+#X obj 664 435 * 10;
+#X obj 631 435 * 10;
+#X msg 599 480 \; \$1grid donecanvasdialog 1 -1 1 0 -1 0 0 \$2 \$3
+0 0;
+#X obj 631 413 + 1;
+#X obj 664 413 + 3;
+#X obj 6 375 + 1;
+#X obj 41 375 + 21;
+#X msg 226 424 \; \$4 obj 10 \$3 cell-receive \$2out \$1 \$5;
+#X obj 226 403 pack f s f s f;
+#X obj 6 96 until;
+#X obj 6 120 f;
+#X obj 33 120 + 1;
+#X msg 36 75 0;
+#X obj 6 51 t b b;
+#X obj 6 183 until;
+#X obj 6 204 f;
+#X obj 33 204 + 1;
+#X msg 36 162 0;
+#X obj 6 141 t b b f;
+#X obj 6 162 \$1;
+#X obj 6 75 \$2;
+#X obj 110 229 f;
+#X obj 6 227 f;
+#X obj 6 250 t f b b f;
+#X obj 33 316 \$0;
+#N canvas 0 0 521 310 makename 0;
+#X obj 21 16 inlet;
+#X obj 140 15 inlet;
+#X obj 288 17 inlet;
+#X obj 289 166 outlet;
+#X obj 289 142 makefilename;
+#X obj 289 101 makefilename;
+#X msg 289 80 set \$1;
+#X msg 289 122 set \$1;
+#X obj 289 59 makefilename %%%%dx%%dy%d;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 2 0 8 0;
+#X connect 4 0 3 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 4 0;
+#X connect 8 0 6 0;
+#X restore 96 359 pd makename;
+#X connect 0 0 17 0;
+#X connect 2 0 46 1;
+#X connect 3 0 8 0;
+#X connect 4 0 3 3;
+#X connect 5 0 4 0;
+#X connect 6 0 27 0;
+#X connect 7 0 26 0;
+#X connect 9 0 12 1;
+#X connect 10 0 29 0;
+#X connect 11 0 10 1;
+#X connect 12 0 29 2;
+#X connect 13 0 10 0;
+#X connect 13 1 14 0;
+#X connect 14 0 12 0;
+#X connect 15 0 16 0;
+#X connect 15 0 29 4;
+#X connect 16 0 29 3;
+#X connect 17 0 34 0;
+#X connect 17 1 15 0;
+#X connect 18 0 23 0;
+#X connect 19 0 18 0;
+#X connect 20 0 19 0;
+#X connect 20 1 24 0;
+#X connect 21 0 18 2;
+#X connect 22 0 18 1;
+#X connect 24 0 22 0;
+#X connect 25 0 21 0;
+#X connect 26 0 3 0;
+#X connect 27 0 3 1;
+#X connect 29 0 28 0;
+#X connect 30 0 31 0;
+#X connect 31 0 32 0;
+#X connect 31 0 39 0;
+#X connect 32 0 31 1;
+#X connect 33 0 31 1;
+#X connect 34 0 41 0;
+#X connect 34 1 33 0;
+#X connect 35 0 36 0;
+#X connect 36 0 37 0;
+#X connect 36 0 43 0;
+#X connect 37 0 36 1;
+#X connect 38 0 36 1;
+#X connect 39 0 40 0;
+#X connect 39 1 38 0;
+#X connect 39 2 42 0;
+#X connect 40 0 35 0;
+#X connect 41 0 30 0;
+#X connect 42 0 2 1;
+#X connect 42 0 6 0;
+#X connect 42 0 9 0;
+#X connect 42 0 11 0;
+#X connect 42 0 25 0;
+#X connect 43 0 20 0;
+#X connect 43 0 44 0;
+#X connect 44 0 7 0;
+#X connect 44 0 13 0;
+#X connect 44 1 45 0;
+#X connect 44 2 2 0;
+#X connect 44 3 46 2;
+#X connect 45 0 46 0;
+#X connect 46 0 3 2;
+#X connect 46 0 29 1;
+#X restore 865 581 pd make-grid;
+#X obj 865 541 loadbang;
+#X msg 930 541 bang;
+#X obj 865 611 namecanvas \$0grid;
+#N canvas 41 31 444 615 2082gridrecs 0;
+#X restore 865 634 pd \$0gridrecs;
+#X obj 352 354 inlet;
+#X obj 725 351 inlet;
+#X obj 720 591 outlet;
+#X text 525 262 args: [width] [height];
+#N canvas 0 0 867 691 life-iteration 0;
+#X msg 67 78 0;
+#X obj 41 140 f;
+#X obj 73 140 + 1;
+#X obj 5 2 inlet;
+#X obj 41 120 until;
+#X obj 41 78 \$1;
+#X obj 41 99 * \$2;
+#X msg 10 613 0;
+#X msg 61 613 1;
+#X obj 12 528 pack f f;
+#X obj 12 505 f;
+#X obj 12 459 t b f;
+#X obj 12 552 route 0 1;
+#X text 86 554 live cell or dead cell?;
+#X obj 12 579 select 3;
+#X obj 75 579 select 0 1 2 3;
+#X obj 28 482 tabread \$0cur;
+#X text 104 612 What to do \, depending on neighbours;
+#X obj 10 669 tabwrite \$0tng;
+#X msg 108 105 \; \$1tng const 0 \;;
+#X obj 108 78 \$0;
+#X obj 124 245 until;
+#X obj 124 266 f;
+#X obj 152 266 + 1;
+#X obj 186 397 0;
+#X obj 243 331 * -1;
+#X obj 378 235 \$1;
+#X obj 254 397 0;
+#X obj 202 373 - 1;
+#X obj 224 397 0;
+#X obj 381 398 0;
+#X obj 449 398 0;
+#X obj 465 375 + 1;
+#X obj 396 373 - 1;
+#X obj 419 398 0;
+#X obj 378 212 loadbang;
+#X obj 124 306 select 0 1 2 3 4 5 6 7;
+#X msg 340 212 bang;
+#X obj 417 266 * \$2;
+#X obj 352 453 +;
+#X obj 352 551 f;
+#X obj 352 505 tabread \$0cur;
+#X obj 41 168 t b f f f;
+#X obj 383 551 + 1;
+#X obj 593 371 pack f s;
+#X msg 593 394 \; \$2 \$1 \;;
+#X obj 5 23 t b b b b;
+#X obj 5 50 s \$0redraw;
+#X obj 593 21 r \$0redraw;
+#X msg 623 68 0;
+#X obj 593 130 f;
+#X obj 625 130 + 1;
+#X obj 593 110 until;
+#X obj 593 68 \$1;
+#X obj 593 89 * \$2;
+#X obj 593 45 t b b;
+#X obj 593 174 tabread \$0tng;
+#X obj 643 220 mod \$1;
+#X obj 691 220 / \$1;
+#X obj 691 241 int;
+#X obj 691 262 change;
+#X obj 336 580 f;
+#X obj 102 200 t b b b;
+#X obj 352 484 mod;
+#X obj 272 372 + 1;
+#X msg 342 397 1;
+#X msg 307 397 -1;
+#X obj 352 528 select 1;
+#X msg 154 223 0;
+#X obj 124 286 - 1;
+#X msg 124 223 9;
+#X obj 593 153 t f b f f;
+#N canvas 0 0 521 310 makename 0;
+#X obj 21 16 inlet;
+#X obj 140 15 inlet;
+#X obj 288 17 inlet;
+#X obj 289 166 outlet;
+#X obj 289 142 makefilename;
+#X obj 289 101 makefilename;
+#X msg 289 80 set \$1;
+#X msg 289 122 set \$1;
+#X obj 289 59 makefilename %%%%dx%dy%%din;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 2 0 8 0;
+#X connect 4 0 3 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 4 0;
+#X connect 8 0 6 0;
+#X restore 644 313 pd makename;
+#X obj 612 256 \$0;
+#X connect 0 0 1 1;
+#X connect 1 0 2 0;
+#X connect 1 0 42 0;
+#X connect 2 0 1 1;
+#X connect 3 0 46 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 18 0;
+#X connect 8 0 18 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 0;
+#X connect 11 0 10 0;
+#X connect 11 1 9 1;
+#X connect 12 0 14 0;
+#X connect 12 1 15 0;
+#X connect 14 0 8 0;
+#X connect 15 0 7 0;
+#X connect 15 1 7 0;
+#X connect 15 2 8 0;
+#X connect 15 3 8 0;
+#X connect 15 4 7 0;
+#X connect 16 0 10 1;
+#X connect 20 0 19 0;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 22 0 69 0;
+#X connect 23 0 22 1;
+#X connect 24 0 39 0;
+#X connect 25 0 28 0;
+#X connect 25 0 29 1;
+#X connect 25 0 64 0;
+#X connect 26 0 25 0;
+#X connect 26 0 33 0;
+#X connect 26 0 34 1;
+#X connect 26 0 32 0;
+#X connect 26 0 38 0;
+#X connect 27 0 39 0;
+#X connect 28 0 24 1;
+#X connect 29 0 39 0;
+#X connect 30 0 39 0;
+#X connect 31 0 39 0;
+#X connect 32 0 31 1;
+#X connect 33 0 30 1;
+#X connect 34 0 39 0;
+#X connect 35 0 26 0;
+#X connect 36 0 24 0;
+#X connect 36 1 29 0;
+#X connect 36 2 27 0;
+#X connect 36 3 66 0;
+#X connect 36 4 65 0;
+#X connect 36 5 30 0;
+#X connect 36 6 34 0;
+#X connect 36 7 31 0;
+#X connect 37 0 26 0;
+#X connect 38 0 63 1;
+#X connect 39 0 63 0;
+#X connect 40 0 43 0;
+#X connect 41 0 67 0;
+#X connect 42 0 62 0;
+#X connect 42 1 16 0;
+#X connect 42 2 18 1;
+#X connect 42 3 39 1;
+#X connect 43 0 40 1;
+#X connect 43 0 61 1;
+#X connect 44 0 45 0;
+#X connect 46 0 47 0;
+#X connect 46 1 5 0;
+#X connect 46 2 0 0;
+#X connect 46 3 20 0;
+#X connect 48 0 55 0;
+#X connect 49 0 50 1;
+#X connect 50 0 51 0;
+#X connect 50 0 71 0;
+#X connect 51 0 50 1;
+#X connect 52 0 50 0;
+#X connect 53 0 54 0;
+#X connect 54 0 52 0;
+#X connect 55 0 53 0;
+#X connect 55 1 49 0;
+#X connect 56 0 44 0;
+#X connect 57 0 72 1;
+#X connect 58 0 59 0;
+#X connect 59 0 60 0;
+#X connect 60 0 72 2;
+#X connect 61 0 11 0;
+#X connect 62 0 61 0;
+#X connect 62 1 70 0;
+#X connect 62 2 68 0;
+#X connect 63 0 41 0;
+#X connect 64 0 27 1;
+#X connect 65 0 39 0;
+#X connect 66 0 39 0;
+#X connect 67 0 40 0;
+#X connect 68 0 22 1;
+#X connect 68 0 40 1;
+#X connect 68 0 61 1;
+#X connect 69 0 36 0;
+#X connect 70 0 21 0;
+#X connect 71 0 56 0;
+#X connect 71 1 73 0;
+#X connect 71 2 57 0;
+#X connect 71 3 58 0;
+#X connect 72 0 44 1;
+#X connect 73 0 72 0;
+#X restore 352 385 pd life-iteration;
+#X text 723 333 Bang me to output all values;
+#X text 352 332 Bang me to do proceed one generation;
+#X obj 747 442 until;
+#X obj 747 396 \$1;
+#X obj 747 418 * \$2;
+#X obj 747 464 f;
+#X obj 774 464 + 1;
+#X msg 776 396 0;
+#X obj 747 485 tabread \$0cur;
+#X obj 720 565 list;
+#X obj 725 372 t b b b;
+#X obj 743 514 list prepend;
+#X obj 834 514 t l;
+#N canvas 212 221 507 438 save 0;
+#X obj 58 10 r SSSAD_SAVE;
+#X obj 53 250 outlet;
+#X obj 80 103 until;
+#X obj 80 57 \$1;
+#X obj 80 79 * \$2;
+#X obj 80 125 f;
+#X obj 107 125 + 1;
+#X msg 109 57 0;
+#X obj 80 146 tabread \$0cur;
+#X obj 53 226 list;
+#X obj 58 33 t b b b;
+#X obj 76 175 list prepend;
+#X obj 167 175 t l;
+#X connect 0 0 10 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 6 0 5 1;
+#X connect 7 0 5 1;
+#X connect 8 0 11 0;
+#X connect 9 0 1 0;
+#X connect 10 0 9 0;
+#X connect 10 0 11 1;
+#X connect 10 1 3 0;
+#X connect 10 2 7 0;
+#X connect 11 0 12 0;
+#X connect 11 0 9 1;
+#X connect 12 0 11 1;
+#X restore 527 560 pd save;
+#N canvas 64 35 650 643 load 0;
+#X obj 40 6 inlet;
+#X obj 62 168 s \$0tng;
+#X obj 40 193 s \$0redraw;
+#X obj 62 145 list prepend;
+#X obj 40 74 t b l b;
+#X msg 91 97 0;
+#X connect 0 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 1 3 0;
+#X connect 4 2 5 0;
+#X connect 5 0 3 1;
+#X restore 392 606 pd load;
+#X text 389 546 Save with [sssad];
+#X obj 392 582 sssad/sssad \$3/state;
+#X obj 920 360 inlet;
+#X connect 2 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 1;
+#X connect 7 0 5 0;
+#X connect 7 1 8 0;
+#X connect 8 0 6 0;
+#X connect 9 0 7 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 15 0 19 0;
+#X connect 16 0 30 0;
+#X connect 22 0 25 0;
+#X connect 23 0 24 0;
+#X connect 24 0 22 0;
+#X connect 25 0 26 0;
+#X connect 25 0 28 0;
+#X connect 26 0 25 1;
+#X connect 27 0 25 1;
+#X connect 28 0 31 0;
+#X connect 29 0 17 0;
+#X connect 30 0 29 0;
+#X connect 30 0 31 1;
+#X connect 30 1 23 0;
+#X connect 30 2 27 0;
+#X connect 31 0 32 0;
+#X connect 31 0 29 1;
+#X connect 32 0 31 1;
+#X connect 33 0 36 1;
+#X connect 36 0 34 0;
+#X connect 37 0 34 0;
+#X coords 0 -1 1 0 80 100 1 0 0;
diff --git a/s-default.pd b/s-default.pd
new file mode 100644
index 0000000..de3983b
--- /dev/null
+++ b/s-default.pd
@@ -0,0 +1,13 @@
+#N canvas 366 303 450 300 10;
+#X obj 8 60 select 0;
+#X obj 8 36 \$1;
+#X obj 8 83 \$2;
+#X obj 8 12 loadbang;
+#X obj 8 128 outlet;
+#X obj 71 12 inlet;
+#X connect 0 0 2 0;
+#X connect 0 1 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 5 0 1 0;
diff --git a/s-delayunit~.pd b/s-delayunit~.pd
new file mode 100644
index 0000000..485589d
--- /dev/null
+++ b/s-delayunit~.pd
@@ -0,0 +1,40 @@
+#N canvas 497 297 455 342 10;
+#X obj 140 11 inlet~;
+#X obj 169 271 outlet~;
+#X obj 210 188 +~;
+#X obj 225 160 *~;
+#X obj 8 28 hsl 64 16 0 127 0 1 \$0/length \$1/length length -2 -6
+0 8 -260818 -1 -1 1143 1;
+#X obj 8 59 hsl 64 16 0 127 0 1 \$0/feedback \$1/feedback feedback
+-2 -6 0 8 -260818 -1 -1 681 1;
+#X obj 341 143 / 100;
+#X obj 225 85 mtof;
+#X obj 370 30 block~ 1;
+#X obj 225 132 delread~ \$0-del;
+#X obj 211 213 s-jail;
+#X obj 316 189 table \$0-del 2000;
+#X obj 211 242 delwrite~ \$0-del 2000;
+#X obj 319 18 inlet;
+#X msg 319 59 \; \$1 \$2 \;;
+#X obj 319 96 print;
+#X obj 319 38 list;
+#X obj 225 107 expr 8000 / $f1;
+#X obj 341 121 r \$0/feedback;
+#X obj 225 42 r \$0/length;
+#X obj 2 322 sssad/auto \$0/feedback \$1/feedback;
+#X obj 3 300 sssad/auto \$0/length \$1/length;
+#X connect 0 0 2 0;
+#X connect 2 0 10 0;
+#X connect 3 0 2 1;
+#X connect 6 0 3 1;
+#X connect 7 0 17 0;
+#X connect 9 0 3 0;
+#X connect 10 0 1 0;
+#X connect 10 0 12 0;
+#X connect 13 0 16 0;
+#X connect 14 0 15 0;
+#X connect 16 0 14 0;
+#X connect 17 0 9 0;
+#X connect 18 0 6 0;
+#X connect 19 0 7 0;
+#X coords 0 0 1 1 120 80 1 0 0;
diff --git a/s-env-help.pd b/s-env-help.pd
new file mode 100644
index 0000000..2d42332
--- /dev/null
+++ b/s-env-help.pd
@@ -0,0 +1,24 @@
+#N struct 1218cursor float x;
+#N struct 1218lines float x;
+#N struct 1218template float x float y array 1218arrayvals 1218arraytemplate
+;
+#N struct 1218arraytemplate float x float y;
+#N canvas 173 102 743 471 10;
+#X obj 60 271 print;
+#X text 91 8 This is a control rate envelope. The first argument is
+it's sssad state saving name (make it up) and the second argument is
+how many units long you want to make it. Numbers sent to the left inlet
+will be used to do an interpolated lookup.;
+#X floatatom 60 86 5 0 0 0 - - -;
+#N canvas 0 0 450 300 datastore 0;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD control/envelope 2 2 127 88.6486 167 79.5799
+208 113.839 270 31.2136 281 48.3433 288 31.2136 295 49.3509 304 32.2212
+312 49.3509 320 32.2212 352 82.6027 375 123.916 383 94.6943 400 104.771
+432 84.618 514 97.7172 \; SSSAD_ADMIN set \;;
+#X connect 0 0 1 0;
+#X restore 616 243 pd datastore;
+#X obj 616 177 sssad/datastore;
+#X obj 60 108 s-env control 512;
+#X connect 2 0 5 0;
+#X connect 5 0 0 0;
diff --git a/s-env.pd b/s-env.pd
new file mode 100644
index 0000000..c0c9f66
--- /dev/null
+++ b/s-env.pd
@@ -0,0 +1,486 @@
+#N canvas 13 16 946 669 10;
+#N canvas 343 320 599 314 1185template 0;
+#X obj 17 51 struct \$0template float x float y array \$0arrayvals
+\$0arraytemplate;
+#X obj 17 86 outlet;
+#X connect 0 0 1 0;
+#X restore 791 274 pd \$0template;
+#N canvas 435 201 450 300 1185arraytemplate 0;
+#X obj 24 43 struct \$0arraytemplate float x float y;
+#X obj 24 65 print;
+#X obj 24 88 filledpolygon 333 333 1 -2 -2 2 -2 2 2 -2 2 -2 -2;
+#X connect 0 0 1 0;
+#X restore 791 251 pd \$0arraytemplate;
+#N canvas 0 0 439 363 initarray 0;
+#X obj 163 211 pointer;
+#X msg 133 47 bang;
+#X text 186 35 click here to re-initialize;
+#X msg 300 176 \; \$1 clear;
+#X obj 163 96 \$0;
+#X msg 163 188 traverse \$1 \, bang;
+#X obj 163 119 makefilename pd-%ddata;
+#X obj 35 251 append \$0template x;
+#X msg 35 219 0;
+#X obj 133 72 t b b b;
+#X obj 68 114 outlet;
+#X obj 163 140 t s s;
+#X obj 133 12 inlet;
+#X connect 0 0 7 1;
+#X connect 1 0 9 0;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 11 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 9 1 8 0;
+#X connect 9 2 4 0;
+#X connect 11 0 5 0;
+#X connect 11 1 3 0;
+#X connect 12 0 1 0;
+#X restore 132 225 pd initarray;
+#X obj 170 438 setsize \$0template \$0arrayvals;
+#X msg 132 344 traverse \$1 \, next;
+#X obj 132 300 \$0;
+#X obj 132 323 makefilename pd-%ddata;
+#X msg 132 249 bang;
+#X obj 132 276 delay 10;
+#X obj 62 568 inlet;
+#X obj 132 594 t p p;
+#X obj 170 414 1;
+#N canvas 427 10 552 678 envgen 0;
+#X obj 102 241 element \$0template \$0arrayvals;
+#X obj 102 291 get \$0arraytemplate x y;
+#X obj 121 147 getsize \$0template \$0arrayvals;
+#X obj 102 3 inlet;
+#X obj 307 216 inlet;
+#X msg 121 101 traverse \$1 \, next;
+#X obj 121 53 \$0;
+#X obj 121 77 makefilename pd-%ddata;
+#X obj 295 309 set \$0arraytemplate x y;
+#X text 372 258 redraw;
+#X obj 121 170 until;
+#X obj 121 192 f;
+#X obj 151 192 + 1;
+#X obj 148 53 0;
+#X obj 121 124 pointer \$0template;
+#X msg 257 124 next;
+#X obj 76 400 f;
+#X obj 229 394 f;
+#X obj 207 417 0;
+#X obj 171 500 <;
+#X obj 295 286 get \$0arraytemplate x y;
+#X obj 295 263 t p p;
+#X obj 178 53 s \$0lookup;
+#X obj 92 359 r \$0lookup;
+#X obj 102 321 t b f b;
+#X obj 229 368 0;
+#X obj 102 30 t b b b f b;
+#X obj 92 380 + 2;
+#X obj 108 500 >=;
+#X obj 138 528 &&;
+#X obj 138 550 select 1;
+#X obj 191 576 f;
+#X obj 392 479 f;
+#X obj 365 509 0;
+#X obj 405 445 0;
+#X obj 216 450 -;
+#X obj 245 450 -;
+#X obj 76 420 t f f f;
+#X obj 216 478 /;
+#X obj 360 445 t f b;
+#X obj 256 53 s \$0startlookup;
+#X obj 158 321 r \$0startlookup;
+#X obj 405 423 r \$0startlookup;
+#X obj 319 611 +;
+#X obj 383 540 -;
+#X obj 316 580 *;
+#X obj 319 656 outlet;
+#X obj 319 635 expr 127 - ($f1 - 2);
+#X connect 0 0 21 0;
+#X connect 0 0 1 0;
+#X connect 1 0 24 0;
+#X connect 1 1 39 0;
+#X connect 2 0 10 0;
+#X connect 3 0 26 0;
+#X connect 4 0 0 1;
+#X connect 5 0 14 0;
+#X connect 6 0 7 0;
+#X connect 7 0 5 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 0 0 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 1;
+#X connect 14 0 2 0;
+#X connect 14 1 15 0;
+#X connect 15 0 14 0;
+#X connect 16 0 37 0;
+#X connect 17 0 18 1;
+#X connect 17 0 19 1;
+#X connect 17 0 36 0;
+#X connect 18 0 28 1;
+#X connect 18 0 35 1;
+#X connect 18 0 36 1;
+#X connect 19 0 29 1;
+#X connect 20 0 8 0;
+#X connect 20 1 8 1;
+#X connect 21 0 20 0;
+#X connect 21 1 8 2;
+#X connect 23 0 27 0;
+#X connect 24 0 16 0;
+#X connect 24 1 17 0;
+#X connect 24 2 18 0;
+#X connect 25 0 17 0;
+#X connect 26 1 6 0;
+#X connect 26 2 13 0;
+#X connect 26 3 22 0;
+#X connect 26 4 40 0;
+#X connect 27 0 16 1;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
+#X connect 30 0 31 0;
+#X connect 31 0 45 0;
+#X connect 32 0 33 1;
+#X connect 32 0 44 0;
+#X connect 33 0 44 1;
+#X connect 33 0 43 1;
+#X connect 34 0 32 0;
+#X connect 35 0 38 0;
+#X connect 36 0 38 1;
+#X connect 37 0 28 0;
+#X connect 37 1 19 0;
+#X connect 37 2 35 0;
+#X connect 38 0 31 1;
+#X connect 39 0 32 0;
+#X connect 39 1 33 0;
+#X connect 41 0 25 0;
+#X connect 42 0 34 0;
+#X connect 43 0 47 0;
+#X connect 44 0 45 1;
+#X connect 45 0 43 0;
+#X connect 47 0 46 0;
+#X restore 74 619 pd envgen;
+#X obj 23 541 set \$0arraytemplate x y;
+#X obj 179 513 element \$0template \$0arrayvals;
+#X msg 101 514 3;
+#X msg 23 515 3;
+#X obj 151 467 t b b b p;
+#X msg 179 491 0;
+#X obj 132 391 t p p b p;
+#N canvas 212 221 507 438 save 0;
+#X obj 167 14 r SSSAD_SAVE;
+#X obj 186 242 element \$0template \$0arrayvals;
+#X obj 186 263 get \$0arraytemplate x y;
+#X obj 186 220 f;
+#X obj 214 220 + 1;
+#X obj 186 289 list append;
+#X obj 186 197 until;
+#X msg 230 197 0;
+#X obj 186 333 list prepend;
+#X obj 279 333 t l;
+#X obj 163 364 list;
+#X obj 167 39 t b b b b;
+#X obj 391 220 inlet;
+#X msg 186 107 traverse \$1 \, next;
+#X obj 186 63 \$0;
+#X obj 186 86 makefilename pd-%ddata;
+#X obj 186 151 getsize \$0template \$0arrayvals;
+#X obj 7 415 outlet;
+#X obj 7 394 sssad/sssad \$1/envelope;
+#X obj 186 130 pointer \$0template;
+#X msg 320 130 next;
+#X connect 0 0 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 1 5 1;
+#X connect 3 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
+#X connect 5 0 8 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 1;
+#X connect 8 0 9 0;
+#X connect 8 0 10 1;
+#X connect 9 0 8 1;
+#X connect 10 0 18 1;
+#X connect 11 0 10 0;
+#X connect 11 1 14 0;
+#X connect 11 2 7 0;
+#X connect 11 3 8 1;
+#X connect 12 0 1 1;
+#X connect 13 0 19 0;
+#X connect 14 0 15 0;
+#X connect 15 0 13 0;
+#X connect 16 0 6 0;
+#X connect 18 0 17 0;
+#X connect 19 0 16 0;
+#X connect 19 1 20 0;
+#X connect 20 0 19 0;
+#X restore 162 619 pd save;
+#N canvas 64 35 650 643 load 0;
+#X obj 21 6 inlet;
+#X obj 21 65 until;
+#X obj 21 103 list append;
+#X obj 120 148 bang;
+#X obj 21 148 list split 2;
+#X obj 21 229 list split 1;
+#X obj 156 305 setsize \$0template \$0arrayvals;
+#X msg 361 212 traverse \$1 \, next;
+#X obj 361 168 \$0;
+#X obj 361 191 makefilename pd-%ddata;
+#X msg 172 126 0;
+#X obj 156 232 f;
+#X obj 185 232 + 1;
+#X obj 21 178 t l b;
+#X obj 21 32 t b l b b;
+#X obj 177 342 element \$0template \$0arrayvals;
+#X obj 21 389 set \$0arraytemplate x y;
+#X obj 156 258 t f f;
+#X obj 186 281 + 1;
+#X obj 361 235 pointer \$0template;
+#X msg 494 235 next;
+#X connect 0 0 14 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 1;
+#X connect 4 0 13 0;
+#X connect 4 1 2 1;
+#X connect 4 2 3 0;
+#X connect 5 0 16 0;
+#X connect 5 1 16 1;
+#X connect 7 0 19 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 10 0 11 1;
+#X connect 11 0 12 0;
+#X connect 11 0 17 0;
+#X connect 12 0 11 1;
+#X connect 13 0 5 0;
+#X connect 13 1 11 0;
+#X connect 14 0 1 0;
+#X connect 14 1 2 1;
+#X connect 14 2 10 0;
+#X connect 14 3 8 0;
+#X connect 15 0 16 2;
+#X connect 17 0 15 0;
+#X connect 17 1 18 0;
+#X connect 18 0 6 0;
+#X connect 19 0 6 1;
+#X connect 19 0 15 1;
+#X connect 19 1 20 0;
+#X connect 20 0 19 0;
+#X restore 162 643 pd load;
+#X obj 670 275 namecanvas \$0env;
+#X text 626 159 Interpolates between points at control rate.;
+#X obj 110 165 loadbang;
+#X text 409 207 resize the canvasses etc. first;
+#X obj 411 416 \$0;
+#X msg 411 228 bang;
+#X obj 463 374 \$2;
+#X obj 463 516 + 16;
+#X obj 411 250 t b b;
+#X obj 496 516 + 4;
+#X obj 411 438 t f f;
+#X obj 441 490 makefilename pd-%d;
+#X obj 411 543 pack f s f f f s;
+#X obj 523 516 + 2;
+#X msg 411 566 \; \$1env donecanvasdialog 1 -1 1 0 -1 \$3 153 \$3 153
+0 0 \; \$2data donecanvasdialog 1 -1 1 0 -1 \$4 131 \$4 131 0 0 \;
+\$1env obj 7 17 cnv 15 \$5 129 empty empty empty 20 12 0 14 -260818
+-66577 0 \; \$2template obj 17 9 plot -x \$6 -y y(2:129)(2:129) \$1arrayvals
+333 0.1 0 0 0 \;;
+#N canvas 0 16 999 675 1185data 0;
+#X coords 0 -1 516 131 516 131 1;
+#X restore 6 16 pd \$0data;
+#X obj 463 394 t f f f f f;
+#X msg 594 490 set \$1;
+#X obj 594 514 makefilename not-set-yet;
+#X obj 594 468 makefilename x(2:%%d)(2:%d);
+#X obj 74 643 outlet;
+#X obj 594 446 + 2;
+#X obj 517 416 + 2;
+#N canvas 301 188 450 300 cursor 0;
+#X obj 59 38 inlet;
+#X obj 37 230 outlet;
+#X obj 89 230 set \$0cursor x;
+#X obj 119 134 \$0;
+#X obj 119 157 makefilename pd-%ddata;
+#X msg 253 201 next;
+#X obj 119 201 pointer \$0cursor;
+#X obj 89 108 t f b;
+#X obj 59 84 t f f;
+#X msg 119 178 traverse \$1 \, bang;
+#X obj 59 61 mod \$2;
+#X connect 0 0 10 0;
+#X connect 3 0 4 0;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 6 0 2 1;
+#X connect 6 1 5 0;
+#X connect 7 0 2 0;
+#X connect 7 1 3 0;
+#X connect 8 0 1 0;
+#X connect 8 1 7 0;
+#X connect 9 0 6 0;
+#X connect 10 0 8 0;
+#X restore 62 590 pd cursor;
+#N canvas 67 68 640 606 1185cursor 0;
+#X obj 7 7 struct \$0cursor float x;
+#X obj 7 29 drawpolygon 900 0 0 1 0 131;
+#X restore 791 227 pd \$0cursor;
+#N canvas 84 62 640 606 1185lines 0;
+#X obj 7 7 struct \$0lines float x;
+#X obj 53 308 r \$0redraw;
+#X obj 7 30 drawpolygon 333 0 0 1 0 131;
+#X obj 53 333 \$0;
+#X obj 53 355 makefilename pd-%ddata;
+#X msg 53 381 traverse \$1 \, bang;
+#X obj 53 490 pointer \$0cursor \$0lines;
+#X obj 114 438 until;
+#X msg 114 462 next;
+#X obj 53 409 t b a;
+#X obj 53 545 get \$0cursor x;
+#X obj 157 545 get \$0lines x;
+#X text 51 291 Execute a redraw;
+#X obj 157 571 set \$0lines x;
+#X obj 53 515 t p p;
+#X obj 157 515 t p p;
+#X obj 53 571 set \$0cursor x;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 9 0;
+#X connect 6 0 14 0;
+#X connect 6 1 15 0;
+#X connect 6 3 7 1;
+#X connect 7 0 8 0;
+#X connect 8 0 6 0;
+#X connect 9 0 7 0;
+#X connect 9 1 6 0;
+#X connect 10 0 16 0;
+#X connect 11 0 13 0;
+#X connect 14 0 10 0;
+#X connect 14 1 16 1;
+#X connect 15 0 11 0;
+#X connect 15 1 13 1;
+#X restore 791 204 pd \$0lines;
+#X text 625 175 args: [name] [length] [line separation];
+#N canvas 0 0 730 605 lines 0;
+#X obj 401 373 pointer;
+#X obj 265 104 t b b;
+#X obj 295 126 \$0;
+#X obj 295 148 makefilename pd-%ddata;
+#X msg 401 350 traverse \$1 \, bang;
+#X obj 265 308 until;
+#X obj 265 329 f;
+#X obj 296 329 + 1;
+#X obj 265 196 t b b;
+#X obj 295 219 0;
+#X obj 265 398 append \$0lines x;
+#X obj 134 196 pointer;
+#X obj 20 101 t b b;
+#X obj 50 123 \$0;
+#X obj 50 145 makefilename pd-%ddata;
+#X msg 134 173 traverse \$1 \, bang;
+#X obj 20 219 append \$0cursor x;
+#X msg 20 174 0;
+#X text 17 67 create the cursor;
+#X obj 243 47 t b b b;
+#X text 269 85 create the lines;
+#X obj 265 219 \$2;
+#X obj 265 285 / \$3;
+#X obj 265 372 * \$3;
+#X obj 20 242 s \$0cursorp;
+#X obj 243 8 inlet;
+#X obj 288 260 s-default \$3 16;
+#X obj 288 350 s-default \$3 16;
+#X connect 0 0 10 1;
+#X connect 1 0 8 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 6 0 23 0;
+#X connect 7 0 6 1;
+#X connect 8 0 21 0;
+#X connect 8 1 9 0;
+#X connect 9 0 6 1;
+#X connect 11 0 16 1;
+#X connect 12 0 17 0;
+#X connect 12 1 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 11 0;
+#X connect 16 0 24 0;
+#X connect 17 0 16 0;
+#X connect 19 0 12 0;
+#X connect 19 1 1 0;
+#X connect 19 2 26 0;
+#X connect 19 2 27 0;
+#X connect 21 0 22 0;
+#X connect 22 0 5 0;
+#X connect 23 0 10 0;
+#X connect 25 0 19 0;
+#X connect 26 0 22 1;
+#X connect 27 0 23 1;
+#X restore 68 225 pd lines;
+#X obj 110 188 t b b b;
+#X obj 132 367 pointer \$0template;
+#X msg 266 367 next;
+#X connect 2 0 7 0;
+#X connect 4 0 51 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 5 0;
+#X connect 9 0 45 0;
+#X connect 10 0 12 1;
+#X connect 10 1 20 0;
+#X connect 11 0 3 0;
+#X connect 12 0 42 0;
+#X connect 14 0 13 2;
+#X connect 15 0 13 1;
+#X connect 16 0 13 0;
+#X connect 17 0 16 0;
+#X connect 17 1 15 0;
+#X connect 17 2 18 0;
+#X connect 17 3 14 1;
+#X connect 18 0 14 0;
+#X connect 19 0 10 0;
+#X connect 19 1 17 0;
+#X connect 19 2 11 0;
+#X connect 19 3 3 1;
+#X connect 20 0 21 0;
+#X connect 24 0 50 0;
+#X connect 26 0 32 0;
+#X connect 27 0 30 0;
+#X connect 28 0 38 0;
+#X connect 29 0 34 2;
+#X connect 30 0 26 0;
+#X connect 30 1 28 0;
+#X connect 31 0 34 3;
+#X connect 32 0 34 0;
+#X connect 32 1 33 0;
+#X connect 33 0 34 1;
+#X connect 34 0 36 0;
+#X connect 35 0 34 4;
+#X connect 38 0 29 0;
+#X connect 38 1 31 0;
+#X connect 38 2 35 0;
+#X connect 38 3 44 0;
+#X connect 38 4 43 0;
+#X connect 39 0 40 0;
+#X connect 40 0 34 5;
+#X connect 41 0 39 0;
+#X connect 43 0 41 0;
+#X connect 44 0 40 0;
+#X connect 45 0 12 0;
+#X connect 50 0 49 0;
+#X connect 50 1 2 0;
+#X connect 50 2 27 0;
+#X connect 51 0 19 0;
+#X connect 51 1 52 0;
+#X connect 52 0 51 0;
+#X coords 0 -1 528 153 528 153 1 0 0;
diff --git a/s-env~-help.pd b/s-env~-help.pd
new file mode 100644
index 0000000..e5d1d86
--- /dev/null
+++ b/s-env~-help.pd
@@ -0,0 +1,573 @@
+#N struct 1049template float x float y array 1049arrayvals 1049arraytemplate
+;
+#N struct 1049arraytemplate float x float y;
+#N canvas 20 311 481 339 10;
+#X msg 73 35 100;
+#X msg 11 108 bang;
+#N canvas 0 0 450 300 graph5 0;
+#X array show 4410 float 1;
+#A 0 1 0.998398 0.996797 0.995195 0.993594 0.991992 0.990391 0.988789
+0.987188 0.985586 0.983984 0.982383 0.980781 0.97918 0.977578 0.975977
+0.974375 0.972773 0.971172 0.96957 0.967969 0.966367 0.964766 0.963164
+0.961563 0.959961 0.958359 0.956758 0.955156 0.953555 0.951953 0.950352
+0.94875 0.947148 0.945547 0.943945 0.942344 0.940742 0.939141 0.937539
+0.935938 0.934336 0.932734 0.931133 0.929531 0.92793 0.926328 0.924727
+0.923125 0.921523 0.919922 0.91832 0.916719 0.915117 0.913516 0.911914
+0.910312 0.908711 0.907109 0.905508 0.903906 0.902305 0.900703 0.899102
+0.8975 0.895898 0.894297 0.892695 0.891094 0.889492 0.887891 0.886289
+0.884687 0.883086 0.881484 0.879883 0.878281 0.87668 0.875078 0.873477
+0.871875 0.870273 0.868672 0.86707 0.865469 0.863867 0.862266 0.860664
+0.859062 0.857461 0.855859 0.854258 0.852656 0.851055 0.849453 0.847852
+0.84625 0.844648 0.843047 0.841445 0.839844 0.838242 0.836641 0.835039
+0.833438 0.831836 0.830234 0.828633 0.827031 0.82543 0.823828 0.822227
+0.820625 0.819023 0.817422 0.81582 0.814219 0.812617 0.811016 0.809414
+0.807812 0.806211 0.804609 0.803008 0.801406 0.799805 0.798203 0.796602
+0.795 0.793398 0.791797 0.790195 0.788594 0.786992 0.785391 0.783789
+0.782187 0.780586 0.778984 0.777383 0.775781 0.77418 0.772578 0.770977
+0.769375 0.767773 0.766172 0.76457 0.762969 0.761367 0.759766 0.758164
+0.756562 0.754961 0.753359 0.751758 0.750156 0.748555 0.746953 0.745351
+0.74375 0.742148 0.740547 0.738945 0.737344 0.735742 0.734141 0.732539
+0.730937 0.729336 0.727734 0.726133 0.724531 0.72293 0.721328 0.719727
+0.718125 0.716523 0.714922 0.71332 0.711719 0.710117 0.708516 0.706914
+0.705312 0.703711 0.702109 0.700508 0.698906 0.697305 0.695703 0.694102
+0.6925 0.690898 0.689297 0.687695 0.686094 0.684492 0.682891 0.681289
+0.679687 0.678086 0.676484 0.674883 0.673281 0.67168 0.670078 0.668477
+0.666875 0.665273 0.663672 0.66207 0.660469 0.658867 0.657266 0.655664
+0.654062 0.652461 0.650859 0.649258 0.647656 0.646055 0.644453 0.642851
+0.64125 0.639648 0.638047 0.636445 0.634844 0.633242 0.631641 0.630039
+0.628437 0.626836 0.625234 0.623633 0.622031 0.62043 0.618828 0.617226
+0.615625 0.614023 0.612422 0.61082 0.609219 0.607617 0.606016 0.604414
+0.602812 0.601211 0.599609 0.598008 0.596406 0.594805 0.593203 0.591601
+0.59 0.588398 0.586797 0.585195 0.583594 0.581992 0.580391 0.578789
+0.577187 0.575586 0.573984 0.572383 0.570781 0.56918 0.567578 0.565977
+0.564375 0.562773 0.561172 0.55957 0.557969 0.556367 0.554766 0.553164
+0.551562 0.549961 0.548359 0.546758 0.545156 0.543555 0.541953 0.540351
+0.53875 0.537148 0.535547 0.533945 0.532344 0.530742 0.529141 0.527539
+0.525937 0.524336 0.522734 0.521133 0.519531 0.51793 0.516328 0.514726
+0.513125 0.511523 0.509922 0.50832 0.506719 0.505117 0.503516 0.501914
+0.500312 0.498711 0.497109 0.495508 0.493906 0.492305 0.490703 0.489101
+0.4875 0.48689 0.486279 0.485669 0.485059 0.484448 0.483838 0.483227
+0.482617 0.482007 0.481396 0.480786 0.480176 0.479565 0.478955 0.478345
+0.477734 0.477124 0.476514 0.475903 0.475293 0.474683 0.474072 0.473462
+0.472851 0.472241 0.471631 0.47102 0.47041 0.4698 0.469189 0.468579
+0.467969 0.467358 0.466748 0.466138 0.465527 0.464917 0.464307 0.463696
+0.463086 0.462476 0.461865 0.461255 0.460644 0.460034 0.459424 0.458813
+0.458203 0.457593 0.456982 0.456372 0.455762 0.455151 0.454541 0.453931
+0.45332 0.45271 0.4521 0.451489 0.450879 0.450268 0.449658 0.449048
+0.448437 0.447827 0.447217 0.446606 0.445996 0.445386 0.444775 0.444165
+0.443555 0.442944 0.442334 0.441724 0.441113 0.440503 0.439893 0.439282
+0.438672 0.438061 0.437451 0.436841 0.43623 0.43562 0.43501 0.434399
+0.433789 0.433179 0.432568 0.431958 0.431348 0.430737 0.430127 0.429517
+0.428906 0.428296 0.427685 0.427075 0.426465 0.425854 0.425244 0.424634
+0.424023 0.423413 0.422803 0.422192 0.421582 0.420972 0.420361 0.419751
+0.419141 0.41853 0.41792 0.417309 0.416699 0.416089 0.415478 0.414868
+0.414258 0.413647 0.413037 0.412427 0.411816 0.411206 0.410596 0.409985
+0.409375 0.408765 0.408154 0.407544 0.406934 0.406323 0.405713 0.405102
+0.404492 0.403882 0.403271 0.402661 0.402051 0.40144 0.40083 0.40022
+0.399609 0.398999 0.398389 0.397778 0.397168 0.396558 0.395947 0.395337
+0.394726 0.394116 0.393506 0.392895 0.392285 0.391675 0.391064 0.390454
+0.389844 0.389233 0.388623 0.388013 0.387402 0.386792 0.386182 0.385571
+0.384961 0.384351 0.38374 0.38313 0.382519 0.381909 0.381299 0.380688
+0.380078 0.379468 0.378857 0.378247 0.377637 0.377026 0.376416 0.375806
+0.375195 0.374585 0.373975 0.373364 0.372754 0.372143 0.371533 0.370923
+0.370312 0.369702 0.369092 0.368481 0.367871 0.367261 0.36665 0.36604
+0.36543 0.364819 0.364209 0.363599 0.362988 0.362378 0.361768 0.361157
+0.360547 0.359936 0.359326 0.358716 0.358105 0.357495 0.356885 0.356274
+0.355664 0.355054 0.354443 0.353833 0.353223 0.352612 0.352002 0.351392
+0.350781 0.350171 0.34956 0.34895 0.34834 0.347729 0.347119 0.346509
+0.345898 0.345288 0.344678 0.344067 0.343457 0.342847 0.342236 0.341626
+0.341016 0.340405 0.339795 0.339184 0.338574 0.337964 0.337353 0.336743
+0.336133 0.335522 0.334912 0.334302 0.333691 0.333081 0.332471 0.33186
+0.33125 0.33064 0.330029 0.329419 0.328809 0.328198 0.327588 0.326977
+0.326367 0.325757 0.325146 0.324536 0.323926 0.323315 0.322705 0.322095
+0.321484 0.320874 0.320264 0.319653 0.319043 0.318433 0.317822 0.317212
+0.316601 0.315991 0.315381 0.31477 0.31416 0.31355 0.312939 0.312329
+0.311719 0.311108 0.310498 0.309888 0.309277 0.308667 0.308057 0.307446
+0.306836 0.306226 0.305615 0.305005 0.304394 0.303784 0.303174 0.302563
+0.301953 0.301343 0.300732 0.300122 0.299512 0.298901 0.298291 0.297681
+0.29707 0.29646 0.29585 0.295239 0.294629 0.294018 0.293408 0.292798
+0.292187 0.291577 0.290967 0.290356 0.289746 0.289136 0.288525 0.287915
+0.287305 0.286694 0.286084 0.285474 0.284863 0.284253 0.283643 0.283032
+0.282422 0.281811 0.281201 0.280591 0.27998 0.27937 0.27876 0.278149
+0.277539 0.276929 0.276318 0.275708 0.275098 0.274487 0.273877 0.273267
+0.272656 0.272046 0.271435 0.270825 0.270215 0.269604 0.268994 0.268384
+0.267773 0.267163 0.266553 0.265942 0.265332 0.264722 0.264111 0.263501
+0.262891 0.26228 0.26167 0.261059 0.260449 0.259839 0.259228 0.258618
+0.258008 0.257397 0.256787 0.256177 0.255566 0.254956 0.254346 0.253735
+0.253125 0.252515 0.251904 0.251294 0.250684 0.250073 0.249463 0.248852
+0.248242 0.247632 0.247021 0.246411 0.245801 0.24519 0.24458 0.24397
+0.243359 0.242749 0.242139 0.241528 0.240918 0.240308 0.239697 0.239087
+0.238476 0.237866 0.237256 0.236645 0.236035 0.235425 0.234814 0.234204
+0.233594 0.232983 0.232373 0.231763 0.231152 0.230542 0.229932 0.229321
+0.228711 0.228101 0.22749 0.22688 0.226269 0.225659 0.225049 0.224438
+0.223828 0.223218 0.222607 0.221997 0.221387 0.220776 0.220166 0.219556
+0.218945 0.218335 0.217725 0.217114 0.216504 0.215893 0.215283 0.214673
+0.214062 0.213452 0.212842 0.212231 0.211621 0.211011 0.2104 0.20979
+0.20918 0.208569 0.207959 0.207349 0.206738 0.206128 0.205518 0.204907
+0.204297 0.203686 0.203076 0.202466 0.201855 0.201245 0.200635 0.200024
+0.199414 0.198804 0.198193 0.197583 0.196973 0.196362 0.195752 0.195142
+0.194531 0.193921 0.19331 0.1927 0.19209 0.191479 0.190869 0.190259
+0.189648 0.189038 0.188428 0.187817 0.187207 0.186597 0.185986 0.185376
+0.184766 0.184155 0.183545 0.182935 0.182324 0.181714 0.181103 0.180493
+0.179883 0.179272 0.178662 0.178052 0.177441 0.176831 0.176221 0.17561
+0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175
+0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175
+0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175
+0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175
+0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175 0.175
+0.175 0.175 0.175 0.175 0.175 0.174772 0.174544 0.174316 0.174089 0.173861
+0.173633 0.173405 0.173177 0.172949 0.172721 0.172494 0.172266 0.172038
+0.17181 0.171582 0.171354 0.171126 0.170898 0.170671 0.170443 0.170215
+0.169987 0.169759 0.169531 0.169303 0.169076 0.168848 0.16862 0.168392
+0.168164 0.167936 0.167708 0.16748 0.167253 0.167025 0.166797 0.166569
+0.166341 0.166113 0.165885 0.165658 0.16543 0.165202 0.164974 0.164746
+0.164518 0.16429 0.164063 0.163835 0.163607 0.163379 0.163151 0.162923
+0.162695 0.162467 0.16224 0.162012 0.161784 0.161556 0.161328 0.1611
+0.160872 0.160645 0.160417 0.160189 0.159961 0.159733 0.159505 0.159277
+0.159049 0.158822 0.158594 0.158366 0.158138 0.15791 0.157682 0.157454
+0.157227 0.156999 0.156771 0.156543 0.156315 0.156087 0.155859 0.155632
+0.155404 0.155176 0.154948 0.15472 0.154492 0.154264 0.154036 0.153809
+0.153581 0.153353 0.153125 0.152897 0.152669 0.152441 0.152214 0.151986
+0.151758 0.15153;
+#A 1000 0.151302 0.151074 0.150846 0.150618 0.150391 0.150163 0.149935
+0.149707 0.149479 0.149251 0.149023 0.148796 0.148568 0.14834 0.148112
+0.147884 0.147656 0.147428 0.147201 0.146973 0.146745 0.146517 0.146289
+0.146061 0.145833 0.145605 0.145378 0.14515 0.144922 0.144694 0.144466
+0.144238 0.14401 0.143783 0.143555 0.143327 0.143099 0.142871 0.142643
+0.142415 0.142188 0.14196 0.141732 0.141504 0.141276 0.141048 0.14082
+0.140592 0.140365 0.140137 0.139909 0.139681 0.139453 0.139225 0.138997
+0.13877 0.138542 0.138314 0.138086 0.137858 0.13763 0.137402 0.137174
+0.136947 0.136719 0.136491 0.136263 0.136035 0.135807 0.135579 0.135352
+0.135124 0.134896 0.134668 0.13444 0.134212 0.133984 0.133757 0.133529
+0.133301 0.133073 0.132845 0.132617 0.132389 0.132161 0.131934 0.131706
+0.131478 0.13125 0.131022 0.130794 0.130566 0.130339 0.130111 0.129883
+0.129655 0.129427 0.129199 0.128971 0.128743 0.128516 0.128288 0.12806
+0.127832 0.127604 0.127376 0.127148 0.126921 0.126693 0.126465 0.126237
+0.126009 0.125781 0.125553 0.125326 0.125098 0.12487 0.124642 0.124414
+0.124186 0.123958 0.12373 0.123503 0.123275 0.123047 0.122819 0.122591
+0.122363 0.122135 0.121908 0.12168 0.121452 0.121224 0.120996 0.120768
+0.12054 0.120313 0.120085 0.119857 0.119629 0.119401 0.119173 0.118945
+0.118717 0.11849 0.118262 0.118034 0.117806 0.117578 0.11735 0.117122
+0.116895 0.116667 0.116439 0.116211 0.115983 0.115755 0.115527 0.115299
+0.115072 0.114844 0.114616 0.114388 0.11416 0.113932 0.113704 0.113477
+0.113249 0.113021 0.112793 0.112565 0.112337 0.112109 0.111882 0.111654
+0.111426 0.111198 0.11097 0.110742 0.110514 0.110286 0.110059 0.109831
+0.109603 0.109375 0.109147 0.108919 0.108691 0.108464 0.108236 0.108008
+0.10778 0.107552 0.107324 0.107096 0.106868 0.106641 0.106413 0.106185
+0.105957 0.105729 0.105501 0.105273 0.105046 0.104818 0.10459 0.104362
+0.104134 0.103906 0.103678 0.103451 0.103223 0.102995 0.102767 0.102539
+0.102311 0.102083 0.101855 0.101628 0.1014 0.101172 0.100944 0.100716
+0.100488 0.10026 0.100033 0.0998047 0.0995768 0.099349 0.0991211 0.0988932
+0.0986654 0.0984375 0.0982096 0.0979818 0.0977539 0.0975261 0.0972982
+0.0970703 0.0968425 0.0966146 0.0963867 0.0961589 0.095931 0.0957031
+0.0954753 0.0952474 0.0950195 0.0947917 0.0945638 0.0943359 0.0941081
+0.0938802 0.0936524 0.0934245 0.0931966 0.0929688 0.0927409 0.092513
+0.0922852 0.0920573 0.0918294 0.0916016 0.0913737 0.0911458 0.090918
+0.0906901 0.0904622 0.0902344 0.0900065 0.0897787 0.0895508 0.0893229
+0.0890951 0.0888672 0.0886393 0.0884115 0.0881836 0.0879557 0.0877279
+0.0875 0.0872721 0.0870443 0.0868164 0.0865885 0.0863607 0.0861328
+0.085905 0.0856771 0.0854492 0.0852214 0.0849935 0.0847656 0.0845378
+0.0843099 0.084082 0.0838542 0.0836263 0.0833984 0.0831706 0.0829427
+0.0827148 0.082487 0.0822591 0.0820313 0.0818034 0.0815755 0.0813477
+0.0811198 0.0808919 0.0806641 0.0804362 0.0802083 0.0799805 0.0797526
+0.0795247 0.0792969 0.079069 0.0788411 0.0786133 0.0783854 0.0781576
+0.0779297 0.0777018 0.077474 0.0772461 0.0770182 0.0767904 0.0765625
+0.0763346 0.0761068 0.0758789 0.075651 0.0754232 0.0751953 0.0749675
+0.0747396 0.0745117 0.0742839 0.074056 0.0738281 0.0736003 0.0733724
+0.0731445 0.0729167 0.0726888 0.0724609 0.0722331 0.0720052 0.0717774
+0.0715495 0.0713216 0.0710938 0.0708659 0.070638 0.0704102 0.0701823
+0.0699544 0.0697266 0.0694987 0.0692708 0.069043 0.0688151 0.0685872
+0.0683594 0.0681315 0.0679037 0.0676758 0.0674479 0.0672201 0.0669922
+0.0667643 0.0665365 0.0663086 0.0660807 0.0658529 0.065625 0.0653971
+0.0651693 0.0649414 0.0647135 0.0644857 0.0642578 0.06403 0.0638021
+0.0635742 0.0633464 0.0631185 0.0628906 0.0626628 0.0624349 0.062207
+0.0619792 0.0617513 0.0615234 0.0612956 0.0610677 0.0608398 0.060612
+0.0603841 0.0601563 0.0599284 0.0597005 0.0594727 0.0592448 0.0590169
+0.0587891 0.0585612 0.0583333 0.0581055 0.0578776 0.0576497 0.0574219
+0.057194 0.0569661 0.0567383 0.0565104 0.0562826 0.0560547 0.0558268
+0.055599 0.0553711 0.0551432 0.0549154 0.0546875 0.0544596 0.0542318
+0.0540039 0.053776 0.0535482 0.0533203 0.0530924 0.0528646 0.0526367
+0.0524089 0.052181 0.0519531 0.0517253 0.0514974 0.0512695 0.0510417
+0.0508138 0.0505859 0.0503581 0.0501302 0.0499023 0.0496745 0.0494466
+0.0492188 0.0489909 0.048763 0.0485352 0.0483073 0.0480794 0.0478516
+0.0476237 0.0473958 0.047168 0.0469401 0.0467122 0.0464844 0.0462565
+0.0460286 0.0458008 0.0455729 0.0453451 0.0451172 0.0448893 0.0446615
+0.0444336 0.0442057 0.0439779 0.04375 0.0435221 0.0432943 0.0430664
+0.0428385 0.0426107 0.0423828 0.0421549 0.0419271 0.0416992 0.0414714
+0.0412435 0.0410156 0.0407878 0.0405599 0.040332 0.0401042 0.0398763
+0.0396484 0.0394206 0.0391927 0.0389648 0.038737 0.0385091 0.0382813
+0.0380534 0.0378255 0.0375977 0.0373698 0.0371419 0.0369141 0.0366862
+0.0364583 0.0362305 0.0360026 0.0357747 0.0355469 0.035319 0.0350911
+0.0348633 0.0346354 0.0344076 0.0341797 0.0339518 0.033724 0.0334961
+0.0332682 0.0330404 0.0328125 0.0325846 0.0323568 0.0321289 0.031901
+0.0316732 0.0314453 0.0312175 0.0309896 0.0307617 0.0305339 0.030306
+0.0300781 0.0298503 0.0296224 0.0293945 0.0291667 0.0289388 0.0287109
+0.0284831 0.0282552 0.0280273 0.0277995 0.0275716 0.0273438 0.0271159
+0.026888 0.0266602 0.0264323 0.0262044 0.0259766 0.0257487 0.0255208
+0.025293 0.0250651 0.0248372 0.0246094 0.0243815 0.0241536 0.0239258
+0.0236979 0.0234701 0.0232422 0.0230143 0.0227865 0.0225586 0.0223307
+0.0221029 0.021875 0.0216471 0.0214193 0.0211914 0.0209635 0.0207357
+0.0205078 0.0202799 0.0200521 0.0198242 0.0195964 0.0193685 0.0191406
+0.0189128 0.0186849 0.018457 0.0182292 0.0180013 0.0177734 0.0175456
+0.0173177 0.0170898 0.016862 0.0166341 0.0164063 0.0161784 0.0159505
+0.0157227 0.0154948 0.0152669 0.0150391 0.0148112 0.0145833 0.0143555
+0.0141276 0.0138997 0.0136719 0.013444 0.0132161 0.0129883 0.0127604
+0.0125326 0.0123047 0.0120768 0.011849 0.0116211 0.0113932 0.0111654
+0.0109375 0.0107096 0.0104818 0.0102539 0.010026 0.00979818 0.00957031
+0.00934245 0.00911458 0.00888672 0.00865885 0.00843099 0.00820313 0.00797526
+0.0077474 0.00751953 0.00729167 0.0070638 0.00683594 0.00660807 0.00638021
+0.00615234 0.00592448 0.00569662 0.00546875 0.00524089 0.00501302 0.00478516
+0.00455729 0.00432943 0.00410156 0.0038737 0.00364583 0.00341797 0.0031901
+0.00296224 0.00273438 0.00250651 0.00227865 0.00205078 0.00182292 0.00159505
+0.00136719 0.00113932 0.000911458 0.000683594 0.000455729 0.000227865
+0 0.0078125 0.015625 0.0234375 0.03125 0.0390625 0.046875 0.0546875
+0.0625 0.0703125 0.078125 0.0859375 0.09375 0.101562 0.109375 0.117188
+0.125 0.132812 0.140625 0.148438 0.15625 0.164062 0.171875 0.179688
+0.1875 0.195312 0.203125 0.210938 0.21875 0.226562 0.234375 0.242188
+0.25 0.257812 0.265625 0.273438 0.28125 0.289062 0.296875 0.304688
+0.3125 0.320312 0.328125 0.335938 0.34375 0.351562 0.359375 0.367188
+0.375 0.382812 0.390625 0.398438 0.40625 0.414062 0.421875 0.429688
+0.4375 0.445312 0.453125 0.460938 0.46875 0.476562 0.484375 0.492188
+0.5 0.507812 0.515625 0.523438 0.53125 0.539062 0.546875 0.554688 0.5625
+0.570312 0.578125 0.585938 0.59375 0.601562 0.609375 0.617188 0.625
+0.632812 0.640625 0.648438 0.65625 0.664062 0.671875 0.679688 0.6875
+0.695312 0.703125 0.710938 0.71875 0.726562 0.734375 0.742188 0.75
+0.757812 0.765625 0.773438 0.78125 0.789062 0.796875 0.804688 0.8125
+0.820312 0.828125 0.835938 0.84375 0.851562 0.859375 0.867188 0.875
+0.882812 0.890625 0.898438 0.90625 0.914062 0.921875 0.929688 0.9375
+0.945312 0.953125 0.960938 0.96875 0.976562 0.984375 0.992188 1 1 1
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.999574 0.999148
+0.998722 0.998295 0.997869 0.997443 0.997017 0.996591 0.996165 0.995739
+0.995313 0.994886 0.99446 0.994034 0.993608 0.993182 0.992756 0.99233
+0.991903 0.991477 0.991051 0.990625 0.990199 0.989773 0.989347 0.98892
+0.988494 0.988068 0.987642 0.987216 0.98679 0.986364 0.985937 0.985511
+0.985085 0.984659 0.984233 0.983807 0.983381 0.982955 0.982528 0.982102
+0.981676 0.98125 0.980824 0.980398 0.979972 0.979545 0.979119 0.978693
+0.978267 0.977841 0.977415 0.976989 0.976562 0.976136 0.97571 0.975284
+0.974858 0.974432 0.974006 0.97358 0.973153 0.972727 0.972301 0.971875
+0.971449 0.971023 0.970597 0.97017 0.969744 0.969318 0.968892 0.968466
+0.96804 0.967614 0.967188 0.966761 0.966335 0.965909 0.965483 0.965057
+0.964631 0.964205 0.963778 0.963352 0.962926 0.9625 0.962074 0.961648
+0.961222 0.960795 0.960369 0.959943 0.959517 0.959091 0.958665 0.958239
+0.957813 0.957386 0.95696 0.956534 0.956108 0.955682 0.955256 0.95483
+0.954403 0.953977 0.953551 0.953125 0.952699 0.952273 0.951847 0.95142
+0.950994 0.950568 0.950142 0.949716 0.94929 0.948864 0.948438 0.948011
+0.947585 0.947159 0.946733 0.946307 0.945881 0.945455 0.945028 0.944602
+0.944176 0.94375 0.943324 0.942898 0.942472 0.942046 0.941619 0.941193
+0.940767 0.940341 0.939915 0.939489 0.939063;
+#A 2000 0.938636 0.93821 0.937784 0.937358 0.936932 0.936506 0.93608
+0.935653 0.935227 0.934801 0.934375 0.933949 0.933523 0.933097 0.932671
+0.932244 0.931818 0.931392 0.930966 0.93054 0.930114 0.929688 0.929261
+0.928835 0.928409 0.927983 0.927557 0.927131 0.926705 0.926278 0.925852
+0.925426 0.925 0.924574 0.924148 0.923722 0.923295 0.922869 0.922443
+0.922017 0.921591 0.921165 0.920739 0.920313 0.919886 0.91946 0.919034
+0.918608 0.918182 0.917756 0.91733 0.916903 0.916477 0.916051 0.915625
+0.915199 0.914773 0.914347 0.913921 0.913494 0.913068 0.912642 0.912216
+0.91179 0.911364 0.910938 0.910511 0.910085 0.909659 0.909233 0.908807
+0.908381 0.907955 0.907528 0.907102 0.906676 0.90625 0.905824 0.905398
+0.904972 0.904546 0.904119 0.903693 0.903267 0.902841 0.902415 0.901989
+0.901563 0.901136 0.90071 0.900284 0.899858 0.899432 0.899006 0.89858
+0.898153 0.897727 0.897301 0.896875 0.896449 0.896023 0.895597 0.895171
+0.894744 0.894318 0.893892 0.893466 0.89304 0.892614 0.892188 0.891761
+0.891335 0.890909 0.890483 0.890057 0.889631 0.889205 0.888779 0.888352
+0.887926 0.8875 0.887074 0.886648 0.886222 0.885796 0.885369 0.884943
+0.884517 0.884091 0.883665 0.883239 0.882813 0.882386 0.88196 0.881534
+0.881108 0.880682 0.880256 0.87983 0.879404 0.878977 0.878551 0.878125
+0.877699 0.877273 0.876847 0.876421 0.875994 0.875568 0.875142 0.874716
+0.87429 0.873864 0.873438 0.873011 0.872585 0.872159 0.871733 0.871307
+0.870881 0.870455 0.870028 0.869602 0.869176 0.86875 0.868324 0.867898
+0.867472 0.867046 0.866619 0.866193 0.865767 0.865341 0.864915 0.864489
+0.864063 0.863636 0.86321 0.862784 0.862358 0.861932 0.861506 0.86108
+0.860654 0.860227 0.859801 0.859375 0.858949 0.858523 0.858097 0.857671
+0.857244 0.856818 0.856392 0.855966 0.85554 0.855114 0.854688 0.854262
+0.853835 0.853409 0.852983 0.852557 0.852131 0.851705 0.851279 0.850852
+0.850426 0.85 0.849574 0.849148 0.848722 0.848296 0.847869 0.847443
+0.847017 0.846591 0.846165 0.845739 0.845313 0.844886 0.84446 0.844034
+0.843608 0.843182 0.842756 0.84233 0.841904 0.841477 0.841051 0.840625
+0.840199 0.839773 0.839347 0.838921 0.838494 0.838068 0.837642 0.837216
+0.83679 0.836364 0.835938 0.835512 0.835085 0.834659 0.834233 0.833807
+0.833381 0.832955 0.832529 0.832102 0.831676 0.83125 0.830824 0.830398
+0.829972 0.829546 0.82912 0.828693 0.828267 0.827841 0.827415 0.826989
+0.826563 0.826137 0.82571 0.825284 0.824858 0.824432 0.824006 0.82358
+0.823154 0.822727 0.822301 0.821875 0.821449 0.821023 0.820597 0.820171
+0.819744 0.819318 0.818892 0.818466 0.81804 0.817614 0.817188 0.816761
+0.816335 0.815909 0.815483 0.815057 0.814631 0.814205 0.813779 0.813352
+0.812926 0.8125 0.812074 0.811648 0.811222 0.810796 0.810369 0.809943
+0.809517 0.809091 0.808665 0.808239 0.807813 0.807387 0.80696 0.806534
+0.806108 0.805682 0.805256 0.80483 0.804404 0.803977 0.803551 0.803125
+0.802699 0.802273 0.801847 0.801421 0.800995 0.800568 0.800142 0.799716
+0.79929 0.798864 0.798438 0.798012 0.797585 0.797159 0.796733 0.796307
+0.795881 0.795455 0.795029 0.794602 0.794176 0.79375 0.793324 0.792898
+0.792472 0.792046 0.791619 0.791193 0.790767 0.790341 0.789915 0.789489
+0.789063 0.788637 0.78821 0.787784 0.787358 0.786932 0.786506 0.78608
+0.785654 0.785227 0.784801 0.784375 0.783949 0.783523 0.783097 0.782671
+0.782245 0.781818 0.781392 0.780966 0.78054 0.780114 0.779688 0.779262
+0.778835 0.778409 0.777983 0.777557 0.777131 0.776705 0.776279 0.775853
+0.775426 0.775 0.774574 0.774148 0.773722 0.773296 0.77287 0.772443
+0.772017 0.771591 0.771165 0.770739 0.770313 0.769887 0.76946 0.769034
+0.768608 0.768182 0.767756 0.76733 0.766904 0.766477 0.766051 0.765625
+0.765199 0.764773 0.764347 0.763921 0.763495 0.763068 0.762642 0.762216
+0.76179 0.761364 0.760938 0.760512 0.760085 0.759659 0.759233 0.758807
+0.758381 0.757955 0.757529 0.757102 0.756676 0.75625 0.755824 0.755398
+0.754972 0.754546 0.75412 0.753693 0.753267 0.752841 0.752415 0.751989
+0.751563 0.751137 0.75071 0.750284 0.749858 0.749432 0.749006 0.74858
+0.748154 0.747728 0.747301 0.746875 0.746449 0.746023 0.745597 0.745171
+0.744745 0.744318 0.743892 0.743466 0.74304 0.742614 0.742188 0.741762
+0.741335 0.740909 0.740483 0.740057 0.739631 0.739205 0.738779 0.738352
+0.737926 0.7375 0.737074 0.736648 0.736222 0.735796 0.73537 0.734943
+0.734517 0.734091 0.733665 0.733239 0.732813 0.732387 0.73196 0.731534
+0.731108 0.730682 0.730256 0.72983 0.729404 0.728978 0.728551 0.728125
+0.727699 0.727273 0.726847 0.726421 0.725995 0.725568 0.725142 0.724716
+0.72429 0.723864 0.723438 0.723012 0.722585 0.722159 0.721733 0.721307
+0.720881 0.720455 0.720029 0.719603 0.719176 0.71875 0.718324 0.717898
+0.717472 0.717046 0.71662 0.716193 0.715767 0.715341 0.714915 0.714489
+0.714063 0.713637 0.71321 0.712784 0.712358 0.711932 0.711506 0.71108
+0.710654 0.710228 0.709801 0.709375 0.708949 0.708523 0.708097 0.707671
+0.707245 0.706818 0.706392 0.705966 0.70554 0.705114 0.704688 0.704262
+0.703835 0.703409 0.702983 0.702557 0.702131 0.701705 0.701279 0.700853
+0.700426 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7
+0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7
+0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7
+0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.692383
+0.684766 0.677148 0.669531 0.661914 0.654297 0.64668 0.639062 0.631445
+0.623828 0.616211 0.608594 0.600977 0.593359 0.585742 0.578125 0.570508
+0.562891 0.555273 0.547656 0.540039 0.532422 0.524805 0.517187 0.50957
+0.501953 0.494336 0.486719 0.479102 0.471484 0.463867 0.45625 0.448633
+0.441016 0.433398 0.425781 0.418164 0.410547 0.40293 0.395312 0.387695
+0.380078 0.372461 0.364844 0.357227 0.349609 0.341992 0.334375 0.326758
+0.319141 0.311523 0.303906 0.296289 0.288672 0.281055 0.273437 0.26582
+0.258203 0.250586 0.242969 0.235352 0.227734 0.220117 0.2125 0.212347
+0.212193 0.21204 0.211886 0.211733 0.211579 0.211426 0.211272 0.211119
+0.210965 0.210812 0.210658 0.210505 0.210352 0.210198 0.210045 0.209891
+0.209738 0.209584 0.209431 0.209277 0.209124 0.20897 0.208817 0.208663
+0.20851 0.208357 0.208203 0.20805 0.207896 0.207743 0.207589 0.207436
+0.207282 0.207129 0.206975 0.206822 0.206668 0.206515 0.206362 0.206208
+0.206055 0.205901 0.205748 0.205594 0.205441 0.205287 0.205134 0.20498
+0.204827 0.204674 0.20452 0.204367 0.204213 0.20406 0.203906 0.203753
+0.203599 0.203446 0.203292 0.203139 0.202985 0.202832 0.202679 0.202525
+0.202372 0.202218 0.202065 0.201911 0.201758 0.201604 0.201451 0.201297
+0.201144 0.20099 0.200837 0.200684 0.20053 0.200377 0.200223 0.20007
+0.199916 0.199763 0.199609 0.199456 0.199302 0.199149 0.198996 0.198842
+0.198689 0.198535 0.198382 0.198228 0.198075 0.197921 0.197768 0.197614
+0.197461 0.197307 0.197154 0.197001 0.196847 0.196694 0.19654 0.196387
+0.196233 0.19608 0.195926 0.195773 0.195619 0.195466 0.195312 0.195159
+0.195006 0.194852 0.194699 0.194545 0.194392 0.194238 0.194085 0.193931
+0.193778 0.193624 0.193471 0.193318 0.193164 0.193011 0.192857 0.192704
+0.19255 0.192397 0.192243 0.19209 0.191936 0.191783 0.191629 0.191476
+0.191323 0.191169 0.191016 0.190862 0.190709 0.190555 0.190402 0.190248
+0.190095 0.189941 0.189788 0.189634 0.189481 0.189328 0.189174 0.189021
+0.188867 0.188714 0.18856 0.188407 0.188253 0.1881 0.187946 0.187793
+0.187639 0.187486 0.187333 0.187179 0.187026 0.186872 0.186719 0.186565
+0.186412 0.186258 0.186105 0.185951 0.185798 0.185645 0.185491 0.185338
+0.185184 0.185031 0.184877 0.184724 0.18457 0.184417 0.184263 0.18411
+0.183956 0.183803 0.18365 0.183496 0.183343 0.183189 0.183036 0.182882
+0.182729 0.182575 0.182422 0.182268 0.182115 0.181961 0.181808 0.181655
+0.181501 0.181348 0.181194 0.181041 0.180887 0.180734 0.18058 0.180427
+0.180273 0.18012 0.179966 0.179813 0.17966 0.179506 0.179353 0.179199
+0.179046 0.178892 0.178739 0.178585 0.178432 0.178278 0.178125 0.177972
+0.177818 0.177665 0.177511 0.177358 0.177204 0.177051 0.176897 0.176744
+0.17659 0.176437 0.176283 0.17613 0.175977 0.175823 0.17567 0.175516
+0.175363 0.175209 0.175056 0.174902 0.174749 0.174595 0.174442 0.174288
+0.174135 0.173982 0.173828 0.173675 0.173521 0.173368 0.173214 0.173061
+0.172907 0.172754 0.1726 0.172447 0.172293 0.17214 0.171987 0.171833
+0.17168 0.171526 0.171373 0.171219 0.171066 0.170912 0.170759 0.170605
+0.170452 0.170299 0.170145 0.169992 0.169838 0.169685 0.169531 0.169378
+0.169224 0.169071 0.168917 0.168764 0.16861 0.168457 0.168304 0.16815
+0.167997 0.167843 0.16769 0.167536 0.167383 0.167229 0.167076 0.166922
+0.166769 0.166615 0.166462 0.166309 0.166155 0.166002 0.165848 0.165695
+0.165541 0.165388 0.165234 0.165081 0.164927 0.164774;
+#A 3000 0.164621 0.164467 0.164314 0.16416 0.164007 0.163853 0.1637
+0.163546 0.163393 0.163239 0.163086 0.162932 0.162779 0.162626 0.162472
+0.162319 0.162165 0.162012 0.161858 0.161705 0.161551 0.161398 0.161244
+0.161091 0.160937 0.160784 0.160631 0.160477 0.160324 0.16017 0.160017
+0.159863 0.15971 0.159556 0.159403 0.159249 0.159096 0.158942 0.158789
+0.158636 0.158482 0.158329 0.158175 0.158022 0.157868 0.157715 0.157561
+0.157408 0.157254 0.157101 0.156948 0.156794 0.156641 0.156487 0.156334
+0.15618 0.156027 0.155873 0.15572 0.155566 0.155413 0.155259 0.155106
+0.154953 0.154799 0.154646 0.154492 0.154339 0.154185 0.154032 0.153878
+0.153725 0.153571 0.153418 0.153264 0.153111 0.152958 0.152804 0.152651
+0.152497 0.152344 0.15219 0.152037 0.151883 0.15173 0.151576 0.151423
+0.151269 0.151116 0.150963 0.150809 0.150656 0.150502 0.150349 0.150195
+0.150042 0.149888 0.149735 0.149581 0.149428 0.149275 0.149121 0.148968
+0.148814 0.148661 0.148507 0.148354 0.1482 0.148047 0.147893 0.14774
+0.147586 0.147433 0.14728 0.147126 0.146973 0.146819 0.146666 0.146512
+0.146359 0.146205 0.146052 0.145898 0.145745 0.145591 0.145438 0.145285
+0.145131 0.144978 0.144824 0.144671 0.144517 0.144364 0.14421 0.144057
+0.143903 0.14375 0.143597 0.143443 0.14329 0.143136 0.142983 0.142829
+0.142676 0.142522 0.142369 0.142215 0.142062 0.141908 0.141755 0.141602
+0.141448 0.141295 0.141141 0.140988 0.140834 0.140681 0.140527 0.140374
+0.14022 0.140067 0.139913 0.13976 0.139607 0.139453 0.1393 0.139146
+0.138993 0.138839 0.138686 0.138532 0.138379 0.138225 0.138072 0.137918
+0.137765 0.137612 0.137458 0.137305 0.137151 0.136998 0.136844 0.136691
+0.136537 0.136384 0.13623 0.136077 0.135924 0.13577 0.135617 0.135463
+0.13531 0.135156 0.135003 0.134849 0.134696 0.134542 0.134389 0.134235
+0.134082 0.133929 0.133775 0.133622 0.133468 0.133315 0.133161 0.133008
+0.132854 0.132701 0.132547 0.132394 0.13224 0.132087 0.131934 0.13178
+0.131627 0.131473 0.13132 0.131166 0.131013 0.130859 0.130706 0.130552
+0.130399 0.130246 0.130092 0.129939 0.129785 0.129632 0.129478 0.129325
+0.129171 0.129018 0.128864 0.128711 0.128557 0.128404 0.128251 0.128097
+0.127944 0.12779 0.127637 0.127483 0.12733 0.127176 0.127023 0.126869
+0.126716 0.126562 0.126409 0.126256 0.126102 0.125949 0.125795 0.125642
+0.125488 0.125335 0.125181 0.125028 0.124874 0.124721 0.124567 0.124414
+0.124261 0.124107 0.123954 0.1238 0.123647 0.123493 0.12334 0.123186
+0.123033 0.122879 0.122726 0.122573 0.122419 0.122266 0.122112 0.121959
+0.121805 0.121652 0.121498 0.121345 0.121191 0.121038 0.120884 0.120731
+0.120578 0.120424 0.120271 0.120117 0.119964 0.11981 0.119657 0.119503
+0.11935 0.119196 0.119043 0.118889 0.118736 0.118583 0.118429 0.118276
+0.118122 0.117969 0.117815 0.117662 0.117508 0.117355 0.117201 0.117048
+0.116894 0.116741 0.116588 0.116434 0.116281 0.116127 0.115974 0.11582
+0.115667 0.115513 0.11536 0.115206 0.115053 0.1149 0.114746 0.114593
+0.114439 0.114286 0.114132 0.113979 0.113825 0.113672 0.113518 0.113365
+0.113211 0.113058 0.112905 0.112751 0.112598 0.112444 0.112291 0.112137
+0.111984 0.11183 0.111677 0.111523 0.11137 0.111216 0.111063 0.11091
+0.110756 0.110603 0.110449 0.110296 0.110142 0.109989 0.109835 0.109682
+0.109528 0.109375 0.109222 0.109068 0.108915 0.108761 0.108608 0.108454
+0.108301 0.108147 0.107994 0.10784 0.107687 0.107533 0.10738 0.107227
+0.107073 0.10692 0.106766 0.106613 0.106459 0.106306 0.106152 0.105999
+0.105845 0.105692 0.105538 0.105385 0.105232 0.105078 0.104925 0.104771
+0.104618 0.104464 0.104311 0.104157 0.104004 0.10385 0.103697 0.103543
+0.10339 0.103237 0.103083 0.10293 0.102776 0.102623 0.102469 0.102316
+0.102162 0.102009 0.101855 0.101702 0.101549 0.101395 0.101242 0.101088
+0.100935 0.100781 0.100628 0.100474 0.100321 0.100167 0.100014 0.0998605
+0.099707 0.0995535 0.0994001 0.0992466 0.0990932 0.0989397 0.0987862
+0.0986328 0.0984793 0.0983259 0.0981724 0.0980189 0.0978655 0.097712
+0.0975586 0.0974051 0.0972516 0.0970982 0.0969447 0.0967913 0.0966378
+0.0964843 0.0963309 0.0961774 0.096024 0.0958705 0.095717 0.0955636
+0.0954101 0.0952567 0.0951032 0.0949497 0.0947963 0.0946428 0.0944894
+0.0943359 0.0941824 0.094029 0.0938755 0.0937221 0.0935686 0.0934151
+0.0932617 0.0931082 0.0929548 0.0928013 0.0926478 0.0924944 0.0923409
+0.0921875 0.092034 0.0918805 0.0917271 0.0915736 0.0914202 0.0912667
+0.0911132 0.0909598 0.0908063 0.0906529 0.0904994 0.0903459 0.0901925
+0.090039 0.0898856 0.0897321 0.0895786 0.0894252 0.0892717 0.0891183
+0.0889648 0.0888113 0.0886579 0.0885044 0.088351 0.0881975 0.088044
+0.0878906 0.0877371 0.0875837 0.0874302 0.0872767 0.0871233 0.0869698
+0.0868164 0.0866629 0.0865095 0.086356 0.0862025 0.0860491 0.0858956
+0.0857421 0.0855887 0.0854352 0.0852818 0.0851283 0.0849748 0.0848214
+0.0846679 0.0845145 0.084361 0.0842075 0.0840541 0.0839006 0.0837472
+0.0835937 0.0834403 0.0832868 0.0831333 0.0829799 0.0828264 0.082673
+0.0825195 0.082366 0.0822126 0.0820591 0.0819056 0.0817522 0.0815987
+0.0814453 0.0812918 0.0811384 0.0809849 0.0808314 0.080678 0.0805245
+0.0803711 0.0802176 0.0800641 0.0799107 0.0797572 0.0796038 0.0794503
+0.0792968 0.0791434 0.0789899 0.0788365 0.078683 0.0785295 0.0783761
+0.0782226 0.0780692 0.0779157 0.0777622 0.0776088 0.0774553 0.0773019
+0.0771484 0.0769949 0.0768415 0.076688 0.0765346 0.0763811 0.0762276
+0.0760742 0.0759207 0.0757673 0.0756138 0.0754603 0.0753069 0.0751534
+0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075
+0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075
+0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075
+0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075
+0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075
+0.075 0.075 0.075 0.075 0.075 0.0758056 0.0766113 0.077417 0.0782226
+0.0790283 0.079834 0.0806396 0.0814453 0.082251 0.0830566 0.0838623
+0.084668 0.0854736 0.0862793 0.0870849 0.0878906 0.0886963 0.0895019
+0.0903076 0.0911133 0.0919189 0.0927246 0.0935303 0.0943359 0.0951416
+0.0959473 0.0967529 0.0975586 0.0983642 0.0991699 0.0999756 0.100781
+0.101587 0.102393 0.103198 0.104004 0.10481 0.105615 0.106421 0.107227
+0.108032 0.108838 0.109644 0.110449 0.111255 0.112061 0.112866 0.113672
+0.114478 0.115283 0.116089 0.116895 0.1177 0.118506 0.119312 0.120117
+0.120923 0.121729 0.122534 0.12334 0.124146 0.124951 0.125757 0.126562
+0.127368 0.128174 0.128979 0.129785 0.130591 0.131396 0.132202 0.133008
+0.133813 0.134619 0.135425 0.13623 0.137036 0.137842 0.138647 0.139453
+0.140259 0.141064 0.14187 0.142676 0.143481 0.144287 0.145093 0.145898
+0.146704 0.14751 0.148315 0.149121 0.149927 0.150732 0.151538 0.152344
+0.153149 0.153955 0.154761 0.155566 0.156372 0.157178 0.157983 0.158789
+0.159595 0.1604 0.161206 0.162012 0.162817 0.163623 0.164429 0.165234
+0.16604 0.166846 0.167651 0.168457 0.169263 0.170068 0.170874 0.17168
+0.172485 0.173291 0.174097 0.174902 0.175708 0.176514 0.177319 0.178125
+0.178931 0.179736 0.180542 0.181348 0.182153 0.182959 0.183765 0.18457
+0.185376 0.186182 0.186987 0.187793 0.188599 0.189404 0.19021 0.191016
+0.191821 0.192627 0.193433 0.194238 0.195044 0.19585 0.196655 0.197461
+0.198267 0.199072 0.199878 0.200684 0.201489 0.202295 0.203101 0.203906
+0.204712 0.205518 0.206323 0.207129 0.207935 0.20874 0.209546 0.210352
+0.211157 0.211963 0.212769 0.213574 0.21438 0.215186 0.215991 0.216797
+0.217603 0.218408 0.219214 0.22002 0.220825 0.221631 0.222437 0.223242
+0.224048 0.224854 0.225659 0.226465 0.22727 0.228076 0.228882 0.229687
+0.230493 0.231299 0.232104 0.23291 0.233716 0.234521 0.235327 0.236133
+0.236938 0.237744 0.23855 0.239355 0.240161 0.240967 0.241772 0.242578
+0.243384 0.244189 0.244995 0.245801 0.246606 0.247412 0.248218 0.249023
+0.249829 0.250635 0.25144 0.252246 0.253052 0.253857 0.254663 0.255469
+0.256274 0.25708 0.257886 0.258691 0.259497 0.260303 0.261108 0.261914
+0.26272 0.263525 0.264331 0.265137 0.265942 0.266748 0.267554 0.268359
+0.269165 0.269971 0.270776 0.271582 0.272388 0.273193 0.273999 0.274805
+0.27561 0.276416 0.277222 0.278027 0.278833 0.279639 0.280444 0.28125
+0.282056 0.282861 0.283667 0.284473 0.285278 0.286084 0.28689 0.287695
+0.288501 0.289307 0.290112 0.290918 0.291724 0.292529 0.293335 0.294141
+0.294946 0.295752 0.296558 0.297363 0.298169 0.298975 0.29978 0.300586
+0.301392 0.302197 0.303003 0.303809 0.304614 0.30542 0.306226 0.307031
+0.307837 0.308643 0.309448 0.310254 0.31106 0.311865 0.312671 0.313477
+0.314282 0.315088 0.315894 0.316699 0.317505 0.318311 0.319116 0.319922
+0.320728 0.321533 0.322339 0.323145 0.32395 0.324756 0.325562 0.326367
+0.327173 0.327979 0.328784 0.32959 0.330396 0.331201 0.332007 0.332812
+0.333618 0.334424 0.335229 0.336035 0.336841 0.337646 0.338452 0.339258
+0.340063 0.340869 0.341675 0.34248 0.343286 0.344092 0.344897 0.345703
+0.346509 0.347314 0.34812 0.348926 0.349731 0.350537 0.351343 0.352148
+0.352954 0.35376 0.354565 0.355371 0.356177 0.356982 0.357788;
+#A 4000 0.358594 0.359399 0.360205 0.361011 0.361816 0.362622 0.363428
+0.364233 0.365039 0.365845 0.36665 0.367456 0.368262 0.369067 0.369873
+0.370679 0.371484 0.37229 0.373096 0.373901 0.374707 0.375513 0.376318
+0.377124 0.37793 0.378735 0.379541 0.380347 0.381152 0.381958 0.382764
+0.383569 0.384375 0.385181 0.385986 0.386792 0.387598 0.388403 0.389209
+0.390015 0.39082 0.391626 0.392432 0.393237 0.394043 0.394849 0.395654
+0.39646 0.397266 0.398071 0.398877 0.399683 0.400488 0.401294 0.4021
+0.402905 0.403711 0.404517 0.405322 0.406128 0.406934 0.407739 0.408545
+0.409351 0.410156 0.410962 0.411768 0.412573 0.413379 0.414185 0.41499
+0.415796 0.416602 0.417407 0.418213 0.419019 0.419824 0.42063 0.421436
+0.422241 0.423047 0.423853 0.424658 0.425464 0.42627 0.427075 0.427881
+0.428686 0.429492 0.430298 0.431103 0.431909 0.432715 0.43352 0.434326
+0.435132 0.435937 0.436743 0.437549 0.438354 0.43916 0.439966 0.440771
+0.441577 0.442383 0.443188 0.443994 0.4448 0.445605 0.446411 0.447217
+0.448022 0.448828 0.449634 0.450439 0.451245 0.452051 0.452856 0.453662
+0.454468 0.455273 0.456079 0.456885 0.45769 0.458496 0.459302 0.460107
+0.460913 0.461719 0.462524 0.46333 0.464136 0.464941 0.465747 0.466553
+0.467358 0.468164 0.46897 0.469775 0.470581 0.471387 0.472192 0.472998
+0.473804 0.474609 0.475415 0.476221 0.477026 0.477832 0.478638 0.479443
+0.480249 0.481055 0.48186 0.482666 0.483472 0.484277 0.485083 0.485889
+0.486694 0.4875 0.487044 0.486589 0.486133 0.485677 0.485221 0.484766
+0.48431 0.483854 0.483398 0.482943 0.482487 0.482031 0.481575 0.48112
+0.480664 0.480208 0.479753 0.479297 0.478841 0.478385 0.47793 0.477474
+0.477018 0.476562 0.476107 0.475651 0.475195 0.47474 0.474284 0.473828
+0.473372 0.472917 0.472461 0.472005 0.471549 0.471094 0.470638 0.470182
+0.469727 0.469271 0.468815 0.468359 0.467904 0.467448 0.466992 0.466536
+0.466081 0.465625 0.465169 0.464714 0.464258 0.463802 0.463346 0.462891
+0.462435 0.461979 0.461523 0.461068 0.460612 0.460156 0.4597 0.459245
+0.458789 0.458333 0.457878 0.457422 0.456966 0.45651 0.456055 0.455599
+0.455143 0.454687 0.454232 0.453776 0.45332 0.452865 0.452409 0.451953
+0.451497 0.451042 0.450586 0.45013 0.449674 0.449219 0.448763 0.448307
+0.447852 0.447396 0.44694 0.446484 0.446029 0.445573 0.445117 0.444661
+0.444206 0.44375 0.443294 0.442838 0.442383 0.441927 0.441471 0.441016
+0.44056 0.440104 0.439648 0.439193 0.438737 0.438281 0.437825 0.43737
+0.436914 0.436458 0.436003 0.435547 0.435091 0.434635 0.43418 0.433724
+0.433268 0.432812 0.432357 0.431901 0.431445 0.43099 0.430534 0.430078
+0.429622 0.429167 0.428711 0.428255 0.427799 0.427344 0.426888 0.426432
+0.425977 0.425521 0.425065 0.424609 0.424154 0.423698 0.423242 0.422786
+0.422331 0.421875 0.421419 0.420963 0.420508 0.420052 0.419596 0.419141
+0.418685 0.418229 0.417773 0.417318 0.416862 0.416406 0.41595 0.415495
+0.415039 0.414583 0.414128 0.413672 0.413216 0.41276 0.412305 0.411849
+0.411393 0.410937 0.410482 0.410026 0.40957 0.409115 0.408659 0.408203
+0.407747 0.407292 0.406836 0.40638 0.405924 0.405469 0.405013 0.404557
+0.404102 0.403646 0.40319 0.402734 0.402279 0.401823 0.401367 0.400911
+0.400456 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
+0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
+0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4
+0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4;
+#X coords 0 1 4409 0 200 140 1;
+#X restore 271 194 graph;
+#X obj 73 187 tabwrite~ show;
+#X text 121 37 hold down control to add/remove points;
+#X msg 73 9 bang;
+#X obj 73 63 s-env~ t;
+#N canvas 0 0 450 300 datastore 0;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD t/envelope 3 3 19 44 44 69 78 83 86 3 119 27
+121 66 162 77 186 44 195 51 \; SSSAD test/envelope 3 3 \; SSSAD_ADMIN
+set \;;
+#X connect 0 0 1 0;
+#X restore 349 63 pd datastore;
+#X obj 349 86 sssad/datastore;
+#X text 307 154 Click load to load one.;
+#X connect 0 0 1 0;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 5 0 0 0;
+#X connect 6 0 3 0;
diff --git a/s-env~.pd b/s-env~.pd
new file mode 100644
index 0000000..3f8102c
--- /dev/null
+++ b/s-env~.pd
@@ -0,0 +1,281 @@
+#N canvas 9 15 721 668 10;
+#N canvas 0 16 999 675 1125data 0;
+#X coords 0 0 198 86 198 86 1;
+#X restore 4 18 pd \$0data;
+#N canvas 183 252 599 314 1125template 0;
+#X obj 17 51 struct \$0template float x float y array \$0arrayvals
+\$0arraytemplate;
+#X obj 17 86 outlet;
+#X obj 17 17 plot -x x(3:195)(3:195) -y y(3:83)(3:83) \$0arrayvals
+333 1 0 0 0;
+#X connect 0 0 1 0;
+#X restore 236 36 pd \$0template;
+#N canvas 435 201 450 300 1125arraytemplate 0;
+#X obj 24 43 struct \$0arraytemplate float x float y;
+#X obj 24 87 filledpolygon 333 333 1 -2 -2 2 -2 2 2 -2 2 -2 -2;
+#X obj 24 65 print;
+#X connect 0 0 2 0;
+#X restore 236 13 pd \$0arraytemplate;
+#N canvas 0 0 439 363 initarray 0;
+#X obj 163 211 pointer;
+#X msg 133 47 bang;
+#X text 186 35 click here to re-initialize;
+#X msg 300 176 \; \$1 clear;
+#X obj 163 96 \$0;
+#X msg 163 188 traverse \$1 \, bang;
+#X obj 163 119 makefilename pd-%ddata;
+#X obj 35 251 append \$0template x;
+#X msg 35 219 0;
+#X obj 133 12 loadbang;
+#X obj 133 72 t b b b;
+#X obj 68 114 outlet;
+#X obj 163 140 t s s;
+#X connect 0 0 7 1;
+#X connect 1 0 10 0;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 1 0;
+#X connect 10 0 11 0;
+#X connect 10 1 8 0;
+#X connect 10 2 4 0;
+#X connect 12 0 5 0;
+#X connect 12 1 3 0;
+#X restore 415 174 pd initarray;
+#X obj 236 58 print;
+#X obj 415 316 pointer;
+#X obj 453 387 setsize \$0template \$0arrayvals;
+#X msg 415 293 traverse \$1 \, next;
+#X obj 415 249 \$0;
+#X obj 415 272 makefilename pd-%ddata;
+#X msg 415 198 bang;
+#X obj 415 225 delay 10;
+#X obj 357 543 inlet;
+#X text 12 519 this is how long you want the envelope to take.;
+#X obj 357 592 outlet~;
+#X obj 415 543 t p p;
+#X obj 453 363 1;
+#N canvas 37 101 484 592 envgen 0;
+#X obj 102 241 element \$0template \$0arrayvals;
+#X obj 102 316 get \$0arraytemplate x y;
+#X obj 171 545 line~;
+#X obj 171 402 *;
+#X obj 102 145 f;
+#X obj 130 145 + 1;
+#X msg 102 116 0;
+#X obj 171 501 f;
+#X obj 171 471 t b f;
+#X obj 171 523 pack f f;
+#X obj 242 523 delay;
+#X obj 242 544 s \$0-loop;
+#X obj 23 102 r \$0-loop;
+#X obj 102 169 t f f;
+#X obj 102 216 spigot;
+#X obj 171 360 - 3;
+#X obj 171 424 t f f;
+#X obj 171 448 -;
+#X obj 258 411 expr 1 - $f1;
+#X obj 148 172 getsize \$0template \$0arrayvals;
+#X obj 132 194 < 1;
+#X obj 102 3 inlet;
+#X obj 307 216 inlet;
+#X obj 171 567 outlet~;
+#X obj 102 30 t b f b;
+#X obj 175 132 pointer;
+#X msg 175 109 traverse \$1 \, next;
+#X obj 175 65 \$0;
+#X obj 175 88 makefilename pd-%ddata;
+#X msg 222 423 0;
+#X obj 168 217 select 0;
+#X obj 258 361 - 3;
+#X obj 307 344 set \$0arraytemplate x y;
+#X text 350 324 redraw;
+#X obj 102 262 t p p;
+#X obj 270 498 s \$1/ticksize;
+#X obj 258 389 / 80;
+#X obj 171 380 / 192;
+#X connect 0 0 34 0;
+#X connect 1 0 15 0;
+#X connect 1 0 32 0;
+#X connect 1 1 31 0;
+#X connect 1 1 32 1;
+#X connect 2 0 23 0;
+#X connect 3 0 16 0;
+#X connect 4 0 5 0;
+#X connect 4 0 13 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 0 10 0;
+#X connect 8 1 9 1;
+#X connect 8 1 10 1;
+#X connect 8 1 35 0;
+#X connect 9 0 2 0;
+#X connect 10 0 11 0;
+#X connect 12 0 4 0;
+#X connect 13 0 14 0;
+#X connect 13 1 20 0;
+#X connect 14 0 0 0;
+#X connect 15 0 37 0;
+#X connect 16 0 17 1;
+#X connect 16 1 17 0;
+#X connect 17 0 8 0;
+#X connect 18 0 7 1;
+#X connect 19 0 20 1;
+#X connect 20 0 14 1;
+#X connect 20 0 30 0;
+#X connect 21 0 24 0;
+#X connect 22 0 0 1;
+#X connect 24 0 6 0;
+#X connect 24 1 3 1;
+#X connect 24 2 27 0;
+#X connect 25 0 19 0;
+#X connect 26 0 25 0;
+#X connect 27 0 28 0;
+#X connect 28 0 26 0;
+#X connect 29 0 17 1;
+#X connect 30 0 29 0;
+#X connect 31 0 36 0;
+#X connect 34 0 1 0;
+#X connect 34 1 32 2;
+#X connect 36 0 18 0;
+#X connect 37 0 3 0;
+#X restore 357 568 pd envgen;
+#X obj 306 490 set \$0arraytemplate x y;
+#X obj 462 462 element \$0template \$0arrayvals;
+#X msg 384 463 3;
+#X msg 306 464 3;
+#X obj 434 416 t b b b p;
+#X msg 462 440 0;
+#X obj 415 340 t p p b p;
+#N canvas 212 221 507 438 save 0;
+#X obj 57 11 r SSSAD_SAVE;
+#X obj 74 239 element \$0template \$0arrayvals;
+#X obj 74 260 get \$0arraytemplate x y;
+#X obj 74 217 f;
+#X obj 102 217 + 1;
+#X obj 74 286 list append;
+#X obj 74 194 until;
+#X msg 111 172 0;
+#X obj 53 333 list prepend;
+#X obj 146 333 t l;
+#X obj 30 362 list;
+#X obj 57 36 t b b b b;
+#X obj 279 217 inlet;
+#X obj 72 127 pointer;
+#X msg 72 104 traverse \$1 \, next;
+#X obj 72 60 \$0;
+#X obj 72 83 makefilename pd-%ddata;
+#X obj 72 148 getsize \$0template \$0arrayvals;
+#X obj 7 415 outlet;
+#X obj 7 394 sssad/sssad \$1/envelope;
+#X connect 0 0 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 1 5 1;
+#X connect 3 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
+#X connect 5 0 8 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 1;
+#X connect 8 0 9 0;
+#X connect 8 0 10 1;
+#X connect 9 0 8 1;
+#X connect 10 0 19 1;
+#X connect 11 0 10 0;
+#X connect 11 1 15 0;
+#X connect 11 2 7 0;
+#X connect 11 3 8 1;
+#X connect 12 0 1 1;
+#X connect 13 0 17 0;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 14 0;
+#X connect 17 0 6 0;
+#X connect 19 0 18 0;
+#X restore 445 568 pd save;
+#N canvas 64 35 650 643 load 0;
+#X obj 21 6 inlet;
+#X obj 21 65 until;
+#X obj 21 103 list append;
+#X obj 120 148 bang;
+#X obj 21 148 list split 2;
+#X obj 21 229 list split 1;
+#X obj 361 235 pointer;
+#X obj 156 305 setsize \$0template \$0arrayvals;
+#X msg 361 212 traverse \$1 \, next;
+#X obj 361 168 \$0;
+#X obj 361 191 makefilename pd-%ddata;
+#X msg 172 126 0;
+#X obj 156 232 f;
+#X obj 185 232 + 1;
+#X obj 49 174 t l b;
+#X obj 21 32 t b l b b;
+#X obj 183 342 element \$0template \$0arrayvals;
+#X obj 27 389 set \$0arraytemplate x y;
+#X obj 156 258 t f f;
+#X obj 186 281 + 1;
+#X connect 0 0 15 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 1;
+#X connect 4 0 14 0;
+#X connect 4 1 2 1;
+#X connect 4 2 3 0;
+#X connect 5 0 17 0;
+#X connect 5 1 17 1;
+#X connect 6 0 7 1;
+#X connect 6 0 16 1;
+#X connect 8 0 6 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 11 0 12 1;
+#X connect 12 0 13 0;
+#X connect 12 0 18 0;
+#X connect 13 0 12 1;
+#X connect 14 0 5 0;
+#X connect 14 1 12 0;
+#X connect 15 0 1 0;
+#X connect 15 1 2 1;
+#X connect 15 2 11 0;
+#X connect 15 3 9 0;
+#X connect 16 0 17 2;
+#X connect 18 0 16 0;
+#X connect 18 1 19 0;
+#X connect 19 0 7 0;
+#X restore 445 592 pd load;
+#X text 414 7 args: [name];
+#X obj 284 537 r \$1/shot;
+#X obj 5 19 cnv 15 196 84 empty empty empty 20 12 0 14 -260818 -66577
+0;
+#X connect 1 0 4 0;
+#X connect 3 0 10 0;
+#X connect 5 0 24 0;
+#X connect 7 0 5 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 10 0 11 0;
+#X connect 11 0 8 0;
+#X connect 12 0 17 0;
+#X connect 15 0 17 1;
+#X connect 15 1 25 0;
+#X connect 16 0 6 0;
+#X connect 17 0 14 0;
+#X connect 19 0 18 2;
+#X connect 20 0 18 1;
+#X connect 21 0 18 0;
+#X connect 22 0 21 0;
+#X connect 22 1 20 0;
+#X connect 22 2 23 0;
+#X connect 22 3 19 1;
+#X connect 23 0 19 0;
+#X connect 24 0 15 0;
+#X connect 24 1 22 0;
+#X connect 24 2 16 0;
+#X connect 24 3 6 1;
+#X connect 25 0 26 0;
+#X connect 28 0 17 0;
+#X coords 0 -1 1 1 206 108 1 0 0;
diff --git a/s-ezdac~.pd b/s-ezdac~.pd
new file mode 100644
index 0000000..725d2f7
--- /dev/null
+++ b/s-ezdac~.pd
@@ -0,0 +1,66 @@
+#N canvas 75 180 480 349 10;
+#X obj 224 205 dac~;
+#X obj 226 24 inlet~;
+#X obj 260 50 inlet~;
+#X obj 262 206 outlet~;
+#X obj 166 206 outlet~;
+#X obj 269 155 line~;
+#X msg 269 132 \$1 10;
+#X obj 259 180 *~;
+#X obj 224 180 *~;
+#X obj 270 112 / 127;
+#X obj 144 237 throw~ mainout-l;
+#X obj 264 237 throw~ mainout-r;
+#X obj 323 63 expr 1 - $f1;
+#X obj 225 73 *~;
+#X obj 260 72 *~;
+#X obj 323 39 / 127;
+#X obj 323 16 r \$0-pan;
+#X obj 269 93 r \$0-volume;
+#X obj 353 213 s~ \$1-r;
+#X obj 102 211 s~ \$1-l;
+#X obj 11 58 hsl 64 16 0 127 0 1 \$0-volume \$0-volume volume -2 -6
+0 8 -260818 -1 -1 300 1;
+#X obj 11 29 hsl 64 16 0 127 0 1 \$0-pan \$0-pan pan -2 -6 0 8 -260818
+-1 -1 3075 1;
+#X obj 0 106 sssad/sssad \$1/pan;
+#X obj 0 174 sssad/sssad \$1/volume;
+#X obj 416 93 inlet;
+#X msg 416 134 \; \$1 \$2 \;;
+#X obj 3 303 s-connect \$1/pan \$0-pan;
+#X obj 3 324 s-connect \$1/volume \$0-volume;
+#X obj 416 171 print;
+#X obj 416 113 list;
+#X obj 0 194 s \$0-volume;
+#X obj 142 153 r \$0-volume;
+#X obj 121 85 r \$0-pan;
+#X obj 0 126 s \$0-pan;
+#X connect 1 0 13 0;
+#X connect 2 0 14 0;
+#X connect 5 0 7 1;
+#X connect 5 0 8 1;
+#X connect 6 0 5 0;
+#X connect 7 0 0 1;
+#X connect 7 0 3 0;
+#X connect 7 0 11 0;
+#X connect 7 0 18 0;
+#X connect 8 0 0 0;
+#X connect 8 0 4 0;
+#X connect 8 0 10 0;
+#X connect 8 0 19 0;
+#X connect 9 0 6 0;
+#X connect 12 0 13 1;
+#X connect 13 0 8 0;
+#X connect 14 0 7 0;
+#X connect 15 0 12 0;
+#X connect 15 0 14 1;
+#X connect 16 0 15 0;
+#X connect 17 0 9 0;
+#X connect 22 0 33 0;
+#X connect 23 0 30 0;
+#X connect 24 0 29 0;
+#X connect 25 0 28 0;
+#X connect 29 0 25 0;
+#X connect 31 0 23 1;
+#X connect 32 0 22 1;
+#X coords 0 0 1 1 100 80 1 0 0;
diff --git a/s-filtdelay~.pd b/s-filtdelay~.pd
new file mode 100644
index 0000000..8cd83a9
--- /dev/null
+++ b/s-filtdelay~.pd
@@ -0,0 +1,48 @@
+#N canvas 497 297 455 342 10;
+#X obj 140 11 inlet~;
+#X obj 169 271 outlet~;
+#X obj 210 188 +~;
+#X obj 225 160 *~;
+#X obj 8 28 hsl 64 16 0 127 0 1 \$0/length \$1/length length -2 -6
+0 8 -260818 -1 -1 843 1;
+#X obj 8 89 hsl 64 16 0 127 0 1 \$0/cutoff \$1/cutoff cutoff -2 -6
+0 8 -260818 -1 -1 5600 1;
+#X obj 341 143 / 100;
+#X obj 225 85 mtof;
+#X obj 370 30 block~ 1;
+#X obj 225 132 delread~ \$0-del;
+#X obj 211 213 s-jail;
+#X obj 316 173 table \$0-del 2000;
+#X obj 264 270 delwrite~ \$0-del 2000;
+#X obj 319 18 inlet;
+#X msg 319 59 \; \$1 \$2 \;;
+#X obj 319 96 print;
+#X obj 319 38 list;
+#X obj 225 107 expr 8000 / $f1;
+#X obj 341 121 r \$0/feedback;
+#X obj 225 42 r \$0/length;
+#X obj 2 322 sssad/auto \$0/feedback \$1/feedback;
+#X obj 3 300 sssad/auto \$0/length \$1/length;
+#X obj 8 59 hsl 64 16 0 127 0 1 \$0/feedback \$1/feedback feedback
+-2 -6 0 8 -260818 -1 -1 981 1;
+#X obj 264 248 lop~;
+#X obj 287 204 r \$0/cutoff;
+#X obj 287 226 mtof;
+#X connect 0 0 2 0;
+#X connect 2 0 10 0;
+#X connect 3 0 2 1;
+#X connect 6 0 3 1;
+#X connect 7 0 17 0;
+#X connect 9 0 3 0;
+#X connect 10 0 1 0;
+#X connect 10 0 23 0;
+#X connect 13 0 16 0;
+#X connect 14 0 15 0;
+#X connect 16 0 14 0;
+#X connect 17 0 9 0;
+#X connect 18 0 6 0;
+#X connect 19 0 7 0;
+#X connect 23 0 12 0;
+#X connect 24 0 25 0;
+#X connect 25 0 23 1;
+#X coords 0 0 1 1 120 110 1 0 0;
diff --git a/s-filter~.pd b/s-filter~.pd
new file mode 100644
index 0000000..19c4275
--- /dev/null
+++ b/s-filter~.pd
@@ -0,0 +1,37 @@
+#N canvas 259 315 374 347 10;
+#X obj 168 23 inlet~;
+#X obj 168 248 outlet~;
+#X obj 8 59 hsl 64 16 0 127 0 1 \$0/cutoff \$1/cutoff cutoff -2 -6
+0 8 -260818 -1 -1 3363 1;
+#X obj 168 163 vcf~;
+#X obj 8 29 hsl 64 16 0 127 0 1 \$0/resonance \$1/resonance resonance
+-2 -6 0 8 -260818 -1 -1 1400 1;
+#X obj 168 199 *~;
+#X obj 168 224 s-jail;
+#X obj 180 89 +~;
+#X obj 197 67 inlet~;
+#X obj 180 109 mtof~;
+#X obj 292 7 inlet;
+#X obj 292 29 list;
+#X msg 292 51 \; \$1 \$2 \;;
+#X obj 13 90 sssad/sssad \$1/resonance;
+#X obj 11 121 sssad/sssad \$1/cutoff;
+#X obj 273 105 r \$0/resonance;
+#X obj 180 46 r \$0/cutoff;
+#X connect 0 0 3 0;
+#X connect 2 0 14 1;
+#X connect 3 0 5 0;
+#X connect 4 0 13 1;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 1;
+#X connect 9 0 3 1;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 13 0 4 0;
+#X connect 14 0 2 0;
+#X connect 15 0 3 2;
+#X connect 15 0 5 1;
+#X connect 16 0 7 0;
+#X coords 0 0 1 1 100 80 1 0 0;
diff --git a/s-freqnoise~-help.pd b/s-freqnoise~-help.pd
new file mode 100644
index 0000000..363366f
--- /dev/null
+++ b/s-freqnoise~-help.pd
@@ -0,0 +1,8 @@
+#N canvas 275 219 606 444 10;
+#X obj 94 14 phasor~ 440;
+#X obj 475 14 sssad/panel;
+#X obj 95 337 s-ezdac~ x;
+#X obj 94 42 s-freqnoise~ mytest;
+#X connect 0 0 3 0;
+#X connect 3 0 2 0;
+#X connect 3 0 2 1;
diff --git a/s-freqnoise~.pd b/s-freqnoise~.pd
new file mode 100644
index 0000000..d5ef4a6
--- /dev/null
+++ b/s-freqnoise~.pd
@@ -0,0 +1,192 @@
+#N canvas 62 67 878 612 10;
+#N canvas 265 48 643 640 fft-analysis 0;
+#X obj 15 164 *~;
+#X obj 14 99 inlet~;
+#X obj 15 218 rfft~;
+#X obj 36 140 tabreceive~ \$0-hann;
+#X obj 14 353 *~;
+#X obj 56 353 *~;
+#X obj 15 8 block~ 512 4;
+#X text 85 88 The inlet~ now re-uses 3/4 of the previous block \, along
+with the 128 new samples.;
+#X text 221 141 window function as before.;
+#X obj 76 196 tabreceive~ \$0-gain;
+#X obj 77 225 *~;
+#X obj 16 506 *~;
+#X obj 37 481 tabreceive~ \$0-hann;
+#X obj 77 283 /~ 768;
+#X text 98 301 divide by 3N/2 (factor of N because rfft and rifft aren't
+normalized \, and 3/2 is the gain of overlap-4 reconstruction when
+Hann window function is applied twice.);
+#X text 120 216 Just to show we're doing something \, we multiply each
+channel by a gain controlled by an array in the main window. The control
+is quartic-scaled for easy editing.;
+#X obj 78 251 *~;
+#X text 92 357 Multiply the (complex-valued) spectrum amplitudes by
+the (real-valued) gain-and-normalization-factor;
+#X obj 15 399 rifft~;
+#X text 89 396 Real-valued inverse Fourier transform. This uses only
+the first N/@ points of its inputs \, supplying the rest by symmerty
+(so it's OK that rfft~ obly puts out those N/2 points.) There's only
+one outlet because the output is real-valued.;
+#X obj 16 566 outlet~;
+#X text 88 499 Multiply by the Hann window function again \, necessary
+because the operation we performed might result in a signal that doesn't
+go smoothly to zero at both ends.;
+#X text 89 566 This repackages the output into 64-sample chunks for
+the parent window. Since we're operating with an overlap \, the outlet~
+object performs an overlapped sum of the blocks computed in this window.
+;
+#X text 129 8 block~ object specifies vector size of 512 and overlap
+four. This window now computes blocks of 512 samples at intervals of
+128 samples computed on the parent patch.;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
+#X connect 2 1 5 0;
+#X connect 3 0 0 1;
+#X connect 4 0 18 0;
+#X connect 5 0 18 1;
+#X connect 9 0 10 0;
+#X connect 9 0 10 1;
+#X connect 10 0 16 0;
+#X connect 10 0 16 1;
+#X connect 11 0 20 0;
+#X connect 12 0 11 1;
+#X connect 13 0 4 1;
+#X connect 13 0 5 1;
+#X connect 16 0 13 0;
+#X connect 18 0 11 0;
+#X restore 26 383 pd fft-analysis;
+#N canvas 35 66 592 433 Hann-window 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array \$0-hann 512 float 0;
+#X coords 0 1 511 0 200 120 1;
+#X restore 293 249 graph;
+#X msg 171 263 0;
+#X obj 65 312 osc~;
+#X obj 65 264 samplerate~;
+#X obj 65 335 *~ -0.5;
+#X obj 65 358 +~ 0.5;
+#X obj 57 383 tabwrite~ \$0-hann;
+#X text 279 241 1;
+#X text 272 359 0;
+#X text 288 372 0;
+#X obj 65 288 / 512;
+#X obj 57 241 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 336 221 Hann window;
+#X text 113 310 period 512;
+#X text 90 215 recalculate Hann;
+#X text 125 230 window table;
+#X obj 57 146 loadbang;
+#X msg 79 179 \; pd dsp 1;
+#X text 40 27 The Hann window is now recomputed on 'loadbang' to make
+the file smaller (it doesn't have to be saved with the array.);
+#X text 474 375 511;
+#X connect 1 0 2 1;
+#X connect 2 0 4 0;
+#X connect 3 0 10 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 10 0 2 0;
+#X connect 11 0 3 0;
+#X connect 11 0 1 0;
+#X connect 11 0 6 0;
+#X connect 16 0 11 0;
+#X connect 16 0 17 0;
+#X restore 224 359 pd Hann-window;
+#X obj 25 264 noise~;
+#N canvas 0 0 450 300 graph1 0;
+#X array \$0-gain 257 float 2;
+#X coords 0 5 256 -0.01 256 60 1;
+#X restore 59 34 graph;
+#X obj 27 411 outlet~;
+#X obj 92 349 *~;
+#X obj 8 40 tgl 14 1 \$0-noise \$0-noise noise 0 -6 0 8 -260818 -1
+-1 1 1;
+#X obj 24 348 *~;
+#X obj 93 264 inlet~;
+#X obj 76 290 r \$0-noise;
+#X obj 114 316 expr 1 - $f1;
+#X obj 60 35 cnv 15 254 58 empty empty empty 20 12 0 14 -260818 -66577
+0;
+#X obj 247 226 loadbang;
+#X msg 247 254 const 0;
+#X obj 247 283 s \$0-gain;
+#X obj 580 90 r SSSAD_SAVE;
+#X obj 602 265 list prepend;
+#X obj 736 265 t l;
+#X obj 580 294 list;
+#X obj 602 208 f;
+#X obj 602 180 until;
+#X msg 647 156 0;
+#X obj 648 208 + 1;
+#X obj 602 237 tabread \$0-gain;
+#X obj 580 116 t b b b;
+#X obj 431 319 sssad/sssad \$1/fourier;
+#X obj 431 365 until;
+#X obj 431 450 list append;
+#X obj 530 472 bang;
+#X obj 431 472 list split 1;
+#X obj 461 413 f;
+#X obj 431 386 t b b;
+#X msg 477 384 0;
+#X obj 488 413 + 1;
+#X obj 431 512 tabwrite \$0-gain;
+#X obj 431 340 t b b l;
+#X obj 626 430 sssad/sssad \$1/noise;
+#X obj 761 408 r \$0-noise;
+#X obj 626 452 s \$0-noise;
+#X msg 602 156 256;
+#X text 339 6 This is an almost exact copy of Miller's "Fourier Resynthesis"
+example patch \, but GOPified and with some state saving ability using
+Frank B's sssad. All the hard work was his \, all the mistakes are
+mine. I just think it's the coolest sounding thing ever.;
+#X msg 681 192 bang;
+#X connect 0 0 4 0;
+#X connect 2 0 7 0;
+#X connect 5 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 5 0;
+#X connect 9 0 10 0;
+#X connect 9 0 7 1;
+#X connect 10 0 5 1;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 15 0 24 0;
+#X connect 16 0 17 0;
+#X connect 16 0 18 1;
+#X connect 17 0 16 1;
+#X connect 18 0 25 1;
+#X connect 19 0 22 0;
+#X connect 19 0 23 0;
+#X connect 20 0 19 0;
+#X connect 21 0 19 1;
+#X connect 21 0 41 0;
+#X connect 22 0 19 1;
+#X connect 23 0 16 0;
+#X connect 24 0 18 0;
+#X connect 24 1 39 0;
+#X connect 24 2 21 0;
+#X connect 25 0 35 0;
+#X connect 26 0 31 0;
+#X connect 27 0 29 0;
+#X connect 28 0 26 1;
+#X connect 29 0 34 0;
+#X connect 29 1 27 1;
+#X connect 29 2 28 0;
+#X connect 30 0 33 0;
+#X connect 30 0 34 1;
+#X connect 31 0 27 0;
+#X connect 31 1 30 0;
+#X connect 32 0 30 1;
+#X connect 33 0 30 1;
+#X connect 35 0 26 0;
+#X connect 35 1 32 0;
+#X connect 35 2 27 1;
+#X connect 36 0 38 0;
+#X connect 37 0 36 1;
+#X connect 39 0 20 0;
+#X connect 41 0 16 1;
+#X coords 0 -1 1 1 320 100 1 0 0;
diff --git a/s-ftoms.pd b/s-ftoms.pd
new file mode 100644
index 0000000..c1983b5
--- /dev/null
+++ b/s-ftoms.pd
@@ -0,0 +1,6 @@
+#N canvas 214 203 150 125 10;
+#X obj 13 10 inlet;
+#X obj 13 63 outlet;
+#X obj 13 37 expr 44100 / $f1;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/s-fuzz~.pd b/s-fuzz~.pd
new file mode 100644
index 0000000..e74693c
--- /dev/null
+++ b/s-fuzz~.pd
@@ -0,0 +1,25 @@
+#N canvas 334 177 478 445 10;
+#X obj 179 173 -~;
+#X obj 200 135 wrap~;
+#X obj 179 79 inlet~;
+#X obj 178 249 outlet~;
+#X obj 179 199 /~ 30;
+#X obj 179 105 *~ 30;
+#X obj 10 33 hsl 64 16 127 0 0 0 \$0/fuxx \$1/fuxx fuxx -2 -6 0 8 -260818
+-1 -1 0 1;
+#X obj 266 65 * 100;
+#X obj 178 222 s-jail;
+#X obj 266 44 / 127;
+#X obj 266 19 r \$0/fuxx;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 5 0;
+#X connect 4 0 8 0;
+#X connect 5 0 0 0;
+#X connect 5 0 1 0;
+#X connect 7 0 5 1;
+#X connect 7 0 4 1;
+#X connect 8 0 3 0;
+#X connect 9 0 7 0;
+#X connect 10 0 9 0;
+#X coords 0 0 1 1 100 55 1 0 0;
diff --git a/s-gain~.pd b/s-gain~.pd
new file mode 100644
index 0000000..b266d6b
--- /dev/null
+++ b/s-gain~.pd
@@ -0,0 +1,22 @@
+#N canvas 514 165 293 375 10;
+#X obj 148 78 inlet~;
+#X obj 148 277 outlet~;
+#X obj 8 34 hsl 64 16 0 127 0 0 \$0/gain \$1/gain gain -2 -6 0 8 -260818
+-1 -1 0 1;
+#X msg 171 173 \$1 10;
+#X obj 171 198 line~;
+#X obj 148 221 *~;
+#X obj 148 250 s-jail;
+#X obj 171 131 / 127;
+#X obj 171 153 * 3;
+#X obj 6 350 sssad/auto \$0/gain \$1/gain;
+#X obj 171 109 r \$0/gain;
+#X connect 0 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 1;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
+#X connect 7 0 8 0;
+#X connect 8 0 3 0;
+#X connect 10 0 7 0;
+#X coords 0 0 1 1 90 55 1 0 0;
diff --git a/s-hex.pd b/s-hex.pd
new file mode 100644
index 0000000..6ed0b4e
--- /dev/null
+++ b/s-hex.pd
@@ -0,0 +1,57 @@
+#N canvas 491 180 504 459 10;
+#X obj 394 169 t b f;
+#X obj 394 235 list split 1;
+#X obj 394 291 list split 1;
+#X obj 343 101 mod 16;
+#X obj 394 315 symbol;
+#X obj 394 147 - 10;
+#X msg 394 195 a b c d e f;
+#X obj 269 235 makefilename %d;
+#X obj 343 124 moses 10;
+#X obj 141 169 t b f;
+#X obj 141 235 list split 1;
+#X obj 141 291 list split 1;
+#X obj 90 101 mod 16;
+#X obj 141 315 symbol;
+#X obj 141 147 - 10;
+#X msg 141 195 a b c d e f;
+#X obj 16 235 makefilename %d;
+#X obj 90 124 moses 10;
+#X obj 191 29 t f f;
+#X obj 191 49 / 16;
+#X obj 191 71 int;
+#X msg 338 368 set \$1;
+#X obj 269 396 makefilename not-set-yet;
+#X obj 338 344 makefilename %%s%s;
+#X obj 191 7 inlet;
+#X obj 269 418 outlet;
+#X connect 0 0 6 0;
+#X connect 0 1 1 1;
+#X connect 1 1 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 8 0;
+#X connect 4 0 23 0;
+#X connect 5 0 0 0;
+#X connect 6 0 1 0;
+#X connect 7 0 4 0;
+#X connect 8 0 7 0;
+#X connect 8 1 5 0;
+#X connect 9 0 15 0;
+#X connect 9 1 10 1;
+#X connect 10 1 11 0;
+#X connect 11 0 13 0;
+#X connect 12 0 17 0;
+#X connect 13 0 22 0;
+#X connect 14 0 9 0;
+#X connect 15 0 10 0;
+#X connect 16 0 13 0;
+#X connect 17 0 16 0;
+#X connect 17 1 14 0;
+#X connect 18 0 19 0;
+#X connect 18 1 3 0;
+#X connect 19 0 20 0;
+#X connect 20 0 12 0;
+#X connect 21 0 22 0;
+#X connect 22 0 25 0;
+#X connect 23 0 21 0;
+#X connect 24 0 18 0;
diff --git a/s-jail.pd b/s-jail.pd
new file mode 100644
index 0000000..6b02165
--- /dev/null
+++ b/s-jail.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 433 249 10;
+#X obj 10 33 hip~ 5;
+#X obj 10 53 clip~ -0.5 0.5;
+#X obj 10 11 inlet~;
+#X obj 10 77 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
diff --git a/s-krafty~.pd b/s-krafty~.pd
new file mode 100644
index 0000000..d2ebb69
--- /dev/null
+++ b/s-krafty~.pd
@@ -0,0 +1,42 @@
+#N canvas 215 94 492 414 10;
+#X obj 282 223 osc~;
+#X obj 282 173 line~;
+#X obj 282 198 mtof~;
+#X obj 283 323 *~;
+#X obj 239 31 s-miditrigger;
+#X obj 239 7 inlet;
+#X obj 282 347 outlet~;
+#X obj 325 293 line~;
+#X obj 325 271 pack f 3;
+#X obj 239 114 pack 0 f;
+#X obj 10 37 hsl 64 16 0 127 0 1 \$0/length \$0/length length -2 -6
+0 8 -260818 -1 -1 2943 1;
+#X obj 290 85 * 10;
+#X obj 420 5 inlet;
+#X obj 420 26 list;
+#X msg 420 48 \; \$1 \$2 \;;
+#X obj 80 137 r \$1/length;
+#X obj 80 157 s \$0/length;
+#X obj 15 217 sssad/sssad \$1/length;
+#X obj 157 193 r \$0/length;
+#X obj 15 241 s \$0/length;
+#X obj 290 62 r \$0/length;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 6 0;
+#X connect 4 0 9 0;
+#X connect 4 1 1 0;
+#X connect 4 2 8 0;
+#X connect 5 0 4 0;
+#X connect 7 0 3 1;
+#X connect 8 0 7 0;
+#X connect 9 0 1 0;
+#X connect 11 0 9 1;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 15 0 16 0;
+#X connect 17 0 19 0;
+#X connect 18 0 17 1;
+#X connect 20 0 11 0;
+#X coords 0 -1 1 1 100 60 1 0 0;
diff --git a/s-loader.pd b/s-loader.pd
new file mode 100644
index 0000000..26acde9
--- /dev/null
+++ b/s-loader.pd
@@ -0,0 +1,28 @@
+#N canvas 395 117 487 522 10;
+#X obj 31 469 soundfiler;
+#X obj 31 362 openpanel;
+#X obj 5 27 bng 15 250 50 0 \$0-open \$0-open open 0 -6 0 8 -260818
+-1 -1;
+#X symbolatom 32 29 16 0 0 2 tablename - #0/tablename;
+#X obj 31 407 pack s s;
+#X obj 202 397 symbol;
+#X obj 31 333 t b b;
+#X obj 31 304 r \$0-open;
+#X obj 239 373 r \$0/tablename;
+#X obj 82 384 r \$0/tablename;
+#X msg 202 426 \; pd-arrays obj 10 10 s-array \$1 \;;
+#X msg 17 439 read -resize \$1 \$2;
+#X obj 32 50 nbx 10 14 -1e+37 1e+37 0 0 empty \$0/size size -30 4 0
+8 -262144 -1 -1 0 256;
+#X obj 30 491 s \$0/size;
+#X connect 0 0 13 0;
+#X connect 1 0 4 0;
+#X connect 4 0 11 0;
+#X connect 5 0 10 0;
+#X connect 6 0 1 0;
+#X connect 6 1 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 5 1;
+#X connect 9 0 4 1;
+#X connect 11 0 0 0;
+#X coords 0 0 1 1 150 70 1 0 0;
diff --git a/s-lookup.pd b/s-lookup.pd
new file mode 100644
index 0000000..7e6e9a6
--- /dev/null
+++ b/s-lookup.pd
@@ -0,0 +1,17 @@
+#N canvas 71 209 450 300 10;
+#X obj 13 88 list append;
+#X msg 13 66 bang;
+#X obj 13 114 list split 0;
+#X obj 13 142 list split 1;
+#X obj 13 40 t b f;
+#X obj 108 13 inlet list-or-bang-to-clear;
+#X obj 13 13 inlet lookup;
+#X obj 13 169 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 1 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 1 0;
+#X connect 4 1 2 1;
+#X connect 5 0 0 1;
+#X connect 6 0 4 0;
diff --git a/s-metro.pd b/s-metro.pd
new file mode 100644
index 0000000..d176139
--- /dev/null
+++ b/s-metro.pd
@@ -0,0 +1,78 @@
+#N canvas 108 75 628 435 10;
+#X obj 55 230 metro;
+#X obj 5 68 tgl 16 0 \$0/startstop \$1/startstop startstop 0 -6 0 8
+-260818 -1 -1 0 127;
+#X obj 55 257 f;
+#X obj 92 257 + 1;
+#X obj 85 36 nbx 3 16 1 500 0 1 \$0/bpm \$1/bpm bpm 0 -6 0 8 -260818
+-1 -1 180 256;
+#X obj 123 123 expr 60000 / $f1;
+#X obj 123 206 / 4;
+#X obj 5 36 nbx 3 16 1 256 0 1 \$0/ticksperbeat \$1/ticksperbeat ticksperbeat
+0 -6 0 8 -260818 -1 -1 4 256;
+#X obj 467 323 / 4;
+#X obj 467 346 int;
+#X obj 467 370 change;
+#X obj 86 68 bng 16 250 50 0 \$0/reset \$1/reset reset 0 -6 0 8 -260818
+-1 -1;
+#X msg 17 166 0;
+#X obj 520 172 *;
+#X obj 520 133 t b f;
+#X obj 507 82 s \$1/beatlength;
+#X obj 507 37 s \$1/ticklength;
+#X obj 467 400 s \$1/beat;
+#X obj 540 400 outlet;
+#X obj 6 283 outlet;
+#X obj 99 230 r \$1/pos;
+#X obj 55 283 s \$1/tick;
+#X obj 397 112 r \$0/ticksperbeat;
+#X obj 507 16 r \$1/ticksize;
+#X obj 507 61 r \$1/beatsize;
+#X obj 520 197 s \$1/beatsize;
+#X obj 483 300 r \$0/ticksperbeat;
+#X obj 18 99 r \$0/startstop;
+#X obj 123 99 r \$0/bpm;
+#X obj 17 144 r \$0/reset;
+#X obj 139 144 r \$0/ticksperbeat;
+#X obj 467 278 r \$1/tick;
+#X obj 202 255 s \$1/ticksize;
+#X obj 520 112 r \$1/ticksize;
+#X obj 139 164 t b f;
+#X obj 202 232 f;
+#X msg 202 210 bang;
+#X obj 202 190 r \$1/beat;
+#X obj 3 389 sssad/auto \$0/bpm \$1/bpm;
+#X obj 3 410 sssad/auto \$0/ticksperbeat \$1/ticksperbeat;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 19 0;
+#X connect 2 0 21 0;
+#X connect 3 0 2 1;
+#X connect 5 0 6 0;
+#X connect 6 0 0 1;
+#X connect 6 0 35 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 17 0;
+#X connect 10 0 18 0;
+#X connect 12 0 2 0;
+#X connect 13 0 25 0;
+#X connect 14 0 13 0;
+#X connect 14 1 13 1;
+#X connect 20 0 2 1;
+#X connect 22 0 13 0;
+#X connect 23 0 16 0;
+#X connect 24 0 15 0;
+#X connect 26 0 8 1;
+#X connect 27 0 0 0;
+#X connect 28 0 5 0;
+#X connect 29 0 12 0;
+#X connect 30 0 34 0;
+#X connect 31 0 8 0;
+#X connect 33 0 14 0;
+#X connect 34 0 6 0;
+#X connect 34 1 6 1;
+#X connect 35 0 32 0;
+#X connect 36 0 35 0;
+#X connect 37 0 36 0;
+#X coords 0 0 1 1 120 90 1 0 0;
diff --git a/s-microenv.pd b/s-microenv.pd
new file mode 100644
index 0000000..ab0b0bb
--- /dev/null
+++ b/s-microenv.pd
@@ -0,0 +1,297 @@
+#N struct 1141template float x float y array 1141arrayvals 1141arraytemplate
+;
+#N struct 1141arraytemplate float x float y;
+#N canvas 239 16 721 668 10;
+#N canvas 0 16 999 675 1141data 0;
+#X scalar 1141template 0 0 \; 0 50 \; 60 50 \; 120 50 \; 180 50 \;
+\;;
+#X coords 0 0 200 114 200 114 1;
+#X restore 10 6 pd \$0data;
+#N canvas 287 289 599 314 1141template 0;
+#X obj 15 61 struct \$0template float x float y array \$0arrayvals
+\$0arraytemplate;
+#X obj 15 96 outlet;
+#X obj 15 39 drawpolygon 0 0 10 35 190 35 190 110 10 110 10 35;
+#X obj 15 17 plot \$0arrayvals 0 2 10 15 20;
+#X obj 16 120 drawpolygon 0 0 1 30 200 30;
+#X connect 0 0 1 0;
+#X restore 236 36 pd \$0template;
+#N canvas 435 201 450 300 1141arraytemplate 0;
+#X obj 24 43 struct \$0arraytemplate float x float y;
+#X obj 24 72 filledpolygon 0 0 0 -3 0 0 3 3 0 0 -3;
+#X restore 236 13 pd \$0arraytemplate;
+#N canvas 0 0 925 648 initarray 0;
+#X obj 163 219 pointer;
+#X msg 133 47 bang;
+#X text 186 35 click here to re-initialize;
+#X msg 305 198 \; \$1 clear;
+#X obj 163 96 \$0;
+#X msg 163 196 traverse \$1 \, bang;
+#X obj 163 119 makefilename pd-%ddata;
+#X obj 35 259 append \$0template x;
+#X msg 35 227 0;
+#X obj 133 12 loadbang;
+#X obj 163 140 t s s s;
+#X obj 133 72 t b b b;
+#X obj 41 98 s \$0-entries;
+#X obj 648 164 pointer;
+#X obj 670 245 setsize \$0template \$0arrayvals;
+#X obj 522 568 set \$0arraytemplate x y;
+#X obj 578 400 element \$0template \$0arrayvals;
+#X obj 648 188 t p b p;
+#X msg 648 141 traverse \$1 \, next;
+#X obj 648 97 \$0;
+#X obj 648 120 makefilename pd-%ddata;
+#X msg 648 46 bang;
+#X obj 648 21 r \$0-entries;
+#X obj 670 217 4;
+#X obj 534 323 until;
+#X obj 564 282 > 0;
+#X obj 534 261 t f f;
+#X obj 534 303 spigot;
+#X obj 534 348 f;
+#X obj 562 348 + 1;
+#X msg 645 318 0;
+#X obj 648 276 t b b p;
+#X obj 534 368 t f f f;
+#X obj 648 73 delay 10;
+#X msg 556 465 50;
+#X obj 534 236 3;
+#X obj 522 465 * 60;
+#X connect 0 0 7 1;
+#X connect 1 0 11 0;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 10 0;
+#X connect 8 0 7 0;
+#X connect 9 0 1 0;
+#X connect 10 1 5 0;
+#X connect 10 2 3 0;
+#X connect 11 0 12 0;
+#X connect 11 1 8 0;
+#X connect 11 2 4 0;
+#X connect 13 0 17 0;
+#X connect 16 0 15 2;
+#X connect 17 0 31 0;
+#X connect 17 1 23 0;
+#X connect 17 2 14 1;
+#X connect 18 0 13 0;
+#X connect 19 0 20 0;
+#X connect 20 0 18 0;
+#X connect 21 0 33 0;
+#X connect 22 0 21 0;
+#X connect 23 0 14 0;
+#X connect 24 0 28 0;
+#X connect 25 0 27 1;
+#X connect 26 0 27 0;
+#X connect 26 1 25 0;
+#X connect 27 0 24 0;
+#X connect 28 0 29 0;
+#X connect 28 0 32 0;
+#X connect 29 0 28 1;
+#X connect 30 0 28 0;
+#X connect 31 0 35 0;
+#X connect 31 1 30 0;
+#X connect 31 2 16 1;
+#X connect 32 0 36 0;
+#X connect 32 1 34 0;
+#X connect 32 2 16 0;
+#X connect 33 0 19 0;
+#X connect 34 0 15 1;
+#X connect 35 0 26 0;
+#X connect 36 0 15 0;
+#X restore 103 129 pd initarray;
+#X obj 236 58 print;
+#N canvas 0 16 999 675 processpoints 0;
+#X obj 313 153 pointer;
+#X obj 335 234 setsize \$0template \$0arrayvals;
+#X obj 313 177 t p b p;
+#X msg 313 130 traverse \$1 \, next;
+#X obj 313 86 \$0;
+#X obj 313 109 makefilename pd-%ddata;
+#X msg 313 35 bang;
+#X obj 313 10 r \$0-entries;
+#X obj 335 206 4;
+#X obj 12 444 set \$0arraytemplate x y;
+#X obj 90 232 element \$0template \$0arrayvals;
+#X obj 46 155 until;
+#X obj 76 114 > 0;
+#X obj 46 93 t f f;
+#X obj 46 135 spigot;
+#X obj 46 180 f;
+#X obj 74 180 + 1;
+#X msg 157 150 0;
+#X obj 46 68 3;
+#X obj 160 108 t b b p p;
+#X obj 313 60 metro 100;
+#X obj 250 324 get \$0arraytemplate x y;
+#X obj 208 407 > 180;
+#X obj 208 428 select 1;
+#X msg 208 448 180;
+#X obj 272 428 select 1;
+#X obj 272 407 < 0;
+#X msg 272 448 0;
+#X obj 375 404 select 1;
+#X obj 439 402 select 1;
+#X obj 394 511 pack f f;
+#X obj 250 348 t f f f;
+#X obj 394 535 s \$0xy;
+#X obj 406 344 t f f f;
+#X obj 12 411 unpack f f;
+#X obj 12 380 r \$0xy;
+#X obj 105 263 t p p;
+#X obj 375 383 > 95;
+#X obj 439 379 < 20;
+#X msg 439 422 20;
+#X msg 375 424 95;
+#X obj 59 208 t f f;
+#X msg 80 333 180;
+#X msg 17 333 0;
+#X obj 80 291 select 3;
+#X obj 17 291 select 0;
+#X text 533 28 every 100 milliseconds this loops through the entire
+array and makes sure the points are in range. this is a kludge because
+[struct] doesn't tell us when things have been clicked.;
+#X connect 0 0 2 0;
+#X connect 2 0 19 0;
+#X connect 2 1 8 0;
+#X connect 2 2 1 1;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 20 0;
+#X connect 7 0 6 0;
+#X connect 8 0 1 0;
+#X connect 10 0 36 0;
+#X connect 11 0 15 0;
+#X connect 12 0 14 1;
+#X connect 13 0 14 0;
+#X connect 13 1 12 0;
+#X connect 14 0 11 0;
+#X connect 15 0 16 0;
+#X connect 15 0 41 0;
+#X connect 16 0 15 1;
+#X connect 17 0 15 0;
+#X connect 18 0 13 0;
+#X connect 19 0 18 0;
+#X connect 19 1 17 0;
+#X connect 19 2 10 1;
+#X connect 20 0 4 0;
+#X connect 21 0 31 0;
+#X connect 21 1 33 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 30 0;
+#X connect 25 0 27 0;
+#X connect 26 0 25 0;
+#X connect 27 0 30 0;
+#X connect 28 0 40 0;
+#X connect 29 0 39 0;
+#X connect 30 0 32 0;
+#X connect 31 0 22 0;
+#X connect 31 1 26 0;
+#X connect 31 2 30 0;
+#X connect 33 0 37 0;
+#X connect 33 1 38 0;
+#X connect 33 2 30 1;
+#X connect 34 0 9 0;
+#X connect 34 1 9 1;
+#X connect 35 0 34 0;
+#X connect 36 0 21 0;
+#X connect 36 1 9 2;
+#X connect 37 0 28 0;
+#X connect 38 0 29 0;
+#X connect 39 0 30 1;
+#X connect 40 0 30 1;
+#X connect 41 0 44 0;
+#X connect 41 0 45 0;
+#X connect 41 1 10 0;
+#X connect 42 0 9 0;
+#X connect 43 0 9 0;
+#X connect 44 0 42 0;
+#X connect 45 0 43 0;
+#X restore 103 156 pd processpoints;
+#X obj 377 244 pointer;
+#X obj 399 325 setsize \$0template \$0arrayvals;
+#X obj 216 387 element \$0template \$0arrayvals;
+#X obj 377 268 t p b p;
+#X msg 377 221 traverse \$1 \, next;
+#X obj 377 177 \$0;
+#X obj 377 200 makefilename pd-%ddata;
+#X msg 377 126 bang;
+#X obj 377 101 r \$0-entries;
+#X obj 399 297 4;
+#X obj 377 356 t b b p;
+#X obj 377 153 delay 10;
+#X obj 216 411 get \$0arraytemplate x y;
+#X obj 178 206 inlet;
+#X obj 285 609 line~;
+#X text 24 187 this is how long you want the envelope to take.;
+#X obj 178 230 t b f;
+#X obj 285 444 / 180;
+#X obj 285 466 *;
+#X obj 174 291 f;
+#X obj 202 291 + 1;
+#X obj 285 630 outlet~;
+#X obj 372 436 expr 95 - $f1;
+#X obj 372 459 / 75;
+#X msg 174 262 0;
+#X obj 285 565 f;
+#X obj 285 535 t b f;
+#X obj 285 587 pack f f;
+#X obj 356 587 delay;
+#X obj 356 608 s \$0-loop;
+#X obj 79 246 r \$0-loop;
+#X obj 204 340 < 4;
+#X obj 174 315 t f f;
+#X obj 174 362 spigot;
+#X obj 285 511 -;
+#X obj 285 488 t f f;
+#X obj 11 37 cnv 15 198 82 empty empty empty 20 12 0 14 -260818 -66577
+0;
+#X obj 21 42 cnv 15 178 73 empty empty empty 20 12 0 14 -166441 -66577
+0;
+#X connect 1 0 4 0;
+#X connect 6 0 9 0;
+#X connect 8 0 18 0;
+#X connect 9 0 16 0;
+#X connect 9 1 15 0;
+#X connect 9 2 7 1;
+#X connect 10 0 6 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 0;
+#X connect 13 0 17 0;
+#X connect 14 0 13 0;
+#X connect 15 0 7 0;
+#X connect 16 2 8 1;
+#X connect 17 0 11 0;
+#X connect 18 0 23 0;
+#X connect 18 1 28 0;
+#X connect 19 0 22 0;
+#X connect 20 0 27 0;
+#X connect 22 0 30 0;
+#X connect 22 1 24 1;
+#X connect 23 0 24 0;
+#X connect 24 0 41 0;
+#X connect 25 0 26 0;
+#X connect 25 0 38 0;
+#X connect 26 0 25 1;
+#X connect 28 0 29 0;
+#X connect 29 0 31 1;
+#X connect 30 0 25 0;
+#X connect 31 0 33 0;
+#X connect 32 0 31 0;
+#X connect 32 0 34 0;
+#X connect 32 1 33 1;
+#X connect 32 1 34 1;
+#X connect 33 0 20 0;
+#X connect 34 0 35 0;
+#X connect 36 0 25 0;
+#X connect 37 0 39 1;
+#X connect 38 0 39 0;
+#X connect 38 1 37 0;
+#X connect 39 0 8 0;
+#X connect 40 0 32 0;
+#X connect 41 0 40 1;
+#X connect 41 1 40 0;
+#X coords 0 -1 1 1 200 100 1 10 20;
diff --git a/s-midictl.pd b/s-midictl.pd
new file mode 100644
index 0000000..08a29e6
--- /dev/null
+++ b/s-midictl.pd
@@ -0,0 +1,50 @@
+#N canvas 363 281 452 313 10;
+#X obj 4 51 ctlin;
+#X obj 4 218 spigot;
+#X obj 4 278 outlet;
+#X obj 119 6 loadbang;
+#X obj 119 51 == 0;
+#X obj 34 74 spigot;
+#X obj 4 165 spigot;
+#X obj 71 52 != 0;
+#X obj 66 255 spigot;
+#X obj 124 159 loadbang;
+#X msg 124 223 1;
+#X msg 182 223 0;
+#X obj 254 5 inlet;
+#X obj 254 26 route set;
+#X obj 254 49 unpack f f;
+#X obj 34 108 == \$3;
+#X obj 119 28 \$3;
+#X text 127 99 s-midictl [ctrl-num] [send-name] [channel];
+#X obj 66 279 s \$2;
+#X obj 124 201 select \$2;
+#X obj 124 180 symbol \$2;
+#X obj 41 195 == \$1;
+#X connect 0 0 6 0;
+#X connect 0 1 21 0;
+#X connect 0 2 5 0;
+#X connect 1 0 2 0;
+#X connect 1 0 8 0;
+#X connect 3 0 16 0;
+#X connect 4 0 6 1;
+#X connect 5 0 15 0;
+#X connect 6 0 1 0;
+#X connect 7 0 5 1;
+#X connect 8 0 18 0;
+#X connect 9 0 20 0;
+#X connect 10 0 8 1;
+#X connect 11 0 8 1;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 21 1;
+#X connect 14 1 15 1;
+#X connect 14 1 16 0;
+#X connect 15 0 6 1;
+#X connect 16 0 4 0;
+#X connect 16 0 7 0;
+#X connect 19 0 10 0;
+#X connect 19 1 11 0;
+#X connect 20 0 19 0;
+#X connect 21 0 1 1;
+#X coords 0 0 1 1 150 25 0;
diff --git a/s-midiloop-help.pd b/s-midiloop-help.pd
new file mode 100644
index 0000000..69f6dd9
--- /dev/null
+++ b/s-midiloop-help.pd
@@ -0,0 +1,44 @@
+#N canvas 164 101 450 300 10;
+#X obj 324 57 s-metro time;
+#X obj 227 64 r time/tick;
+#X obj 227 86 / 4;
+#X obj 227 107 int;
+#X obj 227 128 change;
+#X text 227 44 Hi Hat;
+#N canvas 0 0 450 300 datastore 0;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD d/pulsewidth 64 \; SSSAD d/wave 1 \; SSSAD out/volume
+122.968 \; SSSAD out/pan 61.9881 \; SSSAD out2/volume 8.06349 \; SSSAD
+out2/pan 61.9881 \; SSSAD loop1/data 47 81.4671 41 78 51 70.3106 41
+0 60 34.3242 43 78 63 28.1337 43 0 84 10.9228 46 92 87 13.4398 46 0
+92 3.12229 46 68 103 21.0588 43 75 103 36.2812 46 0 106 51.1495 43
+0 117 5.23107 41 88 120 51.2855 41 0 0 62.3512 43 86 4 0.401096 43
+0 20 25.4351 46 88 22 24.2106 46 0 27 60.333 48 74 31 11.4441 48 0
+\; SSSAD time/ticksperbeat 4 \; SSSAD time/bpm 180 \; SSSAD_ADMIN set
+\;;
+#X connect 0 0 1 0;
+#X restore 358 152 pd datastore;
+#X obj 337 173 sssad/datastore;
+#X obj 8 89 s-midiloop loop1 time/tick 128;
+#X obj 227 170 line~;
+#X obj 273 170 noise~;
+#X obj 227 214 s-ezdac~ out2;
+#X obj 227 192 *~;
+#X msg 227 150 1 \, 0 50;
+#X obj 8 156 s-synth~ d;
+#X obj 8 213 s-ezdac~ out;
+#X text 5 1 First hit load to hear a bad loop recorded earlier. Then
+start the timer.;
+#X text 8 69 Hit record and play around.;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 13 0;
+#X connect 8 0 14 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 1;
+#X connect 12 0 11 0;
+#X connect 12 0 11 1;
+#X connect 13 0 9 0;
+#X connect 14 0 15 0;
+#X connect 14 0 15 1;
diff --git a/s-midiloop.pd b/s-midiloop.pd
new file mode 100644
index 0000000..2b253aa
--- /dev/null
+++ b/s-midiloop.pd
@@ -0,0 +1,163 @@
+#N canvas 7 17 986 667 10;
+#X obj 490 632 outlet;
+#X text 540 635 Midi pairs come out here.;
+#X obj 490 544 t l l;
+#X obj 520 567 unpack f f;
+#X obj 62 21 tgl 14 0 \$0/passthrough \$1/passthrough passthrough 17
+7 0 8 -260818 -1 -1 0 1;
+#X obj 520 610 s \$0/num1;
+#X obj 585 589 s \$0/num2;
+#X floatatom 4 42 3 0 0 0 - #0/num1 -;
+#X floatatom 32 42 3 0 0 0 - #0/num2 -;
+#X text 156 0 args: name timername length [midichannel];
+#X obj 6 77 notein \$4;
+#X obj 574 4 r \$2;
+#X text 78 77 Midi notes come in here;
+#X text 609 3 Listen for timer ticks;
+#X obj 604 48 mod \$3;
+#X text 657 49 Loop at the right length;
+#X obj 6 106 pack f f;
+#X obj 6 246 t l l;
+#X text 695 100 Get the time since the last timer tick;
+#X obj 574 126 timer;
+#X obj 36 464 list prepend;
+#X obj 115 437 pack f f;
+#X obj 604 70 s \$0/tick;
+#X obj 166 415 r \$0/subtime;
+#X obj 574 150 s \$0/subtime;
+#X obj 604 100 r \$0/gettime;
+#X obj 94 316 s \$0/gettime;
+#X obj 115 414 f;
+#X obj 131 392 r \$0/tick;
+#X obj 574 25 t b f;
+#X obj 36 510 list prepend;
+#X obj 132 511 t l;
+#X obj 36 269 spigot;
+#X obj 73 247 r \$0/record;
+#X obj 129 464 r \$0/record;
+#X text 108 368 Data stored is: tick - tick offset - note - volume
+;
+#X text 214 464 Reset the data if we hit record;
+#X obj 129 485 sel 1;
+#X obj 36 533 s \$0/data;
+#X obj 36 293 t l b b b;
+#X obj 94 342 s \$0/resettime;
+#X obj 463 69 r \$0/resettime;
+#X obj 513 247 r \$0/data;
+#X obj 490 269 list;
+#X text 527 270 Data lives here;
+#X obj 490 339 list append;
+#X obj 490 291 t b l;
+#X obj 490 363 list split 4;
+#X obj 490 390 unpack f f f f;
+#X obj 490 421 ==;
+#X obj 490 222 t b f;
+#X obj 490 468 delay;
+#X obj 552 468 pack f f;
+#X obj 490 500 list;
+#X text 489 183 Replay our list;
+#X obj 490 443 sel 1 0;
+#X obj 490 202 r \$0/tick;
+#X obj 162 511 s \$0/reset;
+#X obj 708 214 r \$0/reset;
+#X obj 708 235 t b b;
+#X obj 761 235 r \$0/data;
+#X obj 738 258 list;
+#X obj 738 280 t b l;
+#X obj 738 302 until;
+#X obj 738 327 list append;
+#X obj 738 349 list split 4;
+#X obj 738 372 unpack f f f f;
+#X text 771 259 Zero every note we know about;
+#X obj 800 393 pack f 0;
+#X obj 43 129 r \$0/record;
+#X obj 51 152 r \$0/passthrough;
+#X obj 43 203 ||;
+#X obj 6 224 spigot;
+#X obj 4 21 tgl 14 0 \$0/record \$1/record record 17 7 0 8 -260818
+-1 -1 0 1;
+#X obj 6 570 s \$0/passnotes;
+#X obj 380 500 r \$0/passnotes;
+#X obj 51 173 t b f;
+#X obj 828 349 bang;
+#X text 220 131 sssad persistence;
+#X obj 221 147 sssad/auto \$0/data \$1/data;
+#X obj 719 165 s-connect \$1/data \$0/data;
+#X text 717 147 User can send in data;
+#X connect 2 0 0 0;
+#X connect 2 1 3 0;
+#X connect 3 0 5 0;
+#X connect 3 1 6 0;
+#X connect 10 0 16 0;
+#X connect 10 1 16 1;
+#X connect 11 0 29 0;
+#X connect 14 0 22 0;
+#X connect 16 0 72 0;
+#X connect 17 0 74 0;
+#X connect 17 1 32 0;
+#X connect 19 0 24 0;
+#X connect 20 0 30 0;
+#X connect 21 0 20 1;
+#X connect 23 0 21 1;
+#X connect 25 0 19 1;
+#X connect 27 0 21 0;
+#X connect 28 0 27 1;
+#X connect 29 0 19 0;
+#X connect 29 1 14 0;
+#X connect 30 0 31 0;
+#X connect 30 0 38 0;
+#X connect 31 0 30 1;
+#X connect 32 0 39 0;
+#X connect 33 0 32 1;
+#X connect 34 0 37 0;
+#X connect 37 0 30 1;
+#X connect 37 0 57 0;
+#X connect 39 0 20 0;
+#X connect 39 1 27 0;
+#X connect 39 2 40 0;
+#X connect 39 3 26 0;
+#X connect 41 0 19 0;
+#X connect 42 0 43 1;
+#X connect 43 0 46 0;
+#X connect 45 0 47 0;
+#X connect 46 0 45 0;
+#X connect 46 1 45 1;
+#X connect 47 0 48 0;
+#X connect 47 1 45 1;
+#X connect 48 0 49 0;
+#X connect 48 1 51 1;
+#X connect 48 2 52 0;
+#X connect 48 3 52 1;
+#X connect 49 0 55 0;
+#X connect 50 0 43 0;
+#X connect 50 1 49 1;
+#X connect 51 0 53 0;
+#X connect 52 0 53 1;
+#X connect 53 0 2 0;
+#X connect 55 0 51 0;
+#X connect 55 1 45 0;
+#X connect 56 0 50 0;
+#X connect 58 0 59 0;
+#X connect 59 0 43 1;
+#X connect 59 0 61 1;
+#X connect 59 1 61 0;
+#X connect 60 0 61 1;
+#X connect 61 0 62 0;
+#X connect 62 0 63 0;
+#X connect 62 1 64 1;
+#X connect 63 0 64 0;
+#X connect 64 0 65 0;
+#X connect 65 0 66 0;
+#X connect 65 1 64 1;
+#X connect 65 2 77 0;
+#X connect 66 2 68 0;
+#X connect 68 0 2 0;
+#X connect 69 0 71 0;
+#X connect 70 0 76 0;
+#X connect 71 0 72 1;
+#X connect 72 0 17 0;
+#X connect 75 0 2 0;
+#X connect 76 0 71 0;
+#X connect 76 1 71 1;
+#X connect 77 0 63 1;
+#X coords 0 -1 1 1 150 60 1 0 0;
diff --git a/s-midimemory-help.pd b/s-midimemory-help.pd
new file mode 100644
index 0000000..bc09600
--- /dev/null
+++ b/s-midimemory-help.pd
@@ -0,0 +1,9 @@
+#N canvas 0 0 450 300 10;
+#X obj 318 8 s-metro time;
+#X floatatom 75 132 5 0 127 0 data_in - -;
+#X floatatom 75 184 5 0 127 0 data_out - -;
+#X text 119 132 Turn to 127 to loop;
+#X obj 75 159 s-midimemory 32 time;
+#X text 207 76 Start timer ->;
+#X connect 1 0 4 0;
+#X connect 4 0 2 0;
diff --git a/s-midimemory.pd b/s-midimemory.pd
new file mode 100644
index 0000000..bc21ec6
--- /dev/null
+++ b/s-midimemory.pd
@@ -0,0 +1,68 @@
+#N canvas 32 141 598 499 10;
+#X obj 81 239 f;
+#X floatatom 161 63 5 0 0 0 - - -;
+#X obj 9 64 moses 127;
+#X obj 51 156 spigot;
+#X msg 13 90 1;
+#X msg 49 89 0;
+#X obj 20 27 t f f;
+#X floatatom 118 224 5 0 0 0 - - -;
+#X obj 104 158 spigot;
+#X msg 69 216 bang;
+#X obj 299 287 spigot;
+#X msg 97 90 1;
+#X msg 144 92 0;
+#X obj 350 350 line;
+#X obj 386 73 table \$0-knobmem \$1;
+#X obj 161 40 mod \$1;
+#X obj 243 16 inlet;
+#X obj 17 5 inlet;
+#X obj 53 484 outlet;
+#X obj 276 231 tabread \$0-knobmem;
+#X obj 352 316 pack f 50;
+#X obj 93 264 tabwrite \$0-knobmem;
+#X obj 301 106 \$3;
+#X obj 301 81 loadbang;
+#X obj 300 131 select 0;
+#X msg 299 156 127;
+#X obj 315 178 s \$0-height;
+#X obj 63 5 r \$0-height;
+#X obj 160 17 r \$2/tick;
+#X obj 396 275 r \$2/ticklength;
+#X text 322 6 args: [length] [timername] [height];
+#X connect 0 0 21 0;
+#X connect 1 0 8 0;
+#X connect 1 0 19 0;
+#X connect 1 0 21 1;
+#X connect 2 0 4 0;
+#X connect 2 0 12 0;
+#X connect 2 0 18 0;
+#X connect 2 1 5 0;
+#X connect 2 1 11 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 1;
+#X connect 4 0 8 1;
+#X connect 5 0 3 1;
+#X connect 5 0 8 1;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X connect 7 0 0 1;
+#X connect 8 0 9 0;
+#X connect 9 0 0 0;
+#X connect 10 0 20 0;
+#X connect 11 0 10 1;
+#X connect 12 0 10 1;
+#X connect 13 0 18 0;
+#X connect 15 0 1 0;
+#X connect 16 0 15 0;
+#X connect 17 0 6 0;
+#X connect 19 0 10 0;
+#X connect 20 0 13 0;
+#X connect 22 0 24 0;
+#X connect 23 0 22 0;
+#X connect 24 0 25 0;
+#X connect 24 1 26 0;
+#X connect 25 0 26 0;
+#X connect 27 0 2 1;
+#X connect 28 0 15 0;
+#X connect 29 0 20 1;
diff --git a/s-midimonitor.pd b/s-midimonitor.pd
new file mode 100644
index 0000000..fee0307
--- /dev/null
+++ b/s-midimonitor.pd
@@ -0,0 +1,26 @@
+#N canvas 0 0 450 300 10;
+#X obj 66 180 ctlin;
+#X obj 289 175 notein;
+#X obj 5 81 nbx 3 14 0 127 0 0 \$0-value \$0-value value 0 -6 0 8 -260818
+-1 -1 0 256;
+#X obj 49 81 nbx 3 14 0 127 0 0 \$0-controller \$0-controller controller
+0 -6 0 8 -260818 -1 -1 0 256;
+#X obj 29 209 s \$0-value;
+#X obj 51 233 s \$0-controller;
+#X obj 7 24 nbx 3 14 0 127 0 0 \$0-channel \$0-channel channel 0 -6
+0 8 -260818 -1 -1 0 256;
+#X obj 6 53 nbx 3 14 0 127 0 0 \$0-note \$0-note note 0 -6 0 8 -260818
+-1 -1 0 256;
+#X obj 50 53 nbx 3 14 0 127 0 0 \$0-volume \$0-volume volume 0 -6 0
+8 -260818 -1 -1 0 256;
+#X obj 109 208 s \$0-channel;
+#X obj 326 197 s \$0-channel;
+#X obj 272 244 s \$0-note;
+#X obj 299 222 s \$0-volume;
+#X connect 0 0 4 0;
+#X connect 0 1 5 0;
+#X connect 0 2 9 0;
+#X connect 1 0 11 0;
+#X connect 1 1 12 0;
+#X connect 1 2 10 0;
+#X coords 0 -1 1 1 120 100 1 0 0;
diff --git a/s-midimono.pd b/s-midimono.pd
new file mode 100644
index 0000000..7ee0afe
--- /dev/null
+++ b/s-midimono.pd
@@ -0,0 +1,46 @@
+#N canvas 0 0 517 475 10;
+#X obj 118 103 select 0;
+#X obj 18 55 unpack f f;
+#X obj 165 172 + 1;
+#X obj 118 174 - 1;
+#X obj 104 195 f;
+#X obj 151 196 f;
+#X msg 169 126 bang;
+#X msg 118 125 bang;
+#X obj 135 222 + 1;
+#X obj 33 378 pack f f;
+#X obj 83 77 t f f;
+#X obj 18 29 inlet;
+#X obj 33 414 outlet;
+#X text 105 21 only plays one note at a time. cuts the sound when all
+notes are released.;
+#X obj 61 258 select 0;
+#X obj 135 257 select 0;
+#X obj 29 299 spigot;
+#X msg 134 283 0 0;
+#X obj 57 180 != 0;
+#X obj 136 147 0;
+#X connect 0 0 7 0;
+#X connect 0 1 6 0;
+#X connect 1 0 16 0;
+#X connect 1 1 10 0;
+#X connect 2 0 5 1;
+#X connect 3 0 4 1;
+#X connect 4 0 19 0;
+#X connect 5 0 19 0;
+#X connect 6 0 5 0;
+#X connect 7 0 4 0;
+#X connect 8 0 15 0;
+#X connect 9 0 12 0;
+#X connect 10 0 14 0;
+#X connect 10 0 18 0;
+#X connect 10 1 0 0;
+#X connect 11 0 1 0;
+#X connect 14 1 9 1;
+#X connect 15 0 17 0;
+#X connect 16 0 9 0;
+#X connect 17 0 9 0;
+#X connect 18 0 16 1;
+#X connect 19 0 3 0;
+#X connect 19 0 2 0;
+#X connect 19 0 8 0;
diff --git a/s-midinote.pd b/s-midinote.pd
new file mode 100644
index 0000000..b59bb17
--- /dev/null
+++ b/s-midinote.pd
@@ -0,0 +1,9 @@
+#N canvas 363 281 450 300 10;
+#X obj 82 249 outlet;
+#X obj 82 45 notein \$1;
+#X obj 166 249 s \$2;
+#X obj 82 77 pack f f;
+#X connect 1 0 3 0;
+#X connect 1 1 3 1;
+#X connect 3 0 0 0;
+#X connect 3 0 2 0;
diff --git a/s-miditrigger.pd b/s-miditrigger.pd
new file mode 100644
index 0000000..25fda7f
--- /dev/null
+++ b/s-miditrigger.pd
@@ -0,0 +1,18 @@
+#N canvas 417 128 564 397 10;
+#X obj 7 7 inlet;
+#X obj 7 30 unpack f f;
+#X obj 7 52 t b f;
+#X msg 7 135 bang;
+#X obj 37 106 outlet;
+#X obj 72 52 / 127;
+#X text 120 8 takes a midi note pair and outputs a trigger \, the midi
+note \, and the normalised volume.;
+#X obj 72 74 outlet;
+#X obj 7 157 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 5 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 8 0;
+#X connect 5 0 7 0;
diff --git a/s-mseq-help.pd b/s-mseq-help.pd
new file mode 100644
index 0000000..dd91baf
--- /dev/null
+++ b/s-mseq-help.pd
@@ -0,0 +1,34 @@
+#N canvas 216 243 450 300 10;
+#X obj 14 198 s-mseq 2 16 453 tick;
+#X obj 372 221 metro 200;
+#X obj 372 243 f;
+#X obj 402 243 + 1;
+#X obj 372 266 s tick;
+#X msg 81 172 453;
+#X floatatom 14 174 5 0 0 0 - - -;
+#X obj 372 203 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X floatatom 14 221 5 0 0 0 - - -;
+#X text 19 9 Turns a number into a beat.;
+#X text 19 26 args:;
+#X text 261 184 Toggle me to start a timer;
+#X obj 149 174 tgl 15 0 empty empty reverse_sequence 0 -6 0 8 -262144
+-1 -1 0 1;
+#X text 19 43 1 Base to use to do conversion (e.g. base 2 produces
+1s \, 0s);
+#X text 19 59 2 Length of the sequence;
+#X text 19 76 3 Number that designates the sequence in the base specified
+e.g. 8 = 1000 and 10 = 1010;
+#X text 19 106 4 The name of a receiver that designates which to look
+up;
+#X text 59 143 set sequence;
+#X text 12 157 lookup;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 5 0 0 1;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X connect 12 0 0 2;
diff --git a/s-mseq.pd b/s-mseq.pd
new file mode 100644
index 0000000..e891409
--- /dev/null
+++ b/s-mseq.pd
@@ -0,0 +1,43 @@
+#N canvas 427 238 508 403 10;
+#X obj 48 291 outlet;
+#X obj 48 123 pow;
+#X obj 178 51 loadbang;
+#X obj 48 89 t b f;
+#X obj 48 161 t b f;
+#X obj 48 213 /;
+#X obj 48 238 int;
+#X obj 239 51 inlet;
+#X obj 433 7 inlet invert;
+#X obj 403 102 -;
+#X obj 78 33 r \$0-invert;
+#X obj 403 132 s \$0-invert;
+#X obj 422 35 t b f;
+#X obj 79 8 inlet num_states bar_length beat_code [timer];
+#X obj 41 61 mod \$2;
+#X obj 161 83 f \$1;
+#X obj 212 83 f \$3;
+#X obj 403 63 f \$2;
+#X obj 48 264 mod \$1;
+#X obj 10 8 r \$4;
+#X connect 1 0 4 0;
+#X connect 2 0 15 0;
+#X connect 2 0 16 0;
+#X connect 3 0 1 0;
+#X connect 3 1 1 1;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
+#X connect 5 0 6 0;
+#X connect 6 0 18 0;
+#X connect 7 0 16 0;
+#X connect 8 0 12 0;
+#X connect 9 0 11 0;
+#X connect 10 0 14 0;
+#X connect 12 0 17 0;
+#X connect 12 1 9 1;
+#X connect 13 0 14 0;
+#X connect 14 0 3 0;
+#X connect 15 0 1 0;
+#X connect 16 0 5 0;
+#X connect 17 0 9 0;
+#X connect 18 0 0 0;
+#X connect 19 0 14 0;
diff --git a/s-nadsr~-help.pd b/s-nadsr~-help.pd
new file mode 100644
index 0000000..935da13
--- /dev/null
+++ b/s-nadsr~-help.pd
@@ -0,0 +1,38 @@
+#N struct 1363template float x float y array 1363arrayvals 1363arraytemplate
+;
+#N struct 1363arraytemplate float x float y;
+#N struct 1363template-marker float pos;
+#N canvas 215 178 742 458 10;
+#N canvas 457 385 450 300 datastore 0;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD t/length 250 \; SSSAD t/pos 80 \; SSSAD t/envelope
+3 18 21 72 51 33 92 48 131 43 195 83 \; SSSAD_ADMIN set \;;
+#X connect 0 0 1 0;
+#X restore 628 52 pd datastore;
+#X obj 628 73 sssad/datastore;
+#X msg 112 151 60 127;
+#X msg 167 151 60 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array output 11025 float 2;
+#X coords 0 127 11024 0 198 86 1;
+#X restore 352 223 graph;
+#X obj 112 340 tabwrite~ output;
+#X obj 112 181 t b l;
+#X obj 318 341 nbx 5 14 0 195 0 0 t/pos empty pos_send 0 -6 0 10 -262144
+-1 -1 140 256;
+#X obj 142 204 s-nadsr~ t;
+#X text 387 342 Control the sustain marker with a send.;
+#X text 34 151 Note on ->;
+#X text 203 151 <- Note off;
+#X text 350 112 Click me to load one created earlier ->;
+#X text 13 5 s-nadsr~ is not an ADSR envelope. It's a customiseable
+envelope which stops and starts from the sustain marker when sent midi
+pairs. A note-on midi message will play the start of the envelope up
+to the marker \, and the note-off midi message will play the end of
+the envelope. The output from the envelope will be scaled by the input
+midi volume (e.g. 0 to 127 for the loudest midi note possible).;
+#X connect 2 0 6 0;
+#X connect 3 0 6 0;
+#X connect 6 0 5 0;
+#X connect 6 1 8 0;
+#X connect 8 0 5 0;
diff --git a/s-nadsr~.pd b/s-nadsr~.pd
new file mode 100644
index 0000000..8eff47c
--- /dev/null
+++ b/s-nadsr~.pd
@@ -0,0 +1,551 @@
+#N struct 1560template float x float y array 1560arrayvals 1560arraytemplate
+;
+#N struct 1560arraytemplate float x float y;
+#N struct 1560template-marker float pos;
+#N canvas 266 17 721 668 10;
+#N canvas 0 16 1001 677 1560data 0;
+#X scalar 1560template 0 0 \; 3 3 \; \;;
+#X coords 0 0 198 86 198 86 1;
+#X restore 4 18 pd \$0data;
+#N canvas 49 352 599 314 1560template 0;
+#X obj 17 51 struct \$0template float x float y array \$0arrayvals
+\$0arraytemplate;
+#X obj 17 86 outlet;
+#X obj 17 17 plot -x x(3:195)(3:195) -y y(3:83)(3:83) \$0arrayvals
+333 1 0 0 0;
+#X connect 0 0 1 0;
+#X restore 236 36 pd \$0template;
+#N canvas 435 201 450 300 1560arraytemplate 0;
+#X obj 24 43 struct \$0arraytemplate float x float y;
+#X obj 24 87 filledpolygon 333 333 1 -2 -2 2 -2 2 2 -2 2 -2 -2;
+#X obj 24 65 print;
+#X connect 0 0 2 0;
+#X restore 236 13 pd \$0arraytemplate;
+#N canvas 55 191 881 464 initarray 0;
+#X obj 163 211 pointer;
+#X msg 133 47 bang;
+#X text 186 35 click here to re-initialize;
+#X obj 163 96 \$0;
+#X msg 163 188 traverse \$1 \, bang;
+#X obj 163 119 makefilename pd-%ddata;
+#X obj 35 251 append \$0template x;
+#X msg 35 219 0;
+#X obj 133 12 loadbang;
+#X obj 68 114 outlet;
+#X obj 163 140 t s s;
+#X msg 300 176 \; \$1 clear \;;
+#X obj 601 134 \$0;
+#X obj 601 178 t s s;
+#X msg 631 202 \; \$1 clear \;;
+#X obj 133 72 t b b b b;
+#X obj 601 157 makefilename pd-%ddata-marker;
+#X obj 601 262 pointer;
+#X msg 601 239 traverse \$1 \, bang;
+#X msg 410 254 0;
+#X obj 571 113 t b b;
+#X text 515 88 Initialise the marker;
+#X obj 410 286 append \$0template-marker pos;
+#X connect 0 0 6 1;
+#X connect 1 0 15 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 5 0 10 0;
+#X connect 7 0 6 0;
+#X connect 8 0 1 0;
+#X connect 10 0 4 0;
+#X connect 10 1 11 0;
+#X connect 12 0 16 0;
+#X connect 13 0 18 0;
+#X connect 13 1 14 0;
+#X connect 15 0 9 0;
+#X connect 15 1 7 0;
+#X connect 15 2 3 0;
+#X connect 15 3 20 0;
+#X connect 16 0 13 0;
+#X connect 17 0 22 1;
+#X connect 18 0 17 0;
+#X connect 19 0 22 0;
+#X connect 20 0 19 0;
+#X connect 20 1 12 0;
+#X restore 415 174 pd initarray;
+#X obj 236 58 print;
+#X obj 415 316 pointer;
+#X obj 453 387 setsize \$0template \$0arrayvals;
+#X msg 415 293 traverse \$1 \, next;
+#X obj 415 249 \$0;
+#X obj 415 272 makefilename pd-%ddata;
+#X msg 415 198 bang;
+#X obj 415 225 delay 10;
+#X obj 9 248 inlet;
+#X obj 357 592 outlet~;
+#X obj 415 543 t p p;
+#X obj 453 363 1;
+#N canvas 188 19 774 666 envgen 0;
+#X obj 102 279 element \$0template \$0arrayvals;
+#X obj 102 322 get \$0arraytemplate x y;
+#X obj 102 580 f;
+#X obj 102 560 t b f;
+#X obj 102 372 - 3;
+#X obj 102 464 t f f;
+#X obj 102 514 -;
+#X obj 242 471 expr 1 - $f1;
+#X obj 131 183 getsize \$0template \$0arrayvals;
+#X obj 307 254 inlet;
+#X obj 102 646 outlet~;
+#X obj 131 161 pointer;
+#X msg 131 138 traverse \$1 \, next;
+#X obj 131 94 \$0;
+#X obj 131 117 makefilename pd-%ddata;
+#X obj 242 421 - 3;
+#X obj 357 366 set \$0arraytemplate x y;
+#X text 473 334 redraw;
+#X obj 102 300 t p p;
+#X obj 242 449 / 80;
+#X obj 102 392 / 192;
+#X obj 118 412 r \$0/length;
+#X obj 102 433 * 1;
+#X obj 102 624 vline~;
+#X obj 102 602 pack f f f;
+#X obj 131 204 until;
+#X obj 136 233 + 1;
+#X obj 102 233 f;
+#X msg 102 94 0;
+#X obj 258 495 r \$0/height;
+#X obj 242 516 * 1;
+#N canvas 448 209 450 300 1560markerdraw 0;
+#X obj 6 9 inlet;
+#X obj 6 102 pointer;
+#X msg 6 79 traverse \$1 \, next;
+#X obj 6 35 \$0;
+#X obj 6 58 makefilename pd-%ddata-marker;
+#X obj 6 144 get \$0template-marker pos;
+#X obj 6 169 set \$0template-marker pos;
+#X obj 6 123 t p p;
+#X connect 0 0 3 0;
+#X connect 1 0 7 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 7 0 5 0;
+#X connect 7 1 6 1;
+#X restore 132 48 pd \$0markerdraw;
+#X obj 102 27 t b b;
+#N canvas 0 0 450 300 1560getpos 0;
+#X obj 52 104 pointer;
+#X msg 52 81 traverse \$1 \, next;
+#X obj 52 37 \$0;
+#X obj 52 60 makefilename pd-%ddata-marker;
+#X obj 52 125 get \$0template-marker pos;
+#X obj 52 14 inlet;
+#X obj 52 147 outlet;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
+#X restore 412 506 pd \$0getpos;
+#X obj 412 464 r \$0/startend;
+#X obj 102 6 r \$0/go;
+#X obj 412 527 s \$0/start;
+#X text 411 441 Calculate where the section should start from;
+#X msg 156 446 0;
+#N canvas 150 277 660 333 1560filtermarker 0;
+#X obj 6 4 inlet;
+#X obj 6 279 outlet;
+#X obj 6 74 moses;
+#X obj 36 52 r \$0/start;
+#X obj 6 124 spigot;
+#X obj 60 165 -;
+#X obj 60 124 spigot;
+#X obj 396 277 outlet;
+#X obj 6 219 t f b;
+#X obj 97 75 r \$0/startend;
+#X obj 76 145 r \$0/start;
+#X obj 97 101 expr 1 - $f1;
+#X obj 460 8 inlet before;
+#X obj 396 256 f;
+#N canvas 208 0 779 669 find-marker 0;
+#X obj 7 7 inlet;
+#X obj 668 7 inlet;
+#X obj 643 642 outlet;
+#X obj 6 648 outlet;
+#X obj 42 160 f;
+#X obj 304 12 inlet;
+#X msg 304 33 0;
+#X obj 58 211 r \$0/start;
+#X obj 21 106 t f f b;
+#X obj 37 259 r \$0/start;
+#X obj 46 324 &&;
+#X obj 46 350 sel 1;
+#X obj 92 351 r \$0/start;
+#X obj 71 421 f;
+#X obj 631 81 t f f b;
+#X obj 642 127 f;
+#X obj 42 232 <;
+#X obj 21 281 >=;
+#X obj 59 491 t f b;
+#X obj 248 343 -;
+#X obj 492 247 -;
+#X obj 481 556 *;
+#X obj 494 581 +;
+#X obj 180 484 -;
+#X obj 42 182 t f f f;
+#X obj 21 126 t f f f;
+#X obj 228 505 /;
+#X obj 479 607 f;
+#X obj 83 446 t f f f;
+#X connect 0 0 8 0;
+#X connect 1 0 14 0;
+#X connect 4 0 24 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 1;
+#X connect 6 0 15 1;
+#X connect 7 0 16 1;
+#X connect 8 0 25 0;
+#X connect 8 1 4 1;
+#X connect 8 2 4 0;
+#X connect 9 0 17 1;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 12 0 13 1;
+#X connect 13 0 28 0;
+#X connect 14 0 20 0;
+#X connect 14 1 15 1;
+#X connect 14 2 15 0;
+#X connect 15 0 20 1;
+#X connect 15 0 22 1;
+#X connect 16 0 10 1;
+#X connect 17 0 10 0;
+#X connect 18 0 3 0;
+#X connect 18 1 27 0;
+#X connect 19 0 26 1;
+#X connect 20 0 21 1;
+#X connect 21 0 22 0;
+#X connect 22 0 27 1;
+#X connect 23 0 26 0;
+#X connect 24 0 16 0;
+#X connect 24 1 23 1;
+#X connect 24 2 19 1;
+#X connect 25 0 17 0;
+#X connect 25 1 19 0;
+#X connect 26 0 21 0;
+#X connect 27 0 2 0;
+#X connect 28 0 18 0;
+#X connect 28 1 23 0;
+#X restore 262 80 pd find-marker;
+#X obj 275 13 inlet reset;
+#X obj 6 27 t f f;
+#X obj 438 48 t f f;
+#X obj 60 188 + 3;
+#X obj 217 156 spigot;
+#X obj 271 197 -;
+#X obj 271 156 spigot;
+#X obj 217 251 t f b;
+#X obj 308 107 r \$0/startend;
+#X obj 287 177 r \$0/start;
+#X obj 308 133 expr 1 - $f1;
+#X obj 271 220 + 3;
+#X obj 248 272 f;
+#X connect 0 0 16 0;
+#X connect 2 0 4 0;
+#X connect 2 1 6 0;
+#X connect 3 0 2 1;
+#X connect 4 0 8 0;
+#X connect 5 0 18 0;
+#X connect 6 0 5 0;
+#X connect 8 0 1 0;
+#X connect 8 1 13 0;
+#X connect 9 0 11 0;
+#X connect 9 0 4 1;
+#X connect 10 0 5 1;
+#X connect 11 0 6 1;
+#X connect 12 0 17 0;
+#X connect 13 0 7 0;
+#X connect 14 0 19 0;
+#X connect 14 0 21 0;
+#X connect 14 1 27 1;
+#X connect 15 0 14 1;
+#X connect 16 0 2 0;
+#X connect 16 1 14 0;
+#X connect 17 0 14 2;
+#X connect 17 1 13 1;
+#X connect 18 0 8 0;
+#X connect 19 0 22 0;
+#X connect 20 0 26 0;
+#X connect 21 0 20 0;
+#X connect 22 0 1 0;
+#X connect 22 1 27 0;
+#X connect 23 0 25 0;
+#X connect 23 0 19 1;
+#X connect 24 0 20 1;
+#X connect 25 0 21 1;
+#X connect 26 0 22 0;
+#X connect 27 0 7 0;
+#X restore 102 348 pd \$0filtermarker;
+#X msg 412 485 bang;
+#X obj 102 68 t b b b b b;
+#X obj 147 516 f;
+#X obj 132 485 t f f b;
+#X connect 0 0 18 0;
+#X connect 1 0 16 0;
+#X connect 1 0 39 0;
+#X connect 1 1 16 1;
+#X connect 1 1 39 2;
+#X connect 2 0 24 0;
+#X connect 3 0 2 0;
+#X connect 3 1 24 1;
+#X connect 4 0 20 0;
+#X connect 5 0 6 1;
+#X connect 5 1 43 0;
+#X connect 6 0 3 0;
+#X connect 7 0 30 0;
+#X connect 8 0 25 0;
+#X connect 9 0 0 1;
+#X connect 11 0 8 0;
+#X connect 12 0 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 15 0 19 0;
+#X connect 18 0 1 0;
+#X connect 18 1 16 2;
+#X connect 19 0 7 0;
+#X connect 20 0 22 0;
+#X connect 21 0 22 1;
+#X connect 22 0 5 0;
+#X connect 23 0 10 0;
+#X connect 24 0 23 0;
+#X connect 25 0 27 0;
+#X connect 26 0 27 1;
+#X connect 27 0 26 0;
+#X connect 27 0 0 0;
+#X connect 28 0 27 1;
+#X connect 29 0 30 1;
+#X connect 30 0 2 1;
+#X connect 32 0 41 0;
+#X connect 32 1 31 0;
+#X connect 33 0 36 0;
+#X connect 34 0 40 0;
+#X connect 35 0 32 0;
+#X connect 38 0 6 1;
+#X connect 38 0 42 1;
+#X connect 39 0 4 0;
+#X connect 39 1 15 0;
+#X connect 40 0 33 0;
+#X connect 41 1 13 0;
+#X connect 41 2 28 0;
+#X connect 41 3 38 0;
+#X connect 41 4 39 1;
+#X connect 42 0 24 2;
+#X connect 43 0 6 0;
+#X connect 43 1 42 1;
+#X connect 43 2 42 0;
+#X restore 357 568 pd envgen;
+#X obj 306 490 set \$0arraytemplate x y;
+#X obj 462 462 element \$0template \$0arrayvals;
+#X msg 384 463 3;
+#X msg 306 464 3;
+#X obj 434 416 t b b b p;
+#X msg 462 440 0;
+#X obj 415 340 t p p b p;
+#N canvas 212 221 696 446 save 0;
+#X obj 57 11 r SSSAD_SAVE;
+#X obj 74 239 element \$0template \$0arrayvals;
+#X obj 74 260 get \$0arraytemplate x y;
+#X obj 74 217 f;
+#X obj 102 217 + 1;
+#X obj 74 286 list append;
+#X obj 74 194 until;
+#X msg 111 172 0;
+#X obj 53 333 list prepend;
+#X obj 146 333 t l;
+#X obj 30 362 list;
+#X obj 57 36 t b b b b;
+#X obj 279 217 inlet;
+#X obj 72 127 pointer;
+#X msg 72 104 traverse \$1 \, next;
+#X obj 72 60 \$0;
+#X obj 72 83 makefilename pd-%ddata;
+#X obj 72 148 getsize \$0template \$0arrayvals;
+#X obj 7 415 outlet;
+#X obj 7 394 sssad/sssad \$1/envelope;
+#X obj 410 223 sssad/sssad \$1/pos;
+#X obj 410 243 outlet;
+#X obj 531 202 list;
+#X obj 400 111 pointer;
+#X msg 400 88 traverse \$1 \, next;
+#X obj 400 44 \$0;
+#X obj 400 67 makefilename pd-%ddata-marker;
+#X obj 400 132 get \$0template-marker pos;
+#X obj 400 22 r SSSAD_SAVE;
+#X connect 0 0 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 1 5 1;
+#X connect 3 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
+#X connect 5 0 8 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 1;
+#X connect 8 0 9 0;
+#X connect 8 0 10 1;
+#X connect 9 0 8 1;
+#X connect 10 0 19 1;
+#X connect 11 0 10 0;
+#X connect 11 1 15 0;
+#X connect 11 2 7 0;
+#X connect 11 3 8 1;
+#X connect 12 0 1 1;
+#X connect 13 0 17 0;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 14 0;
+#X connect 17 0 6 0;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 22 0 20 1;
+#X connect 23 0 27 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 0;
+#X connect 27 0 22 0;
+#X connect 28 0 25 0;
+#X restore 445 568 pd save;
+#N canvas 64 35 912 649 load 0;
+#X obj 21 6 inlet;
+#X obj 21 65 until;
+#X obj 21 103 list append;
+#X obj 120 148 bang;
+#X obj 21 148 list split 2;
+#X obj 21 229 list split 1;
+#X obj 361 235 pointer;
+#X obj 156 305 setsize \$0template \$0arrayvals;
+#X msg 361 212 traverse \$1 \, next;
+#X obj 361 168 \$0;
+#X obj 361 191 makefilename pd-%ddata;
+#X msg 172 126 0;
+#X obj 156 232 f;
+#X obj 185 232 + 1;
+#X obj 49 174 t l b;
+#X obj 21 32 t b l b b;
+#X obj 183 342 element \$0template \$0arrayvals;
+#X obj 27 389 set \$0arraytemplate x y;
+#X obj 156 258 t f f;
+#X obj 186 281 + 1;
+#X obj 629 10 inlet;
+#X obj 659 121 pointer;
+#X msg 659 98 traverse \$1 \, next;
+#X obj 659 54 \$0;
+#X obj 629 31 t f b;
+#X obj 659 77 makefilename pd-%ddata-marker;
+#X obj 629 168 set \$0template-marker pos;
+#X connect 0 0 15 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 1;
+#X connect 4 0 14 0;
+#X connect 4 1 2 1;
+#X connect 4 2 3 0;
+#X connect 5 0 17 0;
+#X connect 5 1 17 1;
+#X connect 6 0 7 1;
+#X connect 6 0 16 1;
+#X connect 8 0 6 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 11 0 12 1;
+#X connect 12 0 13 0;
+#X connect 12 0 18 0;
+#X connect 13 0 12 1;
+#X connect 14 0 5 0;
+#X connect 14 1 12 0;
+#X connect 15 0 1 0;
+#X connect 15 1 2 1;
+#X connect 15 2 11 0;
+#X connect 15 3 9 0;
+#X connect 16 0 17 2;
+#X connect 18 0 16 0;
+#X connect 18 1 19 0;
+#X connect 19 0 7 0;
+#X connect 20 0 24 0;
+#X connect 21 0 26 1;
+#X connect 22 0 21 0;
+#X connect 23 0 25 0;
+#X connect 24 0 26 0;
+#X connect 24 1 23 0;
+#X connect 25 0 22 0;
+#X restore 445 592 pd load;
+#X text 414 7 args: [name];
+#X obj 157 2 nbx 5 14 1 99999 0 0 \$0/length \$1/length length -38
+8 0 8 -260818 -1 -1 1 256;
+#X obj 416 63 sssad/auto \$0/length \$1/length;
+#N canvas 371 325 450 300 1560template-marker 0;
+#X obj 9 81 outlet;
+#X obj 9 59 struct \$0template-marker float pos;
+#X obj 9 38 drawpolygon 4095 1 pos(3:195)(3:195) 1 pos(3:195)(3:195)
+86;
+#X obj 9 17 drawpolygon 4095 5 pos(3:195)(3:195) 1 pos(3:195)(3:195)
+6;
+#X connect 1 0 0 0;
+#X restore 237 90 pd \$0template-marker;
+#X obj 237 111 print;
+#N canvas 0 0 450 300 1560data-marker 0;
+#X scalar 1560template-marker 0 \;;
+#X coords 0 0 198 86 198 86 1;
+#X restore 4 18 pd \$0data-marker;
+#X obj 5 19 cnv 15 196 84 empty empty empty 20 12 0 14 -260818 -66577
+0;
+#X obj 9 278 unpack f f;
+#X text 6 188 This guy takes midi note pairs.;
+#X text 6 204 The output will be scaled by the volume.;
+#X obj 74 305 sel 0;
+#X obj 17 345 \$0;
+#X obj 127 371 pack f f;
+#X obj 127 329 t b f;
+#X obj 127 350 \$0;
+#X msg 127 391 \; \$1/height \$2 \; \$1/startend 1 \; \$1/go bang \;
+;
+#X msg 17 368 \; \$1/startend 0 \; \$1/go bang \;;
+#X text 7 219 Note on plays up to the marker. Note off plays the rest.
+;
+#X obj 502 568 r \$1/pos;
+#X connect 1 0 4 0;
+#X connect 3 0 10 0;
+#X connect 5 0 23 0;
+#X connect 7 0 5 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 10 0 11 0;
+#X connect 11 0 8 0;
+#X connect 12 0 33 0;
+#X connect 14 0 16 0;
+#X connect 14 1 24 0;
+#X connect 15 0 6 0;
+#X connect 16 0 13 0;
+#X connect 18 0 17 2;
+#X connect 19 0 17 1;
+#X connect 20 0 17 0;
+#X connect 21 0 20 0;
+#X connect 21 1 19 0;
+#X connect 21 2 22 0;
+#X connect 21 3 18 1;
+#X connect 22 0 18 0;
+#X connect 23 0 14 0;
+#X connect 23 1 21 0;
+#X connect 23 2 15 0;
+#X connect 23 3 6 1;
+#X connect 24 0 25 0;
+#X connect 24 1 25 1;
+#X connect 29 0 30 0;
+#X connect 33 1 36 0;
+#X connect 36 0 37 0;
+#X connect 36 1 39 0;
+#X connect 37 0 42 0;
+#X connect 38 0 41 0;
+#X connect 39 0 40 0;
+#X connect 39 1 38 1;
+#X connect 40 0 38 0;
+#X connect 44 0 25 1;
+#X coords 0 -1 1 1 206 108 1 0 0;
diff --git a/s-obiwanbd~-help.pd b/s-obiwanbd~-help.pd
new file mode 100644
index 0000000..0b13c53
--- /dev/null
+++ b/s-obiwanbd~-help.pd
@@ -0,0 +1,7 @@
+#N canvas 372 279 450 300 10;
+#X obj 32 48 s-obiwanbd~ bee;
+#X obj 32 186 s-ezdac~ out;
+#X msg 32 25 50 127;
+#X connect 0 0 1 0;
+#X connect 0 0 1 1;
+#X connect 2 0 0 0;
diff --git a/s-obiwanbd~.pd b/s-obiwanbd~.pd
new file mode 100644
index 0000000..182d705
--- /dev/null
+++ b/s-obiwanbd~.pd
@@ -0,0 +1,135 @@
+#N canvas 16 21 446 599 10;
+#N canvas 378 154 506 525 noisekick 0;
+#X obj 98 2 inlet;
+#X obj 113 415 outlet~;
+#X obj 106 102 line~;
+#X obj 105 126 *~;
+#X obj 105 149 *~;
+#X msg 89 71 1 2;
+#X obj 17 63 del 2;
+#X obj 113 242 *~;
+#X obj 106 218 osc~;
+#X obj 105 178 *~ 100;
+#X obj 105 198 +~ 20;
+#X obj 128 25 unpack 1 2;
+#X obj 100 30 t;
+#X obj 20 103 pack 1 2;
+#X msg 16 82 0;
+#X obj 165 220 osc~;
+#X obj 164 178 *~ 100;
+#X obj 165 199 +~ 22;
+#X obj 151 263 *~;
+#X obj 275 107 noise~;
+#X obj 274 145 bp~ 100 2;
+#X msg 368 135 0;
+#X obj 367 160 switch~;
+#X msg 403 135 1;
+#X obj 367 110 del 200;
+#X obj 111 338 clip~ -0.9 0.9;
+#X obj 73 295 *~ 0.66;
+#X obj 214 255 *~;
+#X obj 183 132 * 0.77;
+#X obj 130 294 *~ 1.6;
+#X obj 112 390 lop~ 800;
+#X obj 111 364 hip~ 20;
+#X connect 0 0 11 0;
+#X connect 0 0 12 0;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
+#X connect 2 0 16 0;
+#X connect 3 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 7 1;
+#X connect 4 0 9 0;
+#X connect 5 0 2 0;
+#X connect 6 0 14 0;
+#X connect 7 0 18 0;
+#X connect 7 0 26 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 11 0 13 1;
+#X connect 11 0 24 1;
+#X connect 11 1 9 1;
+#X connect 11 1 20 1;
+#X connect 11 1 28 0;
+#X connect 12 0 6 0;
+#X connect 12 0 5 0;
+#X connect 12 0 24 0;
+#X connect 12 0 23 0;
+#X connect 13 0 2 0;
+#X connect 14 0 13 0;
+#X connect 15 0 27 1;
+#X connect 16 0 17 0;
+#X connect 17 0 15 0;
+#X connect 18 0 29 0;
+#X connect 19 0 20 0;
+#X connect 20 0 27 0;
+#X connect 21 0 22 0;
+#X connect 23 0 22 0;
+#X connect 24 0 21 0;
+#X connect 25 0 31 0;
+#X connect 26 0 25 0;
+#X connect 27 0 18 1;
+#X connect 28 0 16 1;
+#X connect 29 0 25 0;
+#X connect 30 0 1 0;
+#X connect 31 0 30 0;
+#X restore 65 425 pd noisekick;
+#X obj 65 312 pack 1 2;
+#X msg 65 341 set \$1 \$2;
+#X msg 65 397 181.429 146.779;
+#X obj 84 370 r \$0/shot;
+#X obj 11 28 hsl 64 16 0 127 0 1 \$0/decay \$1/decay decay -2 -6 0
+8 -260818 -1 -1 1500 1;
+#X obj 11 58 hsl 64 16 0 127 0 1 \$0/freq \$1/freq freq -2 -6 0 8 -260818
+-1 -1 2480 1;
+#X obj 65 179 r \$0/decay;
+#X obj 86 233 r \$0/freq;
+#X obj 65 205 * 6;
+#X obj 86 259 mtof;
+#X obj 86 283 t b f;
+#X obj 91 28 bng 16 250 50 0 \$0/shot \$1/shot shot 0 -6 0 8 -260818
+-1 -1;
+#X obj 64 575 outlet~;
+#X obj 65 487 hip~ 5;
+#X obj 392 4 inlet;
+#X obj 392 26 list;
+#X msg 392 48 \; \$1 \$2 \;;
+#X obj 199 16 inlet;
+#X obj 199 39 unpack f f;
+#X obj 199 61 t b f;
+#X obj 81 509 r \$0/vol;
+#X obj 65 551 *~;
+#X obj 11 87 hsl 64 16 0 127 0 1 \$0/vol \$1/vol vol -2 -6 0 8 -260818
+-1 -1 6300 1;
+#X obj 264 61 s \$1/vol;
+#X obj 229 107 s \$1/freq;
+#X obj 199 131 s \$1/shot;
+#X obj 81 530 / 127;
+#X obj 224 240 sssad/auto \$0/freq \$1/freq;
+#X obj 224 262 sssad/auto \$0/vol \$1/vol;
+#X obj 224 284 sssad/auto \$0/decay \$1/decay;
+#X connect 0 0 14 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
+#X connect 7 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 1 0;
+#X connect 10 0 11 0;
+#X connect 11 0 1 0;
+#X connect 11 1 1 1;
+#X connect 14 0 22 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 19 1 24 0;
+#X connect 20 0 26 0;
+#X connect 20 1 25 0;
+#X connect 21 0 27 0;
+#X connect 22 0 13 0;
+#X connect 27 0 22 1;
+#X coords 0 -1 1 1 120 110 1 0 0;
diff --git a/s-obiwancym~-help.pd b/s-obiwancym~-help.pd
new file mode 100644
index 0000000..2d23bc4
--- /dev/null
+++ b/s-obiwancym~-help.pd
@@ -0,0 +1,7 @@
+#N canvas 329 242 450 300 10;
+#X obj 32 206 s-ezdac~ out;
+#X obj 32 86 s-obiwancym~ cy;
+#X msg 32 5 \; cy/short bang \;;
+#X msg 142 5 \; cy/long bang \;;
+#X connect 1 0 0 0;
+#X connect 1 0 0 1;
diff --git a/s-obiwancym~.pd b/s-obiwancym~.pd
new file mode 100644
index 0000000..c575a75
--- /dev/null
+++ b/s-obiwancym~.pd
@@ -0,0 +1,138 @@
+#N canvas 25 36 611 620 10;
+#X obj 356 296 clip~ -0.1 0.1;
+#N canvas 0 0 1251 846 noizy 0;
+#X obj 49 173 wrap~;
+#X obj 44 148 -~ 0.5;
+#X obj 49 195 -~ 0.5;
+#X obj 26 217 -~;
+#X obj 69 363 wrap~;
+#X obj 62 336 -~ 0.5;
+#X obj 69 389 -~ 0.5;
+#X obj 52 417 -~;
+#X obj 26 447 *~;
+#X obj 62 314 phasor~;
+#X obj 60 -2 inlet;
+#X obj 25 476 outlet~;
+#X obj 52 95 unpack 1 2 3;
+#X obj 45 126 phasor~;
+#X obj 63 270 *~;
+#X obj 63 291 +~;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 8 0;
+#X connect 3 0 14 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 5 0 7 0;
+#X connect 6 0 7 1;
+#X connect 7 0 8 1;
+#X connect 8 0 11 0;
+#X connect 9 0 5 0;
+#X connect 10 0 12 0;
+#X connect 12 0 13 0;
+#X connect 12 1 14 1;
+#X connect 12 2 15 1;
+#X connect 13 0 1 0;
+#X connect 14 0 15 0;
+#X connect 15 0 9 0;
+#X restore 415 253 pd noizy;
+#X obj 341 436 outlet~;
+#X obj 397 39 loadbang;
+#X obj 341 345 *~;
+#X obj 236 255 line~;
+#X obj 98 174 del 3;
+#X obj 74 147 t;
+#X msg 63 175 1 3;
+#X obj 303 319 *~;
+#X msg 97 200 0 200;
+#X msg 455 118 1478 1765 1249;
+#X msg 300 122 893 2348 3256;
+#N canvas 0 0 1251 846 noizy 0;
+#X obj 49 173 wrap~;
+#X obj 44 148 -~ 0.5;
+#X obj 49 195 -~ 0.5;
+#X obj 26 217 -~;
+#X obj 69 363 wrap~;
+#X obj 62 336 -~ 0.5;
+#X obj 69 389 -~ 0.5;
+#X obj 52 417 -~;
+#X obj 26 447 *~;
+#X obj 62 314 phasor~;
+#X obj 60 -2 inlet;
+#X obj 25 476 outlet~;
+#X obj 52 95 unpack 1 2 3;
+#X obj 45 126 phasor~;
+#X obj 63 270 *~;
+#X obj 63 291 +~;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 8 0;
+#X connect 3 0 14 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 5 0 7 0;
+#X connect 6 0 7 1;
+#X connect 7 0 8 1;
+#X connect 8 0 11 0;
+#X connect 9 0 5 0;
+#X connect 10 0 12 0;
+#X connect 12 0 13 0;
+#X connect 12 1 14 1;
+#X connect 12 2 15 1;
+#X connect 13 0 1 0;
+#X connect 14 0 15 0;
+#X connect 15 0 9 0;
+#X restore 326 231 pd noizy;
+#X obj 341 410 *~ 0.55;
+#X obj 242 177 del 3;
+#X obj 218 150 t;
+#X msg 207 177 1 3;
+#X msg 242 202 0 725.714;
+#X text 215 103 long;
+#X text 66 102 short;
+#X obj 340 377 hip~ 400;
+#X obj 8 26 bng 16 250 50 0 \$0/short \$1/short short 0 -6 0 8 -260818
+-1 -1;
+#X obj 49 26 bng 16 250 50 0 \$0/long \$1/long long 0 -6 0 8 -260818
+-1 -1;
+#X obj 65 124 r \$0/short;
+#X obj 209 127 r \$0/long;
+#X obj 19 505 sssad/auto \$0/length \$1/length;
+#X obj 9 58 hsl 64 16 0 127 0 1 \$0/length \$1/length length -2 -6
+0 8 -260818 -1 -1 3000 1;
+#X obj 261 33 r \$0/length;
+#X msg 261 80 set 0 \$1;
+#X obj 261 56 * 12;
+#X connect 0 0 4 1;
+#X connect 1 0 0 0;
+#X connect 3 0 11 0;
+#X connect 3 0 12 0;
+#X connect 4 0 21 0;
+#X connect 5 0 9 0;
+#X connect 5 0 9 1;
+#X connect 6 0 10 0;
+#X connect 7 0 6 0;
+#X connect 7 0 8 0;
+#X connect 8 0 5 0;
+#X connect 9 0 4 0;
+#X connect 10 0 5 0;
+#X connect 11 0 1 0;
+#X connect 12 0 13 0;
+#X connect 13 0 0 0;
+#X connect 14 0 2 0;
+#X connect 15 0 18 0;
+#X connect 16 0 15 0;
+#X connect 16 0 17 0;
+#X connect 17 0 5 0;
+#X connect 18 0 5 0;
+#X connect 21 0 14 0;
+#X connect 24 0 7 0;
+#X connect 25 0 16 0;
+#X connect 28 0 30 0;
+#X connect 29 0 18 0;
+#X connect 30 0 29 0;
+#X coords 0 -1 1 1 120 80 1 0 0;
diff --git a/s-obiwansd~-help.pd b/s-obiwansd~-help.pd
new file mode 100644
index 0000000..7e29e1d
--- /dev/null
+++ b/s-obiwansd~-help.pd
@@ -0,0 +1,6 @@
+#N canvas 330 242 450 300 10;
+#X obj 32 206 s-ezdac~ out;
+#X obj 32 48 s-obiwansd~ bee;
+#X msg 32 5 \; bee/shot bang \;;
+#X connect 1 0 0 0;
+#X connect 1 0 0 1;
diff --git a/s-obiwansd~.pd b/s-obiwansd~.pd
new file mode 100644
index 0000000..aabd56c
--- /dev/null
+++ b/s-obiwansd~.pd
@@ -0,0 +1,203 @@
+#N canvas 0 0 620 669 10;
+#N canvas 5 7 662 741 coherentsnare 0;
+#X obj 425 467 osc~ 220;
+#X obj 76 277 osc~ 220;
+#X obj 386 324 line~;
+#X obj 417 286 pack 0 500;
+#X msg 382 285 1 0;
+#X obj 335 202 t;
+#X obj 215 586 *~;
+#X obj 308 373 noise~;
+#X obj 392 355 *~;
+#X obj 391 380 *~;
+#X obj 387 411 *~;
+#X obj 417 264 del 3;
+#X obj 127 431 sig~ 1;
+#X obj 133 454 -~;
+#X obj 178 475 clip~ 0.5 1;
+#X obj 177 496 -~ 0.5;
+#X obj 206 557 *~;
+#X obj 161 401 phasor~ 20;
+#X obj 187 663 +~;
+#X obj 116 621 *~;
+#X obj 265 488 hip~ 44;
+#X obj 389 446 *~;
+#X obj 394 496 *~;
+#X obj 109 587 *~;
+#X obj 48 359 *~ 1;
+#X obj 54 241 * 1;
+#X obj 216 609 clip~ -0.33 0.33;
+#X obj 186 691 clip~ -0.2 0.2;
+#X obj 170 235 * 4;
+#X obj 425 444 +~;
+#X obj 427 420 *~ 40;
+#X obj 215 636 *~ 1;
+#X obj 355 554 *~;
+#X obj 139 370 * 0.9;
+#X obj 253 637 *~ 0.2;
+#X obj 307 423 lop~ 3000;
+#X obj 482 238 min 1000;
+#X obj 482 261 + 250;
+#X msg 322 650 0;
+#X obj 321 675 switch~;
+#X msg 357 650 1;
+#X obj 106 181 max 20;
+#X obj 107 156 min 100;
+#X text 118 125 pitch;
+#X text 193 122 rattle;
+#X obj 186 161 min 0.7;
+#X obj 184 186 max 0.05;
+#X text 507 210 decay;
+#X text 306 180 trig;
+#X obj 186 718 outlet~;
+#X obj 304 91 loadbang;
+#X msg 292 117 40;
+#X msg 330 118 500;
+#X msg 368 117 0.3;
+#X text 372 92 init;
+#X obj 517 338 del 3;
+#X obj 307 397 hip~ 200;
+#X obj 327 49 unpack 1 2 3;
+#X obj 338 14 inlet;
+#X connect 0 0 22 1;
+#X connect 1 0 24 0;
+#X connect 2 0 8 0;
+#X connect 2 0 8 1;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 0;
+#X connect 5 0 11 0;
+#X connect 5 0 17 1;
+#X connect 5 0 1 1;
+#X connect 5 0 0 1;
+#X connect 5 0 40 0;
+#X connect 5 0 55 0;
+#X connect 6 0 26 0;
+#X connect 7 0 56 0;
+#X connect 8 0 9 0;
+#X connect 8 0 9 1;
+#X connect 8 0 30 0;
+#X connect 9 0 10 0;
+#X connect 9 0 10 1;
+#X connect 10 0 19 1;
+#X connect 10 0 21 0;
+#X connect 10 0 21 1;
+#X connect 11 0 3 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 6 0;
+#X connect 17 0 13 1;
+#X connect 18 0 27 0;
+#X connect 19 0 18 0;
+#X connect 20 0 16 1;
+#X connect 21 0 22 0;
+#X connect 21 0 6 1;
+#X connect 21 0 32 1;
+#X connect 22 0 23 0;
+#X connect 23 0 19 0;
+#X connect 24 0 23 1;
+#X connect 25 0 1 0;
+#X connect 26 0 31 0;
+#X connect 27 0 49 0;
+#X connect 28 0 29 1;
+#X connect 29 0 0 0;
+#X connect 30 0 29 0;
+#X connect 31 0 18 1;
+#X connect 32 0 34 0;
+#X connect 33 0 17 0;
+#X connect 34 0 18 1;
+#X connect 35 0 20 0;
+#X connect 35 0 32 0;
+#X connect 36 0 37 0;
+#X connect 37 0 3 1;
+#X connect 37 0 55 1;
+#X connect 38 0 39 0;
+#X connect 40 0 39 0;
+#X connect 41 0 33 0;
+#X connect 41 0 28 0;
+#X connect 41 0 25 0;
+#X connect 42 0 41 0;
+#X connect 45 0 46 0;
+#X connect 46 0 15 1;
+#X connect 46 0 14 1;
+#X connect 50 0 51 0;
+#X connect 50 0 52 0;
+#X connect 50 0 53 0;
+#X connect 51 0 42 0;
+#X connect 52 0 36 0;
+#X connect 53 0 45 0;
+#X connect 55 0 38 0;
+#X connect 56 0 35 0;
+#X connect 57 0 42 0;
+#X connect 57 1 45 0;
+#X connect 57 2 36 0;
+#X connect 58 0 57 0;
+#X connect 58 0 5 0;
+#X restore 30 479 pd coherentsnare;
+#X obj 30 372 pack 1 2 3;
+#X msg 30 456 43.946 0.135714 48.381;
+#X msg 30 399 set \$1 \$2 \$3;
+#X obj 535 10 inlet;
+#X obj 535 32 list;
+#X msg 535 54 \; \$1 \$2 \;;
+#X obj 253 15 inlet;
+#X obj 253 38 unpack f f;
+#X obj 253 60 t b f;
+#X obj 318 60 s \$1/vol;
+#X obj 283 106 s \$1/freq;
+#X obj 253 130 s \$1/shot;
+#X obj 367 246 sssad/auto \$0/freq \$1/freq;
+#X obj 367 268 sssad/auto \$0/vol \$1/vol;
+#X obj 367 290 sssad/auto \$0/decay \$1/decay;
+#X obj 367 312 sssad/auto \$0/rattle \$1/rattle;
+#X obj 30 178 r \$0/freq;
+#X obj 40 429 r \$0/shot;
+#X obj 30 614 outlet~;
+#X obj 126 287 * 6;
+#X obj 126 266 r \$0/decay;
+#X obj 126 308 t b f;
+#X obj 62 230 expr (1 - $f1 / 127) * 0.75 + 0.05;
+#X obj 62 207 r \$0/rattle;
+#X obj 62 253 t b f;
+#X obj 30 508 hip~ 5;
+#X obj 46 530 r \$0/vol;
+#X obj 30 572 *~;
+#X obj 46 551 / 127;
+#X obj 11 28 hsl 64 16 0 127 0 1 \$0/decay \$1/decay decay -2 -6 0
+8 -260818 -1 -1 400 1;
+#X obj 11 58 hsl 64 16 0 127 0 1 \$0/freq \$1/freq freq -2 -6 0 8 -260818
+-1 -1 2180 1;
+#X obj 91 28 bng 16 250 50 0 \$0/shot \$1/shot shot 0 -6 0 8 -260818
+-1 -1;
+#X obj 10 119 hsl 64 16 0 127 0 1 \$0/vol \$1/vol vol -2 -6 0 8 -260818
+-1 -1 6300 1;
+#X obj 10 89 hsl 64 16 0 127 0 1 \$0/rattle \$1/rattle rattle -2 -6
+0 8 -260818 -1 -1 5580 1;
+#X connect 0 0 26 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 10 0;
+#X connect 9 0 12 0;
+#X connect 9 1 11 0;
+#X connect 17 0 1 0;
+#X connect 18 0 2 0;
+#X connect 20 0 22 0;
+#X connect 21 0 20 0;
+#X connect 22 0 1 0;
+#X connect 22 1 1 2;
+#X connect 23 0 25 0;
+#X connect 24 0 23 0;
+#X connect 25 0 1 0;
+#X connect 25 1 1 1;
+#X connect 26 0 28 0;
+#X connect 27 0 29 0;
+#X connect 28 0 19 0;
+#X connect 29 0 28 1;
+#X coords 0 -1 1 1 120 143 1 0 0;
diff --git a/s-oldschool~.pd b/s-oldschool~.pd
new file mode 100644
index 0000000..7db66e8
--- /dev/null
+++ b/s-oldschool~.pd
@@ -0,0 +1,76 @@
+#N canvas 99 243 485 415 10;
+#X obj 41 195 noise~;
+#X obj 331 270 line~;
+#X msg 361 245 1;
+#X msg 331 200 bang;
+#X obj 331 221 t b b;
+#X obj 42 291 expr~ $v1 * tan($v2) * tan($v2) * tan($v2);
+#X obj 42 376 outlet~;
+#X obj 267 245 pack 0 f;
+#X obj 17 70 hsl 64 16 0 127 0 0 \$0/length \$1/length length -2 -6
+0 8 -260818 -1 -1 2800 1;
+#X obj 18 39 hsl 64 16 0 127 0 0 \$0/crunch \$1/crunch crunch -2 -6
+0 8 -260818 -1 -1 5500 1;
+#X obj 42 229 s-bitcrusher~ \$0;
+#X obj 267 188 mtof;
+#X obj 267 210 s-ftoms;
+#X obj 267 167 + 36;
+#X obj 92 70 bng 15 250 50 0 \$0/shot \$1/shot shot 0 -6 0 8 -260818
+-1 -1;
+#X obj 140 24 inlet;
+#X obj 140 68 spigot;
+#X obj 140 90 t b f;
+#X obj 140 46 unpack f f f;
+#X obj 65 332 / 127;
+#X obj 42 353 *~ 1;
+#X obj 267 145 expr 127 - $f1;
+#X obj 429 8 inlet;
+#X obj 429 30 list;
+#X msg 429 52 \; \$1 \$2 \;;
+#X obj 284 316 sssad/sssad \$1/crunch;
+#X obj 267 124 r \$0/length;
+#X obj 170 113 s \$0/crunch;
+#X obj 219 68 s \$0/volume;
+#X obj 246 37 s \$0/bits;
+#X obj 246 15 r \$0/crunch;
+#X obj 65 312 r \$0/volume;
+#X obj 405 295 r \$0/crunch;
+#X obj 405 340 r \$0/length;
+#X obj 331 178 r \$0/shot;
+#X obj 140 134 s \$1/shot;
+#X obj 284 336 s \$1/crunch;
+#X obj 284 381 s \$1/length;
+#X obj 284 361 sssad/sssad \$1/length;
+#X connect 0 0 10 0;
+#X connect 1 0 5 1;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 4 1 2 0;
+#X connect 5 0 20 0;
+#X connect 7 0 1 0;
+#X connect 10 0 5 0;
+#X connect 11 0 12 0;
+#X connect 12 0 7 1;
+#X connect 13 0 11 0;
+#X connect 15 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 35 0;
+#X connect 17 1 27 0;
+#X connect 18 0 16 0;
+#X connect 18 1 16 1;
+#X connect 18 2 28 0;
+#X connect 19 0 20 1;
+#X connect 20 0 6 0;
+#X connect 21 0 13 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 25 0 36 0;
+#X connect 26 0 21 0;
+#X connect 30 0 29 0;
+#X connect 31 0 19 0;
+#X connect 32 0 25 1;
+#X connect 33 0 38 1;
+#X connect 34 0 3 0;
+#X connect 38 0 37 0;
+#X coords 0 -1 1 1 110 80 1 10 10;
diff --git a/s-perc~.pd b/s-perc~.pd
new file mode 100644
index 0000000..23e992f
--- /dev/null
+++ b/s-perc~.pd
@@ -0,0 +1,92 @@
+#N canvas 370 86 402 478 10;
+#X obj 5 31 nbx 3 15 0 127 0 1 \$0-height \$0-height height 0 -6 0
+8 -260818 -1 -1 16 256;
+#X obj 58 63 nbx 4 15 1 5000 0 0 \$0-length \$0-length length 0 -6
+0 8 -260818 -1 -1 107 256;
+#N canvas 59 114 781 546 internals 0;
+#X obj 88 288 osc~;
+#X obj 89 196 cos~;
+#X obj 90 171 line~;
+#X msg 60 74 0;
+#X obj 60 95 t b f;
+#X obj 113 131 pack 0.25 f;
+#X obj 88 220 *~;
+#X obj 88 263 +~;
+#X obj 289 490 outlet~;
+#X obj 144 195 mtof;
+#X obj 143 238 mtof;
+#X obj 420 160 line~;
+#X obj 517 83 * 1.1;
+#X obj 288 380 *~;
+#X obj 379 85 t b b;
+#X obj 447 110 delay 3;
+#X obj 517 58 * 4;
+#X obj 185 97 * 4;
+#X obj 517 30 r \$0-length;
+#X obj 144 173 r \$0-height;
+#X obj 143 217 r \$0-end_freq;
+#X obj 185 64 r \$0-length;
+#X obj 60 44 r \$0-shot;
+#X obj 379 34 r \$0-shot;
+#X obj 419 208 clip~ -2 2;
+#X obj 419 185 expr~ -ln(1 - $v1);
+#X msg 409 109 1 3;
+#X obj 447 131 pack 0 f;
+#X connect 0 0 13 0;
+#X connect 1 0 6 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 2 0;
+#X connect 5 0 2 0;
+#X connect 6 0 7 0;
+#X connect 7 0 0 0;
+#X connect 9 0 6 1;
+#X connect 10 0 7 1;
+#X connect 11 0 25 0;
+#X connect 12 0 27 1;
+#X connect 13 0 8 0;
+#X connect 14 0 15 0;
+#X connect 14 1 26 0;
+#X connect 15 0 27 0;
+#X connect 16 0 12 0;
+#X connect 17 0 5 1;
+#X connect 18 0 16 0;
+#X connect 19 0 9 0;
+#X connect 20 0 10 0;
+#X connect 21 0 17 0;
+#X connect 22 0 3 0;
+#X connect 23 0 14 0;
+#X connect 24 0 13 1;
+#X connect 25 0 24 0;
+#X connect 26 0 11 0;
+#X connect 27 0 11 0;
+#X restore 253 19 pd internals;
+#X obj 5 63 nbx 3 15 0 127 0 1 \$0-end_freq \$0-end_freq end_freq 0
+-6 0 8 -260818 -1 -1 33 256;
+#X obj 253 67 outlet~;
+#X obj 73 27 bng 16 250 50 0 \$0-shot \$0-shot shot 0 -6 0 8 -260818
+-1 -1;
+#X obj 1 264 s-connect \$1-height \$0-height;
+#X obj 1 285 s-connect \$1-end_freq \$0-end_freq;
+#X obj 1 327 s-connect \$1-shot \$0-shot;
+#X obj 1 306 s-connect \$1-length \$0-length;
+#X obj 253 43 *~ 2;
+#X obj 0 89 inlet;
+#X obj 0 112 unpack f f;
+#X obj 0 134 t b f;
+#X obj 0 239 s \$0-shot;
+#X msg 0 217 bang;
+#X obj 65 136 / 12;
+#X obj 65 159 s \$0-vol;
+#X obj 30 188 s \$0-end_freq;
+#X connect 2 0 10 0;
+#X connect 10 0 4 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 12 1 16 0;
+#X connect 13 0 15 0;
+#X connect 13 1 18 0;
+#X connect 15 0 14 0;
+#X connect 16 0 17 0;
+#X coords 0 0 1 1 100 84 1 0 0;
diff --git a/s-pluck~.pd b/s-pluck~.pd
new file mode 100644
index 0000000..9072cb6
--- /dev/null
+++ b/s-pluck~.pd
@@ -0,0 +1,116 @@
+#N canvas 316 68 674 589 10;
+#X obj 394 566 outlet~;
+#X obj 302 89 inlet;
+#X obj 483 332 sig~;
+#X obj 302 185 t b f;
+#X obj 369 327 * 0.001;
+#X obj 369 353 + 0.95;
+#X obj 483 280 mtof;
+#X obj 302 256 del 2;
+#X obj 302 118 unpack 0 0;
+#X obj 474 177 * 0.0078;
+#X msg 302 276 0;
+#X obj 246 300 *~ 0;
+#X text 181 88 midi note pairs;
+#X text 122 233 short burst of noise;
+#X obj 395 524 *~;
+#X obj 435 507 line~;
+#X msg 486 480 1;
+#X obj 486 454 t b;
+#X obj 435 427 select 0;
+#X text 483 406 unclick on note-off;
+#X msg 435 453 0 500;
+#N canvas 126 55 600 400 delays 0;
+#X obj 77 73 inlet~;
+#X obj 278 79 inlet;
+#X obj 227 180 *~ 0.995;
+#X obj 227 206 lop~ 5000;
+#X obj 412 128 vd~ \$0-buff;
+#X obj 412 79 inlet~;
+#X obj 412 311 outlet~;
+#X obj 77 256 delwrite~ \$0-buff 256;
+#X obj 412 154 clip~ -0.5 0.5;
+#X obj 509 16 block~ 1;
+#X connect 0 0 7 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 2 0;
+#X connect 4 0 8 0;
+#X connect 5 0 4 0;
+#X connect 8 0 6 0;
+#X restore 340 393 pd delays;
+#X obj 269 268 f 1;
+#X obj 395 442 *~ 1;
+#X text 360 276 feedback < 50;
+#X obj 367 163 select 0;
+#X obj 302 161 spigot;
+#X msg 338 139 0;
+#X obj 60 59 nbx 3 16 0 127 0 0 \$0-delay \$0-delay delay 0 -6 0 8
+-260818 -1 -1 0 256;
+#X obj 6 29 nbx 3 16 0 127 0 0 \$0-feedback \$0-feedback feedback 0
+-6 0 8 -260818 -1 -1 0 256;
+#X obj 5 59 nbx 3 16 0 127 0 0 \$0-finetune \$0-finetune finetune 0
+-6 0 8 -260818 -1 -1 0 256;
+#X obj 484 304 expr 1000/$f1;
+#X obj 220 256 noise~;
+#X obj 394 545 s-jail;
+#X obj 196 170 r \$0-notevol;
+#X obj 474 203 s \$0-notevol;
+#X obj 332 235 r \$0-delay;
+#X obj 369 302 r \$0-feedback;
+#X obj 435 390 r \$0-notevol;
+#X obj 371 2 s-connect \$1/feedback \$0-feedback;
+#X obj 371 23 s-connect \$1/finetune \$0-finetune;
+#X obj 371 44 s-connect \$1/delay \$0-delay;
+#X obj 595 5 inlet;
+#X obj 595 26 list;
+#X msg 595 49 \; \$1 \$2 \;;
+#X obj 139 29 sssad/sssad \$1/feedback;
+#X obj 136 58 sssad/sssad \$1/delay;
+#X obj 22 103 sssad/sssad \$1/finetune;
+#X connect 1 0 8 0;
+#X connect 2 0 21 2;
+#X connect 3 0 7 0;
+#X connect 3 0 22 0;
+#X connect 3 1 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 21 1;
+#X connect 6 0 31 0;
+#X connect 7 0 10 0;
+#X connect 8 0 26 0;
+#X connect 8 1 9 0;
+#X connect 8 1 25 0;
+#X connect 9 0 35 0;
+#X connect 10 0 11 1;
+#X connect 11 0 21 0;
+#X connect 14 0 33 0;
+#X connect 15 0 14 1;
+#X connect 16 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 20 0;
+#X connect 18 1 17 0;
+#X connect 20 0 15 0;
+#X connect 21 0 23 0;
+#X connect 22 0 11 1;
+#X connect 23 0 14 0;
+#X connect 25 0 27 0;
+#X connect 25 1 26 1;
+#X connect 26 0 3 0;
+#X connect 27 0 26 1;
+#X connect 28 0 46 1;
+#X connect 29 0 45 1;
+#X connect 30 0 47 1;
+#X connect 31 0 2 0;
+#X connect 32 0 11 0;
+#X connect 33 0 0 0;
+#X connect 34 0 22 1;
+#X connect 36 0 7 1;
+#X connect 37 0 4 0;
+#X connect 38 0 18 0;
+#X connect 42 0 43 0;
+#X connect 43 0 44 0;
+#X connect 45 0 29 0;
+#X connect 46 0 28 0;
+#X connect 47 0 30 0;
+#X coords 0 0 1 1 100 80 1 0 0;
diff --git a/s-recorder~.pd b/s-recorder~.pd
new file mode 100644
index 0000000..e8885b5
--- /dev/null
+++ b/s-recorder~.pd
@@ -0,0 +1,35 @@
+#N canvas 408 244 450 300 10;
+#X obj 85 215 writesf~ 2;
+#X msg 341 148 stop;
+#X msg 92 118 start;
+#X obj 52 70 catch~ mainout-l;
+#X obj 208 57 catch~ mainout-r;
+#X obj 8 36 bng 16 250 50 0 \$0-open \$1-open open 0 -6 0 8 -260818
+-1 -1;
+#X obj 50 37 bng 16 250 50 0 \$0-record \$1-record record 0 -6 0 8
+-260818 -1 -1;
+#X obj 102 38 bng 16 250 50 0 \$0-stop \$1-stop stop 0 -6 0 8 -260818
+-1 -1;
+#X msg 212 143 open \$1;
+#X obj 212 119 savepanel;
+#X obj 212 95 r \$0-open;
+#X obj 92 96 r \$0-record;
+#X obj 341 126 r \$0-stop;
+#X obj 13 222 s~ main-l;
+#X obj 300 89 s~ main-r;
+#X obj 206 211 outlet~;
+#X obj 310 213 outlet~;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 3 0 13 0;
+#X connect 3 0 15 0;
+#X connect 4 0 0 1;
+#X connect 4 0 14 0;
+#X connect 4 0 16 0;
+#X connect 8 0 0 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 11 0 2 0;
+#X connect 12 0 1 0;
+#X coords 0 0 1 1 140 60 1 0 0;
diff --git a/s-repeater~.pd b/s-repeater~.pd
new file mode 100644
index 0000000..2e05a94
--- /dev/null
+++ b/s-repeater~.pd
@@ -0,0 +1,55 @@
+#N canvas 224 26 759 634 10;
+#X obj 616 5 table \$0-data 44100;
+#X obj 97 39 bng 16 250 50 0 \$0/shot \$1/shot shot 0 -6 0 8 -260818
+-1 -1;
+#X obj 252 72 inlet~;
+#X obj 279 326 tabread~ \$0-data;
+#X obj 253 102 tabwrite~ \$0-data;
+#X obj 460 46 mtof;
+#X obj 288 279 *~;
+#X obj 199 407 outlet~;
+#X obj 281 225 phasor~;
+#X obj 185 37 t b b;
+#X obj 18 39 hsl 64 16 0 127 0 1 \$0/size \$1/size size -2 -6 0 8 -260818
+-1 -1 0 1;
+#X obj 253 367 *~;
+#X obj 179 202 == 0;
+#X obj 171 245 *~;
+#X obj 219 204 != 0;
+#X obj 38 82 sssad/sssad \$1/size;
+#X obj 608 34 inlet;
+#X obj 608 58 list;
+#X obj 322 156 / 12;
+#X obj 389 220 * 12;
+#X obj 460 69 expr 44100 / $f1;
+#X msg 608 82 \; \$1 \$2 \;;
+#X obj 195 169 r \$0/size;
+#X obj 185 15 r \$0/shot;
+#X obj 460 23 r \$0/size;
+#X msg 195 82 0;
+#X connect 2 0 4 0;
+#X connect 2 0 13 0;
+#X connect 3 0 11 0;
+#X connect 5 0 18 0;
+#X connect 5 0 20 0;
+#X connect 6 0 3 0;
+#X connect 8 0 6 0;
+#X connect 9 0 25 0;
+#X connect 9 1 4 0;
+#X connect 10 0 15 1;
+#X connect 11 0 7 0;
+#X connect 12 0 13 1;
+#X connect 13 0 7 0;
+#X connect 14 0 11 1;
+#X connect 15 0 10 0;
+#X connect 16 0 17 0;
+#X connect 17 0 21 0;
+#X connect 18 0 8 0;
+#X connect 19 0 6 1;
+#X connect 20 0 19 0;
+#X connect 22 0 12 0;
+#X connect 22 0 14 0;
+#X connect 23 0 9 0;
+#X connect 24 0 5 0;
+#X connect 25 0 8 1;
+#X coords 0 0 1 1 120 50 1 10 10;
diff --git a/s-reverb-echo.pd b/s-reverb-echo.pd
new file mode 100644
index 0000000..bf75778
--- /dev/null
+++ b/s-reverb-echo.pd
@@ -0,0 +1,17 @@
+#N canvas 130 153 744 412 12;
+#X obj 66 95 inlet~;
+#X obj 130 96 inlet~;
+#X obj 68 216 outlet~;
+#X obj 141 215 outlet~;
+#X obj 67 143 +~;
+#X obj 140 141 -~;
+#X obj 141 165 delwrite~ \$1 \$2;
+#X obj 140 191 delread~ \$1 \$2;
+#X text 48 14 this is not my design;
+#X connect 0 0 4 0;
+#X connect 0 0 5 0;
+#X connect 1 0 4 1;
+#X connect 1 0 5 1;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 7 0 3 0;
diff --git a/s-reverb~.pd b/s-reverb~.pd
new file mode 100644
index 0000000..02f8d4c
--- /dev/null
+++ b/s-reverb~.pd
@@ -0,0 +1,118 @@
+#N canvas 17 25 959 612 10;
+#X obj 129 13 inlet~;
+#X obj 239 253 +~;
+#X obj 295 253 +~;
+#X obj 66 370 outlet~;
+#X obj 152 372 outlet~;
+#X obj 238 334 +~;
+#X obj 347 335 +~;
+#X obj 280 334 -~;
+#X obj 387 334 -~;
+#X obj 237 390 +~;
+#X obj 281 391 +~;
+#X obj 325 392 -~;
+#X obj 364 392 -~;
+#X obj 324 474 *~ 0;
+#X obj 282 473 *~ 0;
+#X obj 237 472 *~ 0;
+#X obj 365 475 *~ 0;
+#X obj 417 429 / 200;
+#X obj 417 406 max 0;
+#X obj 130 40 s-reverb-echo \$0-echo-del1 5.43216;
+#X obj 130 61 s-reverb-echo \$0-echo-del2 8.45346;
+#X obj 417 383 min 127;
+#X obj 7 25 hsl 64 16 0 127 0 0 \$0/reverb \$1/reverb reverb -2 -6
+0 8 -260818 -1 -1 4900 1;
+#X obj 147 297 *~;
+#X obj 195 297 *~;
+#X obj 7 53 hsl 64 16 0 127 0 0 \$0/wet \$1/wet wet -2 -6 0 8 -260818
+-1 -1 99 1;
+#X obj 6 81 hsl 64 16 0 127 0 0 \$0/dry \$1/dry dry -2 -6 0 8 -260818
+-1 -1 2927 1;
+#X obj 154 259 / 127;
+#X obj 75 251 / 127;
+#X obj 54 272 *~;
+#X text 426 27 this reverb is miller's \, not mine. designing reverbs
+is way beyond me. I made this into a GOP abstraction. Any weirdness
+is my fault.;
+#X obj 151 348 s-jail;
+#X obj 67 345 s-jail;
+#X obj 256 204 delread~ \$0-loop-del1 39.5161;
+#X obj 238 585 delwrite~ \$0-loop-del1 39.5161;
+#X obj 312 228 delread~ \$0-loop-del2 37.1212;
+#X obj 282 561 delwrite~ \$0-loop-del2 37.1212;
+#X obj 348 261 delread~ \$0-loop-del3 34.534;
+#X obj 325 537 delwrite~ \$0-loop-del3 34.534;
+#X obj 364 513 delwrite~ \$0-loop-del4 32.5221;
+#X obj 402 285 delread~ \$0-loop-del4 32.5221;
+#X obj 131 158 s-reverb-echo \$0-echo-del6 196;
+#X obj 130 134 s-reverb-echo \$0-echo-del5 129.326;
+#X obj 130 109 s-reverb-echo \$0-echo-del4 100;
+#X obj 131 86 s-reverb-echo \$0-echo-del3 79.3165;
+#X obj 663 254 sssad/auto \$0/reverb \$1/reverb;
+#X obj 663 296 sssad/auto \$0/dry \$1/dry;
+#X obj 75 231 r \$0/dry;
+#X obj 154 239 r \$0/wet;
+#X obj 417 360 r \$0/reverb;
+#X obj 663 275 sssad/auto \$0/wet \$1/wet;
+#X connect 0 0 19 0;
+#X connect 0 0 29 0;
+#X connect 1 0 5 0;
+#X connect 1 0 7 0;
+#X connect 1 0 23 0;
+#X connect 2 0 5 1;
+#X connect 2 0 7 1;
+#X connect 2 0 24 0;
+#X connect 5 0 9 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 1;
+#X connect 6 0 9 1;
+#X connect 7 0 10 0;
+#X connect 7 0 12 0;
+#X connect 8 0 10 1;
+#X connect 8 0 12 1;
+#X connect 9 0 15 0;
+#X connect 10 0 14 0;
+#X connect 11 0 13 0;
+#X connect 12 0 16 0;
+#X connect 13 0 38 0;
+#X connect 14 0 36 0;
+#X connect 15 0 34 0;
+#X connect 16 0 39 0;
+#X connect 17 0 16 1;
+#X connect 17 0 15 1;
+#X connect 17 0 14 1;
+#X connect 17 0 13 1;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 19 1 20 1;
+#X connect 20 0 44 0;
+#X connect 20 1 44 1;
+#X connect 21 0 18 0;
+#X connect 23 0 32 0;
+#X connect 24 0 31 0;
+#X connect 27 0 23 1;
+#X connect 27 0 24 1;
+#X connect 28 0 29 1;
+#X connect 29 0 31 0;
+#X connect 29 0 32 0;
+#X connect 31 0 4 0;
+#X connect 32 0 3 0;
+#X connect 33 0 1 1;
+#X connect 35 0 2 1;
+#X connect 37 0 6 0;
+#X connect 37 0 8 0;
+#X connect 40 0 6 1;
+#X connect 40 0 8 1;
+#X connect 41 0 1 0;
+#X connect 41 1 2 0;
+#X connect 42 0 41 0;
+#X connect 42 1 41 1;
+#X connect 43 0 42 0;
+#X connect 43 1 42 1;
+#X connect 44 0 43 0;
+#X connect 44 1 43 1;
+#X connect 47 0 28 0;
+#X connect 48 0 27 0;
+#X connect 49 0 21 0;
+#X coords 0 0 1 1 100 100 1 0 0;
diff --git a/s-samplepiece~.pd b/s-samplepiece~.pd
new file mode 100644
index 0000000..93e3dd5
--- /dev/null
+++ b/s-samplepiece~.pd
@@ -0,0 +1,107 @@
+#N canvas 310 89 622 560 10;
+#X obj 392 507 outlet~;
+#X obj 392 416 line~;
+#X obj 392 387 pack f f;
+#X obj 7 365 inlet;
+#X obj 7 388 unpack f f;
+#X obj 7 410 t b f;
+#X msg 7 510 bang;
+#X obj 72 435 s \$0-vol;
+#X obj 72 412 / 127;
+#X obj 392 485 *~ 1;
+#X obj 37 435 mtof;
+#X obj 443 321 f;
+#X obj 464 286 t b f;
+#X obj 37 460 expr 60000 / $f1;
+#X obj 443 364 * 1;
+#X obj 494 343 / 229.335;
+#X obj 443 343 / 44.1;
+#X obj 352 130 loadbang;
+#X obj 6 24 nbx 2 14 0 127 0 1 \$0/position \$0/position position 28
+10 0 8 -260818 -1 -1 0 256;
+#X obj 6 42 nbx 3 14 0 127 0 1 \$0/slices \$0/slices slices 34 10 0
+8 -260818 -1 -1 16 256;
+#X obj 303 183 f;
+#X obj 303 281 / 16;
+#X obj 247 166 mod;
+#X text 5 339 inlet takes midi note pairs;
+#X obj 247 332 *;
+#X obj 297 332 *;
+#X obj 247 295 + 1;
+#X obj 298 360 f;
+#X obj 249 361 f;
+#X obj 155 243 t b b;
+#X obj 352 153 \$3;
+#X obj 392 438 tabread4~ \$2;
+#X obj 335 237 t b f;
+#X text 225 4 [name] [sample table name] [sample table length];
+#X obj 525 26 inlet;
+#X obj 525 48 list;
+#X msg 525 70 \; \$1 \$2 \;;
+#X obj 247 106 r \$0/position;
+#X obj 154 222 r \$0/shot;
+#X obj 263 128 r \$0/slices;
+#X obj 335 207 r \$0/slices;
+#X obj 464 262 r \$0/freq;
+#X obj 415 461 r \$0/vol;
+#X obj 37 484 s \$0/freq;
+#X obj 7 532 s \$0/shot;
+#X obj 92 41 bng 14 250 50 0 \$0/shot \$1/shot shot 0 -6 0 8 -260818
+-1 -1;
+#X obj 1 68 s-connect \$1/position \$0/position;
+#X obj 1 90 s-connect \$1/slices \$0/slices;
+#X obj 143 111 r \$0/slices;
+#X obj 1 133 sssad/sssad \$1/slices;
+#X obj 1 155 s \$0/slices;
+#X obj 144 157 r \$0/position;
+#X obj 2 179 sssad/sssad \$1/position;
+#X obj 2 201 s \$0/position;
+#X connect 1 0 31 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 10 0;
+#X connect 6 0 44 0;
+#X connect 8 0 7 0;
+#X connect 9 0 0 0;
+#X connect 10 0 13 0;
+#X connect 11 0 16 0;
+#X connect 12 0 11 0;
+#X connect 12 1 15 0;
+#X connect 13 0 43 0;
+#X connect 14 0 2 1;
+#X connect 15 0 14 1;
+#X connect 16 0 14 0;
+#X connect 17 0 30 0;
+#X connect 20 0 21 0;
+#X connect 21 0 24 1;
+#X connect 21 0 11 0;
+#X connect 21 0 25 1;
+#X connect 22 0 26 0;
+#X connect 22 0 25 0;
+#X connect 24 0 28 1;
+#X connect 25 0 27 1;
+#X connect 26 0 24 0;
+#X connect 27 0 1 0;
+#X connect 28 0 2 0;
+#X connect 29 0 28 0;
+#X connect 29 1 27 0;
+#X connect 30 0 20 0;
+#X connect 31 0 9 0;
+#X connect 32 0 21 0;
+#X connect 32 1 21 1;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 37 0 22 0;
+#X connect 38 0 29 0;
+#X connect 39 0 22 1;
+#X connect 40 0 32 0;
+#X connect 41 0 12 0;
+#X connect 42 0 9 1;
+#X connect 48 0 49 1;
+#X connect 49 0 50 0;
+#X connect 51 0 52 1;
+#X connect 52 0 53 0;
+#X coords 0 -1 1 1 120 60 1 0 0;
diff --git a/s-seq-help.pd b/s-seq-help.pd
new file mode 100644
index 0000000..6fe1ea4
--- /dev/null
+++ b/s-seq-help.pd
@@ -0,0 +1,23 @@
+#N canvas 140 154 598 448 10;
+#X obj 225 184 sssad/panel;
+#X obj 40 202 s-seq deepak 24;
+#X obj 40 136 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 40 155 metro 100;
+#X floatatom 40 364 5 0 0 0 - - -;
+#X obj 40 178 f;
+#X obj 69 178 + 1;
+#X text 38 55 the number boxes are the value for that row - use the
+shift key and click on the box to edit the number by hand.;
+#X text 37 34 the leftmost column signifies the row number.;
+#X text 223 165 use this panel to save your sequence/state;
+#X text 63 135 click me to start cycling through;
+#X text 39 -7 args: [name] [sequence length];
+#X text 37 89 the vslider is a scrollbar to scroll through the sequence
+- it wraps at the end.;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 1;
diff --git a/s-seq.pd b/s-seq.pd
new file mode 100644
index 0000000..ebec871
--- /dev/null
+++ b/s-seq.pd
@@ -0,0 +1,484 @@
+#N canvas 11 20 856 660 10;
+#X obj 110 12 inlet;
+#X obj 110 195 outlet;
+#X obj 764 9 inlet;
+#X obj 764 31 list;
+#X msg 764 53 \; \$1 \$2 \;;
+#X obj 110 59 r \$1/index;
+#X symbolatom 5 16 2 0 0 0 - #0-idx0 #0x;
+#X obj 68 19 vsl 10 128 1 0 0 1 \$0-scrollbar \$0-scrollbar empty 0
+-8 0 8 -260818 -1 -1 12700 1;
+#X obj 28 17 nbx 3 14 -1e+37 1e+37 0 0 \$0-nbx0 \$0-nbx0 empty 0 -6
+0 8 -260818 -1 -262144 0 256;
+#X obj 745 143 loadbang;
+#X obj 745 188 select 0;
+#X obj 745 166 \$2;
+#X msg 745 209 128;
+#X obj 743 115 table \$0-data;
+#X obj 713 593 pack s f;
+#X obj 713 571 \$0;
+#X msg 713 548 bang;
+#X msg 713 616 \; \$1-data resize \$2 \;;
+#X obj 6 230 r \$0-scrollbar;
+#X obj 6 274 *;
+#X obj 22 252 r \$0-size;
+#X symbolatom 5 33 2 0 0 0 - #0-idx1 #0x;
+#X obj 28 34 nbx 3 14 -1e+37 1e+37 0 0 \$0-nbx1 \$0-nbx1 empty 0 -6
+0 8 -260818 -1 -262144 0 256;
+#N canvas 2 131 990 376 lookup 0;
+#X obj 207 6 inlet;
+#X obj 7 200 tabread \$0-data;
+#X obj 7 224 s \$0-nbx0;
+#X obj 133 139 + 1;
+#X obj 133 203 tabread \$0-data;
+#X obj 251 204 tabread \$0-data;
+#X obj 251 141 + 2;
+#X obj 133 227 s \$0-nbx1;
+#X obj 251 228 s \$0-nbx2;
+#X obj 381 204 tabread \$0-data;
+#X obj 381 141 + 3;
+#X obj 381 228 s \$0-nbx3;
+#X obj 500 203 tabread \$0-data;
+#X obj 626 203 tabread \$0-data;
+#X obj 744 204 tabread \$0-data;
+#X obj 874 204 tabread \$0-data;
+#X obj 500 139 + 4;
+#X obj 626 139 + 5;
+#X obj 744 140 + 6;
+#X obj 874 141 + 7;
+#X obj 500 224 s \$0-nbx4;
+#X obj 626 227 s \$0-nbx5;
+#X obj 744 228 s \$0-nbx6;
+#X obj 874 228 s \$0-nbx7;
+#X obj 133 181 mod;
+#X obj 149 159 r \$0-size;
+#X obj 251 183 mod;
+#X obj 267 161 r \$0-size;
+#X obj 381 183 mod;
+#X obj 397 161 r \$0-size;
+#X obj 500 182 mod;
+#X obj 516 160 r \$0-size;
+#X obj 626 182 mod;
+#X obj 642 160 r \$0-size;
+#X obj 744 183 mod;
+#X obj 760 161 r \$0-size;
+#X obj 874 183 mod;
+#X obj 890 161 r \$0-size;
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 0 0 6 0;
+#X connect 0 0 10 0;
+#X connect 0 0 16 0;
+#X connect 0 0 17 0;
+#X connect 0 0 18 0;
+#X connect 0 0 19 0;
+#X connect 1 0 2 0;
+#X connect 3 0 24 0;
+#X connect 4 0 7 0;
+#X connect 5 0 8 0;
+#X connect 6 0 26 0;
+#X connect 9 0 11 0;
+#X connect 10 0 28 0;
+#X connect 12 0 20 0;
+#X connect 13 0 21 0;
+#X connect 14 0 22 0;
+#X connect 15 0 23 0;
+#X connect 16 0 30 0;
+#X connect 17 0 32 0;
+#X connect 18 0 34 0;
+#X connect 19 0 36 0;
+#X connect 24 0 4 0;
+#X connect 25 0 24 1;
+#X connect 26 0 5 0;
+#X connect 27 0 26 1;
+#X connect 28 0 9 0;
+#X connect 29 0 28 1;
+#X connect 30 0 12 0;
+#X connect 31 0 30 1;
+#X connect 32 0 13 0;
+#X connect 33 0 32 1;
+#X connect 34 0 14 0;
+#X connect 35 0 34 1;
+#X connect 36 0 15 0;
+#X connect 37 0 36 1;
+#X restore 6 349 pd lookup;
+#N canvas 12 116 751 320 hexidx 0;
+#X obj 325 14 inlet;
+#X obj 9 225 s-hex;
+#X obj 9 248 s \$0-idx0;
+#X obj 94 225 s-hex;
+#X obj 94 156 + 1;
+#X obj 182 225 s-hex;
+#X obj 182 156 + 2;
+#X obj 182 248 s \$0-idx2;
+#X obj 94 248 s \$0-idx1;
+#X obj 270 225 s-hex;
+#X obj 270 156 + 3;
+#X obj 270 248 s \$0-idx3;
+#X obj 362 226 s-hex;
+#X obj 450 226 s-hex;
+#X obj 537 226 s-hex;
+#X obj 623 226 s-hex;
+#X obj 623 249 s \$0-idx7;
+#X obj 623 158 + 7;
+#X obj 537 157 + 6;
+#X obj 537 249 s \$0-idx6;
+#X obj 450 157 + 5;
+#X obj 450 249 s \$0-idx5;
+#X obj 362 157 + 4;
+#X obj 362 249 s \$0-idx4;
+#X obj 94 201 mod;
+#X obj 110 179 r \$0-size;
+#X obj 182 201 mod;
+#X obj 198 179 r \$0-size;
+#X obj 270 201 mod;
+#X obj 286 179 r \$0-size;
+#X obj 362 201 mod;
+#X obj 378 179 r \$0-size;
+#X obj 450 201 mod;
+#X obj 466 179 r \$0-size;
+#X obj 537 201 mod;
+#X obj 553 179 r \$0-size;
+#X obj 623 201 mod;
+#X obj 639 179 r \$0-size;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 0 0 6 0;
+#X connect 0 0 10 0;
+#X connect 0 0 22 0;
+#X connect 0 0 20 0;
+#X connect 0 0 18 0;
+#X connect 0 0 17 0;
+#X connect 1 0 2 0;
+#X connect 3 0 8 0;
+#X connect 4 0 24 0;
+#X connect 5 0 7 0;
+#X connect 6 0 26 0;
+#X connect 9 0 11 0;
+#X connect 10 0 28 0;
+#X connect 12 0 23 0;
+#X connect 13 0 21 0;
+#X connect 14 0 19 0;
+#X connect 15 0 16 0;
+#X connect 17 0 36 0;
+#X connect 18 0 34 0;
+#X connect 20 0 32 0;
+#X connect 22 0 30 0;
+#X connect 24 0 3 0;
+#X connect 25 0 24 1;
+#X connect 26 0 5 0;
+#X connect 27 0 26 1;
+#X connect 28 0 9 0;
+#X connect 29 0 28 1;
+#X connect 30 0 12 0;
+#X connect 31 0 30 1;
+#X connect 32 0 13 0;
+#X connect 33 0 32 1;
+#X connect 34 0 14 0;
+#X connect 35 0 34 1;
+#X connect 36 0 15 0;
+#X connect 37 0 36 1;
+#X restore 79 349 pd hexidx;
+#X symbolatom 5 50 2 0 0 0 - #0-idx2 #0x;
+#X obj 28 51 nbx 3 14 -1e+37 1e+37 0 0 \$0-nbx2 \$0-nbx2 empty 0 -6
+0 8 -260818 -1 -262144 0 256;
+#X symbolatom 5 67 2 0 0 0 - #0-idx3 #0x;
+#X obj 28 68 nbx 3 14 -1e+37 1e+37 0 0 \$0-nbx3 \$0-nbx3 empty 0 -6
+0 8 -260818 -1 -262144 0 256;
+#X obj 110 114 mod;
+#X obj 126 92 r \$0-size;
+#X obj 110 172 tabread \$0-data;
+#X symbolatom 5 84 2 0 0 0 - #0-idx4 #0x;
+#X obj 28 85 nbx 3 14 -1e+37 1e+37 0 0 \$0-nbx4 \$0-nbx4 empty 0 -6
+0 8 -260818 -1 -262144 0 256;
+#X symbolatom 5 101 2 0 0 0 - #0-idx5 #0x;
+#X obj 28 102 nbx 3 14 -1e+37 1e+37 0 0 \$0-nbx5 \$0-nbx5 empty 0 -6
+0 8 -260818 -1 -262144 0 256;
+#X symbolatom 5 118 2 0 0 0 - #0-idx6 #0x;
+#X obj 28 119 nbx 3 14 -1e+37 1e+37 0 0 \$0-nbx6 \$0-nbx6 empty 0 -6
+0 8 -260818 -1 -262144 0 256;
+#X symbolatom 5 135 2 0 0 0 - #0-idx7 #0x;
+#X obj 28 136 nbx 3 14 -1e+37 1e+37 0 0 \$0-nbx7 \$0-nbx7 empty 0 -6
+0 8 -260818 -1 -262144 0 256;
+#N canvas 212 221 507 438 save 0;
+#X obj 58 10 r SSSAD_SAVE;
+#X obj 53 333 list prepend;
+#X obj 146 333 t l;
+#X obj 30 362 list;
+#X obj 30 386 outlet;
+#X obj 96 112 until;
+#X obj 96 89 f;
+#X obj 112 66 r \$0-size;
+#X obj 96 160 tabread \$0-data;
+#X obj 96 135 f;
+#X obj 126 135 + 1;
+#X msg 141 112 0;
+#X obj 58 36 t b b b b;
+#X connect 0 0 12 0;
+#X connect 1 0 2 0;
+#X connect 1 0 3 1;
+#X connect 2 0 1 1;
+#X connect 3 0 4 0;
+#X connect 5 0 9 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 1;
+#X connect 8 0 1 0;
+#X connect 9 0 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 12 0 1 1;
+#X connect 12 1 3 0;
+#X connect 12 2 6 0;
+#X connect 12 3 11 0;
+#X restore 702 9 pd save;
+#N canvas 64 35 650 643 load 0;
+#X obj 21 6 inlet;
+#X obj 40 65 until;
+#X obj 40 92 list append;
+#X obj 133 121 bang;
+#X obj 40 121 list split 1;
+#X obj 147 187 f;
+#X obj 40 222 tabwrite \$0-data;
+#X obj 177 187 + 1;
+#X msg 163 165 0;
+#X obj 40 147 t f b;
+#X obj 21 32 t b b l b;
+#X obj 21 250 \$0;
+#X msg 21 271 \; \$1-scrollbar 0 \;;
+#X connect 0 0 10 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 1;
+#X connect 4 0 9 0;
+#X connect 4 1 2 1;
+#X connect 4 2 3 0;
+#X connect 5 0 7 0;
+#X connect 5 0 6 1;
+#X connect 7 0 5 1;
+#X connect 8 0 5 1;
+#X connect 9 0 6 0;
+#X connect 9 1 5 0;
+#X connect 10 0 11 0;
+#X connect 10 1 1 0;
+#X connect 10 2 2 1;
+#X connect 10 3 8 0;
+#X connect 11 0 12 0;
+#X restore 546 55 pd load;
+#X obj 546 31 sssad/sssad \$1/sequence;
+#X obj 745 299 s \$0-scrollbar;
+#X obj 745 256 t b f;
+#X obj 775 277 s \$0-size;
+#X msg 745 277 0;
+#X obj 161 206 r \$0-nbx0;
+#X obj 161 250 t f b;
+#X obj 161 320 tabwrite \$0-data;
+#X msg 191 270 0;
+#X obj 352 250 t f b;
+#X obj 352 322 tabwrite \$0-data;
+#X obj 352 206 r \$0-nbx1;
+#X msg 382 270 1;
+#X obj 218 293 +;
+#X obj 259 251 r \$0-size;
+#X obj 243 272 *;
+#X obj 243 229 r \$0-scrollbar;
+#X obj 409 293 +;
+#X obj 453 251 r \$0-size;
+#X obj 437 272 *;
+#X obj 437 229 r \$0-scrollbar;
+#X obj 713 480 r \$0-size;
+#X obj 557 249 t f b;
+#X obj 557 321 tabwrite \$0-data;
+#X obj 614 292 +;
+#X obj 659 250 r \$0-size;
+#X obj 643 271 *;
+#X obj 643 228 r \$0-scrollbar;
+#X obj 557 208 r \$0-nbx2;
+#X msg 587 269 2;
+#X obj 161 398 t f b;
+#X obj 161 468 tabwrite \$0-data;
+#X obj 218 441 +;
+#X obj 264 399 r \$0-size;
+#X obj 248 420 *;
+#X obj 248 377 r \$0-scrollbar;
+#X obj 161 355 r \$0-nbx3;
+#X msg 191 418 3;
+#X obj 352 398 t f b;
+#X obj 352 468 tabwrite \$0-data;
+#X obj 409 441 +;
+#X obj 456 399 r \$0-size;
+#X obj 440 420 *;
+#X obj 440 377 r \$0-scrollbar;
+#X obj 352 355 r \$0-nbx4;
+#X msg 382 418 4;
+#X obj 563 397 t f b;
+#X obj 563 467 tabwrite \$0-data;
+#X obj 620 440 +;
+#X obj 669 398 r \$0-size;
+#X obj 653 419 *;
+#X obj 653 376 r \$0-scrollbar;
+#X obj 563 354 r \$0-nbx5;
+#X msg 593 417 5;
+#X obj 161 546 t f b;
+#X obj 161 616 tabwrite \$0-data;
+#X obj 218 589 +;
+#X obj 263 547 r \$0-size;
+#X obj 247 568 *;
+#X obj 247 525 r \$0-scrollbar;
+#X obj 161 501 r \$0-nbx6;
+#X msg 191 566 6;
+#X obj 352 546 t f b;
+#X obj 352 616 tabwrite \$0-data;
+#X obj 409 589 +;
+#X obj 455 544 r \$0-size;
+#X obj 439 565 *;
+#X obj 439 522 r \$0-scrollbar;
+#X obj 352 501 r \$0-nbx7;
+#X msg 382 566 7;
+#X obj 110 35 s \$1/index;
+#X obj 122 141 s \$1/pos;
+#N canvas 184 112 510 513 colorisation 0;
+#X obj 76 9 r \$0-scrollbar;
+#X obj 92 30 r \$0-size;
+#X obj 76 51 *;
+#X obj 12 9 r \$1/pos;
+#X obj 12 139 -;
+#X obj 12 161 moses 0;
+#X obj 76 72 int;
+#X obj 56 268 makefilename \$0-nbx%d;
+#X msg 4 350 \; \$1 color 1 \;;
+#X obj 56 290 t a a b;
+#X obj 100 324 symbol;
+#X msg 100 349 \; \$1 color 944 \;;
+#X obj 56 184 moses 8;
+#X msg 211 268 bang;
+#X msg 13 290 bang;
+#X obj 32 100 t b f;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 14 0;
+#X connect 5 1 12 0;
+#X connect 6 0 15 0;
+#X connect 7 0 9 0;
+#X connect 9 0 8 0;
+#X connect 9 1 10 1;
+#X connect 9 2 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 7 0;
+#X connect 12 1 13 0;
+#X connect 13 0 10 0;
+#X connect 14 0 10 0;
+#X connect 15 0 4 0;
+#X connect 15 1 4 1;
+#X restore 275 23 pd colorisation;
+#X obj 161 229 route color;
+#X obj 352 229 route color;
+#X obj 557 228 route color;
+#X obj 563 375 route color;
+#X obj 352 377 route color;
+#X obj 161 376 route color;
+#X obj 352 522 route color;
+#X obj 161 524 route color;
+#X connect 0 0 112 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 29 0;
+#X connect 9 0 11 0;
+#X connect 10 0 12 0;
+#X connect 10 1 44 0;
+#X connect 11 0 10 0;
+#X connect 12 0 44 0;
+#X connect 14 0 17 0;
+#X connect 15 0 14 0;
+#X connect 16 0 15 0;
+#X connect 18 0 19 0;
+#X connect 19 0 23 0;
+#X connect 19 0 24 0;
+#X connect 20 0 19 1;
+#X connect 29 0 31 0;
+#X connect 29 0 113 0;
+#X connect 30 0 29 1;
+#X connect 31 0 1 0;
+#X connect 40 0 42 1;
+#X connect 42 0 41 0;
+#X connect 44 0 46 0;
+#X connect 44 1 45 0;
+#X connect 46 0 43 0;
+#X connect 47 0 115 0;
+#X connect 48 0 49 0;
+#X connect 48 1 50 0;
+#X connect 50 0 55 0;
+#X connect 51 0 52 0;
+#X connect 51 1 54 0;
+#X connect 53 0 116 0;
+#X connect 54 0 59 0;
+#X connect 55 0 49 1;
+#X connect 56 0 57 1;
+#X connect 57 0 55 1;
+#X connect 58 0 57 0;
+#X connect 59 0 52 1;
+#X connect 60 0 61 1;
+#X connect 61 0 59 1;
+#X connect 62 0 61 0;
+#X connect 63 0 14 1;
+#X connect 63 0 16 0;
+#X connect 64 0 65 0;
+#X connect 64 1 71 0;
+#X connect 66 0 65 1;
+#X connect 67 0 68 1;
+#X connect 68 0 66 1;
+#X connect 69 0 68 0;
+#X connect 70 0 117 0;
+#X connect 71 0 66 0;
+#X connect 72 0 73 0;
+#X connect 72 1 79 0;
+#X connect 74 0 73 1;
+#X connect 75 0 76 1;
+#X connect 76 0 74 1;
+#X connect 77 0 76 0;
+#X connect 78 0 120 0;
+#X connect 79 0 74 0;
+#X connect 80 0 81 0;
+#X connect 80 1 87 0;
+#X connect 82 0 81 1;
+#X connect 83 0 84 1;
+#X connect 84 0 82 1;
+#X connect 85 0 84 0;
+#X connect 86 0 119 0;
+#X connect 87 0 82 0;
+#X connect 88 0 89 0;
+#X connect 88 1 95 0;
+#X connect 90 0 89 1;
+#X connect 91 0 92 1;
+#X connect 92 0 90 1;
+#X connect 93 0 92 0;
+#X connect 94 0 118 0;
+#X connect 95 0 90 0;
+#X connect 96 0 97 0;
+#X connect 96 1 103 0;
+#X connect 98 0 97 1;
+#X connect 99 0 100 1;
+#X connect 100 0 98 1;
+#X connect 101 0 100 0;
+#X connect 102 0 122 0;
+#X connect 103 0 98 0;
+#X connect 104 0 105 0;
+#X connect 104 1 111 0;
+#X connect 106 0 105 1;
+#X connect 107 0 108 1;
+#X connect 108 0 106 1;
+#X connect 109 0 108 0;
+#X connect 110 0 121 0;
+#X connect 111 0 106 0;
+#X connect 115 1 48 0;
+#X connect 116 1 51 0;
+#X connect 117 1 64 0;
+#X connect 118 1 88 0;
+#X connect 119 1 80 0;
+#X connect 120 1 72 0;
+#X connect 121 1 104 0;
+#X connect 122 1 96 0;
+#X coords 0 -1 1 1 85 155 1 0 0;
diff --git a/s-seq16.pd b/s-seq16.pd
new file mode 100644
index 0000000..812e887
--- /dev/null
+++ b/s-seq16.pd
@@ -0,0 +1,34 @@
+#N canvas 144 335 796 297 10;
+#X obj 108 127 +;
+#X obj 108 104 t b f;
+#X obj 160 129 +;
+#X obj 160 106 t b f;
+#X obj 254 129 +;
+#X obj 254 106 t b f;
+#X obj 201 231 outlet;
+#X obj 201 155 inlet;
+#X obj 1 1 cnv 15 358 31 empty empty empty 20 12 0 14 -260818 -66577
+0;
+#X obj 271 4 s-togs 3;
+#X obj 4 4 s-togs;
+#X obj 182 4 s-togs 2;
+#X obj 93 4 s-togs 1;
+#X obj 265 157 outlet;
+#X obj 201 201 s-mseq 2 16 0 \$1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
+#X connect 4 0 13 0;
+#X connect 4 0 14 1;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 7 0 14 0;
+#X connect 9 0 5 0;
+#X connect 10 0 0 0;
+#X connect 11 0 3 0;
+#X connect 12 0 1 0;
+#X connect 14 0 6 0;
+#X coords 0 0 1 1 360 33 1 0 0;
diff --git a/s-sigmoid~.pd b/s-sigmoid~.pd
new file mode 100644
index 0000000..93253cc
--- /dev/null
+++ b/s-sigmoid~.pd
@@ -0,0 +1,8 @@
+#N canvas 164 202 307 105 10;
+#X obj 8 31 expr~ 2 / (1 + pow($v2 \, -$v1)) - 1;
+#X obj 8 54 outlet~;
+#X obj 240 8 inlet~;
+#X obj 8 8 inlet~;
+#X connect 0 0 1 0;
+#X connect 2 0 0 1;
+#X connect 3 0 0 0;
diff --git a/s-smooth.pd b/s-smooth.pd
new file mode 100644
index 0000000..cf3f2e4
--- /dev/null
+++ b/s-smooth.pd
@@ -0,0 +1,16 @@
+#N canvas 0 0 450 300 10;
+#X obj 78 41 expr 60000/$f1;
+#X obj 78 92 /;
+#X obj 94 67 r tpb;
+#X obj 78 18 r bpm;
+#X obj 26 94 inlet;
+#X obj 26 117 pack f f;
+#X obj 26 141 line~;
+#X obj 25 165 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 5 1;
+#X connect 2 0 1 1;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
diff --git a/s-snare~.pd b/s-snare~.pd
new file mode 100644
index 0000000..67d0617
--- /dev/null
+++ b/s-snare~.pd
@@ -0,0 +1,83 @@
+#N canvas 224 92 577 553 10;
+#X obj 273 206 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 273 117 t b b;
+#X obj 156 297 line~;
+#X msg 119 189 1;
+#X obj 256 366 *~;
+#X obj 188 340 expr~ tan($v1) * tan($v1) * tan($v1);
+#X obj 290 226 noise~;
+#X obj 156 236 pack 0 1000;
+#X obj 256 387 s-filter~ \$0;
+#X obj 256 521 outlet~;
+#X obj 89 31 bng 15 250 50 0 \$0/shot \$1/shot shot 0 -6 0 8 -260818
+-1 -1;
+#X obj 256 494 *~;
+#X obj 7 59 hsl 64 16 0 127 0 1 \$0/ring \$1/ring ring -2 -6 0 8 -260818
+-1 -1 299 1;
+#X obj 7 30 hsl 64 16 0 127 0 1 \$0/length \$1/length length -2 -6
+0 8 -260818 -1 -1 3100 1;
+#X obj 169 144 exp;
+#X obj 169 122 / 17;
+#X obj 489 4 loadbang;
+#X obj 489 44 s \$0-vol;
+#X obj 13 245 inlet;
+#X obj 13 268 unpack f f;
+#X obj 13 290 t b f;
+#X obj 89 59 nbx 3 16 0 127 0 0 \$0/note \$1/note note 0 -6 0 8 -260818
+-1 -1 92 256;
+#X obj 273 253 *~;
+#X obj 300 141 delay 20;
+#X msg 489 24 10;
+#X obj 78 290 / 12;
+#X obj 273 171 spigot;
+#X obj 363 169 * -1;
+#X obj 364 189 + 1;
+#X floatatom 362 209 5 0 0 0 - - -;
+#X obj 272 472 r \$0-vol;
+#X obj 273 92 r \$0/shot;
+#X obj 358 97 r \$0/length;
+#X obj 169 100 r \$0/length;
+#X obj 13 360 s \$0/shot;
+#X obj 78 313 s \$0/vol;
+#X obj 157 68 s-connect \$0/ring \$0/resonance;
+#X obj 157 47 s-connect \$0/note \$0/cutoff;
+#X obj 43 336 s \$1/note;
+#X obj 2 528 sssad/auto \$0/length \$1/length;
+#X obj 2 486 sssad/auto \$0/ring \$1/ring;
+#X obj 2 507 sssad/auto \$0/note \$1/note;
+#X connect 0 0 22 0;
+#X connect 0 0 27 0;
+#X connect 1 0 7 0;
+#X connect 1 0 26 0;
+#X connect 1 1 3 0;
+#X connect 1 1 23 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 8 0;
+#X connect 5 0 4 0;
+#X connect 6 0 22 1;
+#X connect 7 0 2 0;
+#X connect 8 0 11 0;
+#X connect 11 0 9 0;
+#X connect 14 0 7 1;
+#X connect 15 0 14 0;
+#X connect 16 0 24 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 19 1 25 0;
+#X connect 20 0 34 0;
+#X connect 20 1 38 0;
+#X connect 22 0 4 1;
+#X connect 23 0 0 0;
+#X connect 24 0 17 0;
+#X connect 25 0 35 0;
+#X connect 26 0 0 0;
+#X connect 27 0 28 0;
+#X connect 28 0 29 0;
+#X connect 28 0 26 1;
+#X connect 30 0 11 1;
+#X connect 31 0 1 0;
+#X connect 32 0 23 1;
+#X connect 33 0 15 0;
+#X coords 0 -1 1 1 140 80 1 0 0;
diff --git a/s-spooky~.pd b/s-spooky~.pd
new file mode 100644
index 0000000..a9ba844
--- /dev/null
+++ b/s-spooky~.pd
@@ -0,0 +1,387 @@
+#N canvas 277 36 744 599 10;
+#N canvas 84 0 821 693 fft-analysis 0;
+#X obj 51 477 *~;
+#X obj 18 477 *~;
+#X obj 18 499 -~;
+#X obj 167 475 *~;
+#X obj 136 475 *~;
+#X obj 136 497 +~;
+#X obj 109 193 *~;
+#X obj 78 193 *~;
+#X obj 50 193 *~;
+#X obj 19 193 *~;
+#X obj 19 218 +~;
+#X obj 127 379 *~;
+#X obj 20 622 *~;
+#X obj 238 430 rfft~;
+#X obj 108 161 rfft~;
+#X obj 19 564 rifft~;
+#X obj 21 646 outlet~;
+#X obj 97 379 *~;
+#X obj 97 401 +~;
+#X obj 124 218 -~;
+#X obj 18 431 *~;
+#X obj 51 432 *~;
+#X obj 426 644 block~;
+#X obj 19 349 +~ 1e-15;
+#X obj 19 598 *~;
+#X obj 52 598 tabreceive~ \$0-hann;
+#X obj 127 643 expr 2/(3*$f1);
+#X msg 426 619 set \$1 4;
+#X obj 97 425 q8_rsqrt~;
+#N canvas -22 50 1006 799 read-windows 0;
+#X obj 18 693 *~;
+#X obj 156 300 f;
+#X obj 102 139 /;
+#X obj 195 695 *~;
+#X obj 156 255 bang~;
+#X obj 17 551 line~;
+#X obj 102 164 * 1000;
+#X obj 288 224 r speed;
+#X obj 198 302 +;
+#X obj 288 272 *;
+#X obj 183 470 +;
+#X obj 143 446 t f f;
+#X msg 17 523 \$1 \, \$2 \$3;
+#X obj 17 496 pack 0 0 0;
+#X obj 178 371 / 1000;
+#X obj 156 394 *;
+#X text 188 394 reading location (samples);
+#X obj 51 597 / 4;
+#X obj 288 245 * 0.01;
+#X floatatom 340 498 7 0 0 0 - - -;
+#X obj 340 474 *;
+#X obj 499 387 * 0.01;
+#X obj 501 408 + 69;
+#X obj 502 429 mtof;
+#X obj 502 451 / 440;
+#X obj 375 474 t b f;
+#X obj 19 719 outlet~;
+#X obj 195 720 outlet~;
+#X obj 218 664 tabreceive~ \$0-hann;
+#X text 411 498 stretched window size (samples);
+#X obj 178 347 r \$0-insamprate;
+#X floatatom 111 187 5 0 0 0 - - -;
+#X obj 102 115 t f b;
+#X obj 142 139 samplerate~;
+#X obj 102 208 / 4;
+#X obj 233 306 s see-loc;
+#X obj 193 420 / 2;
+#X obj 156 420 -;
+#X text 229 417 back up 1/2 window;
+#X obj 16 597 -~;
+#X text 43 6 Read two windows out of the recorded sample \, one 1/4
+ahead of the other. The mid point of the front window is specified
+by "location". If "speed" is nonzero \, "location" automatically precesses.
+;
+#X text 91 587 "back" window 1/4 cycle behind "front" one;
+#X text 137 205 computation period (msec) for overlap of 4;
+#X text 164 186 msec in a window;
+#X text 326 275 loop to precess the location according;
+#X text 325 291 to the "speed" parameter.;
+#X obj 194 637 tabread4~ \$2;
+#X obj 17 637 tabread4~ \$2;
+#X obj 178 276 r \$0/location;
+#X obj 499 365 r \$0/transpo;
+#X obj 340 448 r \$0/window-size;
+#X obj 102 91 r \$0/window-size;
+#X floatatom 335 352 5 0 0 0 - - -;
+#X floatatom 505 476 5 0 0 0 - - -;
+#X connect 0 0 26 0;
+#X connect 1 0 8 0;
+#X connect 1 0 15 0;
+#X connect 2 0 6 0;
+#X connect 3 0 27 0;
+#X connect 4 0 1 0;
+#X connect 5 0 39 0;
+#X connect 5 0 46 0;
+#X connect 6 0 31 0;
+#X connect 6 0 34 0;
+#X connect 7 0 18 0;
+#X connect 8 0 1 1;
+#X connect 8 0 35 0;
+#X connect 9 0 8 1;
+#X connect 10 0 13 1;
+#X connect 11 0 13 0;
+#X connect 11 1 10 0;
+#X connect 12 0 5 0;
+#X connect 13 0 12 0;
+#X connect 14 0 15 1;
+#X connect 14 0 52 0;
+#X connect 15 0 37 0;
+#X connect 17 0 39 1;
+#X connect 18 0 9 0;
+#X connect 19 0 17 0;
+#X connect 19 0 10 1;
+#X connect 19 0 36 0;
+#X connect 20 0 19 0;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 25 0;
+#X connect 24 0 53 0;
+#X connect 25 0 20 0;
+#X connect 25 1 20 1;
+#X connect 28 0 3 1;
+#X connect 28 0 0 1;
+#X connect 30 0 14 0;
+#X connect 32 0 2 0;
+#X connect 32 1 33 0;
+#X connect 33 0 2 1;
+#X connect 34 0 13 2;
+#X connect 34 0 9 1;
+#X connect 36 0 37 1;
+#X connect 37 0 11 0;
+#X connect 39 0 47 0;
+#X connect 46 0 3 0;
+#X connect 47 0 0 0;
+#X connect 48 0 1 1;
+#X connect 49 0 21 0;
+#X connect 50 0 20 0;
+#X connect 51 0 32 0;
+#X restore 109 133 pd read-windows;
+#X text 272 5 recall previous output amplitude. Its phase will be added
+to the phase difference we measure from two windows in the the recorded
+sound.;
+#X obj 121 69 *~;
+#X obj 89 69 *~;
+#X obj 89 91 +~;
+#X obj 159 94 q8_rsqrt~;
+#X obj 159 71 +~ 1e-20;
+#X obj 73 119 *~;
+#X obj 19 118 *~;
+#X obj 29 245 lrshift~ 1;
+#X obj 24 269 lrshift~ -1;
+#X obj 141 245 lrshift~ 1;
+#X obj 133 269 lrshift~ -1;
+#X obj 35 300 *~;
+#X obj 159 312 *~;
+#X obj 19 325 +~;
+#X obj 125 331 +~;
+#X text 247 66 divide by the magnitude to make a unit-magnitude complex
+amplitude (phase only). The 1e-20 is to prevent overflows. q8_rsqrt~
+is reciprocal square root.;
+#X text 247 165 Take FT of the window in back. Multiply its conjugate
+by the normalized previous output. The result has the magnitude of
+the input sound and phase (previous output phase) minus (back window
+phase).;
+#X text 249 370 Normalize again \, this time taking care to salt each
+channel with 1e-15 so that we get a unit complex number even if everything
+was zero heretofore.;
+#X text 288 427 Now take the FT of the forward window and multiply
+it by the unit complex number from above. The magnitude will be that
+of the forward window and the phase will be the previous output phase
+plus the phase difference between the two analysis windows -- except
+that if "lock" is on \, they will be modified to agree progressively
+better with the inter-channel phase relationships of the input.;
+#X text 249 242 If "lock" is on \, encourage neighboring channels to
+stay in phase by adding the two neighboring complex amplitudes. The
+result will tend toward the channel with the strongest amplitude. If
+the phase relationships between channels in the output and those in
+the input are in parallel \, then neighboring channels of the quotient
+will all have the same phase and this will not change any phases. (lrshift
+shifts the signal to the left or right depending on its argument.)
+;
+#X text 387 560 'set' message to block;
+#X text 390 577 allows variable size;
+#X text 259 126 Read two windows \, one 1/4 length behind the other
+\, of the input sound \, with Hann window function (see inside).;
+#X obj 181 290 r \$0/lock;
+#X obj 127 622 r \$0/window-size;
+#X obj 426 595 r \$0/window-size;
+#X obj 73 29 tabreceive~ \$0-prev-imag;
+#X obj 20 8 tabreceive~ \$0-prev-real;
+#X obj 137 543 tabsend~ \$0-prev-imag;
+#X obj 136 567 tabsend~ \$0-prev-real;
+#X connect 0 0 2 1;
+#X connect 1 0 2 0;
+#X connect 2 0 15 0;
+#X connect 2 0 60 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 15 1;
+#X connect 5 0 59 0;
+#X connect 6 0 19 1;
+#X connect 7 0 19 0;
+#X connect 8 0 10 1;
+#X connect 9 0 10 0;
+#X connect 10 0 39 0;
+#X connect 10 0 38 0;
+#X connect 10 0 44 0;
+#X connect 11 0 18 1;
+#X connect 12 0 16 0;
+#X connect 13 0 1 1;
+#X connect 13 0 3 1;
+#X connect 13 1 0 1;
+#X connect 13 1 4 1;
+#X connect 14 0 9 1;
+#X connect 14 0 7 1;
+#X connect 14 1 6 1;
+#X connect 14 1 8 1;
+#X connect 15 0 24 0;
+#X connect 17 0 18 0;
+#X connect 18 0 28 0;
+#X connect 19 0 40 0;
+#X connect 19 0 41 0;
+#X connect 19 0 45 0;
+#X connect 20 0 1 0;
+#X connect 20 0 4 0;
+#X connect 21 0 0 0;
+#X connect 21 0 3 0;
+#X connect 23 0 17 1;
+#X connect 23 0 17 0;
+#X connect 23 0 20 0;
+#X connect 24 0 12 0;
+#X connect 25 0 24 1;
+#X connect 26 0 12 1;
+#X connect 27 0 22 0;
+#X connect 28 0 20 1;
+#X connect 28 0 21 1;
+#X connect 29 0 14 0;
+#X connect 29 1 13 0;
+#X connect 31 0 33 1;
+#X connect 32 0 33 0;
+#X connect 33 0 35 0;
+#X connect 34 0 36 1;
+#X connect 34 0 37 1;
+#X connect 35 0 34 0;
+#X connect 36 0 8 0;
+#X connect 36 0 7 0;
+#X connect 37 0 9 0;
+#X connect 37 0 6 0;
+#X connect 38 0 42 0;
+#X connect 39 0 42 0;
+#X connect 40 0 43 0;
+#X connect 41 0 43 0;
+#X connect 42 0 44 1;
+#X connect 43 0 45 1;
+#X connect 44 0 23 0;
+#X connect 45 0 11 0;
+#X connect 45 0 11 1;
+#X connect 45 0 21 0;
+#X connect 54 0 42 1;
+#X connect 54 0 43 1;
+#X connect 55 0 26 0;
+#X connect 56 0 27 0;
+#X connect 57 0 31 1;
+#X connect 57 0 31 0;
+#X connect 57 0 36 0;
+#X connect 58 0 32 1;
+#X connect 58 0 32 0;
+#X connect 58 0 37 0;
+#X restore 14 527 pd fft-analysis;
+#N canvas 260 0 647 768 phase-tables 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-prev-imag 4096 float 0;
+#X coords 0 1000 4096 -1000 400 300 1;
+#X restore 169 326 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-prev-real 4096 float 0;
+#X coords 0 500 4096 -500 400 300 1;
+#X restore 170 17 graph;
+#X restore 366 527 pd phase-tables;
+#N canvas 0 110 565 454 hann-window 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-hann 4096 float 0;
+#X coords 0 1 4095 0 300 100 1;
+#X restore 82 311 graph;
+#X obj 378 165 osc~;
+#X obj 378 190 *~ -0.5;
+#X obj 378 214 +~ 0.5;
+#X obj 331 247 tabwrite~ \$0-hann;
+#X obj 38 173 /;
+#X obj 127 142 samplerate~;
+#X obj 177 204 swap;
+#X obj 177 228 /;
+#X obj 49 201 * 1000;
+#X obj 38 115 t f b f;
+#X msg 173 92 resize \$1;
+#X obj 173 116 s \$0-hann;
+#X msg 382 130 0;
+#X obj 330 131 t f b;
+#X text 15 9 calculate Hann window table (variable window size) and
+constants window-hz (fundamental frequency of analysis) \, window-sec
+and window-msec (analysis window size in seconds and msec).;
+#X obj 38 88 r \$0/window-size;
+#X obj 177 252 s \$0/window-hz;
+#X obj 330 105 r \$0/window-hz;
+#X obj 38 251 s \$0/window-sec;
+#X obj 49 228 s \$0/window-msec;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 9 0;
+#X connect 5 0 19 0;
+#X connect 6 0 5 1;
+#X connect 6 0 7 1;
+#X connect 7 0 8 0;
+#X connect 7 1 8 1;
+#X connect 8 0 17 0;
+#X connect 9 0 20 0;
+#X connect 10 0 5 0;
+#X connect 10 0 7 0;
+#X connect 10 1 6 0;
+#X connect 10 2 11 0;
+#X connect 11 0 12 0;
+#X connect 13 0 1 1;
+#X connect 14 0 1 0;
+#X connect 14 1 4 0;
+#X connect 14 1 13 0;
+#X connect 16 0 10 0;
+#X connect 18 0 14 0;
+#X restore 366 551 pd hann-window;
+#X obj 5 31 tgl 15 0 \$0/lock \$1/lock lock 18 8 0 8 -260818 -1 -1
+0 1;
+#X floatatom 458 423 5 0 0 0 - window-size -;
+#X msg 460 264 512;
+#X msg 500 264 1024;
+#X msg 549 264 2048;
+#X msg 470 293 4096;
+#X text 456 142 window size \,;
+#X text 456 161 samples;
+#X text 542 295 <- set;
+#X text 511 423 (check);
+#X text 155 5 This is based on the 'phase vocoder' by miller. any mistakes
+are my own.;
+#X msg 534 235 256;
+#X msg 496 235 128;
+#X msg 457 235 64;
+#X obj 14 553 outlet~;
+#X obj 5 62 nbx 1 14 0 6 0 1 \$0/windowsize \$1/windowsize windowsize
+0 -8 0 8 -260818 -1 -1 6 256;
+#X obj 457 182 r \$0/windowsize;
+#X obj 457 207 sel 0 1 2 3 4 5 6;
+#X obj 74 31 nbx 7 14 -1e+37 1e+37 0 0 \$0/location \$1/location location
+0 -8 0 8 -260818 -1 -1 0 256;
+#X obj 74 63 nbx 3 14 -1e+37 1e+37 0 1 \$0/detune \$1/detune detune
+0 -8 0 8 -260818 -1 -1 0 256;
+#X obj 189 527 samplerate~;
+#X obj 189 551 s \$0-insamprate;
+#X obj 189 504 loadbang;
+#X obj 4 103 sssad/auto \$0/lock \$1/lock;
+#X obj 4 123 sssad/auto \$0/windowsize \$1/windowsize;
+#X obj 4 143 sssad/auto \$0/location \$1/location;
+#X obj 4 163 sssad/auto \$0/detune \$1/detune;
+#X obj 458 399 s \$0/window-size;
+#X obj 337 182 r \$0/detune;
+#X obj 337 203 s \$0/transpo;
+#X connect 0 0 17 0;
+#X connect 5 0 30 0;
+#X connect 6 0 30 0;
+#X connect 7 0 30 0;
+#X connect 8 0 30 0;
+#X connect 14 0 30 0;
+#X connect 15 0 30 0;
+#X connect 16 0 30 0;
+#X connect 19 0 20 0;
+#X connect 20 0 16 0;
+#X connect 20 1 15 0;
+#X connect 20 2 14 0;
+#X connect 20 3 5 0;
+#X connect 20 4 6 0;
+#X connect 20 5 7 0;
+#X connect 20 6 8 0;
+#X connect 23 0 24 0;
+#X connect 25 0 23 0;
+#X connect 31 0 32 0;
+#X coords 0 -1 1 1 140 80 1 0 0;
diff --git a/s-synth~.pd b/s-synth~.pd
new file mode 100644
index 0000000..62e2d36
--- /dev/null
+++ b/s-synth~.pd
@@ -0,0 +1,57 @@
+#N canvas 366 105 590 416 10;
+#X obj 196 51 mtof;
+#X obj 196 349 *~;
+#X obj 196 71 phasor~;
+#X obj 197 375 outlet~;
+#X obj 3 30 hradio 16 1 1 2 \$0-wave \$0-wave square/saw 0 -6 0 8 -260818
+-1 -1 1;
+#X obj 75 288 - 1;
+#X obj 196 5 inlet;
+#X obj 212 329 / 127;
+#X obj 75 31 nbx 3 14 0 127 0 1 \$0-pulsewidth \$0-pulsewidth pulsewidth
+0 -6 0 8 -260818 -1 -1 64 256;
+#X obj 196 28 unpack f f;
+#X obj 261 51 s \$0-notevol;
+#X obj 7 244 expr~ if ($v1 > $f2 \, 0 \, 1);
+#X obj 87 185 r \$0-pulsewidth;
+#X obj 87 205 / 127;
+#X obj 212 309 r \$0-notevol;
+#X obj 75 267 r \$0-wave;
+#X obj 219 262 r \$0-wave;
+#X obj 423 6 inlet;
+#X obj 423 28 list;
+#X msg 423 50 \; \$1 \$2 \;;
+#X obj 315 241 s-connect \$1/wave \$0-wave;
+#X obj 315 263 s-connect \$1/pulsewidth \$0-pulsewidth;
+#X obj 235 180 sssad/sssad \$1/wave;
+#X obj 363 158 r \$0-wave;
+#X obj 235 203 s \$0-wave;
+#X obj 235 114 sssad/sssad \$1/pulsewidth;
+#X obj 235 136 s \$0-pulsewidth;
+#X obj 405 92 r \$0-pulsewidth;
+#X obj 52 309 *~ 0;
+#X obj 196 283 *~ 1;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 11 0;
+#X connect 2 0 29 0;
+#X connect 5 0 28 1;
+#X connect 6 0 9 0;
+#X connect 7 0 1 1;
+#X connect 9 0 0 0;
+#X connect 9 1 10 0;
+#X connect 11 0 28 0;
+#X connect 12 0 13 0;
+#X connect 13 0 11 1;
+#X connect 14 0 7 0;
+#X connect 15 0 5 0;
+#X connect 16 0 29 1;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 22 0 24 0;
+#X connect 23 0 22 1;
+#X connect 25 0 26 0;
+#X connect 27 0 25 1;
+#X connect 28 0 1 0;
+#X connect 29 0 1 0;
+#X coords 0 0 1 1 140 50 1 0 0;
diff --git a/s-tabval.pd b/s-tabval.pd
new file mode 100644
index 0000000..2314577
--- /dev/null
+++ b/s-tabval.pd
@@ -0,0 +1,16 @@
+#N canvas 158 174 450 300 10;
+#X msg 21 159 \; \$1data \$2 \$3 \;;
+#X obj 21 134 pack f f f;
+#X obj 21 56 t b b f;
+#X obj 21 106 \$1;
+#X obj 21 11 r \$2;
+#X obj 53 106 \$3;
+#X obj 21 33 route color;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 2 2 1 2;
+#X connect 3 0 1 0;
+#X connect 4 0 6 0;
+#X connect 5 0 1 1;
+#X connect 6 1 2 0;
diff --git a/s-togs.pd b/s-togs.pd
new file mode 100644
index 0000000..c357a51
--- /dev/null
+++ b/s-togs.pd
@@ -0,0 +1,98 @@
+#N canvas 355 326 552 341 10;
+#X obj 43 98 * 2;
+#X obj 97 101 * 4;
+#X obj 127 121 * 8;
+#X obj 3 230 outlet;
+#X obj 3 152 +;
+#X obj 3 182 +;
+#X obj 3 206 +;
+#X obj 10 123 t b f;
+#X obj 52 122 t b f;
+#X obj 62 174 t b f;
+#X obj 3 78 r \$0-1;
+#X obj 54 78 r \$0-2;
+#X obj 106 78 r \$0-3;
+#X obj 216 81 loadbang;
+#X obj 216 187 pow 2;
+#X obj 216 147 2;
+#X obj 246 147 * 4;
+#X obj 246 126 f \$1;
+#X obj 216 104 t b b;
+#X obj 160 78 r \$0-4;
+#X obj 288 82 loadbang;
+#X obj 288 188 pow 2;
+#X obj 288 148 2;
+#X obj 318 148 * 4;
+#X obj 318 127 f \$1;
+#X obj 288 105 t b b;
+#X obj 359 82 loadbang;
+#X obj 359 188 pow 2;
+#X obj 359 148 2;
+#X obj 389 148 * 4;
+#X obj 389 127 f \$1;
+#X obj 359 105 t b b;
+#X obj 437 80 loadbang;
+#X obj 437 186 pow 2;
+#X obj 437 146 2;
+#X obj 467 146 * 4;
+#X obj 467 125 f \$1;
+#X obj 437 103 t b b;
+#X obj 318 168 + 1;
+#X obj 389 168 + 2;
+#X obj 467 166 + 3;
+#X obj 3 99 * 1;
+#X obj 1 1 cnv 15 83 23 empty empty empty 20 12 0 14 -166441 -66577
+0;
+#X obj 64 5 tgl 15 0 \$0-4 empty empty 0 -6 0 8 -260818 -1 -1 0 1;
+#X obj 5 5 tgl 15 0 \$0-1 empty empty 0 -6 0 8 -260818 -1 -1 0 1;
+#X obj 25 5 tgl 15 0 \$0-2 empty empty 0 -6 0 8 -260818 -1 -1 0 1;
+#X obj 44 5 tgl 15 0 \$0-3 empty empty 0 -6 0 8 -260818 -1 -1 0 1;
+#X connect 0 0 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 9 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 3 0;
+#X connect 7 0 4 0;
+#X connect 7 1 4 1;
+#X connect 8 0 5 0;
+#X connect 8 1 5 1;
+#X connect 9 0 6 0;
+#X connect 9 1 6 1;
+#X connect 10 0 41 0;
+#X connect 11 0 0 0;
+#X connect 12 0 1 0;
+#X connect 13 0 18 0;
+#X connect 14 0 41 1;
+#X connect 15 0 14 0;
+#X connect 16 0 14 1;
+#X connect 17 0 16 0;
+#X connect 18 0 15 0;
+#X connect 18 1 17 0;
+#X connect 19 0 2 0;
+#X connect 20 0 25 0;
+#X connect 21 0 0 1;
+#X connect 22 0 21 0;
+#X connect 23 0 38 0;
+#X connect 24 0 23 0;
+#X connect 25 0 22 0;
+#X connect 25 1 24 0;
+#X connect 26 0 31 0;
+#X connect 27 0 1 1;
+#X connect 28 0 27 0;
+#X connect 29 0 39 0;
+#X connect 30 0 29 0;
+#X connect 31 0 28 0;
+#X connect 31 1 30 0;
+#X connect 32 0 37 0;
+#X connect 33 0 2 1;
+#X connect 34 0 33 0;
+#X connect 35 0 40 0;
+#X connect 36 0 35 0;
+#X connect 37 0 34 0;
+#X connect 37 1 36 0;
+#X connect 38 0 21 1;
+#X connect 39 0 27 1;
+#X connect 40 0 33 1;
+#X connect 41 0 4 0;
+#X coords 0 -1 1 1 85 25 1 0 0;
diff --git a/s-tracker-help.pd b/s-tracker-help.pd
new file mode 100644
index 0000000..b8ec413
--- /dev/null
+++ b/s-tracker-help.pd
@@ -0,0 +1,24 @@
+#N canvas 85 72 821 605 10;
+#X obj 278 12 sssad/datastore;
+#N canvas 4 20 605 663 datastore 0;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD track/sequence 60 0 60 0 0 0 48 48 48 60 0 0
+0 0 0 65 \; SSSAD_ADMIN set \;;
+#X connect 0 0 1 0;
+#X restore 278 78 pd datastore;
+#X obj 7 27 metro 100;
+#X obj 7 7 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1;
+#X obj 7 48 f;
+#X obj 35 48 + 1;
+#X msg 32 6 0;
+#X obj 155 12 r track/value;
+#X floatatom 155 35 5 0 0 0 - - -;
+#X obj 7 78 s-tracker track;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 4 0 9 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 1;
+#X connect 6 0 4 0;
+#X connect 7 0 8 0;
diff --git a/s-tracker.pd b/s-tracker.pd
new file mode 100644
index 0000000..ea2f4f0
--- /dev/null
+++ b/s-tracker.pd
@@ -0,0 +1,236 @@
+#N canvas 4 20 989 664 10;
+#X obj 394 236 makefilename \$0nbx%d;
+#X obj 394 168 until;
+#X obj 394 190 f;
+#X obj 422 190 + 1;
+#X obj 459 390 * 16;
+#X obj 413 145 0;
+#X obj 457 526 +;
+#X obj 497 440 * 3;
+#X obj 497 390 / 4;
+#X obj 497 417 int;
+#X obj 413 288 mod 4;
+#X obj 450 481 makefilename .%d;
+#X msg 464 337 symbol empty;
+#X obj 413 502 symbol;
+#X obj 413 312 select 0;
+#X obj 442 145 \$0;
+#X obj 830 9 namecanvas \$0tracker;
+#X obj 562 253 pack f f;
+#X obj 472 145 * 16;
+#X obj 613 208 +;
+#X obj 394 120 t f b b f f;
+#X obj 629 165 * 3;
+#X obj 629 145 / 4;
+#X obj 459 412 + 16;
+#X obj 613 230 + 16;
+#X obj 394 42 t b f;
+#X obj 394 97 f;
+#X obj 394 69 delay 100;
+#X obj 394 8 s-default \$2 16;
+#X obj 645 123 s-default \$3 4;
+#X obj 443 262 s-default \$3 4;
+#X obj 513 363 s-default \$3 4;
+#X text 508 11 Set up all the numberboxes;
+#X obj 921 36 inlet;
+#X obj 921 58 list;
+#X msg 921 80 \; \$1 \$2 \;;
+#N canvas 14 28 742 653 4399connectors 0;
+#X obj 575 4 namecanvas \$0connectors;
+#X restore 715 9 pd \$0connectors;
+#X msg 562 275 \; \$1tracker donecanvasdialog 1 -1 1 0 -1 0 \$2 80
+\$2 0 0;
+#X obj 828 628 table \$0data \$2;
+#X obj 828 505 s-default \$2 16;
+#X obj 828 527 t f b;
+#X msg 828 593 \; \$2data resize \$1;
+#X text 827 486 Resize the data table;
+#X obj 828 572 pack f f;
+#X obj 858 549 \$0;
+#N canvas 212 221 507 438 save 0;
+#X obj 58 10 r SSSAD_SAVE;
+#X obj 53 333 list prepend;
+#X obj 146 333 t l;
+#X obj 30 362 list;
+#X obj 30 386 outlet;
+#X obj 96 112 until;
+#X obj 96 135 f;
+#X obj 126 135 + 1;
+#X msg 141 112 0;
+#X obj 58 36 t b b b b;
+#X obj 96 89 16;
+#X obj 112 64 s-default \$2 16;
+#X obj 96 160 tabread \$0data;
+#X connect 0 0 9 0;
+#X connect 1 0 2 0;
+#X connect 1 0 3 1;
+#X connect 2 0 1 1;
+#X connect 3 0 4 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 6 0 12 0;
+#X connect 7 0 6 1;
+#X connect 8 0 6 1;
+#X connect 9 0 1 1;
+#X connect 9 1 3 0;
+#X connect 9 2 10 0;
+#X connect 9 3 8 0;
+#X connect 10 0 5 0;
+#X connect 11 0 10 1;
+#X connect 12 0 1 0;
+#X restore 923 164 pd save;
+#N canvas 64 35 650 643 load 0;
+#X obj 40 6 inlet;
+#X obj 40 65 until;
+#X obj 40 92 list append;
+#X obj 133 121 bang;
+#X obj 40 121 list split 1;
+#X obj 200 186 f;
+#X obj 230 186 + 1;
+#X msg 216 164 0;
+#X obj 40 147 t f b;
+#X obj 200 207 makefilename \$0nbx%d;
+#X obj 40 32 t b l b;
+#X obj 40 266 pack f s;
+#X msg 40 291 \; \$2 \$1 \;;
+#X connect 0 0 10 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 1;
+#X connect 4 0 8 0;
+#X connect 4 1 2 1;
+#X connect 4 2 3 0;
+#X connect 5 0 6 0;
+#X connect 5 0 9 0;
+#X connect 6 0 5 1;
+#X connect 7 0 5 1;
+#X connect 8 0 11 0;
+#X connect 8 1 5 0;
+#X connect 9 0 11 1;
+#X connect 10 0 1 0;
+#X connect 10 1 2 1;
+#X connect 10 2 7 0;
+#X connect 11 0 12 0;
+#X restore 767 210 pd load;
+#X obj 767 186 sssad/sssad \$1/sequence;
+#N canvas 0 0 629 667 position 0;
+#X obj 18 13 inlet;
+#X obj 18 74 mod \$2;
+#X obj 55 51 s-default \$2 16;
+#X msg 560 118 bang;
+#X obj 18 102 t f f;
+#X obj 48 124 s \$0pos;
+#X obj 61 14 r \$4;
+#X obj 365 53 moses 0;
+#X msg 409 236 \; \$1 color 1 \;;
+#X obj 409 140 t a a b;
+#X obj 453 174 symbol;
+#X msg 453 199 \; \$1 color 944 \;;
+#X msg 365 140 bang;
+#X obj 365 29 r \$0pos;
+#X obj 460 53 s-default \$2 16;
+#X obj 409 76 moses 16;
+#X obj 409 118 makefilename \$0nbx%d;
+#X text 363 6 Coloration;
+#X obj 34 251 r \$0/out;
+#X obj 18 372 outlet;
+#X obj 71 372 s \$1/value;
+#X msg 48 215 \; \$1 bang \;;
+#X obj 18 168 makefilename \$0nbx%d;
+#X obj 18 335 f;
+#X obj 18 193 t b s;
+#X obj 34 274 route color;
+#X obj 106 297 select bang;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 1;
+#X connect 3 0 10 0;
+#X connect 4 0 22 0;
+#X connect 4 1 5 0;
+#X connect 6 0 1 0;
+#X connect 7 0 12 0;
+#X connect 7 1 15 0;
+#X connect 9 0 8 0;
+#X connect 9 1 10 1;
+#X connect 9 2 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 10 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 1;
+#X connect 15 0 16 0;
+#X connect 15 1 3 0;
+#X connect 16 0 9 0;
+#X connect 18 0 25 0;
+#X connect 22 0 24 0;
+#X connect 23 0 19 0;
+#X connect 23 0 20 0;
+#X connect 24 0 23 0;
+#X connect 24 1 21 0;
+#X connect 25 1 26 0;
+#X connect 26 1 23 1;
+#X restore 824 381 pd position;
+#X obj 824 358 inlet;
+#X obj 824 404 outlet;
+#X obj 394 212 t f f f f f;
+#X obj 394 551 pack s s f f f;
+#X msg 394 575 \; \$4tracker obj 24 \$3 nbx 3 14 0 127 0 0 \$1 \$1
+\$2 -20 8 0 8 -260818 -1 -1 0 256 \; \$4connectors obj 5 \$3 s-connect
+\$1 \$4/out \; \$4connectors obj 210 \$3 s-tabval \$4 \$1 \$5 \;;
+#X connect 0 0 52 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 51 0;
+#X connect 3 0 2 1;
+#X connect 4 0 23 0;
+#X connect 5 0 2 1;
+#X connect 6 0 52 2;
+#X connect 7 0 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 9 0 11 0;
+#X connect 10 0 14 0;
+#X connect 11 0 13 1;
+#X connect 12 0 13 0;
+#X connect 13 0 52 1;
+#X connect 14 0 13 0;
+#X connect 14 1 12 0;
+#X connect 15 0 17 0;
+#X connect 15 0 52 3;
+#X connect 17 0 37 0;
+#X connect 18 0 19 0;
+#X connect 19 0 24 0;
+#X connect 20 0 1 0;
+#X connect 20 1 5 0;
+#X connect 20 2 15 0;
+#X connect 20 3 18 0;
+#X connect 20 4 22 0;
+#X connect 21 0 19 1;
+#X connect 22 0 21 0;
+#X connect 23 0 6 0;
+#X connect 24 0 17 1;
+#X connect 25 0 27 0;
+#X connect 25 1 26 1;
+#X connect 26 0 20 0;
+#X connect 27 0 26 0;
+#X connect 28 0 25 0;
+#X connect 29 0 22 1;
+#X connect 30 0 10 1;
+#X connect 31 0 8 1;
+#X connect 33 0 34 0;
+#X connect 34 0 35 0;
+#X connect 39 0 40 0;
+#X connect 40 0 43 0;
+#X connect 40 1 44 0;
+#X connect 43 0 41 0;
+#X connect 44 0 43 1;
+#X connect 45 0 47 1;
+#X connect 47 0 46 0;
+#X connect 48 0 50 0;
+#X connect 49 0 48 0;
+#X connect 51 0 0 0;
+#X connect 51 1 10 0;
+#X connect 51 2 4 0;
+#X connect 51 3 8 0;
+#X connect 51 4 52 4;
+#X connect 52 0 53 0;
+#X coords 0 0 1 1 80 284 0;
diff --git a/s-varenv.pd b/s-varenv.pd
new file mode 100644
index 0000000..7323f93
--- /dev/null
+++ b/s-varenv.pd
@@ -0,0 +1,344 @@
+#N canvas 239 16 721 668 10;
+#N canvas 0 16 999 675 1078data 0;
+#X coords 0 0 140 80 140 80 1;
+#X restore 5 19 pd \$0data;
+#N canvas 287 289 599 314 1078template 0;
+#X obj 15 61 struct \$0template float x float y array \$0arrayvals
+\$0arraytemplate;
+#X obj 15 96 outlet;
+#X obj 15 38 plot \$0arrayvals 0 2 0 0 20;
+#X connect 0 0 1 0;
+#X restore 411 36 pd \$0template;
+#N canvas 435 201 450 300 1078arraytemplate 0;
+#X obj 24 43 struct \$0arraytemplate float x float y;
+#X obj 24 72 filledpolygon 0 0 0 -3 0 0 3 3 0 0 -3;
+#X restore 411 13 pd \$0arraytemplate;
+#N canvas 175 111 650 504 initarray 0;
+#X obj 163 219 pointer;
+#X msg 133 47 bang;
+#X text 186 35 click here to re-initialize;
+#X msg 310 196 \; \$1 clear;
+#X obj 163 96 \$0;
+#X msg 163 196 traverse \$1 \, bang;
+#X obj 163 119 makefilename pd-%ddata;
+#X obj 35 259 append \$0template x;
+#X msg 35 227 0;
+#X obj 133 12 loadbang;
+#X obj 133 72 t b b b;
+#X obj 41 98 s \$0-init;
+#X obj 163 140 t s s;
+#X connect 0 0 7 1;
+#X connect 1 0 10 0;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 1 0;
+#X connect 10 0 11 0;
+#X connect 10 1 8 0;
+#X connect 10 2 4 0;
+#X connect 12 0 5 0;
+#X connect 12 1 3 0;
+#X restore 558 12 pd initarray;
+#X obj 411 58 print;
+#N canvas 0 16 999 675 processpoints 0;
+#X obj 229 153 pointer;
+#X msg 229 130 traverse \$1 \, next;
+#X obj 229 86 \$0;
+#X obj 229 109 makefilename pd-%ddata;
+#X msg 229 24 bang;
+#X obj 12 548 set \$0arraytemplate x y;
+#X obj 90 336 element \$0template \$0arrayvals;
+#X obj 46 259 until;
+#X obj 76 218 > 0;
+#X obj 46 197 t f f;
+#X obj 46 239 spigot;
+#X obj 46 284 f;
+#X obj 74 284 + 1;
+#X msg 157 254 0;
+#X obj 160 212 t b b p p;
+#X obj 229 65 metro 100;
+#X obj 250 428 get \$0arraytemplate x y;
+#X obj 208 532 select 1;
+#X obj 272 532 select 1;
+#X obj 272 511 < 0;
+#X msg 272 552 0;
+#X obj 375 508 select 1;
+#X obj 439 506 select 1;
+#X obj 394 615 pack f f;
+#X obj 250 452 t f f f;
+#X obj 394 639 s \$0xy;
+#X obj 406 448 t f f f;
+#X obj 12 515 unpack f f;
+#X obj 12 484 r \$0xy;
+#X obj 105 367 t p p;
+#X obj 59 312 t f f;
+#X msg 4 455 0;
+#X obj 17 395 select 0;
+#X obj 62 130 r \$0-points;
+#X obj 62 151 - 1;
+#X obj 161 357 r \$0-points;
+#X obj 161 378 - 1;
+#X obj 46 172 1;
+#X obj 229 4 r \$0-init;
+#X obj 80 395 select 1;
+#X obj 264 230 setsize \$0template \$0arrayvals;
+#X obj 305 173 r \$0-points;
+#X obj 264 202 2;
+#X obj 229 173 t p b p;
+#X obj 439 483 < 0;
+#X msg 439 526 0;
+#X text 533 28 every 100 milliseconds this loops through the entire
+array and makes sure the points are in range. this is a kludge because
+[struct] doesn't tell us when things have been clicked and because
+you can't restrict where array values go to.;
+#X obj 287 23 random 5;
+#X obj 287 44 + 98;
+#X msg 88 470 140;
+#X obj 375 487 > 80;
+#X msg 375 528 80;
+#X obj 208 511 > 140;
+#X msg 208 552 140;
+#X connect 0 0 43 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 15 0;
+#X connect 4 0 47 0;
+#X connect 6 0 29 0;
+#X connect 7 0 11 0;
+#X connect 8 0 10 1;
+#X connect 9 0 10 0;
+#X connect 9 1 8 0;
+#X connect 10 0 7 0;
+#X connect 11 0 12 0;
+#X connect 11 0 30 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 0;
+#X connect 14 0 37 0;
+#X connect 14 1 13 0;
+#X connect 14 2 6 1;
+#X connect 15 0 2 0;
+#X connect 16 0 24 0;
+#X connect 16 1 26 0;
+#X connect 17 0 53 0;
+#X connect 18 0 20 0;
+#X connect 19 0 18 0;
+#X connect 20 0 23 0;
+#X connect 21 0 51 0;
+#X connect 22 0 45 0;
+#X connect 23 0 25 0;
+#X connect 24 0 52 0;
+#X connect 24 1 19 0;
+#X connect 24 2 23 0;
+#X connect 26 0 50 0;
+#X connect 26 1 44 0;
+#X connect 26 2 23 1;
+#X connect 27 0 5 0;
+#X connect 27 1 5 1;
+#X connect 28 0 27 0;
+#X connect 29 0 16 0;
+#X connect 29 1 5 2;
+#X connect 30 0 32 0;
+#X connect 30 0 39 0;
+#X connect 30 1 6 0;
+#X connect 31 0 5 0;
+#X connect 32 0 31 0;
+#X connect 33 0 34 0;
+#X connect 34 0 37 1;
+#X connect 35 0 36 0;
+#X connect 36 0 39 1;
+#X connect 37 0 9 0;
+#X connect 38 0 4 0;
+#X connect 39 0 49 0;
+#X connect 41 0 42 1;
+#X connect 42 0 40 0;
+#X connect 43 0 14 0;
+#X connect 43 1 42 0;
+#X connect 43 2 40 1;
+#X connect 44 0 22 0;
+#X connect 45 0 23 1;
+#X connect 47 0 48 0;
+#X connect 48 0 15 1;
+#X connect 49 0 5 0;
+#X connect 50 0 21 0;
+#X connect 51 0 23 1;
+#X connect 52 0 17 0;
+#X connect 53 0 23 0;
+#X restore 558 32 pd processpoints;
+#X obj 467 244 pointer;
+#X obj 489 325 setsize \$0template \$0arrayvals;
+#X obj 467 268 t p b p;
+#X msg 467 221 traverse \$1 \, next;
+#X obj 467 177 \$0;
+#X obj 467 200 makefilename pd-%ddata;
+#X msg 467 152 bang;
+#X obj 530 268 r \$0-points;
+#X obj 467 125 r \$0-points;
+#X obj 489 297 2;
+#X obj 388 350 outlet;
+#X obj 396 125 r \$0-init;
+#N canvas 0 0 618 440 linepairs 0;
+#X obj 234 34 inlet;
+#X obj 303 343 outlet;
+#X obj 389 58 inlet;
+#X obj 234 139 element \$0template \$0arrayvals;
+#X obj 234 163 get \$0arraytemplate x y;
+#X obj 303 196 / 180;
+#X obj 390 188 expr 95 - $f1;
+#X obj 390 211 / 75;
+#X obj 303 299 f;
+#X obj 303 261 t b f;
+#X obj 303 321 pack f f;
+#X obj 303 241 -;
+#X obj 16 139 element \$0template \$0arrayvals;
+#X obj 16 163 get \$0arraytemplate x y;
+#X obj 234 60 t f f;
+#X obj 208 93 - 1;
+#X obj 146 114 select -1;
+#X msg 194 163 0;
+#X obj 130 209 / 180;
+#X obj 387 312 delay;
+#X obj 387 333 s \$0-loop;
+#X connect 0 0 14 0;
+#X connect 2 0 3 1;
+#X connect 2 0 12 1;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
+#X connect 5 0 11 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 10 0;
+#X connect 9 0 8 0;
+#X connect 9 0 19 0;
+#X connect 9 1 10 1;
+#X connect 9 1 19 1;
+#X connect 10 0 1 0;
+#X connect 11 0 9 0;
+#X connect 12 0 13 0;
+#X connect 13 0 18 0;
+#X connect 14 0 3 0;
+#X connect 14 1 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 16 1 12 0;
+#X connect 17 0 11 1;
+#X connect 18 0 11 1;
+#X connect 19 0 20 0;
+#X restore 388 327 pd linepairs;
+#N canvas 0 0 670 643 signal 0;
+#X obj 161 185 element \$0template \$0arrayvals;
+#X obj 161 209 get \$0arraytemplate x y;
+#X obj 230 407 line~;
+#X obj 119 28 t b f;
+#X obj 230 264 *;
+#X obj 119 89 f;
+#X obj 147 89 + 1;
+#X obj 230 428 outlet~;
+#X msg 119 60 0;
+#X obj 230 363 f;
+#X obj 230 333 t b f;
+#X obj 230 385 pack f f;
+#X obj 301 385 delay;
+#X obj 301 406 s \$0-loop;
+#X obj 24 44 r \$0-loop;
+#X obj 149 138 < 4;
+#X obj 119 113 t f f;
+#X obj 119 160 spigot;
+#X obj 230 309 -;
+#X obj 230 286 t f f;
+#X obj 119 5 inlet;
+#X obj 207 89 r \$0-points;
+#X obj 366 5 inlet;
+#X obj 230 242 / 290;
+#X obj 317 234 expr 174 - $f1;
+#X obj 317 258 / 174;
+#X connect 0 0 1 0;
+#X connect 1 0 23 0;
+#X connect 1 1 24 0;
+#X connect 2 0 7 0;
+#X connect 3 0 8 0;
+#X connect 3 1 4 1;
+#X connect 4 0 19 0;
+#X connect 5 0 6 0;
+#X connect 5 0 16 0;
+#X connect 6 0 5 1;
+#X connect 8 0 5 0;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
+#X connect 10 0 12 0;
+#X connect 10 1 11 1;
+#X connect 10 1 12 1;
+#X connect 11 0 2 0;
+#X connect 12 0 13 0;
+#X connect 14 0 5 0;
+#X connect 15 0 17 1;
+#X connect 16 0 17 0;
+#X connect 16 1 15 0;
+#X connect 17 0 0 0;
+#X connect 18 0 10 0;
+#X connect 19 0 18 1;
+#X connect 19 1 18 0;
+#X connect 20 0 3 0;
+#X connect 21 0 15 1;
+#X connect 22 0 0 1;
+#X connect 23 0 4 0;
+#X connect 24 0 25 0;
+#X connect 25 0 9 1;
+#X restore 283 304 pd signal;
+#X obj 283 282 inlet;
+#X obj 283 327 outlet~;
+#X obj 113 3 bng 13 250 50 0 \$0-add empty add 18 8 0 8 -260818 -1
+-1;
+#X obj 73 3 bng 13 250 50 0 \$0-clear empty clr 18 8 0 8 -260818 -1
+-1;
+#X text 47 259 this is how long (ms) you want the envelope to take.
+;
+#X obj 103 376 r \$0-add;
+#X obj 176 376 r \$0-clear;
+#X obj 103 463 2;
+#X obj 142 463 + 1;
+#X obj 103 489 s \$0-points;
+#X msg 176 403 2;
+#X obj 33 376 r \$0-init;
+#X obj 388 304 r \$0-pair;
+#X obj 559 75 inlet;
+#X obj 559 98 route pair;
+#X obj 559 120 f;
+#X obj 559 142 s \$0-pair;
+#X obj 6 20 cnv 15 138 78 empty empty empty 20 12 0 14 -262144 -66577
+0;
+#X obj 7 21 cnv 15 137 77 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X obj 7 21 cnv 15 136 76 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X connect 1 0 4 0;
+#X connect 6 0 8 0;
+#X connect 8 0 18 1;
+#X connect 8 0 19 1;
+#X connect 8 1 15 0;
+#X connect 8 2 7 1;
+#X connect 9 0 6 0;
+#X connect 10 0 11 0;
+#X connect 11 0 9 0;
+#X connect 12 0 10 0;
+#X connect 13 0 15 1;
+#X connect 14 0 12 0;
+#X connect 15 0 7 0;
+#X connect 17 0 12 0;
+#X connect 18 0 16 0;
+#X connect 19 0 21 0;
+#X connect 20 0 19 0;
+#X connect 25 0 27 0;
+#X connect 26 0 30 0;
+#X connect 27 0 28 0;
+#X connect 27 0 29 0;
+#X connect 28 0 27 1;
+#X connect 30 0 27 0;
+#X connect 31 0 27 0;
+#X connect 32 0 18 0;
+#X connect 33 0 34 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X coords 0 -1 1 1 150 104 1 0 0;
diff --git a/s-varseq-help.pd b/s-varseq-help.pd
new file mode 100644
index 0000000..9d25156
--- /dev/null
+++ b/s-varseq-help.pd
@@ -0,0 +1,25 @@
+#N struct 2302template float x float y float z;
+#N struct 2302puck float x;
+#N canvas 0 0 450 300 10;
+#X floatatom 20 188 5 0 0 0 - - -;
+#X floatatom 20 276 5 0 0 0 - - -;
+#X obj 20 145 loadbang;
+#X msg 20 166 0;
+#X text 48 167 Click me to reset the canvas (for some reason);
+#X text 13 7 varseq is short for 'variable sequencer' because it's
+a simple sequencer with a variable length. Creation arguments are [name]
+[sections] [section length] [timer name]. Name is the SSSAD name and
+unique identifier. Sections indicates how many sections there are in
+the whole loop \, and section length indicates how many beats in each
+section. To set a value click on an orange rectangle and drag it upwards.
+The value can be set between zero and one. To select a beat in the
+loop send a number in the left inlet \, or send a number to the third
+argument (timer name) if supplied.;
+#X floatatom 318 208 5 0 0 0 - - -;
+#X obj 318 227 s tick;
+#X obj 20 210 s-varseq teh 4 5 tick;
+#X connect 0 0 8 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 6 0 7 0;
+#X connect 8 0 1 0;
diff --git a/s-varseq.pd b/s-varseq.pd
new file mode 100644
index 0000000..f72ace6
--- /dev/null
+++ b/s-varseq.pd
@@ -0,0 +1,429 @@
+#N struct 1157template float x float y float z;
+#N struct 1157puck float x;
+#N canvas 227 23 768 655 10;
+#N canvas 0 0 976 681 1157data 0;
+#X scalar 1157template 3 28 0 \;;
+#X scalar 1157template 15 28 0 \;;
+#X scalar 1157template 27 28 0 \;;
+#X scalar 1157template 39 28 0 \;;
+#X scalar 1157template 54 28 0 \;;
+#X scalar 1157template 66 28 0 \;;
+#X scalar 1157template 78 28 0 \;;
+#X scalar 1157template 90 28 0 \;;
+#X scalar 1157template 105 28 0 \;;
+#X scalar 1157template 117 28 0 \;;
+#X scalar 1157template 129 28 0 \;;
+#X scalar 1157template 141 28 0 \;;
+#X scalar 1157template 156 28 0 \;;
+#X scalar 1157template 168 28 0 \;;
+#X scalar 1157template 180 28 0 \;;
+#X scalar 1157template 192 28 0 \;;
+#X scalar 1157puck 78 \;;
+#X coords 0 -1 206 36 206 36 1;
+#X restore 4 17 pd \$0data;
+#N canvas 132 316 450 300 1157template 0;
+#X obj 6 8 struct \$0template float x float y float z;
+#X obj 6 31 filledpolygon 5060 0 1 0 0 0 z(0:-20)(-5:-25) 10 z(0:-20)(-5:-25)
+10 0;
+#X restore 12 77 pd \$0template \$0template;
+#X obj 227 108 loadbang;
+#N canvas 106 35 577 642 drawstuff 0;
+#X obj 160 8 inlet;
+#X obj 196 482 pointer;
+#X obj 232 77 \$0;
+#X obj 232 102 makefilename pd-%ddata;
+#X msg 232 126 \; \$1 clear;
+#X obj 196 411 \$0;
+#X obj 196 436 makefilename pd-%ddata;
+#X msg 196 460 traverse \$1 \, bang;
+#X obj 40 186 until;
+#X obj 70 145 > 0;
+#X obj 40 124 t f f;
+#X obj 40 166 spigot;
+#X obj 40 208 f;
+#X obj 68 208 + 1;
+#X obj 10 363 until;
+#X obj 40 322 > 0;
+#X obj 10 301 t f f;
+#X obj 10 343 spigot;
+#X obj 10 385 f;
+#X obj 38 385 + 1;
+#X msg 10 259 bang;
+#X obj 40 228 t b f;
+#X obj 40 459 + 3;
+#X obj 40 435 + 0;
+#X obj 40 506 append \$0template x y z;
+#X obj 10 409 * 12;
+#X obj 70 410 * 3;
+#X msg 40 482 \$1 28 0;
+#X obj 40 104 \$2;
+#X obj 10 281 \$3;
+#X obj 113 283 s \$0width;
+#X obj 154 144 \$2;
+#X obj 113 144 \$3;
+#X obj 113 232 * 12;
+#X obj 113 120 t b b;
+#X obj 113 183 * 1;
+#X obj 154 232 * 3;
+#X obj 113 258 +;
+#X obj 113 207 - 1;
+#X obj 160 51 t b b b b b;
+#N canvas 0 0 450 300 puck 0;
+#X obj 7 5 inlet;
+#X obj 107 154 pointer;
+#X obj 107 83 \$0;
+#X obj 107 108 makefilename pd-%ddata;
+#X msg 107 132 traverse \$1 \, bang;
+#X obj 7 29 t b b;
+#X obj 7 178 append \$0puck x;
+#X msg 7 155 20;
+#X connect 0 0 5 0;
+#X connect 1 0 6 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 7 0;
+#X connect 5 1 2 0;
+#X connect 7 0 6 0;
+#X restore 214 199 pd puck;
+#X connect 0 0 39 0;
+#X connect 1 0 24 3;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 8 0 12 0;
+#X connect 9 0 11 1;
+#X connect 10 0 11 0;
+#X connect 10 1 9 0;
+#X connect 11 0 8 0;
+#X connect 12 0 13 0;
+#X connect 12 0 21 0;
+#X connect 13 0 12 1;
+#X connect 14 0 18 0;
+#X connect 15 0 17 1;
+#X connect 16 0 17 0;
+#X connect 16 1 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 19 0;
+#X connect 18 0 25 0;
+#X connect 19 0 18 1;
+#X connect 20 0 29 0;
+#X connect 21 0 20 0;
+#X connect 21 1 26 0;
+#X connect 22 0 27 0;
+#X connect 23 0 22 0;
+#X connect 25 0 23 0;
+#X connect 26 0 23 1;
+#X connect 27 0 24 0;
+#X connect 28 0 10 0;
+#X connect 29 0 16 0;
+#X connect 31 0 36 0;
+#X connect 31 0 35 1;
+#X connect 32 0 35 0;
+#X connect 33 0 37 0;
+#X connect 34 0 32 0;
+#X connect 34 1 31 0;
+#X connect 35 0 38 0;
+#X connect 36 0 37 1;
+#X connect 37 0 30 0;
+#X connect 38 0 33 0;
+#X connect 39 0 28 0;
+#X connect 39 1 34 0;
+#X connect 39 2 5 0;
+#X connect 39 3 40 0;
+#X connect 39 4 2 0;
+#X restore 227 130 pd drawstuff;
+#X obj 12 134 inlet;
+#X obj 351 629 outlet;
+#X msg 63 474 next;
+#X obj 216 400 \$0;
+#X obj 216 425 makefilename pd-%ddata;
+#X obj 12 395 until;
+#X obj 42 354 > 0;
+#X obj 12 333 t f f;
+#X obj 12 375 spigot;
+#X obj 12 427 f;
+#X obj 40 427 + 1;
+#X obj 12 447 t b f;
+#X msg 87 378 0;
+#X obj 12 206 mod;
+#X obj 57 134 loadbang;
+#X obj 216 563 get \$0template x y z;
+#X obj 351 587 / -20;
+#X obj 173 473 ==;
+#X obj 12 293 t f b b f;
+#X obj 216 539 spigot;
+#X obj 351 608 abs;
+#X obj 712 8 inlet;
+#N canvas 239 27 705 614 update 0;
+#X obj 37 13 inlet;
+#X msg 111 294 next;
+#X obj 241 247 \$0;
+#X obj 241 272 makefilename pd-%ddata;
+#X obj 37 210 until;
+#X obj 67 169 > 0;
+#X obj 37 148 t f f;
+#X obj 37 190 spigot;
+#X obj 37 242 f;
+#X obj 65 242 + 1;
+#X msg 121 202 0;
+#X msg 241 296 traverse \$1;
+#X obj 115 467 set \$0template x y z;
+#X obj 37 108 t f b b;
+#X obj 115 418 get \$0template x y z;
+#X obj 240 373 t p p;
+#X obj 37 262 t b;
+#X msg 37 36 bang;
+#X obj 37 84 * \$3;
+#X obj 37 61 \$2;
+#X obj 240 322 pointer \$0template;
+#X connect 0 0 17 0;
+#X connect 1 0 20 0;
+#X connect 2 0 3 0;
+#X connect 3 0 11 0;
+#X connect 4 0 8 0;
+#X connect 5 0 7 1;
+#X connect 6 0 7 0;
+#X connect 6 1 5 0;
+#X connect 7 0 4 0;
+#X connect 8 0 9 0;
+#X connect 8 0 16 0;
+#X connect 9 0 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 20 0;
+#X connect 13 0 6 0;
+#X connect 13 1 10 0;
+#X connect 13 2 2 0;
+#X connect 14 0 12 0;
+#X connect 14 1 12 1;
+#X connect 14 2 12 2;
+#X connect 15 0 14 0;
+#X connect 15 1 12 3;
+#X connect 16 0 1 0;
+#X connect 17 0 19 0;
+#X connect 18 0 13 0;
+#X connect 19 0 18 0;
+#X connect 20 0 15 0;
+#X restore 120 310 pd update;
+#X text 191 310 update the graphics incase people move the sequencer
+around;
+#X msg 216 448 traverse \$1;
+#X obj 120 289 select 0;
+#X obj 57 157 \$2;
+#X obj 57 178 * \$3;
+#X obj 712 29 list;
+#X msg 712 50 \; \$1 \$2 \;;
+#N canvas 212 221 507 438 save 0;
+#X obj 58 10 r SSSAD_SAVE;
+#X obj 53 333 list prepend;
+#X obj 146 333 t l;
+#X obj 30 362 list;
+#X obj 179 95 \$0;
+#X obj 179 118 makefilename pd-%ddata;
+#X obj 7 415 outlet;
+#X obj 7 394 sssad/sssad \$1/sequence;
+#X msg 179 139 traverse \$1;
+#X obj 110 112 until;
+#X msg 133 138 next;
+#X obj 179 189 get \$0template x y z;
+#X obj 58 36 t b b b b;
+#X obj 179 162 pointer \$0template;
+#X connect 0 0 12 0;
+#X connect 1 0 2 0;
+#X connect 1 0 3 1;
+#X connect 2 0 1 1;
+#X connect 3 0 7 1;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 7 0 6 0;
+#X connect 8 0 13 0;
+#X connect 9 0 10 0;
+#X connect 10 0 13 0;
+#X connect 11 2 1 0;
+#X connect 12 0 1 1;
+#X connect 12 1 3 0;
+#X connect 12 2 9 0;
+#X connect 12 3 4 0;
+#X connect 13 0 11 0;
+#X connect 13 2 9 1;
+#X restore 322 108 pd save;
+#N canvas 64 35 650 643 load 0;
+#X obj 21 6 inlet;
+#X obj 21 65 until;
+#X obj 21 92 list append;
+#X obj 104 121 bang;
+#X msg 183 209 traverse \$1 \, next;
+#X obj 183 165 \$0;
+#X obj 183 188 makefilename pd-%ddata;
+#X obj 21 121 list split 1;
+#X obj 21 272 set \$0template z;
+#X msg 21 172 next;
+#X obj 21 32 t b l b;
+#X obj 21 147 t b f;
+#X obj 183 231 pointer \$0template;
+#X connect 0 0 10 0;
+#X connect 1 0 2 0;
+#X connect 2 0 7 0;
+#X connect 3 0 1 1;
+#X connect 4 0 12 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 11 0;
+#X connect 7 1 2 1;
+#X connect 7 2 3 0;
+#X connect 9 0 12 0;
+#X connect 10 0 1 0;
+#X connect 10 1 2 1;
+#X connect 10 2 5 0;
+#X connect 11 0 9 0;
+#X connect 11 1 8 0;
+#X connect 12 0 8 1;
+#X restore 322 130 pd load;
+#N canvas 404 102 476 510 resize-canvas 0;
+#X obj 45 217 - 2;
+#X obj 7 7 r \$0width;
+#X obj 7 28 + 14;
+#X obj 95 97 \$0;
+#X obj 65 74 t f b;
+#X obj 65 152 pack f s;
+#X obj 95 120 makefilename pd-%ddata;
+#X obj 26 266 pack f f;
+#X obj 26 245 \$0;
+#X obj 7 50 t f b f f;
+#X obj 37 386 \$0;
+#X obj 7 363 t f b;
+#X obj 7 441 pack f s;
+#X obj 37 409 makefilename %dvarseq;
+#X obj 7 342 + 8;
+#X msg 7 463 \; \$2 donecanvasdialog 1 -1 1 0 -1 \$1 58 \$1 58 0 0
+;
+#X msg 26 287 \; \$1varseq obj 5 18 cnv 15 \$2 34 empty empty empty
+20 12 0 14 -166441 -66577 0 \;;
+#X msg 65 174 \; \$2 donecanvasdialog 1 -1 1 0 -1 \$1 36 \$1 36 0 0
+;
+#X connect 0 0 7 1;
+#X connect 1 0 2 0;
+#X connect 2 0 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 4 1 3 0;
+#X connect 5 0 17 0;
+#X connect 6 0 5 1;
+#X connect 7 0 16 0;
+#X connect 8 0 7 0;
+#X connect 9 0 14 0;
+#X connect 9 1 8 0;
+#X connect 9 2 0 0;
+#X connect 9 3 4 0;
+#X connect 10 0 13 0;
+#X connect 11 0 12 0;
+#X connect 11 1 10 0;
+#X connect 12 0 15 0;
+#X connect 13 0 12 1;
+#X connect 14 0 11 0;
+#X restore 388 108 pd resize-canvas;
+#X text 8 57 args: [name] [bars] [beats per bar] [tick receiver];
+#X floatatom 525 107 5 0 0 0 - - -;
+#X obj 525 127 s \$0width;
+#X obj 560 27 namecanvas \$0varseq;
+#X obj 409 160 r \$0width;
+#X floatatom 409 182 5 0 0 0 - - -;
+#N canvas 132 316 450 300 1157puck 0;
+#X obj 6 9 struct \$0puck float x;
+#X obj 6 32 filledpolygon 900 0 1 0 30 0 34 10 34 10 30;
+#X restore 12 99 pd \$0puck \$0puck;
+#N canvas 347 26 376 655 position 0;
+#X obj 86 256 \$0;
+#X obj 86 281 makefilename pd-%ddata;
+#X obj 116 421 pointer \$0puck;
+#X obj 37 8 inlet;
+#X obj 86 309 t b s;
+#X msg 116 395 traverse \$1;
+#X obj 51 521 set \$0puck x;
+#X obj 77 373 until;
+#X msg 77 350 200;
+#X msg 77 396 next;
+#X obj 51 500 f;
+#X obj 37 220 t b f;
+#X obj 116 447 t b p;
+#X obj 37 120 * 12;
+#X obj 37 197 + 3;
+#X obj 79 75 / \$3;
+#X obj 37 31 t f f;
+#X obj 79 97 int;
+#X obj 79 120 * 3;
+#X obj 37 175 +;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 2 0 12 0;
+#X connect 2 2 7 1;
+#X connect 3 0 16 0;
+#X connect 4 0 8 0;
+#X connect 4 1 5 0;
+#X connect 5 0 2 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 9 0 2 0;
+#X connect 10 0 6 0;
+#X connect 11 0 0 0;
+#X connect 11 1 10 1;
+#X connect 12 0 10 0;
+#X connect 12 1 6 1;
+#X connect 13 0 19 0;
+#X connect 14 0 11 0;
+#X connect 15 0 17 0;
+#X connect 16 0 13 0;
+#X connect 16 1 15 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 1;
+#X connect 19 0 14 0;
+#X restore 245 281 pd position;
+#X obj 19 157 r \$4;
+#X obj 216 507 pointer \$0template;
+#X obj 5 18 cnv 15 204 34 empty empty empty 20 12 0 14 -166441 -66577
+0;
+#X obj 276 629 s \$1/value;
+#X connect 2 0 3 0;
+#X connect 4 0 17 0;
+#X connect 6 0 46 0;
+#X connect 7 0 8 0;
+#X connect 8 0 28 0;
+#X connect 9 0 13 0;
+#X connect 10 0 12 1;
+#X connect 11 0 12 0;
+#X connect 11 1 10 0;
+#X connect 12 0 9 0;
+#X connect 13 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 13 1;
+#X connect 15 0 6 0;
+#X connect 15 1 21 0;
+#X connect 16 0 13 0;
+#X connect 17 0 22 0;
+#X connect 17 0 29 0;
+#X connect 17 0 44 0;
+#X connect 18 0 30 0;
+#X connect 19 2 20 0;
+#X connect 20 0 24 0;
+#X connect 21 0 23 1;
+#X connect 22 0 11 0;
+#X connect 22 1 16 0;
+#X connect 22 2 7 0;
+#X connect 22 3 21 1;
+#X connect 23 0 19 0;
+#X connect 24 0 5 0;
+#X connect 24 0 48 0;
+#X connect 25 0 32 0;
+#X connect 28 0 46 0;
+#X connect 29 0 26 0;
+#X connect 30 0 31 0;
+#X connect 31 0 17 1;
+#X connect 32 0 33 0;
+#X connect 34 0 35 0;
+#X connect 38 0 39 0;
+#X connect 41 0 42 0;
+#X connect 45 0 17 0;
+#X connect 46 0 23 0;
+#X coords 0 -1 214 58 214 58 1 0 0;
diff --git a/s-xfader~.pd b/s-xfader~.pd
new file mode 100644
index 0000000..1f82b59
--- /dev/null
+++ b/s-xfader~.pd
@@ -0,0 +1,28 @@
+#N canvas 422 332 450 300 10;
+#X obj 8 29 hsl 64 16 0 127 0 0 \$0-fader \$0-fader fader -2 -6 0 8
+-260818 -1 -1 30 1;
+#X obj 216 43 inlet~;
+#X obj 292 42 inlet~;
+#X obj 217 157 *~;
+#X obj 293 151 *~;
+#X obj 233 135 * -1;
+#X obj 276 237 outlet~;
+#X obj 280 209 +~;
+#X obj 233 111 - 1;
+#X obj 309 89 / 127;
+#X obj 233 89 / 127;
+#X obj 309 66 r \$0-fader;
+#X obj 233 66 r \$0-fader;
+#X obj 6 253 s-connect \$1-fader \$0-fader;
+#X connect 1 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 7 0;
+#X connect 4 0 7 0;
+#X connect 5 0 3 1;
+#X connect 7 0 6 0;
+#X connect 8 0 5 0;
+#X connect 9 0 4 1;
+#X connect 10 0 8 0;
+#X connect 11 0 9 0;
+#X connect 12 0 10 0;
+#X coords 0 0 1 1 90 50 1 0 0;
diff --git a/s-zhzxh~.pd b/s-zhzxh~.pd
new file mode 100644
index 0000000..28e41d2
--- /dev/null
+++ b/s-zhzxh~.pd
@@ -0,0 +1,9 @@
+#N canvas 349 153 447 132 10;
+#X obj 12 38 fexpr~ if($x1[-1] < $x1 \, $x1[-1] + $f2 \, $x1[-1] -
+$f2);
+#X obj 12 11 inlet~;
+#X obj 385 12 inlet;
+#X obj 12 67 outlet~;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
diff --git a/sfimport b/sfimport
new file mode 100755
index 0000000..2add065
--- /dev/null
+++ b/sfimport
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+version=`svn info | grep Revision | cut -f2 -d" "`
+export CVSROOT=:ext:chr15m@pure-data.cvs.sourceforge.net:/cvsroot/pure-data
+export CVS_RSH=ssh
+cvs import abstractions/s-abstractions CHR15M S-ABSTRACTIONS_0_$version
+
diff --git a/sssad/README.txt b/sssad/README.txt
new file mode 100644
index 0000000..afe749f
--- /dev/null
+++ b/sssad/README.txt
@@ -0,0 +1,55 @@
+sssad is Stupidsupersimplistic State Saving ADVANCED
+====================================================
+
+[sssad] is an abstraction to simplify saving of data inside a Pd patch to a
+file. See [sssad-help] for a reference, and [sssad-example] for how to use it.
+
+Author(s)
+========
+
+[sssad] was written by Frank Barknecht <fbar@footils.org> and was inspired from
+a discussion about Max's [pv] and [pvar] objects on pd-list brought up by "Item
+State"
+
+Internally it uses [singleton] which goes back to an idea by Enrique Erne and
+IOhannes m zmoelnig plus [list_argument] which was ripped of from
+Hans-Christoph Steiner's [float_argument]
+
+License
+=======
+
+The same as Pd's license, with me as author:
+
+Copyright:
+
+This software is copyrighted by Frank Barknecht and others. The following
+terms apply to all files associated with the software unless explicitly
+disclaimed in individual files.
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply.
+
+IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
+IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+MODIFICATIONS.
+
+RESTRICTED RIGHTS: Use, duplication or disclosure by the government
+is subject to the restrictions as set forth in subparagraph (c) (1) (ii)
+of the Rights in Technical Data and Computer Software Clause as DFARS
+252.227-7013 and FAR 52.227-19.
diff --git a/sssad/_sssad/list_argument.pd b/sssad/_sssad/list_argument.pd
new file mode 100644
index 0000000..d532a27
--- /dev/null
+++ b/sssad/_sssad/list_argument.pd
@@ -0,0 +1,20 @@
+#N canvas 160 304 587 350 10;
+#X obj 259 234 outlet;
+#X text 83 259 If the argument is not equal to 0 \, use it. Pd init
+arguments to 0 so unused arguments will be 0;
+#X obj 143 116 select 0;
+#X text 82 296 This is useful to have internals inited \, but not reset
+if there is no argument specified.;
+#X obj 143 190 select 0;
+#X text 275 172 if 2nd arg \, then use as default value;
+#X obj 143 20 inlet;
+#X obj 143 96 list append \$1;
+#X obj 143 169 list append \$2;
+#X obj 143 55 bang;
+#X connect 2 0 8 0;
+#X connect 2 1 0 0;
+#X connect 4 1 0 0;
+#X connect 6 0 9 0;
+#X connect 7 0 2 0;
+#X connect 8 0 4 0;
+#X connect 9 0 7 0;
diff --git a/sssad/_sssad/singleton-help.pd b/sssad/_sssad/singleton-help.pd
new file mode 100644
index 0000000..ab5a392
--- /dev/null
+++ b/sssad/_sssad/singleton-help.pd
@@ -0,0 +1,42 @@
+#N canvas 415 240 552 487 10;
+#X obj 79 44 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 80 137 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 80 230 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 245 43 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 269 139 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 295 230 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 75 339 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 75 385 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 80 117 singleton TABLE_X table x;
+#X obj 80 211 singleton TABLE_Y table y 100;
+#X obj 269 119 singleton TABLE_X table x;
+#X obj 295 211 singleton TABLE_Y table y 100;
+#X obj 75 320 singleton LIST list prepend 1 2 3 4 5 6 7 8;
+#X obj 75 365 singleton LIST list prepend 1 2 3 4 5 6 7 8;
+#X text 85 292 Up to 10 arguments supported;
+#X obj 81 85 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 247 84 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 79 24 singleton MUL_A *;
+#X obj 245 23 singleton MUL_A *;
+#X obj 248 65 singleton MUL_B *;
+#X obj 81 65 singleton MUL_B *;
+#X connect 8 0 1 0;
+#X connect 9 0 2 0;
+#X connect 10 0 4 0;
+#X connect 11 0 5 0;
+#X connect 12 0 6 0;
+#X connect 13 0 7 0;
+#X connect 17 0 0 0;
+#X connect 18 0 3 0;
+#X connect 19 0 16 0;
+#X connect 20 0 15 0;
diff --git a/sssad/_sssad/singleton.pd b/sssad/_sssad/singleton.pd
new file mode 100644
index 0000000..6a78865
--- /dev/null
+++ b/sssad/_sssad/singleton.pd
@@ -0,0 +1,121 @@
+#N canvas 184 74 837 725 10;
+#N canvas 0 22 236 173 1047-container 0;
+#X restore 227 18 pd \$0-container;
+#X obj 156 360 f \$0;
+#X obj 156 380 makefilename pd-%d-container;
+#X obj 47 18 loadbang;
+#X obj 47 611 outlet;
+#X obj 47 132 value \$1.SSSAD.req;
+#X obj 47 311 select 0;
+#X obj 47 157 t f f;
+#X obj 77 177 + 1;
+#X obj 77 197 value \$1.SSSAD.req;
+#X obj 47 335 t b b;
+#X msg 47 589 1;
+#X obj 156 401 t s s;
+#X msg 186 423 \; \$1 clear;
+#X text 378 43 more simple-minded \, we would just set \$1.SSSAD.req to
+"1" instead of incrementing it each time. (however \, this way we also
+now how many instances of the class we have). and of course we could
+use just one [value] - i use 2 for better readability.;
+#X obj 324 107 del 0;
+#X obj 324 126 value \$1.SSSAD.req;
+#X floatatom 324 149 5 0 0 0 - - -;
+#X text 322 168 wow! the number of instances;
+#N canvas 0 0 570 825 1047-arguments 0;
+#X obj 36 485 outlet;
+#X obj 36 461 r \$0-tolist;
+#X obj 171 87 t b a;
+#X obj 201 109 s \$0-tolist;
+#X obj 171 156 t b a;
+#X obj 201 178 s \$0-tolist;
+#X obj 171 225 t b a;
+#X obj 201 247 s \$0-tolist;
+#X obj 171 299 t b a;
+#X obj 201 321 s \$0-tolist;
+#X obj 171 64 list_argument \$2;
+#X obj 171 134 list_argument \$3;
+#X obj 171 202 list_argument \$4;
+#X obj 171 276 list_argument \$5;
+#X obj 171 357 list_argument \$6;
+#X obj 171 35 inlet;
+#X obj 171 381 t b a;
+#X obj 201 403 s \$0-tolist;
+#X obj 171 461 t b a;
+#X obj 201 483 s \$0-tolist;
+#X obj 171 437 list_argument \$7;
+#X obj 170 537 t b a;
+#X obj 200 559 s \$0-tolist;
+#X obj 169 607 t b a;
+#X obj 199 629 s \$0-tolist;
+#X obj 169 682 t b a;
+#X obj 199 704 s \$0-tolist;
+#X obj 170 513 list_argument \$8;
+#X obj 169 583 list_argument \$9;
+#X obj 169 658 list_argument \$10;
+#X obj 169 757 t b a;
+#X obj 199 779 s \$0-tolist;
+#X obj 169 733 list_argument \$11;
+#X connect 1 0 0 0;
+#X connect 2 0 11 0;
+#X connect 2 1 3 0;
+#X connect 4 0 12 0;
+#X connect 4 1 5 0;
+#X connect 6 0 13 0;
+#X connect 6 1 7 0;
+#X connect 8 0 14 0;
+#X connect 8 1 9 0;
+#X connect 10 0 2 0;
+#X connect 11 0 4 0;
+#X connect 12 0 6 0;
+#X connect 13 0 8 0;
+#X connect 14 0 16 0;
+#X connect 15 0 10 0;
+#X connect 16 0 20 0;
+#X connect 16 1 17 0;
+#X connect 18 0 27 0;
+#X connect 18 1 19 0;
+#X connect 20 0 18 0;
+#X connect 21 0 28 0;
+#X connect 21 1 22 0;
+#X connect 23 0 29 0;
+#X connect 23 1 24 0;
+#X connect 25 0 32 0;
+#X connect 25 1 26 0;
+#X connect 27 0 21 0;
+#X connect 28 0 23 0;
+#X connect 29 0 25 0;
+#X connect 30 1 31 0;
+#X connect 32 0 30 0;
+#X restore 365 379 pd \$0-arguments;
+#X msg 365 556;
+#X msg 509 377 set \, addsemi \, adddollar 1 \, add2 obj 10 10;
+#X obj 47 48 t b b b b b;
+#X msg 487 530 set;
+#X obj 77 483 symbol;
+#X msg 365 404 add2 \$1;
+#X connect 1 0 2 0;
+#X connect 2 0 12 0;
+#X connect 3 0 22 0;
+#X connect 5 0 7 0;
+#X connect 6 0 10 0;
+#X connect 7 0 6 0;
+#X connect 7 1 8 0;
+#X connect 8 0 9 0;
+#X connect 10 0 11 0;
+#X connect 10 1 24 0;
+#X connect 11 0 4 0;
+#X connect 12 0 24 1;
+#X connect 12 1 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 19 0 25 0;
+#X connect 21 0 20 0;
+#X connect 22 0 5 0;
+#X connect 22 1 1 0;
+#X connect 22 2 15 0;
+#X connect 22 3 19 0;
+#X connect 22 4 21 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 25 0 20 0;
diff --git a/sssad/_sssad/sssad-persistence.pd b/sssad/_sssad/sssad-persistence.pd
new file mode 100644
index 0000000..4071e1e
--- /dev/null
+++ b/sssad/_sssad/sssad-persistence.pd
@@ -0,0 +1,17 @@
+#N canvas 411 241 354 407 10;
+#X obj 73 159 list;
+#X obj 73 219 list prepend \$1;
+#X obj 73 246 list prepend persist;
+#X obj 73 269 s SSSAD_ADMIN;
+#X obj 73 67 r SSSAD_ADMIN;
+#X obj 73 93 route save;
+#X obj 73 115 b;
+#X text 51 28 args: SSAD-name \$0;
+#X obj 96 136 r \$2-sssad-data;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 8 0 0 1;
diff --git a/sssad/auto.pd b/sssad/auto.pd
new file mode 100644
index 0000000..3e1ab52
--- /dev/null
+++ b/sssad/auto.pd
@@ -0,0 +1,6 @@
+#N canvas 209 159 450 300 10;
+#X obj 5 47 s \$2;
+#X obj 98 3 r \$1;
+#X obj 5 24 sssad/sssad \$2;
+#X connect 1 0 2 1;
+#X connect 2 0 0 0;
diff --git a/sssad/datastore-help.pd b/sssad/datastore-help.pd
new file mode 100644
index 0000000..984986b
--- /dev/null
+++ b/sssad/datastore-help.pd
@@ -0,0 +1,30 @@
+#N canvas 210 191 682 468 10;
+#N canvas 0 0 450 300 datastore 1;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD z 1 \; SSSAD y 2 \; SSSAD x 104 \; SSSAD_ADMIN
+set \;;
+#X connect 0 0 1 0;
+#X restore 11 86 pd datastore;
+#X obj 11 113 sssad/datastore;
+#X floatatom 57 279 5 0 0 0 - - -;
+#X obj 57 331 hradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1
+-1 1;
+#X obj 60 212 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 10400 1;
+#X obj 13 305 sssad/sssad y;
+#X obj 13 355 sssad/sssad z;
+#X text 10 9 The datastore abstraction allows you to save sssad data
+into a message box that gets saved with the patch \, instead of writing
+it into a text file.;
+#X text 9 53 It requires that you first create an empty sub patch called
+"datastore" as below:;
+#X obj 13 236 sssad/sssad x;
+#X text 163 147 Use these GUIs to test it out \, and check the contents
+of the 'datastore' subpatch to see the data being written as you change
+it.;
+#X connect 2 0 5 1;
+#X connect 3 0 6 1;
+#X connect 4 0 9 1;
+#X connect 5 0 2 0;
+#X connect 6 0 3 0;
+#X connect 9 0 4 0;
diff --git a/sssad/datastore.pd b/sssad/datastore.pd
new file mode 100644
index 0000000..4f6666d
--- /dev/null
+++ b/sssad/datastore.pd
@@ -0,0 +1,64 @@
+#N canvas 0 0 733 629 10;
+#X text 40 597 Hint: get creative with the [OSCroute] external!;
+#X obj 6 22 bng 14 250 50 0 \$0-save empty save 17 7 0 8 -128992 -66577
+-1;
+#X obj 6 40 bng 14 250 50 0 \$0-load empty load 17 7 0 8 -128992 -1
+-1;
+#X obj 16 103 r \$0-load;
+#X text 103 27 This abstraction and all the other sssad state saving
+stuff is due to the genius of Frank Barknecht. Any mistakes are purely
+my own.;
+#X text 84 104 if the load button is pressed;
+#X obj 442 350 r SSSAD_ADMIN;
+#X obj 442 405 route persist;
+#X obj 442 375 list trim;
+#X obj 442 461 list trim;
+#X msg 96 239 save;
+#X obj 118 473 s SSSAD_ADMIN;
+#X obj 442 437 list prepend add SSSAD;
+#X msg 140 433 set \, addsemi;
+#X msg 96 501 add SSSAD_ADMIN set;
+#X obj 16 126 s SSSADDATA;
+#X obj 233 540 s SSSADDATA;
+#X obj 96 215 r \$0-save;
+#X obj 96 262 t b a b b b;
+#X obj 168 287 s SSSAD_SAVE;
+#X msg 327 143 bang;
+#X obj 327 186 list trim;
+#X obj 327 165 list append \$1;
+#X obj 327 207 route 0;
+#X obj 327 123 loadbang;
+#X obj 478 253 makefilename pd-%s;
+#X msg 154 356 \; \$1 clear \; \$1 obj 10 10 r SSSADDATA \; \$1 msg
+10 30 \; \$1 connect 0 0 1 0 \;;
+#X obj 154 335 symbol;
+#X msg 191 316 symbol \$1;
+#X msg 328 253 symbol pd-datastore;
+#X obj 478 232 list;
+#X connect 3 0 15 0;
+#X connect 6 0 8 0;
+#X connect 7 0 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 16 0;
+#X connect 10 0 18 0;
+#X connect 12 0 9 0;
+#X connect 13 0 16 0;
+#X connect 14 0 16 0;
+#X connect 17 0 10 0;
+#X connect 18 0 14 0;
+#X connect 18 1 11 0;
+#X connect 18 2 13 0;
+#X connect 18 3 27 0;
+#X connect 18 4 19 0;
+#X connect 20 0 22 0;
+#X connect 21 0 23 0;
+#X connect 22 0 21 0;
+#X connect 23 0 29 0;
+#X connect 23 1 30 0;
+#X connect 24 0 20 0;
+#X connect 25 0 28 0;
+#X connect 27 0 26 0;
+#X connect 28 0 27 1;
+#X connect 29 0 28 0;
+#X connect 30 0 25 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sssad/load.pd b/sssad/load.pd
new file mode 100644
index 0000000..9abc9fc
--- /dev/null
+++ b/sssad/load.pd
@@ -0,0 +1,23 @@
+#N canvas 0 0 450 300 10;
+#X obj 11 191 textfile;
+#X obj 11 221 s SSSAD;
+#X obj 11 133 until;
+#X msg 11 112 100;
+#X obj 79 218 s SSSAD_ADMIN;
+#X msg 79 193 set;
+#X obj 11 89 t b a;
+#X msg 58 134 read \$1 \, rewind;
+#X text 62 111 Avoid loops. A bang normally also works.;
+#X obj 11 42 loadbang;
+#X obj 11 65 symbol \$1;
+#X connect 0 0 1 0;
+#X connect 0 1 2 1;
+#X connect 0 1 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 3 0;
+#X connect 6 1 7 0;
+#X connect 7 0 0 0;
+#X connect 9 0 10 0;
+#X connect 10 0 6 0;
diff --git a/sssad/panel.pd b/sssad/panel.pd
new file mode 100644
index 0000000..088af6d
--- /dev/null
+++ b/sssad/panel.pd
@@ -0,0 +1,92 @@
+#N canvas 0 0 733 629 10;
+#X obj 601 349 textfile;
+#X msg 484 256 clear;
+#X obj 601 273 list prepend add;
+#X obj 601 299 list trim;
+#X obj 86 520 textfile;
+#X obj 86 550 s SSSAD;
+#X obj 86 462 until;
+#X msg 86 441 100;
+#X text 81 572 also received inside sssad;
+#X obj 465 350 s SSSAD_ADMIN;
+#X obj 601 205 r SSSAD_ADMIN;
+#X obj 601 249 route persist;
+#X obj 601 227 list trim;
+#X msg 465 284 save;
+#X msg 479 323 set;
+#X obj 154 547 s SSSAD_ADMIN;
+#X msg 154 522 set;
+#X obj 446 133 savepanel;
+#X msg 446 397 write \$1;
+#X obj 6 24 bng 14 250 50 0 \$0-save_as empty save_as 17 7 0 8 -128992
+-1 -1;
+#X obj 86 418 t b a;
+#X msg 133 463 read \$1 \, rewind;
+#X obj 86 346 openpanel;
+#X text 118 441 Avoid loops. A bang normally also works.;
+#X obj 86 395 symbol;
+#X text 40 597 Hint: get creative with the [OSCroute] external!;
+#X obj 446 110 r \$0-save_as;
+#X obj 374 110 r \$0-save;
+#X obj 6 42 bng 14 250 50 0 \$0-save empty save 17 7 0 8 -128992 -66577
+-1;
+#X obj 6 60 bng 14 250 50 0 \$0-load empty load 17 7 0 8 -128992 -66577
+-66577;
+#X obj 86 323 r \$0-load;
+#X obj 446 214 t a b b b;
+#X text 103 27 This abstraction and all the other sssad state saving
+stuff is due to the genius of Frank Barknecht. Any mistakes are purely
+my own.;
+#X obj 504 235 s SSSAD_SAVE;
+#X obj 446 193 symbol;
+#X obj 14 248 sel 0;
+#X obj 14 202 loadbang;
+#X obj 14 223 list append \$1;
+#X obj 74 292 s \$0/filename;
+#X text 11 175 only set the filename if one is supplied;
+#X obj 123 372 r \$0/filename;
+#X obj 520 132 r \$0/filename;
+#X obj 344 214 s \$0/filename;
+#X obj 446 155 t s s;
+#X text 154 324 if the load button is pressed;
+#X text 372 93 if save or save as are clicked;
+#X obj 44 270 t b s;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 1 6 1;
+#X connect 4 1 16 0;
+#X connect 6 0 4 0;
+#X connect 7 0 6 0;
+#X connect 10 0 12 0;
+#X connect 11 0 2 0;
+#X connect 12 0 11 0;
+#X connect 13 0 9 0;
+#X connect 14 0 9 0;
+#X connect 16 0 15 0;
+#X connect 17 0 43 0;
+#X connect 18 0 0 0;
+#X connect 20 0 7 0;
+#X connect 20 1 21 0;
+#X connect 21 0 4 0;
+#X connect 22 0 24 0;
+#X connect 24 0 20 0;
+#X connect 26 0 17 0;
+#X connect 27 0 34 0;
+#X connect 30 0 22 0;
+#X connect 31 0 18 0;
+#X connect 31 1 13 0;
+#X connect 31 2 1 0;
+#X connect 31 3 33 0;
+#X connect 34 0 31 0;
+#X connect 35 1 46 0;
+#X connect 36 0 37 0;
+#X connect 37 0 35 0;
+#X connect 40 0 24 1;
+#X connect 41 0 34 1;
+#X connect 43 0 42 0;
+#X connect 43 1 34 0;
+#X connect 46 0 24 0;
+#X connect 46 1 38 0;
+#X coords 0 -1 1 1 85 80 1 0 0;
diff --git a/sssad/sssad-help.pd b/sssad/sssad-help.pd
new file mode 100644
index 0000000..af05e78
--- /dev/null
+++ b/sssad/sssad-help.pd
@@ -0,0 +1,99 @@
+#N canvas 205 58 722 694 10;
+#X obj 177 20 cnv 15 450 25 empty empty empty 10 12 1 12 -1 -262144
+0;
+#X obj 174 17 cnv 15 450 25 empty empty empty 10 12 1 12 -176779 -262144
+0;
+#X obj 171 14 cnv 15 450 25 empty empty sssad_-_Stupidsupersimplistic-State-Saving_ADVANCED
+10 12 1 12 -258699 -262144 0;
+#X text 170 73 [sssad] is used for saving and restoring state data
+spread around in a patch to a textfile composed of "tagged" messages.
+;
+#X obj 32 77 sssad key;
+#N canvas 489 130 587 611 SSAD-globals 0;
+#X obj 24 25 r SSSAD;
+#X obj 24 49 spigot;
+#X obj 72 47 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 24 71 print SSSAD;
+#X obj 22 316 spigot;
+#X obj 70 314 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 22 292 r SSSAD_ADMIN;
+#X obj 22 338 print SSSAD_ADMIN;
+#X text 137 289 SSSAD_ADMIN is used to send administrative messages
+to all [sssad] objects.;
+#X obj 23 554 s SSSAD_ADMIN;
+#X msg 23 464 save;
+#X msg 23 415 set;
+#X text 21 375 SSSAD_ADMIN accepts the following meta-messages:;
+#X text 134 414 set: make all [sssad] objects output their current
+values to their outlets.;
+#X text 134 464 save: let exactly one [ssssad] object per tag-key send
+a message composed of the word "persist" \, the current tag-key and
+the values to the receiver called SSSAD_ADMIN.;
+#X text 135 514 You may use this to save key/value-data to a [textfile].
+;
+#X obj 23 145 s SSSAD;
+#X msg 23 120 key 5 6 7 8;
+#X obj 24 198 s SSSAD;
+#X msg 24 173 list key a b c;
+#X text 137 118 It is possible to remotely set a sssad-value through
+the SSSAD-receiver;
+#X text 135 40 SSSAD is a bus where the current sssad-data is communicated
+between [sssad] instances:;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 1;
+#X connect 4 0 7 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 0;
+#X connect 10 0 9 0;
+#X connect 11 0 9 0;
+#X connect 17 0 16 0;
+#X connect 19 0 18 0;
+#X restore 28 562 pd SSAD-globals;
+#X text 172 233 Using [ssssad];
+#X text 171 247 ==============;
+#X text 173 274 Using [ssssad] is very simple: [sssad] requires an
+obligatory argument to name the key to store data at.;
+#X text 169 321 The left inlet will accept a bang and make [sssad]
+output the value currently stored at the key used in this [sssad].
+;
+#X obj 29 238 sssad key;
+#X floatatom 87 211 5 0 0 0 - - -;
+#X msg 29 212 bang;
+#X obj 29 322 sssad key;
+#X msg 29 296 bang;
+#X symbolatom 87 297 10 0 0 0 - - -;
+#X obj 29 423 sssad key;
+#X obj 29 400 t b a;
+#X msg 29 375 1 2 3 4;
+#X obj 29 264 print @key_1;
+#X obj 29 349 print @key_2;
+#X obj 29 450 print @key_3;
+#X text 171 358 The right inlet will accept anything and will store
+that anything in all [sssad] objects of the same key. The right inlet
+is *cold* and will not generate any output. Use a [trigger bang anything]
+if you want direct output.;
+#X obj 29 524 r SSSAD_ADMIN;
+#X obj 30 500 r SSSAD;
+#X text 173 498 [sssad] uses two global senders and receivers \, which
+you can intercept to use for saving data to a file: SSSAD and SSSAD_ADMIN.
+;
+#X text 173 563 Detailed explanation inside.;
+#X obj 29 634 sssad-example;
+#X text 170 130 A tagged message in this context is a list-message
+of elements whose first element denotes the key of the data \, while
+the rest of the message are the values stored under that key.;
+#X text 174 632 See [sssad-example] to get inspired for how to use
+[sssad] in real life.;
+#X connect 10 0 19 0;
+#X connect 11 0 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 20 0;
+#X connect 14 0 13 0;
+#X connect 15 0 13 1;
+#X connect 16 0 21 0;
+#X connect 17 0 16 0;
+#X connect 17 1 16 1;
+#X connect 18 0 17 0;
diff --git a/sssad/sssad.pd b/sssad/sssad.pd
new file mode 100644
index 0000000..bb103bd
--- /dev/null
+++ b/sssad/sssad.pd
@@ -0,0 +1,31 @@
+#N canvas 584 398 564 509 10;
+#X obj 153 54 inlet;
+#X obj 153 417 outlet;
+#X obj 153 395 list;
+#X obj 176 161 r SSSAD;
+#X obj 218 134 s SSSAD;
+#X obj 218 112 list prepend \$1;
+#X obj 176 189 list trim;
+#X obj 218 54 inlet;
+#X obj 56 308 r SSSAD_ADMIN;
+#X obj 56 356 b;
+#X obj 56 334 route set;
+#X obj 153 81 b;
+#X obj 176 252 route \$1;
+#X obj 191 282 s \$0-sssad-data;
+#X obj 241 335 _sssad/singleton \$1.SSAD sssad-persistence \$1 \$0;
+#X obj 241 362 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X connect 0 0 11 0;
+#X connect 2 0 1 0;
+#X connect 3 0 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 12 0;
+#X connect 7 0 5 0;
+#X connect 8 0 10 0;
+#X connect 9 0 2 0;
+#X connect 10 0 9 0;
+#X connect 11 0 2 0;
+#X connect 12 0 2 1;
+#X connect 12 0 13 0;
+#X connect 14 0 15 0;
diff --git a/sssad/value.pd b/sssad/value.pd
new file mode 100644
index 0000000..5b56be6
--- /dev/null
+++ b/sssad/value.pd
@@ -0,0 +1,11 @@
+#N canvas 363 355 450 300 10;
+#X obj 211 36 sssad/auto \$0/value \$1/value;
+#X obj 104 116 nbx 5 14 -1e+37 1e+37 0 0 \$0/value \$1/value empty
+0 -6 0 8 -260818 -1 -1 0 256;
+#X obj 103 157 r \$0/value;
+#X obj 103 179 outlet;
+#X obj 101 18 inlet;
+#X obj 101 39 s \$1/value;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X coords 0 -1 1 1 54 34 1 100 100;
diff --git a/sx/addnoise.pd b/sx/addnoise.pd
new file mode 100644
index 0000000..4f073b6
--- /dev/null
+++ b/sx/addnoise.pd
@@ -0,0 +1,36 @@
+#N canvas 162 213 450 300 10;
+#X obj 129 107 inlet;
+#X obj 129 270 outlet;
+#X obj 129 215 pix_sig2pix~ 128 128;
+#X obj 173 61 noise~;
+#X obj 51 31 tgl 14 0 \$0/onoff \$1/onoff onoff 0 -6 0 8 -233017 -128992
+-1 1 1;
+#X obj 5 31 nbx 4 14 0 1 0 1 \$0/rage \$1/rage rage 0 -6 0 8 -233017
+-128992 -1 0.36 256;
+#X obj 309 106 r \$0/onoff;
+#X obj 173 84 abs~;
+#X obj 174 128 *~;
+#X obj 190 105 r \$0/rage;
+#X obj 129 245 pix_texture;
+#X obj 309 128 switch~ 16384;
+#X obj 174 172 +~ 1;
+#X obj 174 150 *~ -1;
+#X obj 43 147 r \$0/smooth;
+#X obj 5 60 tgl 14 1 \$0/smooth \$1/smooth smooth 0 -6 0 8 -233017
+-128992 -1 0 1;
+#X msg 43 175 quality \$1;
+#X connect 0 0 2 0;
+#X connect 2 0 10 0;
+#X connect 3 0 7 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 8 0 13 0;
+#X connect 9 0 8 1;
+#X connect 10 0 1 0;
+#X connect 12 0 2 1;
+#X connect 12 0 2 2;
+#X connect 12 0 2 0;
+#X connect 13 0 12 0;
+#X connect 14 0 16 0;
+#X connect 16 0 10 0;
+#X coords 0 -1 1 1 85 80 1 0 0;
diff --git a/sx/binter.pd b/sx/binter.pd
new file mode 100644
index 0000000..1ba0221
--- /dev/null
+++ b/sx/binter.pd
@@ -0,0 +1,17 @@
+#N canvas 326 53 678 635 10;
+#X obj 145 15 inlet;
+#X obj 6 26 nbx 3 14 -1e+37 1e+37 0 0 \$0/stretch \$1/stretch stretch
+0 -6 0 8 -233017 -128992 -1 148.61 256;
+#X obj 126 130 disk 1 16 0.9;
+#X obj 257 137 scaleXYZ;
+#X obj 128 102 separator;
+#X obj 235 72 separator;
+#X obj 261 173 cylinder 0.1 8;
+#X obj 309 114 r \$0/stretch;
+#X connect 0 0 5 0;
+#X connect 0 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 7 0 3 3;
+#X coords 0 -1 1 1 85 45 1 0 0;
diff --git a/sx/blend.pd b/sx/blend.pd
new file mode 100644
index 0000000..3b31aeb
--- /dev/null
+++ b/sx/blend.pd
@@ -0,0 +1,17 @@
+#N canvas 0 0 450 300 10;
+#X msg 168 64 snap;
+#X obj 168 35 t b a;
+#X obj 168 11 inlet;
+#X obj 168 130 separator;
+#X obj 168 195 rectangle 6 3;
+#X obj 168 152 alpha 1;
+#X obj 168 97 pix_snap2tex 0 0 512 512;
+#X obj 168 174 colorRGB 1 1 1 0.5;
+#X connect 0 0 6 0;
+#X connect 1 0 0 0;
+#X connect 1 1 6 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 4 0;
diff --git a/sx/blob-help.pd b/sx/blob-help.pd
new file mode 100644
index 0000000..11bc548
--- /dev/null
+++ b/sx/blob-help.pd
@@ -0,0 +1,19 @@
+#N canvas 398 36 562 420 10;
+#X obj 20 42 sx/gemwin;
+#X obj 161 323 sx/blob;
+#X obj 161 27 gemhead;
+#X obj 161 52 sx/props;
+#X text 19 6 the blob takes a list of verticies of triangular faces
+in the right inlet.;
+#X obj 214 167 loadbang;
+#X msg 214 188 -1 0 0 0 -1 0 1 0 0 -1 0 1 0 -1 1 1 0 1;
+#X obj 191 281 list;
+#X obj 161 167 t a b;
+#X text 17 355 You can use the blender export script in the;
+#X connect 2 0 3 0;
+#X connect 3 0 8 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 1 1;
+#X connect 8 0 1 0;
+#X connect 8 1 7 0;
diff --git a/sx/blob.pd b/sx/blob.pd
new file mode 100644
index 0000000..56f088d
--- /dev/null
+++ b/sx/blob.pd
@@ -0,0 +1,105 @@
+#N canvas 364 24 641 641 10;
+#X obj 24 571 GEMglEnd;
+#X obj 24 387 GEMglVertex3f -1 0 0;
+#X obj 24 505 GEMglVertex3f 1 0 0;
+#X obj 24 439 GEMglVertex3f 0 -1 0;
+#X obj 89 187 loadbang;
+#X obj 24 318 GEMglBegin;
+#X obj 497 -9 inlet;
+#X obj 497 137 until;
+#X obj 497 175 list append;
+#X obj 497 94 t b l;
+#X obj 603 220 bang;
+#X obj 497 49 list;
+#X obj 497 220 list split 9;
+#X text 411 221 count faces;
+#X obj 497 266 f;
+#X obj 527 266 + 1;
+#X msg 497 243 bang;
+#X obj 497 16 t b l b;
+#X msg 541 94 0;
+#X obj 24 71 repeat 1;
+#X obj 497 316 s \$0-size;
+#X obj 75 50 r \$0-size;
+#X obj 24 98 t a b;
+#X obj 89 209 GLdefine GL_TRIANGLES;
+#X obj 292 104 list;
+#X obj 89 15 t a b;
+#X obj 220 239 list append;
+#X obj 220 284 list split 9;
+#X obj 24 601 outlet;
+#X obj 497 291 + 1;
+#X floatatom 455 317 5 0 0 0 - - -;
+#X obj 220 326 unpack f f f f f f f f f;
+#X obj 89 -8 inlet;
+#X obj 124 108 loadbang;
+#X obj 24 153 GEMglShadeModel;
+#X obj 124 130 GLdefine GL_FLAT;
+#X obj 24 358 GEMglTexCoord3f 0 0 0;
+#X obj 24 412 GEMglTexCoord3f 1 0 0;
+#X obj 24 468 GEMglTexCoord3f 0 1 0;
+#X obj 24 542 GEMglNormal3f;
+#X obj 250 444 sx/normal;
+#X obj 220 305 t l l;
+#X obj 250 467 unpack f f f;
+#X connect 0 0 28 0;
+#X connect 1 0 37 0;
+#X connect 2 0 39 0;
+#X connect 3 0 38 0;
+#X connect 4 0 23 0;
+#X connect 5 0 36 0;
+#X connect 6 0 17 0;
+#X connect 7 0 8 0;
+#X connect 8 0 12 0;
+#X connect 9 0 7 0;
+#X connect 9 1 8 1;
+#X connect 10 0 7 1;
+#X connect 11 0 9 0;
+#X connect 12 0 16 0;
+#X connect 12 1 8 1;
+#X connect 12 2 10 0;
+#X connect 14 0 15 0;
+#X connect 14 0 29 0;
+#X connect 15 0 14 1;
+#X connect 16 0 14 0;
+#X connect 17 0 11 0;
+#X connect 17 1 11 1;
+#X connect 17 1 24 1;
+#X connect 17 2 18 0;
+#X connect 18 0 14 1;
+#X connect 19 0 22 0;
+#X connect 21 0 19 1;
+#X connect 22 0 34 0;
+#X connect 22 1 26 0;
+#X connect 23 0 5 1;
+#X connect 24 0 26 1;
+#X connect 25 0 19 0;
+#X connect 25 1 24 0;
+#X connect 26 0 27 0;
+#X connect 27 0 41 0;
+#X connect 27 1 26 1;
+#X connect 29 0 20 0;
+#X connect 29 0 30 0;
+#X connect 31 0 1 1;
+#X connect 31 1 1 2;
+#X connect 31 2 1 3;
+#X connect 31 3 3 1;
+#X connect 31 4 3 2;
+#X connect 31 5 3 3;
+#X connect 31 6 2 1;
+#X connect 31 7 2 2;
+#X connect 31 8 2 3;
+#X connect 32 0 25 0;
+#X connect 33 0 35 0;
+#X connect 34 0 5 0;
+#X connect 35 0 34 1;
+#X connect 36 0 1 0;
+#X connect 37 0 3 0;
+#X connect 38 0 2 0;
+#X connect 39 0 0 0;
+#X connect 40 0 42 0;
+#X connect 41 0 31 0;
+#X connect 41 1 40 0;
+#X connect 42 0 39 1;
+#X connect 42 1 39 2;
+#X connect 42 2 39 3;
diff --git a/sx/blob2.pd b/sx/blob2.pd
new file mode 100644
index 0000000..d96f462
--- /dev/null
+++ b/sx/blob2.pd
@@ -0,0 +1,66 @@
+#N canvas 364 24 641 641 10;
+#X obj 497 -9 inlet;
+#X obj 497 137 until;
+#X obj 497 175 list append;
+#X obj 497 94 t b l;
+#X obj 603 220 bang;
+#X obj 497 49 list;
+#X obj 497 220 list split 9;
+#X text 411 221 count faces;
+#X obj 497 266 f;
+#X obj 527 266 + 1;
+#X msg 497 243 bang;
+#X obj 497 16 t b l b;
+#X msg 541 94 0;
+#X obj 24 71 repeat 1;
+#X obj 497 316 s \$0-size;
+#X obj 75 50 r \$0-size;
+#X obj 24 98 t a b;
+#X obj 292 104 list;
+#X obj 89 15 t a b;
+#X obj 220 239 list append;
+#X obj 220 284 list split 9;
+#X obj 24 601 outlet;
+#X obj 497 291 + 1;
+#X floatatom 455 317 5 0 0 0 - - -;
+#X obj 89 -8 inlet;
+#X obj 24 543 primTri 0 0 0 1 0 0 1 1 0;
+#X obj 220 308 list split 3;
+#X obj 259 332 list split 3;
+#X connect 0 0 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 6 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 1;
+#X connect 4 0 1 1;
+#X connect 5 0 3 0;
+#X connect 6 0 10 0;
+#X connect 6 1 2 1;
+#X connect 6 2 4 0;
+#X connect 8 0 9 0;
+#X connect 8 0 22 0;
+#X connect 9 0 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 5 0;
+#X connect 11 1 5 1;
+#X connect 11 1 17 1;
+#X connect 11 2 12 0;
+#X connect 12 0 8 1;
+#X connect 13 0 16 0;
+#X connect 15 0 13 1;
+#X connect 16 0 25 0;
+#X connect 16 1 19 0;
+#X connect 17 0 19 1;
+#X connect 18 0 13 0;
+#X connect 18 1 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 26 0;
+#X connect 20 1 19 1;
+#X connect 22 0 14 0;
+#X connect 22 0 23 0;
+#X connect 24 0 18 0;
+#X connect 25 0 21 0;
+#X connect 26 0 25 1;
+#X connect 26 1 27 0;
+#X connect 27 0 25 2;
+#X connect 27 1 25 3;
diff --git a/sx/drift.pd b/sx/drift.pd
new file mode 100644
index 0000000..21cbf86
--- /dev/null
+++ b/sx/drift.pd
@@ -0,0 +1,24 @@
+#N canvas 0 0 450 300 10;
+#X obj 15 9 inlet;
+#X obj 15 148 line \$1;
+#X obj 15 33 unpack f f f;
+#X obj 85 149 line \$1;
+#X obj 155 150 line \$1;
+#X obj 15 182 pack f f f;
+#X obj 15 210 outlet;
+#X obj 79 209 s \$2;
+#X obj 15 90 pack f \$1;
+#X obj 85 90 pack f \$1;
+#X obj 155 90 pack f \$1;
+#X connect 0 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 2 2 10 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 2;
+#X connect 5 0 6 0;
+#X connect 5 0 7 0;
+#X connect 8 0 1 0;
+#X connect 9 0 3 0;
+#X connect 10 0 4 0;
diff --git a/sx/explode-help.pd b/sx/explode-help.pd
new file mode 100644
index 0000000..5fb94df
--- /dev/null
+++ b/sx/explode-help.pd
@@ -0,0 +1,16 @@
+#N canvas 326 160 542 476 10;
+#X obj 20 42 sx/gemwin;
+#X obj 161 341 sx/blob;
+#X obj 161 27 gemhead;
+#X obj 161 52 sx/props;
+#X text 19 6 the blob takes a list of verticies of triangular faces
+in the right inlet.;
+#X obj 205 268 sx/explode;
+#X obj 161 162 t a b;
+#X msg 205 185 -1 0 0 0 -1 0 1 0 0 1 0 1 0 -1 1 -1 0 1;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 5 0 1 1;
+#X connect 6 0 1 0;
+#X connect 6 1 7 0;
+#X connect 7 0 5 0;
diff --git a/sx/explode.pd b/sx/explode.pd
new file mode 100644
index 0000000..daa1c7d
--- /dev/null
+++ b/sx/explode.pd
@@ -0,0 +1,100 @@
+#N canvas 25 90 427 534 10;
+#X obj 5 39 nbx 3 14 -100000 100000 0 1 \$0/explode \$1/explode explode
+0 -6 0 8 -233017 -128992 -1 0 256;
+#X obj 105 5 inlet;
+#X text 150 9 send geometry in here;
+#X obj 105 506 outlet;
+#X obj 105 208 until;
+#X obj 105 246 list append;
+#X obj 211 291 bang;
+#X obj 105 291 list split 9;
+#X obj 206 445 t l;
+#X obj 105 445 list prepend;
+#X obj 105 165 t b l b;
+#X obj 135 340 sx/normal;
+#X obj 105 314 t l l;
+#N canvas 336 253 450 300 add-vector-to-face 0;
+#X obj 16 7 inlet;
+#X obj 335 4 inlet;
+#X obj 16 274 outlet;
+#X obj 16 31 unpack f f f f f f f f f;
+#X obj 16 220 +;
+#X obj 43 220 +;
+#X obj 70 220 +;
+#X obj 97 220 +;
+#X obj 124 220 +;
+#X obj 151 220 +;
+#X obj 178 220 +;
+#X obj 205 220 +;
+#X obj 232 220 +;
+#X obj 16 249 pack f f f f f f f f f;
+#X obj 335 26 unpack f f f;
+#X obj 335 53 *;
+#X obj 374 53 *;
+#X obj 414 53 *;
+#X obj 415 3 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 14 0;
+#X connect 3 0 4 0;
+#X connect 3 1 5 0;
+#X connect 3 2 6 0;
+#X connect 3 3 7 0;
+#X connect 3 4 8 0;
+#X connect 3 5 9 0;
+#X connect 3 6 10 0;
+#X connect 3 7 11 0;
+#X connect 3 8 12 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 1;
+#X connect 6 0 13 2;
+#X connect 7 0 13 3;
+#X connect 8 0 13 4;
+#X connect 9 0 13 5;
+#X connect 10 0 13 6;
+#X connect 11 0 13 7;
+#X connect 12 0 13 8;
+#X connect 13 0 2 0;
+#X connect 14 0 15 0;
+#X connect 14 1 16 0;
+#X connect 14 2 17 0;
+#X connect 15 0 4 1;
+#X connect 15 0 7 1;
+#X connect 15 0 10 1;
+#X connect 16 0 5 1;
+#X connect 16 0 11 1;
+#X connect 16 0 8 1;
+#X connect 17 0 6 1;
+#X connect 17 0 9 1;
+#X connect 17 0 12 1;
+#X connect 18 0 17 1;
+#X connect 18 0 16 1;
+#X connect 18 0 15 1;
+#X restore 105 389 pd add-vector-to-face;
+#X obj 105 143 list;
+#X obj 105 30 t b a;
+#X obj 217 72 r \$0/explode;
+#X obj 217 93 t b f;
+#X connect 1 0 15 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 4 1;
+#X connect 7 0 12 0;
+#X connect 7 1 5 1;
+#X connect 7 2 6 0;
+#X connect 8 0 9 1;
+#X connect 9 0 8 0;
+#X connect 9 0 3 0;
+#X connect 10 0 4 0;
+#X connect 10 1 5 1;
+#X connect 10 2 9 1;
+#X connect 11 0 13 1;
+#X connect 12 0 13 0;
+#X connect 12 1 11 0;
+#X connect 13 0 9 0;
+#X connect 14 0 10 0;
+#X connect 15 0 14 0;
+#X connect 15 1 14 1;
+#X connect 16 0 17 0;
+#X connect 17 0 14 0;
+#X connect 17 1 13 2;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/fakecyl.pd b/sx/fakecyl.pd
new file mode 100644
index 0000000..f5d0c9d
--- /dev/null
+++ b/sx/fakecyl.pd
@@ -0,0 +1,26 @@
+#N canvas 489 326 450 300 10;
+#X obj 44 167 rotateXYZ 45 0 0;
+#X obj 44 70 repeat 8;
+#X obj 14 45 t a a;
+#X obj 14 3 inlet;
+#X obj 44 93 translateXYZ 0 0 1.2;
+#X obj 44 142 translateXYZ 0 0 -1.2;
+#X obj 14 216 outlet;
+#X obj 199 68 * 1.2;
+#X obj 222 100 * -1;
+#X obj 158 47 / 2;
+#X obj 44 116 rectangle 2 0.5;
+#X obj 191 13 inlet;
+#X connect 1 0 4 0;
+#X connect 2 0 6 0;
+#X connect 2 1 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 7 0 8 0;
+#X connect 7 0 4 3;
+#X connect 8 0 5 3;
+#X connect 9 0 10 2;
+#X connect 10 0 5 0;
+#X connect 11 0 9 0;
+#X connect 11 0 7 0;
diff --git a/sx/gemwin.pd b/sx/gemwin.pd
new file mode 100644
index 0000000..6f44fac
--- /dev/null
+++ b/sx/gemwin.pd
@@ -0,0 +1,114 @@
+#N canvas 40 166 521 483 10;
+#X obj 22 396 gemwin;
+#X msg 94 162 destroy;
+#X msg 49 212 1;
+#X msg 103 185 0;
+#N canvas 22 20 213 300 Gem.init 0;
+#X obj 71 254 outlet;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X msg 95 203 dimen 1024 576;
+#X obj 71 81 inlet;
+#X msg 58 230 perspec -1 1 -1 1 1 100;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 2 1 1 0;
+#X connect 3 0 0 0;
+#X connect 3 0 6 0;
+#X connect 4 0 0 0;
+#X connect 5 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 0 0;
+#X restore 112 263 pd Gem.init;
+#X obj 23 90 route 0 1;
+#X obj 8 39 tgl 14 0 \$0/onoff \$1/onoff onoff 0 -6 0 8 -233017 -128992
+-1 0 1;
+#X obj 23 67 r \$0/onoff;
+#X obj 289 210 world_light;
+#X obj 211 338 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 211 362 debug \$1;
+#X obj 337 -3 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 333 31 debug \$1;
+#X obj 305 120 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 304 140 debug \$1;
+#X obj 282 180 rotateXYZ 0 240 0;
+#X obj 300 59 rotateXYZ 240 0 0;
+#X obj 300 81 world_light 0.5;
+#X obj 274 269 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 270 303 debug \$1;
+#X obj 322 333 world_light 0.2 0.5 0.9;
+#X obj 125 42 inlet;
+#X msg 129 231 border \$1;
+#X obj 45 39 tgl 14 0 \$0/border \$1/border border 0 -6 0 8 -233017
+-128992 -1 0 1;
+#X obj 129 209 r \$0/border;
+#X obj 303 275 rotateXYZ 0 -80 180;
+#X obj 280 387 rotateXYZ 0 100 0;
+#X obj 283 445 world_light;
+#X msg 362 418 0.3 0.3 0.3;
+#X msg 402 136 0.8 0.8 0.8;
+#X obj 402 111 loadbang;
+#X obj 450 257 loadbang;
+#X obj 416 390 loadbang;
+#X msg 438 302 0.7 0.7 0.7;
+#X obj 26 154 t b b b;
+#X msg 3 193 create;
+#X obj 161 112 r \$1/color;
+#X msg 161 134 color \$1 \$2 \$3 \;;
+#X msg 99 296 lighting 0;
+#X obj 246 21 gemhead -80;
+#X obj 91 127 t b b b;
+#X obj 145 178 r \$1/fog;
+#X obj 98 330 r \$1/lighting;
+#X msg 97 351 lighting \$1;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 40 0;
+#X connect 5 1 34 0;
+#X connect 7 0 5 0;
+#X connect 9 0 10 0;
+#X connect 10 0 27 0;
+#X connect 11 0 12 0;
+#X connect 12 0 17 0;
+#X connect 13 0 14 0;
+#X connect 14 0 8 0;
+#X connect 15 0 8 0;
+#X connect 16 0 17 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 21 0 0 0;
+#X connect 22 0 0 0;
+#X connect 24 0 22 0;
+#X connect 25 0 20 0;
+#X connect 26 0 27 0;
+#X connect 28 0 27 1;
+#X connect 29 0 15 3;
+#X connect 30 0 29 0;
+#X connect 31 0 33 0;
+#X connect 32 0 28 0;
+#X connect 33 0 20 1;
+#X connect 34 0 2 0;
+#X connect 34 1 35 0;
+#X connect 34 2 4 0;
+#X connect 35 0 0 0;
+#X connect 36 0 37 0;
+#X connect 37 0 0 0;
+#X connect 38 0 0 0;
+#X connect 39 0 15 0;
+#X connect 39 0 16 0;
+#X connect 39 0 25 0;
+#X connect 39 0 26 0;
+#X connect 40 0 1 0;
+#X connect 40 1 3 0;
+#X connect 40 2 38 0;
+#X connect 41 0 0 0;
+#X connect 42 0 43 0;
+#X connect 43 0 0 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/hutz.pd b/sx/hutz.pd
new file mode 100644
index 0000000..cdc2adb
--- /dev/null
+++ b/sx/hutz.pd
@@ -0,0 +1,54 @@
+#N canvas 475 4 450 300 10;
+#X obj 119 63 repeat 3;
+#X obj 119 176 repeat 3;
+#X obj 119 269 cube 0.5;
+#X obj 119 199 colorRGB 0.66 0.66 0.66;
+#X obj 119 128 colorRGB 1 0.52 0.3;
+#X obj 119 246 rotateXYZ 0 0 1;
+#X obj 119 84 translateXYZ 0.2 0 0;
+#X floatatom 282 33 5 0 0 0 - - -;
+#X obj 119 105 rotateXYZ 0 90 0;
+#X obj 275 61 * 2;
+#X obj 119 153 cuboid 0.1 1 1;
+#X obj 119 222 translateXYZ 0.33 0 0;
+#X floatatom 315 102 5 0 0 0 - - -;
+#X obj 264 147 / 60;
+#X obj 315 136 / 360;
+#X obj 292 171 / 120;
+#X obj 6 30 nbx 4 14 -360 360 0 0 \$0/stretch \$1/stretch stretch 0
+-6 0 8 -233017 -128992 -1 -251 256;
+#X obj 7 59 nbx 4 14 -360 360 0 0 \$0/twist \$1/twist twist 0 -6 0
+8 -233017 -128992 -1 180 256;
+#X obj 119 0 inlet;
+#X obj 282 13 r \$0/twist;
+#X obj 315 81 r \$0/stretch;
+#X obj 119 20 separator;
+#X obj 119 40 scaleXYZ 0.5 0.5 0.5;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 3 0 11 0;
+#X connect 4 0 10 0;
+#X connect 5 0 2 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 3;
+#X connect 7 0 9 0;
+#X connect 7 0 5 1;
+#X connect 7 0 5 2;
+#X connect 8 0 4 0;
+#X connect 9 0 8 2;
+#X connect 10 0 1 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 0;
+#X connect 12 0 14 0;
+#X connect 12 0 15 0;
+#X connect 13 0 11 1;
+#X connect 14 0 6 1;
+#X connect 14 0 6 3;
+#X connect 15 0 5 3;
+#X connect 15 0 8 1;
+#X connect 18 0 21 0;
+#X connect 19 0 7 0;
+#X connect 20 0 12 0;
+#X connect 21 0 22 0;
+#X connect 22 0 0 0;
+#X coords 0 -1 1 1 85 80 1 0 0;
diff --git a/sx/mirrorball.pd b/sx/mirrorball.pd
new file mode 100644
index 0000000..8b64f19
--- /dev/null
+++ b/sx/mirrorball.pd
@@ -0,0 +1,13 @@
+#N canvas 0 0 450 300 10;
+#X msg 168 64 snap;
+#X obj 168 35 t b a;
+#X obj 168 11 inlet;
+#X obj 168 97 pix_snap2tex 0 0 256 256;
+#X obj 168 157 sphere 10 20;
+#X obj 168 123 separator;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 1 1 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
diff --git a/sx/netgeom-help.pd b/sx/netgeom-help.pd
new file mode 100644
index 0000000..fedfc3c
--- /dev/null
+++ b/sx/netgeom-help.pd
@@ -0,0 +1,23 @@
+#N canvas 222 16 582 378 10;
+#X obj 295 100 sx/gemwin;
+#X obj 14 7 gemhead;
+#X obj 14 32 sx/props;
+#X obj 65 142 netreceive 3142 1;
+#X obj 65 189 sx/netgeom Cube;
+#X text 115 287 sx/netgeom can receive a list of triangle data for
+use with sx/blob. Copy the blender script in utils/net_triangle.py
+into your blender scripts directory (./blender/scripts/) and then run
+blender and choose File... Export... Raw Triangle over the net... to
+send here. Big complicated meshes will probably make things chug.;
+#X obj 14 282 sx/blob2;
+#X obj 65 165 t b a;
+#X obj 295 14 sx/wander;
+#X obj 65 216 sx/explode e;
+#X connect 1 0 2 0;
+#X connect 2 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 9 0;
+#X connect 7 0 4 0;
+#X connect 7 1 4 1;
+#X connect 8 0 0 0;
+#X connect 9 0 6 1;
diff --git a/sx/netgeom.pd b/sx/netgeom.pd
new file mode 100644
index 0000000..8d07330
--- /dev/null
+++ b/sx/netgeom.pd
@@ -0,0 +1,43 @@
+#N canvas 0 0 455 394 10;
+#X obj 99 158 route \$1;
+#X obj 16 355 list;
+#X obj 16 137 inlet;
+#X msg 16 158 bang;
+#X obj 16 376 outlet;
+#X obj 99 133 inlet;
+#X obj 227 309 t l;
+#X text 13 4 args: [blender object name \; e.g. Cube];
+#X obj 99 309 list append;
+#X obj 129 203 list split 1;
+#X obj 99 179 t a a;
+#X obj 99 286 spigot;
+#X msg 208 249 1;
+#X msg 129 250 0;
+#X obj 129 224 select clear;
+#X text 13 36 copy the blender export script into .blender/scripts/
+folder and start blender. Make the argument of this be the same name
+as a blender object. Go file.. Export... Raw Triangle Across the net
+... and it will arrive as a list of verticies of triangles here. This
+can be used with other objects such as sx/explode and sx/blob. The
+shape list will be retained between sessions if you use a sssad/panel
+save.;
+#X obj 99 333 s \$1/geomdata;
+#X obj 194 167 sssad/auto \$0/geomdata \$1/geomdata;
+#X connect 0 0 10 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 0 0;
+#X connect 6 0 8 1;
+#X connect 8 0 6 0;
+#X connect 8 0 1 1;
+#X connect 8 0 16 0;
+#X connect 9 0 14 0;
+#X connect 10 0 11 0;
+#X connect 10 1 9 0;
+#X connect 11 0 8 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 1;
+#X connect 14 0 8 1;
+#X connect 14 0 13 0;
+#X connect 14 1 12 0;
diff --git a/sx/normal.pd b/sx/normal.pd
new file mode 100644
index 0000000..8a57819
--- /dev/null
+++ b/sx/normal.pd
@@ -0,0 +1,45 @@
+#N canvas 283 137 706 514 10;
+#X obj 10 9 inlet;
+#X text 58 10 takes a list of 9 numbers (3 vectors of a triangular
+face);
+#X obj 10 486 outlet;
+#X obj 10 433 pack f f f;
+#X obj 10 33 unpack f f f f f f f f f;
+#X obj 101 140 expr ( ($f1 - $f2) * ($f3 - $f4) ) - ( ($f3 - $f5) *
+($f1 - $f6) );
+#X obj 10 344 expr ( ($f1 - $f2) * ($f3 - $f4) ) - ( ($f3 - $f5) *
+($f1 - $f6) );
+#X obj 10 460 sx/unit;
+#X obj 52 244 expr ( ($f3 - $f2) * ($f1 - $f4) ) - ( ($f1 - $f5) *
+($f3 - $f6) );
+#X obj 11 106 t f f;
+#X obj 13 408 f;
+#X obj 10 378 t b f;
+#X connect 0 0 4 0;
+#X connect 3 0 7 0;
+#X connect 4 0 9 0;
+#X connect 4 1 5 0;
+#X connect 4 1 6 2;
+#X connect 4 2 5 2;
+#X connect 4 2 8 2;
+#X connect 4 3 6 1;
+#X connect 4 3 8 4;
+#X connect 4 4 5 1;
+#X connect 4 4 6 4;
+#X connect 4 5 5 4;
+#X connect 4 5 8 1;
+#X connect 4 6 6 5;
+#X connect 4 6 8 3;
+#X connect 4 7 5 5;
+#X connect 4 7 6 3;
+#X connect 4 8 5 3;
+#X connect 4 8 8 5;
+#X connect 5 0 10 1;
+#X connect 6 0 11 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 1;
+#X connect 9 0 6 0;
+#X connect 9 1 8 0;
+#X connect 10 0 3 0;
+#X connect 11 0 10 0;
+#X connect 11 1 3 2;
diff --git a/sx/phitz.pd b/sx/phitz.pd
new file mode 100644
index 0000000..f9b7402
--- /dev/null
+++ b/sx/phitz.pd
@@ -0,0 +1,32 @@
+#N canvas 523 326 450 300 10;
+#X obj 212 203 rotateXYZ;
+#X obj 212 125 repeat 5;
+#X obj 212 150 translateXYZ -0.35 -0.07 0.01;
+#X obj 283 250 cuboid 6 0.01 0.1;
+#X obj 212 250 cube 1.2;
+#X obj 212 52 inlet;
+#X obj 6 28 nbx 3 14 0 360 0 0 \$0/skitz \$1/skitz skitz 0 -6 0 8 -233017
+-128992 -1 6 256;
+#X obj 6 56 nbx 3 14 0 360 0 0 \$0/phat \$1/phat phat 0 -6 0 8 -233017
+-128992 -1 3.025 256;
+#X obj 359 205 r \$0/phat;
+#X obj 231 173 r \$0/skitz;
+#X obj 397 229 * 0.07;
+#X obj 212 81 scaleXYZ 0.5 0.5 0.5;
+#X obj 45 28 nbx 3 14 0 8 0 0 \$0/num \$1/num num 0 -6 0 8 -233017
+-128992 -1 7 256;
+#X obj 263 104 r \$0/num;
+#X connect 0 0 4 0;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 5 0 11 0;
+#X connect 8 0 3 2;
+#X connect 8 0 10 0;
+#X connect 9 0 0 1;
+#X connect 9 0 0 2;
+#X connect 9 0 0 3;
+#X connect 10 0 3 3;
+#X connect 11 0 1 0;
+#X connect 13 0 1 1;
+#X coords 0 -1 1 1 85 75 1 0 0;
diff --git a/sx/pinger.pd b/sx/pinger.pd
new file mode 100644
index 0000000..0e8169d
--- /dev/null
+++ b/sx/pinger.pd
@@ -0,0 +1,46 @@
+#N canvas 19 89 570 578 10;
+#X obj 406 281 line;
+#X msg 406 253 1 \$1;
+#X msg 446 252 0;
+#X obj 406 231 t f b;
+#X obj 330 415 - 0.2;
+#X obj 507 8 inlet;
+#X obj 507 30 list;
+#X msg 507 53 \$1 \$2 \;;
+#X obj 83 26 bng 14 250 50 0 \$0/shot \$1/shot shot 0 -6 0 8 -233017
+-128992 -66577;
+#X obj 406 160 r \$0/shot;
+#X obj 429 183 r \$0/time;
+#X obj 411 371 r \$0/width;
+#X obj 6 26 nbx 3 14 -1e+37 1e+37 0 0 \$0/width \$1/width width 0 -6
+0 8 -233017 -128992 -1 0 256;
+#X obj 451 306 select 1;
+#X obj 352 314 - 1;
+#X obj 348 339 * -1;
+#X obj 360 392 * 0.2;
+#X obj 406 330 * 10;
+#X obj 406 208 1000;
+#X obj 192 354 inlet;
+#X obj 192 452 disk 1 10 0.2;
+#X connect 0 0 13 0;
+#X connect 0 0 14 0;
+#X connect 0 0 17 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 0;
+#X connect 4 0 20 3;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 9 0 18 0;
+#X connect 10 0 18 1;
+#X connect 11 0 16 1;
+#X connect 13 0 2 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 4 1;
+#X connect 17 0 4 0;
+#X connect 17 0 20 1;
+#X connect 18 0 3 0;
+#X connect 19 0 20 0;
+#X coords 0 -1 1 1 120 45 1 0 0;
diff --git a/sx/props.pd b/sx/props.pd
new file mode 100644
index 0000000..da0c169
--- /dev/null
+++ b/sx/props.pd
@@ -0,0 +1,124 @@
+#N canvas 323 232 656 443 10;
+#X obj 350 219 translateXYZ;
+#X obj 6 28 nbx 3 14 -1e+37 1e+37 0 0 \$0/rX \$1/rX rotate 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 44 28 nbx 3 14 -1e+37 1e+37 0 0 \$0/rY \$1/rY empty 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 83 28 nbx 3 14 -1e+37 1e+37 0 0 \$0/rZ \$1/rZ empty 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 376 154 r \$0/tX;
+#X obj 402 176 r \$0/tY;
+#X obj 429 198 r \$0/tZ;
+#X obj 6 83 nbx 3 14 0 1 0 1 \$0/cR \$1/cR color 0 -6 0 8 -233017 -128992
+-1 1 256;
+#X obj 44 83 nbx 3 14 0 1 0 1 \$0/cG \$1/cG empty 0 -6 0 8 -233017
+-128992 -1 1 256;
+#X obj 83 83 nbx 3 14 0 1 0 1 \$0/cB \$1/cB empty 0 -6 0 8 -233017
+-128992 -1 1 256;
+#X obj 350 8 inlet;
+#X obj 369 245 r \$0/rX;
+#X obj 388 266 r \$0/rY;
+#X obj 408 288 r \$0/rZ;
+#X obj 350 311 rotateXYZ;
+#X obj 350 130 colorRGB;
+#X obj 388 82 r \$0/cB;
+#X obj 375 61 r \$0/cG;
+#X obj 362 40 r \$0/cR;
+#X obj 401 103 r \$0/cA;
+#X obj 6 56 nbx 3 14 -1e+37 1e+37 0 0 \$0/tX \$1/tX translate 0 -6
+0 8 -233017 -128992 -1 0 256;
+#X obj 44 56 nbx 3 14 -1e+37 1e+37 0 0 \$0/tY \$1/tY empty 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 83 56 nbx 3 14 -1e+37 1e+37 0 0 \$0/tZ \$1/tZ empty 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 122 83 nbx 3 14 0.01 1 0 1 \$0/cA \$1/cA empty 0 -6 0 8 -233017
+-128992 -1 0.299213 256;
+#X obj 350 335 outlet;
+#X obj 499 27 unpack f f f f;
+#X obj 499 112 s \$0/cR;
+#X obj 499 159 unpack f f f;
+#X obj 499 136 r \$1/translate;
+#X obj 499 272 unpack f f f;
+#X obj 499 249 r \$1/rotate;
+#X obj 499 4 r \$1/color;
+#X obj 5 395 s \$1/translate;
+#X obj 5 372 sssad/sssad \$1/translate;
+#X obj 5 113 r \$0/tX;
+#X obj 37 136 r \$0/tY;
+#X obj 70 158 r \$0/tZ;
+#X obj 168 351 r \$0/translate;
+#X obj 5 180 pack f f f;
+#X obj 5 201 s \$0/translate;
+#X obj 5 312 pack f f f;
+#X obj 5 245 r \$0/rX;
+#X obj 37 268 r \$0/rY;
+#X obj 70 290 r \$0/rZ;
+#X obj 174 91 r \$0/cR;
+#X obj 200 114 r \$0/cG;
+#X obj 174 183 pack f f f f;
+#X obj 253 160 r \$0/cA;
+#X obj 226 136 r \$0/cB;
+#X obj 174 204 s \$0/color;
+#X obj 5 333 s \$0/rotate;
+#X obj 345 369 r \$0/rotate;
+#X obj 203 390 sssad/sssad \$1/rotate;
+#X obj 203 413 s \$1/rotate;
+#X obj 565 371 r \$0/color;
+#X obj 430 392 sssad/sssad \$1/color;
+#X obj 430 415 s \$1/color;
+#X obj 538 203 s \$1/tY;
+#X obj 578 182 s \$1/tZ;
+#X obj 499 227 s \$1/tX;
+#X obj 561 70 s \$1/cB;
+#X obj 592 49 s \$1/cA;
+#X obj 530 91 s \$1/cG;
+#X obj 499 340 s \$1/rX;
+#X obj 538 316 s \$1/rY;
+#X obj 578 295 s \$1/rZ;
+#X connect 0 0 14 0;
+#X connect 4 0 0 1;
+#X connect 5 0 0 2;
+#X connect 6 0 0 3;
+#X connect 10 0 15 0;
+#X connect 11 0 14 1;
+#X connect 12 0 14 2;
+#X connect 13 0 14 3;
+#X connect 14 0 24 0;
+#X connect 15 0 0 0;
+#X connect 16 0 15 3;
+#X connect 17 0 15 2;
+#X connect 18 0 15 1;
+#X connect 19 0 15 4;
+#X connect 25 0 26 0;
+#X connect 25 1 62 0;
+#X connect 25 2 60 0;
+#X connect 25 3 61 0;
+#X connect 27 0 59 0;
+#X connect 27 1 57 0;
+#X connect 27 2 58 0;
+#X connect 28 0 27 0;
+#X connect 29 0 63 0;
+#X connect 29 1 64 0;
+#X connect 29 2 65 0;
+#X connect 30 0 29 0;
+#X connect 31 0 25 0;
+#X connect 33 0 32 0;
+#X connect 34 0 38 0;
+#X connect 35 0 38 1;
+#X connect 36 0 38 2;
+#X connect 37 0 33 1;
+#X connect 38 0 39 0;
+#X connect 40 0 50 0;
+#X connect 41 0 40 0;
+#X connect 42 0 40 1;
+#X connect 43 0 40 2;
+#X connect 44 0 46 0;
+#X connect 45 0 46 1;
+#X connect 46 0 49 0;
+#X connect 47 0 46 3;
+#X connect 48 0 46 2;
+#X connect 51 0 52 1;
+#X connect 52 0 53 0;
+#X connect 54 0 55 1;
+#X connect 55 0 56 0;
+#X coords 0 -1 1 1 160 103 1 0 0;
diff --git a/sx/ring.pd b/sx/ring.pd
new file mode 100644
index 0000000..6121903
--- /dev/null
+++ b/sx/ring.pd
@@ -0,0 +1,61 @@
+#N canvas 362 185 526 460 10;
+#X obj 119 0 inlet;
+#X obj 149 65 rotateXYZ 0 90 0;
+#X obj 149 386 rotateXYZ 0 90 0;
+#X obj 149 298 translateXYZ 1 0 1;
+#X obj 149 252 cuboid 0.1 0.1 1.1;
+#X obj 29 110 outlet;
+#X obj 119 23 GEMglPushMatrix;
+#X obj 29 88 GEMglPopMatrix;
+#X obj 119 44 t a a;
+#X obj 307 173 \$2;
+#X obj 307 151 loadbang;
+#X obj 215 130 inlet;
+#X obj 296 127 inlet;
+#X obj 307 193 select 0;
+#X obj 390 204 * 1.1;
+#X obj 169 169 select 0;
+#X obj 173 109 loadbang;
+#X obj 173 131 \$1;
+#X obj 149 208 repeat 4;
+#X obj 220 362 expr 360 / $f1;
+#X obj 390 180 inlet;
+#X obj 425 80 loadbang;
+#X obj 425 104 \$3;
+#X obj 425 126 select 0;
+#X text 247 3 args: [pieces] [thickness] [width];
+#X obj 149 89 translateXYZ -0.5 0 -0.5;
+#X obj 319 66 / -2;
+#X connect 0 0 6 0;
+#X connect 1 0 25 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 6 0 8 0;
+#X connect 7 0 5 0;
+#X connect 8 0 7 0;
+#X connect 8 1 1 0;
+#X connect 9 0 13 0;
+#X connect 10 0 9 0;
+#X connect 11 0 15 0;
+#X connect 12 0 9 0;
+#X connect 13 1 4 2;
+#X connect 14 0 4 3;
+#X connect 15 1 18 1;
+#X connect 15 1 19 0;
+#X connect 16 0 17 0;
+#X connect 17 0 15 0;
+#X connect 18 0 4 0;
+#X connect 19 0 2 2;
+#X connect 20 0 14 0;
+#X connect 20 0 3 3;
+#X connect 20 0 3 1;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 1 14 0;
+#X connect 23 1 3 3;
+#X connect 23 1 4 3;
+#X connect 23 1 26 0;
+#X connect 25 0 18 0;
+#X connect 26 0 25 3;
+#X connect 26 0 25 1;
+#X coords 0 0 1 1 85 80 0;
diff --git a/sx/rumble.pd b/sx/rumble.pd
new file mode 100644
index 0000000..ce568c4
--- /dev/null
+++ b/sx/rumble.pd
@@ -0,0 +1,37 @@
+#N canvas 147 48 647 639 10;
+#X obj 198 82 part_head;
+#X obj 198 136 part_color;
+#X obj 198 447 part_draw;
+#X obj 198 334 part_orbitpoint 0 1 0 0.08;
+#X obj 198 174 part_size 0.4;
+#X obj 360 61 loadbang;
+#X msg 336 97 0 0 0;
+#X obj 198 56 inlet;
+#X msg 126 411 draw 6;
+#X obj 126 387 loadbang;
+#X text 381 250 small values (0.1) is normal;
+#X text 384 269 larger values (1) is intense;
+#X text 382 288 negative values is explosive;
+#X obj 5 42 nbx 4 14 -0.2 1.2 0 0 \$0/rumble \$1/rumble rumble 0 -6
+0 8 -233017 -128992 -1 0.228346 256;
+#X obj 375 305 r \$0/rumble;
+#X obj 198 220 part_velocity sphere 0 0 0 0.2;
+#X msg 396 98 0 0 1;
+#X obj 198 270 part_source 3;
+#X obj 198 381 part_killold 30;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 3 0 18 0;
+#X connect 4 0 15 0;
+#X connect 5 0 16 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 1;
+#X connect 7 0 0 0;
+#X connect 8 0 2 0;
+#X connect 9 0 8 0;
+#X connect 14 0 3 2;
+#X connect 15 0 17 0;
+#X connect 16 0 1 2;
+#X connect 17 0 3 0;
+#X connect 18 0 2 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/shadow.pd b/sx/shadow.pd
new file mode 100644
index 0000000..f254416
--- /dev/null
+++ b/sx/shadow.pd
@@ -0,0 +1,19 @@
+#N canvas 0 0 450 300 10;
+#X obj 68 73 separator;
+#X obj 68 129 scaleXYZ 1.25 0 1.25;
+#X obj 229 254 outlet;
+#X obj 283 21 inlet;
+#X obj 283 46 t a a;
+#X obj 68 184 alpha 0;
+#X obj 68 155 colorRGB 0.01 0.01 0.01 1;
+#X obj 68 100 translateXYZ 0.5 -6 0.5;
+#X obj 313 69 separator;
+#X connect 0 0 7 0;
+#X connect 1 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 4 1 8 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 8 0 2 0;
diff --git a/sx/sigplane.pd b/sx/sigplane.pd
new file mode 100644
index 0000000..8006a5e
--- /dev/null
+++ b/sx/sigplane.pd
@@ -0,0 +1,22 @@
+#N canvas 380 148 383 404 10;
+#X obj 74 303 pix_texture;
+#X obj 138 172 +~;
+#X obj 74 234 pix_sig2pix~ 64 64;
+#X msg 90 279 quality 0;
+#X obj 149 48 block~ 4096;
+#X obj 74 106 inlet;
+#X obj 137 106 inlet~;
+#X obj 155 142 inlet~;
+#X obj 90 257 loadbang;
+#X obj 74 336 outlet;
+#X connect 0 0 9 0;
+#X connect 1 0 2 2;
+#X connect 1 0 2 1;
+#X connect 1 0 2 0;
+#X connect 1 0 2 3;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 5 0 2 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 1;
+#X connect 8 0 3 0;
diff --git a/sx/unit.pd b/sx/unit.pd
new file mode 100644
index 0000000..0f971b5
--- /dev/null
+++ b/sx/unit.pd
@@ -0,0 +1,28 @@
+#N canvas 167 33 599 530 10;
+#X obj 10 8 inlet;
+#X text 57 7 Takes a vector and calculates the unit;
+#X obj 10 311 outlet;
+#X obj 167 94 unpack f f f;
+#X obj 167 160 expr sqrt(($f1 * $f1) + ($f2 * $f2) + ($f3 * $f3));
+#X obj 10 34 t l l;
+#X obj 10 187 unpack f f f;
+#X obj 10 246 /;
+#X obj 49 246 /;
+#X obj 89 246 /;
+#X obj 10 287 pack f f f;
+#X connect 0 0 5 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 3 2 4 2;
+#X connect 4 0 7 1;
+#X connect 4 0 8 1;
+#X connect 4 0 9 1;
+#X connect 5 0 6 0;
+#X connect 5 1 3 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 6 2 9 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 1;
+#X connect 9 0 10 2;
+#X connect 10 0 2 0;
diff --git a/sx/vibber-help.pd b/sx/vibber-help.pd
new file mode 100644
index 0000000..96140a7
--- /dev/null
+++ b/sx/vibber-help.pd
@@ -0,0 +1,7 @@
+#N canvas 0 0 450 300 10;
+#X obj 6 8 sx/gemwin;
+#X obj 101 9 gemhead 99;
+#X obj 101 32 sx/props;
+#X obj 101 141 sx/vibber;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
diff --git a/sx/vibber.pd b/sx/vibber.pd
new file mode 100644
index 0000000..f3303a6
--- /dev/null
+++ b/sx/vibber.pd
@@ -0,0 +1,101 @@
+#N canvas 15 10 755 647 10;
+#X msg 23 318 draw line;
+#X obj 23 294 loadbang;
+#X obj 212 137 alpha;
+#X msg 201 103 1;
+#X obj 138 55 inlet;
+#X obj 138 79 t a a;
+#X obj 114 122 separator;
+#X obj 211 548 rotateXYZ;
+#X obj 328 262 random 10;
+#X obj 329 283 expr $f1 / 10 - 0.5;
+#X obj 286 307 random 10;
+#X obj 257 352 random 10;
+#X obj 110 147 repeat 3;
+#X obj 110 168 t a a b;
+#X obj 59 270 scaleXYZ;
+#X obj 5 20 nbx 2 14 0 10 0 0 \$0/wobble \$1/wobble wobble 30 8 0 8
+-233017 -128992 -1 2 256;
+#X obj 5 40 nbx 2 14 0 10 0 1 \$0/spring \$1/spring spring 30 8 0 8
+-233017 -128992 -1 1.06457 256;
+#X obj 86 234 r \$0/spring;
+#X obj 324 414 r \$0/wobble;
+#X obj 285 328 expr $f1 / 10 - 0.5;
+#X obj 256 373 expr $f1 / 10 - 0.5;
+#X obj 233 458 *;
+#X obj 255 490 *;
+#X obj 287 469 *;
+#X obj 398 452 r \$0/wobble;
+#X obj 332 486 sssad/sssad \$1/wobble;
+#X obj 393 545 r \$0/spring;
+#X obj 327 579 sssad/sssad \$1/spring;
+#X obj 563 240 cube;
+#X obj 563 262 scaleXYZ 0.5 0.5 0.5;
+#X obj 563 305 cube;
+#X obj 563 347 cube;
+#X obj 563 394 scaleXYZ 2 2 2;
+#X obj 563 283 translateXYZ 3 0 0;
+#X obj 563 326 translateXYZ -6 0 0;
+#X obj 563 372 translateXYZ 3 0 0;
+#X obj 95 335 cube;
+#X obj 95 357 scaleXYZ 0.5 0.5 0.5;
+#X obj 95 400 cube;
+#X obj 95 442 cube;
+#X obj 95 489 scaleXYZ 2 2 2;
+#X obj 95 378 translateXYZ 3 0 0;
+#X obj 95 421 translateXYZ -6 0 0;
+#X obj 95 467 translateXYZ 3 0 0;
+#X obj 367 516 s \$1/wobble;
+#X obj 362 609 s \$1/spring;
+#X connect 0 0 36 0;
+#X connect 0 0 38 0;
+#X connect 0 0 39 0;
+#X connect 1 0 0 0;
+#X connect 2 0 28 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 5 1 6 0;
+#X connect 6 0 12 0;
+#X connect 8 0 9 0;
+#X connect 9 0 23 0;
+#X connect 10 0 19 0;
+#X connect 11 0 20 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 13 1 36 0;
+#X connect 13 2 8 0;
+#X connect 13 2 10 0;
+#X connect 13 2 11 0;
+#X connect 17 0 14 1;
+#X connect 17 0 14 2;
+#X connect 17 0 14 3;
+#X connect 18 0 21 1;
+#X connect 18 0 23 1;
+#X connect 18 0 22 1;
+#X connect 19 0 22 0;
+#X connect 20 0 21 0;
+#X connect 21 0 7 1;
+#X connect 22 0 7 2;
+#X connect 23 0 7 3;
+#X connect 24 0 25 1;
+#X connect 25 0 44 0;
+#X connect 26 0 27 1;
+#X connect 27 0 45 0;
+#X connect 28 0 29 0;
+#X connect 29 0 33 0;
+#X connect 30 0 34 0;
+#X connect 31 0 35 0;
+#X connect 33 0 30 0;
+#X connect 34 0 31 0;
+#X connect 35 0 32 0;
+#X connect 36 0 37 0;
+#X connect 37 0 41 0;
+#X connect 38 0 42 0;
+#X connect 39 0 43 0;
+#X connect 40 0 7 0;
+#X connect 41 0 38 0;
+#X connect 42 0 39 0;
+#X connect 43 0 40 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/voibu.pd b/sx/voibu.pd
new file mode 100644
index 0000000..b8c1e9c
--- /dev/null
+++ b/sx/voibu.pd
@@ -0,0 +1,86 @@
+#N canvas 475 4 528 494 10;
+#X obj 6 30 nbx 4 14 -2 50 0 1 \$0/stretch \$1/stretch stretch 0 -6
+0 8 -233017 -128992 -1 1 256;
+#X obj 7 59 nbx 4 14 -360 360 0 0 \$0/twist \$1/twist twist 0 -6 0
+8 -233017 -128992 -1 0 256;
+#X obj 155 7 inlet;
+#X obj 329 149 separator;
+#X obj 329 240 repeat 7;
+#X obj 329 270 translateXYZ 0 1 0;
+#X obj 329 196 translateXYZ 0 -3.5 0;
+#X obj 423 175 * -3.5;
+#X obj 155 31 t a a;
+#X obj 155 159 separator;
+#X obj 155 280 translateXYZ 0 1 0;
+#X obj 155 232 translateXYZ 0 -3.5 0;
+#X obj 330 107 colorRGB 0.7 0.7 0.7;
+#X obj 155 134 colorRGB 1 0.3 0.3;
+#X obj 250 206 * -2.5;
+#X obj 155 256 repeat 6;
+#X obj 155 180 translateXYZ 0 -0.5 0;
+#X obj 245 156 / -2;
+#X obj 55 30 nbx 4 14 0 2 0 0 \$0/flavour \$1/flavour flavour 0 -6
+0 8 -233017 -128992 -1 0 256;
+#X obj 155 301 rotateXYZ;
+#X obj 329 294 rotateXYZ;
+#X obj 407 128 r \$0/stretch;
+#X obj 402 226 r \$0/twist;
+#X obj 440 247 r \$0/warp;
+#X obj 55 59 nbx 4 14 -360 360 0 0 \$0/warp \$1/warp warp 0 -6 0 8
+-233017 -128992 -1 0 256;
+#X obj 191 106 unpack f f f;
+#X msg 258 64 0.3 0.3 1;
+#X obj 238 21 r \$0/flavour;
+#X obj 238 44 select 0 1 2;
+#X msg 285 84 1 0.6 0.2;
+#X floatatom 257 299 5 0 0 0 - - -;
+#X obj 156 323 sx/ring 5 0.1 1;
+#X obj 330 314 sx/ring 5 0.1 1;
+#X msg 192 85 1 0.25 0.25;
+#X obj 7 371 sssad/auto \$0/stretch \$1/stretch;
+#X obj 7 394 sssad/auto \$0/flavour \$1/flavour;
+#X obj 7 417 sssad/auto \$0/warp \$1/warp;
+#X obj 7 440 sssad/auto \$0/twist \$1/twist;
+#X connect 2 0 8 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 20 0;
+#X connect 6 0 4 0;
+#X connect 7 0 6 2;
+#X connect 8 0 13 0;
+#X connect 8 1 12 0;
+#X connect 9 0 16 0;
+#X connect 10 0 19 0;
+#X connect 11 0 15 0;
+#X connect 12 0 3 0;
+#X connect 13 0 9 0;
+#X connect 14 0 11 2;
+#X connect 15 0 10 0;
+#X connect 16 0 11 0;
+#X connect 17 0 16 2;
+#X connect 19 0 31 0;
+#X connect 20 0 32 0;
+#X connect 21 0 17 0;
+#X connect 21 0 7 0;
+#X connect 21 0 14 0;
+#X connect 21 0 10 2;
+#X connect 21 0 5 2;
+#X connect 22 0 20 2;
+#X connect 22 0 19 2;
+#X connect 23 0 20 3;
+#X connect 23 0 20 1;
+#X connect 23 0 19 3;
+#X connect 23 0 19 1;
+#X connect 25 0 13 1;
+#X connect 25 1 13 2;
+#X connect 25 2 13 3;
+#X connect 26 0 25 0;
+#X connect 27 0 28 0;
+#X connect 28 0 33 0;
+#X connect 28 1 26 0;
+#X connect 28 2 29 0;
+#X connect 29 0 25 0;
+#X connect 30 0 31 3;
+#X connect 30 0 32 3;
+#X connect 33 0 25 0;
+#X coords 0 -1 1 1 100 78 1 0 0;
diff --git a/sx/wander.pd b/sx/wander.pd
new file mode 100644
index 0000000..ccf0537
--- /dev/null
+++ b/sx/wander.pd
@@ -0,0 +1,205 @@
+#N canvas 0 9 628 655 10;
+#X obj 132 614 outlet;
+#X obj 194 546 loadbang;
+#X obj 136 146 t b b b;
+#X obj 52 61 tgl 14 0 \$0/onoff \$1/onoff onoff 0 -6 0 8 -233017 -128992
+-1 0 1;
+#X obj 6 61 nbx 4 14 0 127 0 0 \$0/speed \$1/speed speed 0 -6 0 8 -233017
+-128992 -1 0 256;
+#X obj 126 80 r \$0/onoff;
+#X obj 201 80 r \$0/speed;
+#X obj 136 124 metro 3000;
+#X floatatom 137 271 5 0 0 0 - - -;
+#X floatatom 277 274 5 0 0 0 - - -;
+#X floatatom 402 265 5 0 0 0 - - -;
+#X obj 331 366 +;
+#X obj 273 318 t b f;
+#X obj 270 366 f;
+#X floatatom 267 397 5 0 0 0 - - -;
+#X obj 413 314 t b f;
+#X obj 207 352 +;
+#X obj 137 317 t b f;
+#X obj 135 346 f;
+#X floatatom 133 369 5 0 0 0 - - -;
+#X obj 500 283 unpack f f f;
+#X msg 500 260 2 2 5;
+#X obj 464 380 +;
+#X obj 411 379 f;
+#X floatatom 411 404 5 0 0 0 - - -;
+#N canvas 0 0 450 300 pickrandom 0;
+#X obj 97 150 +;
+#X obj 40 51 t b b;
+#X obj 130 78 random 3;
+#X obj 145 99 - 1;
+#X obj 159 121 * 0.01;
+#X obj 27 148 f;
+#X obj 54 123 clip -0.1 0.1;
+#X obj 39 19 inlet;
+#X obj 30 187 outlet;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X restore 444 234 pd pickrandom;
+#N canvas 0 0 450 300 pickrandom 0;
+#X obj 97 150 +;
+#X obj 40 51 t b b;
+#X obj 130 78 random 3;
+#X obj 145 99 - 1;
+#X obj 159 121 * 0.01;
+#X obj 27 148 f;
+#X obj 54 123 clip -0.1 0.1;
+#X obj 39 19 inlet;
+#X obj 30 187 outlet;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X restore 278 241 pd pickrandom;
+#N canvas 0 0 450 300 pickrandom 0;
+#X obj 97 150 +;
+#X obj 40 51 t b b;
+#X obj 130 78 random 3;
+#X obj 145 99 - 1;
+#X obj 159 121 * 0.01;
+#X obj 27 148 f;
+#X obj 54 123 clip -0.1 0.1;
+#X obj 39 19 inlet;
+#X obj 30 187 outlet;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X restore 133 241 pd pickrandom;
+#X obj 322 342 clip -2 2;
+#X obj 466 348 clip -2 2;
+#X obj 188 324 clip -2 2;
+#X obj 201 102 mtof;
+#X obj 363 31 r \$1/target;
+#X obj 362 58 unpack f f f;
+#X obj 260 418 +;
+#X obj 407 425 +;
+#X obj 135 410 +;
+#X obj 134 502 pack f f f f f f;
+#X msg 132 525 view \$1 \$2 \$3 \$4 \$5 \$6 0 1 0;
+#X obj 460 34 sssad/sssad \$1/speed;
+#X obj 460 56 s \$1/speed;
+#X obj 530 11 r \$0/speed;
+#X msg 348 524 view 10 0 0 0 0 0 0 1 0;
+#X obj 133 468 line;
+#X obj 133 446 pack f f;
+#X obj 207 472 line;
+#X obj 207 450 pack f f;
+#X obj 290 476 line;
+#X obj 290 454 pack f f;
+#X obj 6 33 nbx 4 14 0 127 0 1 \$0/distance \$1/distance distance 0
+-6 0 8 -233017 -128992 -1 3 256;
+#X obj 229 39 * -1;
+#X obj 272 1 r \$0/distance;
+#X obj 488 88 inlet;
+#X obj 488 109 list;
+#X msg 488 131 \; \$1 \$2 \$3 \$4 \$5 \;;
+#X msg 194 570 perspec -1 1 -1 1 1 100;
+#X obj 10 379 r \$1/position;
+#X obj 10 400 unpack f f f;
+#X msg 365 91 bang;
+#X obj 412 5 r \$1/floor;
+#X connect 1 0 55 0;
+#X connect 2 0 27 0;
+#X connect 2 1 26 0;
+#X connect 2 2 25 0;
+#X connect 5 0 7 0;
+#X connect 6 0 31 0;
+#X connect 7 0 2 0;
+#X connect 8 0 17 0;
+#X connect 9 0 12 0;
+#X connect 10 0 15 0;
+#X connect 11 0 13 1;
+#X connect 12 0 13 0;
+#X connect 12 1 11 1;
+#X connect 13 0 14 0;
+#X connect 13 0 28 0;
+#X connect 14 0 34 0;
+#X connect 15 0 23 0;
+#X connect 15 1 22 1;
+#X connect 16 0 18 1;
+#X connect 17 0 18 0;
+#X connect 17 1 16 1;
+#X connect 18 0 19 0;
+#X connect 18 0 30 0;
+#X connect 19 0 36 0;
+#X connect 20 0 18 1;
+#X connect 20 1 13 1;
+#X connect 20 2 23 1;
+#X connect 21 0 20 0;
+#X connect 22 0 23 1;
+#X connect 23 0 24 0;
+#X connect 23 0 29 0;
+#X connect 24 0 35 0;
+#X connect 25 0 10 0;
+#X connect 26 0 9 0;
+#X connect 27 0 8 0;
+#X connect 28 0 11 0;
+#X connect 29 0 22 0;
+#X connect 30 0 16 0;
+#X connect 31 0 7 1;
+#X connect 31 0 48 1;
+#X connect 31 0 46 1;
+#X connect 31 0 44 1;
+#X connect 32 0 33 0;
+#X connect 33 0 36 1;
+#X connect 33 0 37 3;
+#X connect 33 0 58 0;
+#X connect 33 1 34 1;
+#X connect 33 1 37 4;
+#X connect 33 2 35 1;
+#X connect 33 2 37 5;
+#X connect 34 0 46 0;
+#X connect 35 0 48 0;
+#X connect 36 0 44 0;
+#X connect 37 0 38 0;
+#X connect 38 0 0 0;
+#X connect 39 0 40 0;
+#X connect 41 0 39 1;
+#X connect 42 0 0 0;
+#X connect 43 0 37 0;
+#X connect 44 0 43 0;
+#X connect 45 0 37 1;
+#X connect 46 0 45 0;
+#X connect 47 0 37 2;
+#X connect 48 0 47 0;
+#X connect 50 0 30 1;
+#X connect 50 0 28 1;
+#X connect 50 0 29 1;
+#X connect 51 0 50 0;
+#X connect 51 0 30 2;
+#X connect 51 0 28 2;
+#X connect 51 0 29 2;
+#X connect 52 0 53 0;
+#X connect 53 0 54 0;
+#X connect 55 0 0 0;
+#X connect 56 0 57 0;
+#X connect 57 0 37 0;
+#X connect 57 1 37 1;
+#X connect 57 2 37 2;
+#X connect 58 0 37 0;
+#X connect 59 0 28 1;
+#X coords 0 -1 1 1 85 80 1 0 0;
diff --git a/sx/wobtower.pd b/sx/wobtower.pd
new file mode 100644
index 0000000..d1c62c2
--- /dev/null
+++ b/sx/wobtower.pd
@@ -0,0 +1,108 @@
+#N canvas 138 22 755 647 10;
+#X obj 134 15 inlet;
+#X obj 134 39 t a a;
+#X obj 134 85 separator;
+#X obj 5 20 nbx 3 14 0 10 0 1 \$0/thicken \$1/thicken thicken 36 8
+0 8 -233017 -128992 -1 0 256;
+#X obj 5 40 nbx 2 14 0 99 0 1 \$0/throb \$1/throb throb 30 8 0 8 -233017
+-128992 -1 0 256;
+#X obj 166 279 repeat 3;
+#X obj 134 62 scaleXYZ 0.2 0.2 0.2;
+#X obj 166 304 t a b;
+#X obj 373 354 random 10;
+#X obj 447 354 random 10;
+#X obj 520 354 random 10;
+#X obj 366 406 -;
+#X obj 382 379 / 2;
+#X obj 295 145 separator;
+#X obj 166 346 translateXYZ 0 2 0;
+#X obj 445 405 -;
+#X obj 461 378 / 2;
+#X obj 521 407 -;
+#X obj 537 380 / 2;
+#X obj 134 108 t a a a;
+#X obj 166 256 separator;
+#X obj 137 450 separator;
+#X obj 166 370 rotateXYZ 0 0 5;
+#X obj 137 521 rotateXYZ 0 0 -5;
+#X obj 485 443 expr -$f1;
+#X obj 137 579 translateXYZ 0 -3 0;
+#X obj 137 557 cuboid 0.1 -2 0.1;
+#X obj 164 422 cuboid 0.1 2 0.1;
+#X obj 137 500 repeat 3;
+#X obj 137 473 translateXYZ 0 -3 0;
+#X obj 424 272 r \$0/throb;
+#X obj 423 302 t f f;
+#X obj 222 395 r \$0/thicken;
+#X obj 259 524 r \$0/thicken;
+#X text 317 115 heads;
+#X text 204 194 bits;
+#X obj 391 445 expr -$f1;
+#X obj 314 442 expr -$f1;
+#X obj 295 169 translateXYZ 0 -10 0;
+#X obj 296 219 translateXYZ 0 19 0;
+#X obj 654 -2 r \$0/thicken;
+#X obj 588 32 sssad/sssad \$1/thicken;
+#X obj 623 62 s \$0/thicken;
+#X obj 664 119 r \$0/throb;
+#X obj 598 153 sssad/sssad \$1/throb;
+#X obj 633 183 s \$0/throb;
+#X obj 295 195 cube 1.25;
+#X obj 295 245 cube 1.25;
+#X obj 137 601 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 6 0;
+#X connect 2 0 19 0;
+#X connect 5 0 7 0;
+#X connect 6 0 2 0;
+#X connect 7 0 14 0;
+#X connect 7 1 8 0;
+#X connect 7 1 9 0;
+#X connect 7 1 10 0;
+#X connect 8 0 11 0;
+#X connect 9 0 15 0;
+#X connect 10 0 17 0;
+#X connect 11 0 37 0;
+#X connect 11 0 22 1;
+#X connect 12 0 11 1;
+#X connect 13 0 38 0;
+#X connect 14 0 22 0;
+#X connect 15 0 36 0;
+#X connect 15 0 22 2;
+#X connect 16 0 15 1;
+#X connect 17 0 22 3;
+#X connect 17 0 24 0;
+#X connect 18 0 17 1;
+#X connect 19 1 20 0;
+#X connect 19 2 13 0;
+#X connect 20 0 5 0;
+#X connect 21 0 29 0;
+#X connect 22 0 27 0;
+#X connect 23 0 26 0;
+#X connect 24 0 23 3;
+#X connect 25 0 48 0;
+#X connect 26 0 25 0;
+#X connect 27 0 21 0;
+#X connect 28 0 23 0;
+#X connect 29 0 28 0;
+#X connect 30 0 31 0;
+#X connect 31 0 8 1;
+#X connect 31 0 9 1;
+#X connect 31 0 10 1;
+#X connect 31 1 18 0;
+#X connect 31 1 16 0;
+#X connect 31 1 12 0;
+#X connect 32 0 27 3;
+#X connect 32 0 27 1;
+#X connect 33 0 26 3;
+#X connect 33 0 26 1;
+#X connect 36 0 23 2;
+#X connect 37 0 23 1;
+#X connect 38 0 46 0;
+#X connect 39 0 47 0;
+#X connect 40 0 41 1;
+#X connect 41 0 42 0;
+#X connect 43 0 44 1;
+#X connect 44 0 45 0;
+#X connect 46 0 39 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/uninstall b/uninstall
new file mode 100755
index 0000000..223b546
--- /dev/null
+++ b/uninstall
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+echo "Uninstalling path and abstraction entry from your .pdrc file. A backup is at .pdrc.bak"
+cp ~/.pdrc ~/.pdrc.bak
+grep -v "`pwd`" ~/.pdrc >> ~/.pdrc-tmp
+mv ~/.pdrc-tmp ~/.pdrc
+
diff --git a/utils/net_triangle.py b/utils/net_triangle.py
new file mode 100644
index 0000000..884f9ef
--- /dev/null
+++ b/utils/net_triangle.py
@@ -0,0 +1,115 @@
+#!BPY
+
+"""
+Name: 'Raw Triangle Across The Net Via UDP...'
+Blender: 232
+Group: 'Export'
+Tooltip: 'Export selected mesh via UDP packets in Raw Triangle Format'
+"""
+
+__author__ = "Chris McCormick"
+__url__ = ("blender", "mccormick",
+"Author's homepage, http://mccormick.cx/")
+__version__ = "0.1"
+
+__bpydoc__ = """\
+This script exports meshes to Raw Triangle file format across the network via UDP.
+It's used to send mesh data into puredata for GEM.
+
+This is a modified version of the Raw Triangle exporter by Anthony D'Agostino and is mostly his work.
+Any mistakes are my own.
+
+The raw triangle format is very simple; it has no verts or faces lists.
+It's just a simple ascii text file with the vertices of each triangle
+listed on each line. There were some very old utilities (when the PovRay
+forum was in existence on CompuServe) that preformed operations on these
+files.
+
+Usage:<br>
+ Select meshes to be exported and run this script from "File->Export" menu.
+"""
+
+# $Id: net_triangle.py,v 1.1.1.1 2007-07-10 07:44:47 chr15m Exp $
+#
+# +--------------------------------------------------------------+
+# | Copyright (c) 2002 Anthony D'Agostino, 2006 Chris McCormick |
+# | http://mccormick.cx/ |
+# | chris@mccormick.cx |
+# | April 28, 2002 |
+# | Send RAW Triangle File Format via UDP |
+# +--------------------------------------------------------------+
+
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+
+import Blender, meshtools
+import sys, socket
+#import time
+
+# ==============================================================
+# === Write RAW Triangle Format to a UDP socket at localhost ===
+# ==============================================================
+
+# open socket with the file descriptor "file"
+s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+s.connect(("localhost", 3142))
+
+objects = Blender.Object.GetSelected()
+objname = objects[0].name
+meshname = objects[0].data.name
+mesh = Blender.NMesh.GetRaw(meshname)
+obj = Blender.Object.Get(objname)
+
+# first send the clear command to get rid of existing mesh data for this object
+s.send(objname + " clear;\n")
+
+# this is our buffer for sending triangle data
+data = ""
+
+for face in mesh.faces:
+ # send four faces at a time until we're done
+ if not (mesh.faces.index(face) % 4):
+ # finish off the last one, if this isn't the first one
+ if mesh.faces.index(face):
+ data += ";\n"
+ s.send(data)
+ # start a new buffer
+ data = objname + " "
+
+ if len(face.v) == 3: # triangle
+ v1, v2, v3 = face.v
+ faceverts = tuple(v1.co) + tuple(v2.co) + tuple(v3.co)
+ data += "%f %f %f %f %f %f %f %f %f " % faceverts
+ else: # quadrilateral
+ v1, v2, v3, v4 = face.v
+ faceverts1 = tuple(v1.co) + tuple(v2.co) + tuple(v3.co)
+ faceverts2 = tuple(v3.co) + tuple(v4.co) + tuple(v1.co)
+ data += "%.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f " % faceverts1
+ data += "%.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f " % faceverts2
+
+# finish off the very last one
+data += ";\n"
+s.send(data)
+
+Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
+
+s.close()
+
+message = "Successfully sent " + objname
+meshtools.print_boxed(message)
+
diff --git a/vead~.pd b/vead~.pd
new file mode 100644
index 0000000..ff65980
--- /dev/null
+++ b/vead~.pd
@@ -0,0 +1,48 @@
+#N canvas 0 0 810 546 10;
+#X obj 281 314 vline~;
+#X obj 158 65 max 0.1;
+#X obj 258 65 max 0.1;
+#X text 156 22 attack (ms);
+#X text 256 22 decay (ms);
+#X text 86 22 trigger;
+#X obj 87 45 inlet;
+#X obj 158 45 inlet;
+#X obj 258 45 inlet;
+#X obj 144 467 outlet~;
+#X obj 87 65 b;
+#X obj 87 308 vline~;
+#X obj 87 215 pack 3 4;
+#X text 129 283 attack;
+#X text 317 285 decay;
+#X msg 87 261 1 \, 0 \$1 0 \, 1 0 \$1;
+#X msg 281 261 0 \, 1 0 \$1 \, 0 \$2 \$1;
+#X obj 87 195 f 3;
+#X obj 251 127 f \$1;
+#X obj 251 102 loadbang;
+#X obj 251 153 select 0;
+#X obj 325 101 loadbang;
+#X obj 325 152 select 0;
+#X obj 325 126 f \$2;
+#X obj 281 361 expr~ pow($v1 \, 6);
+#X obj 88 359 expr~ 1 - pow($v1 \, 6);
+#X connect 0 0 24 0;
+#X connect 1 0 17 1;
+#X connect 2 0 12 1;
+#X connect 6 0 10 0;
+#X connect 7 0 1 0;
+#X connect 8 0 2 0;
+#X connect 10 0 17 0;
+#X connect 11 0 25 0;
+#X connect 12 0 16 0;
+#X connect 12 0 15 0;
+#X connect 15 0 11 0;
+#X connect 16 0 0 0;
+#X connect 17 0 12 0;
+#X connect 18 0 20 0;
+#X connect 19 0 18 0;
+#X connect 20 1 17 1;
+#X connect 21 0 23 0;
+#X connect 22 1 12 1;
+#X connect 23 0 22 0;
+#X connect 24 0 9 0;
+#X connect 25 0 9 0;