aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorN.N. <chr15m@users.sourceforge.net>2007-11-17 13:58:45 +0000
committerN.N. <chr15m@users.sourceforge.net>2007-11-17 13:58:45 +0000
commit3980b38b7d9efb6f1d322ef0785feaed1f06a806 (patch)
tree56f40e8053708927921138e95b9adc2b427a5340
parentcf335a829cb3917e17a4d3074ecb193b6b9d7287 (diff)
This commit was generated by cvs2svn to compensate for changes in r9017,HEADsvn2git-headabstractions/s-abstractions
which included commits to RCS files with non-trunk default branches. svn path=/trunk/abstractions/s-abstractions/; revision=9018
-rw-r--r--.cvsignore1
-rw-r--r--s-alindx~-help.pd99
-rw-r--r--s-alindx~.pd49
-rw-r--r--s-blockout-help.pd13
-rw-r--r--s-blockout.pd24
-rw-r--r--s-chordarp-help.pd19
-rw-r--r--s-chordarp.pd120
-rw-r--r--s-controlsurface-help.pd17
-rw-r--r--s-ireplace-help.pd16
-rw-r--r--s-ireplace.pd36
-rw-r--r--s-lsystem-help.pd23
-rw-r--r--s-lsystem.pd79
-rw-r--r--s-midictlbuddy-help.pd6
-rw-r--r--s-midictlbuddy.pd57
-rw-r--r--s-midirange-help.pd9
-rw-r--r--s-midirange.pd12
-rw-r--r--s-partial~-help.pd29
-rw-r--r--s-partial~.pd77
-rw-r--r--s-recorder~-help.pd16
-rw-r--r--s-serialize-help.pd13
-rw-r--r--s-serialize.pd18
-rw-r--r--s-sinesum~-help.pd36
-rw-r--r--s-sinesum~.pd139
-rw-r--r--sssad/multifile.pd81
-rw-r--r--sssad/namedstore-help.pd30
-rw-r--r--sssad/namedstore.pd71
-rw-r--r--sx/recorder.pd23
-rw-r--r--sx/repeater.pd44
28 files changed, 1157 insertions, 0 deletions
diff --git a/.cvsignore b/.cvsignore
new file mode 100644
index 0000000..90ec22b
--- /dev/null
+++ b/.cvsignore
@@ -0,0 +1 @@
+.svn
diff --git a/s-alindx~-help.pd b/s-alindx~-help.pd
new file mode 100644
index 0000000..f67f7f3
--- /dev/null
+++ b/s-alindx~-help.pd
@@ -0,0 +1,99 @@
+#N canvas 278 181 496 371 10;
+#X obj 164 109 osc~ 440;
+#N canvas 0 0 450 300 graph1 0;
+#X array alindx_in 300 float 1;
+#A 0 1 0.998028 0.992138 0.982351 0.968707 0.951259 0.930075 0.905239
+0.876848 0.845013 0.80985 0.771503 0.730127 0.685885 0.638949 0.589504
+0.537744 0.483871 0.428098 0.37064 0.311724 0.251584 0.190457 0.128582
+0.0662019 0.00356192 -0.0590925 -0.121515 -0.183461 -0.244684 -0.304945
+-0.364009 -0.421643 -0.477621 -0.531723 -0.583738 -0.633461 -0.680696
+-0.725248 -0.766951 -0.805642 -0.841169 -0.873393 -0.902188 -0.927439
+-0.949049 -0.966932 -0.981005 -0.991223 -0.997548 -0.999956 -0.998438
+-0.992998 -0.983659 -0.970457 -0.953445 -0.932678 -0.908243 -0.880241
+-0.848784 -0.813993 -0.776006 -0.734972 -0.69105 -0.644415 -0.595245
+-0.543731 -0.490083 -0.434511 -0.377233 -0.318474 -0.258463 -0.197438
+-0.135636 -0.0733009 -0.0106769 0.0519882 0.114449 0.176459 0.237777
+0.298161 0.357374 0.415185 0.471366 0.525689 0.577946 0.627933 0.675454
+0.720323 0.762363 0.801409 0.837309 0.869921 0.899106 0.924757 0.946776
+0.965077 0.979588 0.990252 0.997028 0.999888 0.998823 0.993827 0.984921
+0.972147 0.955556 0.935212 0.911196 0.883602 0.852538 0.818125 0.780496
+0.739793 0.696185 0.649844 0.600951 0.549699 0.496287 0.440926 0.383833
+0.325232 0.265349 0.204424 0.142698 0.0804109 0.0178085 -0.044864 -0.107361
+-0.169436 -0.230847 -0.291348 -0.350704 -0.408682 -0.465055 -0.519602
+-0.572108 -0.622368 -0.670184 -0.715369 -0.757737 -0.797125 -0.833383
+-0.866367 -0.895949 -0.922013 -0.944457 -0.963191 -0.978144 -0.989249
+-0.99646 -0.999757 -0.999129 -0.994577 -0.986119 -0.973789 -0.957635
+-0.937721 -0.914121 -0.886919 -0.856234 -0.822188 -0.784912 -0.744555
+-0.701274 -0.655239 -0.60663 -0.555638 -0.502456 -0.447301 -0.39039
+-0.331946 -0.272199 -0.211383 -0.149737 -0.0875016 -0.0249223 0.0377554
+0.100284 0.162418 0.223914 0.284531 0.34403 0.402179 0.458748 0.513517
+0.566266 0.616785 0.664882 0.710368 0.753064 0.792803 0.829429 0.862798
+0.892779 0.91925 0.942101 0.961252 0.976627 0.988168 0.995828 0.999578
+0.999403 0.995303 0.987295 0.975394 0.959663 0.940164 0.916972 0.89018
+0.859893 0.826228 0.789319 0.749309 0.706348 0.66061 0.612279 0.561544
+0.508604 0.453667 0.396947 0.338669 0.27906 0.218352 0.156785 0.0946039
+0.0320514 -0.0306267 -0.0931846 -0.155377 -0.216959 -0.27769 -0.33733
+-0.395641 -0.452397 -0.507377 -0.560364 -0.611151 -0.659537 -0.705334
+-0.748362 -0.78845 -0.82543 -0.859169 -0.889533 -0.916404 -0.939676
+-0.959259 -0.975074 -0.987061 -0.995171 -0.999359 -0.999621 -0.995958
+-0.988383 -0.976928 -0.961635 -0.942567 -0.919797 -0.893415 -0.863514
+-0.830218 -0.793663 -0.75399 -0.711358 -0.665931 -0.61789 -0.567422
+-0.514725 -0.460002 -0.40347 -0.345353 -0.285881 -0.225286 -0.163807
+-0.101685 -0.0391622 0.0235146 0.0860995 0.148345 0.210007 0.270845
+0.330618 0.389093 0.44604 0.501235 0.554463 0.605515 0.654178 0.700272
+0.743616 0.78404 0.821384 0.855503 0.886263 0.913542 0.937235 0.957235
+0.973473 0.985887 0.99443;
+#X coords 0 1.2 299 -1.2 150 100 1;
+#X restore 26 239 graph;
+#N canvas 0 0 450 300 graph2 0;
+#X array alindx_out 300 float 1;
+#A 0 1 1 1 1 1 1 1 1 0.999999 0.999999 0.999998 0.999996 0.999992 0.999983
+0.999964 0.99992 0.999817 0.999566 0.99894 0.997342 0.993178 0.982143
+0.952513 0.872203 0.653278 0.0553972 -0.611507 -0.856905 -0.94689 -0.980059
+-0.992396 -0.997045 -0.998825 -0.99952 -0.999798 -0.999912 -0.999961
+-0.999982 -0.999991 -0.999995 -0.999998 -0.999999 -0.999999 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0.999999 -0.999999 -0.999998 -0.999996
+-0.999992 -0.999984 -0.999967 -0.999927 -0.999833 -0.999607 -0.999044
+-0.997608 -0.993876 -0.984004 -0.957532 -0.885843 -0.690505 -0.157036
+0.56474 0.839775 0.940593 0.977728 0.991525 0.996714 0.998697 0.99947
+0.999778 0.999904 0.999957 0.99998 0.99999 0.999995 0.999997 0.999999
+0.999999 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.999999 0.999999 0.999998 0.999996
+0.999993 0.999986 0.99997 0.999933 0.999849 0.999644 0.999137 0.997848
+0.994504 0.985673 0.962024 0.898039 0.723785 0.247937 -0.512188 -0.820534
+-0.933528 -0.975117 -0.990548 -0.996344 -0.998554 -0.999413 -0.999755
+-0.999894 -0.999953 -0.999978 -0.999989 -0.999995 -0.999997 -0.999998
+-0.999999 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0.999999 -0.999999
+-0.999998 -0.999997 -0.999993 -0.999987 -0.999972 -0.999939 -0.999862
+-0.999678 -0.999221 -0.998062 -0.995064 -0.98716 -0.966025 -0.908899
+-0.75341 -0.328846 0.453427 0.799019 0.925629 0.972198 0.989459 0.995932
+0.998396 0.999351 0.99973 0.999884 0.999948 0.999976 0.999989 0.999994
+0.999997 0.999998 0.999999 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.999999 0.999999
+0.999998 0.999997 0.999994 0.999988 0.999974 0.999944 0.999875 0.999708
+0.999296 0.998255 0.995567 0.988495 0.96961 0.918615 0.779898 0.401197
+-0.38739 -0.774842 -0.91676 -0.968925 -0.98824 -0.995471 -0.998219
+-0.999282 -0.999702 -0.999872 -0.999943 -0.999974 -0.999987 -0.999994
+-0.999997 -0.999998 -0.999999 -0.999999 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -0.999999 -0.999998 -0.999997 -0.999994 -0.999989
+-0.999977 -0.999949 -0.999886 -0.999735 -0.999364 -0.998428 -0.996017
+-0.989684 -0.972801 -0.927264 -0.803473 -0.465592 0.313558 0.747815
+0.906848 0.965269 0.986879 0.994958 0.998022 0.999205 0.999671 0.99986
+0.999938 0.999972 0.999987 0.999993 0.999997 0.999998 0.999999 0.999999
+1 1 1 1 1 1;
+#X coords 0 1.2 299 -1.2 150 100 1;
+#X restore 206 239 graph;
+#X obj 26 201 tabwrite~ alindx_in;
+#X obj 166 201 tabwrite~ alindx_out;
+#X obj 130 63 metro 500;
+#X obj 215 88 f 1;
+#X obj 165 135 s-alindx~;
+#X text 85 3 This is an s-abstraction based completely on the work
+of Tristan Chambers http://mbass.sf.net/pd-resources;
+#X obj 130 38 loadbang;
+#X connect 0 0 3 0;
+#X connect 0 0 7 0;
+#X connect 5 0 3 0;
+#X connect 5 0 4 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 1;
+#X connect 7 0 4 0;
+#X connect 9 0 5 0;
diff --git a/s-alindx~.pd b/s-alindx~.pd
new file mode 100644
index 0000000..795f924
--- /dev/null
+++ b/s-alindx~.pd
@@ -0,0 +1,49 @@
+#N canvas 424 167 621 529 10;
+#X obj 124 224 *~;
+#X obj 124 174 clip~ 0 1;
+#X obj 40 174 clip~ -1 0;
+#X obj 40 199 *~ -1;
+#X obj 40 223 *~;
+#X obj 40 334 -~ 1;
+#X obj 124 269 *~ -1;
+#X obj 124 366 +~ 1;
+#X obj 124 246 expr~ exp(-($v1*1000)/100);
+#X obj 40 308 expr~ exp(-($v1*1000)/100);
+#X obj 124 401 /~;
+#X obj 112 149 inlet~;
+#X obj 124 463 outlet~;
+#X obj 185 349 expr~ 1 - exp(-($v1*1000)/100);
+#X obj 277 191 vline~;
+#X text 210 48 This is an s-abstraction based completely on the work
+of Tristan Chambers http://mbass.sf.net/pd-resources;
+#X text 211 79 Any mistakes are mine \, not his!;
+#X obj 10 38 hsl 64 16 0 127 0 0 \$0/crank \$1/crank crank -2 -6 0
+8 -260818 -1 -1 100 1;
+#X text 210 26 Args: [name];
+#X obj 277 108 r \$0/crank;
+#X obj 277 127 + 1;
+#X obj 277 146 / 80;
+#X obj 277 168 pack f 10;
+#X obj 401 493 sssad/auto \$0/crank \$1/crank;
+#X connect 0 0 8 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 9 0;
+#X connect 5 0 7 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 6 0;
+#X connect 9 0 5 0;
+#X connect 10 0 12 0;
+#X connect 11 0 2 0;
+#X connect 11 0 1 0;
+#X connect 13 0 10 1;
+#X connect 14 0 0 1;
+#X connect 14 0 4 1;
+#X connect 14 0 13 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 14 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/s-blockout-help.pd b/s-blockout-help.pd
new file mode 100644
index 0000000..f8d7271
--- /dev/null
+++ b/s-blockout-help.pd
@@ -0,0 +1,13 @@
+#N canvas 132 173 450 300 10;
+#X obj 310 73 s-metro time;
+#X text 12 10 This abstraction 'blocks out' the outlet (sends a zero)
+for the period of one tick length (or however many specified) when
+the inlet changes. Useful if you want a midi knob to shut down something
+else while it's operating.;
+#X floatatom 37 87 5 0 127 0 - - -;
+#X floatatom 37 140 5 0 0 0 - - -;
+#X obj 130 86 r time/ticksize;
+#X obj 37 114 s-blockout 100;
+#X connect 2 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 3 0;
diff --git a/s-blockout.pd b/s-blockout.pd
new file mode 100644
index 0000000..b7d107e
--- /dev/null
+++ b/s-blockout.pd
@@ -0,0 +1,24 @@
+#N canvas 0 0 450 300 10;
+#X obj 24 28 inlet;
+#X obj 24 51 change;
+#X obj 54 98 delay;
+#X obj 24 73 t b b;
+#X msg 24 98 0;
+#X obj 24 146 outlet;
+#X msg 54 125 1;
+#X obj 96 98 loadbang;
+#X obj 84 28 inlet;
+#X text 23 4 args: time;
+#X obj 84 77 \$1;
+#X obj 126 28 loadbang;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 5 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 10 0;
+#X connect 10 0 2 1;
+#X connect 11 0 10 0;
diff --git a/s-chordarp-help.pd b/s-chordarp-help.pd
new file mode 100644
index 0000000..b37bf97
--- /dev/null
+++ b/s-chordarp-help.pd
@@ -0,0 +1,19 @@
+#N canvas 16 292 450 300 10;
+#X obj 75 22 s-midinote;
+#X obj 75 112 unpack f f;
+#X obj 75 160 osc~;
+#X obj 75 185 *~;
+#X obj 140 133 / 127;
+#X obj 75 138 mtof~;
+#X obj 75 211 s-ezdac~ midinoises;
+#X obj 213 22 s-midictl 1 arp/speed;
+#X obj 75 44 s-chordarp arp;
+#X connect 0 0 8 0;
+#X connect 1 0 5 0;
+#X connect 1 1 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 3 0 6 1;
+#X connect 4 0 3 1;
+#X connect 5 0 2 0;
+#X connect 8 0 1 0;
diff --git a/s-chordarp.pd b/s-chordarp.pd
new file mode 100644
index 0000000..c5b6c72
--- /dev/null
+++ b/s-chordarp.pd
@@ -0,0 +1,120 @@
+#N canvas 508 82 595 588 10;
+#X obj 460 3 table \$0/notes 127;
+#X obj 449 94 tabwrite \$0/notes;
+#X obj 449 47 unpack f f;
+#X obj 405 3 inlet;
+#X obj 6 39 nbx 3 14 0 127 0 1 \$0/speed \$1/speed speed 0 -6 0 8 -260818
+-1 -1 80 256;
+#X obj 319 547 outlet;
+#X obj 289 238 f;
+#X obj 320 238 + 1;
+#X obj 449 420 mtof;
+#X obj 449 442 s-ftoms;
+#X obj 289 305 tabread \$0/notes;
+#X msg 311 211 0;
+#X obj 289 285 t f f;
+#X obj 449 398 + 1;
+#X obj 449 377 r \$0/speed;
+#X obj 289 418 sel 0;
+#X obj 319 526 pack f f;
+#X obj 203 347 spigot;
+#X obj 240 306 < 127;
+#X msg 340 211 0;
+#X obj 270 376 spigot;
+#X obj 449 70 swap;
+#X obj 289 71 unpack f f;
+#X obj 289 189 t f b b;
+#X obj 240 327 t f f;
+#X obj 319 440 t f b b;
+#X msg 376 440 1;
+#X obj 270 348 sel 0;
+#X msg 270 397 0;
+#X obj 289 261 t f f;
+#X obj 319 462 swap;
+#X obj 391 485 t b b b;
+#X msg 435 505 0;
+#X obj 9 448 sssad/auto \$0/speed \$1/speed;
+#X obj 391 464 delay 100;
+#X obj 427 126 sel 0;
+#X obj 289 95 swap;
+#X obj 289 117 sel 0;
+#X obj 289 167 f;
+#X msg 319 137 bang;
+#X obj 405 23 t l l l;
+#X msg 471 147 1;
+#X msg 427 146 -1;
+#X obj 427 166 t b f;
+#X obj 471 167 t b f;
+#X obj 362 105 unpack f f;
+#X obj 457 217 + 1;
+#X obj 427 217 0;
+#X obj 457 240 sel 0;
+#X msg 457 261 0;
+#X connect 2 0 21 0;
+#X connect 2 1 21 1;
+#X connect 3 0 40 0;
+#X connect 6 0 7 0;
+#X connect 6 0 29 0;
+#X connect 7 0 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 34 1;
+#X connect 10 0 15 0;
+#X connect 11 0 6 1;
+#X connect 12 0 10 0;
+#X connect 12 1 30 1;
+#X connect 13 0 8 0;
+#X connect 14 0 13 0;
+#X connect 15 0 17 0;
+#X connect 15 1 25 0;
+#X connect 16 0 5 0;
+#X connect 17 0 6 0;
+#X connect 18 0 24 0;
+#X connect 19 0 20 1;
+#X connect 20 0 28 0;
+#X connect 21 0 1 0;
+#X connect 21 1 1 1;
+#X connect 22 0 36 0;
+#X connect 22 1 36 1;
+#X connect 23 0 6 0;
+#X connect 23 1 11 0;
+#X connect 23 2 19 0;
+#X connect 24 0 17 1;
+#X connect 24 1 27 0;
+#X connect 25 0 30 0;
+#X connect 25 1 34 0;
+#X connect 25 2 26 0;
+#X connect 26 0 20 1;
+#X connect 27 0 20 0;
+#X connect 28 0 23 0;
+#X connect 29 0 12 0;
+#X connect 29 1 18 0;
+#X connect 30 0 16 0;
+#X connect 30 1 16 1;
+#X connect 31 0 6 0;
+#X connect 31 1 16 0;
+#X connect 31 2 32 0;
+#X connect 32 0 16 1;
+#X connect 34 0 31 0;
+#X connect 35 0 42 0;
+#X connect 35 1 41 0;
+#X connect 36 0 37 0;
+#X connect 36 1 38 1;
+#X connect 37 1 39 0;
+#X connect 38 0 23 0;
+#X connect 39 0 38 0;
+#X connect 40 0 22 0;
+#X connect 40 1 45 0;
+#X connect 40 2 2 0;
+#X connect 41 0 44 0;
+#X connect 42 0 43 0;
+#X connect 43 0 47 0;
+#X connect 43 1 46 1;
+#X connect 44 0 47 0;
+#X connect 44 1 46 1;
+#X connect 45 1 35 0;
+#X connect 46 0 47 1;
+#X connect 46 0 48 0;
+#X connect 47 0 46 0;
+#X connect 48 0 49 0;
+#X connect 49 0 20 1;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/s-controlsurface-help.pd b/s-controlsurface-help.pd
new file mode 100644
index 0000000..abb86e0
--- /dev/null
+++ b/s-controlsurface-help.pd
@@ -0,0 +1,17 @@
+#N struct 1005template float x0 float y0 float id float c;
+#N canvas 343 233 503 400 10;
+#X msg 113 95 bang;
+#X obj 113 116 s-controlsurface;
+#X obj 113 351 unpack f f;
+#X floatatom 113 372 5 0 0 0 - - -;
+#X floatatom 178 372 5 0 0 0 - - -;
+#X obj 113 51 loadbang;
+#X obj 113 73 metro 100;
+#X text 10 12 s-controlsurface is like a 2d virtual kaospad with the
+ability to add multiple points.;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
diff --git a/s-ireplace-help.pd b/s-ireplace-help.pd
new file mode 100644
index 0000000..5395fe2
--- /dev/null
+++ b/s-ireplace-help.pd
@@ -0,0 +1,16 @@
+#N canvas 221 400 450 300 10;
+#X msg 14 102 clear;
+#X msg 28 134 rule 1 2 3 2 \, rule 2 3 3 1 \, rule 3 2 1;
+#X floatatom 36 163 5 0 0 0 - - -;
+#X obj 14 218 print;
+#X text 12 10 s-replacer replaces integers with lists of other integers.
+First \, set up rules using the 'rule x x x x x ...' message. The 'clear'
+message clears out all rules. Next \, send the first integer of a rule
+to recall the list that it corresponds to.;
+#X text 88 164 <- 1 \, 2 \, and 3 will yeild the lists input above.
+;
+#X obj 14 196 s-ireplace;
+#X connect 0 0 6 0;
+#X connect 1 0 6 0;
+#X connect 2 0 6 0;
+#X connect 6 0 3 0;
diff --git a/s-ireplace.pd b/s-ireplace.pd
new file mode 100644
index 0000000..d1048da
--- /dev/null
+++ b/s-ireplace.pd
@@ -0,0 +1,36 @@
+#N canvas 702 105 450 375 10;
+#X obj 9 13 inlet;
+#X obj 9 177 textfile;
+#X obj 9 35 route clear rule;
+#X msg 9 58 clear;
+#X obj 62 85 list prepend add;
+#X obj 62 107 list trim;
+#X obj 75 178 until;
+#X obj 75 133 t b b;
+#X msg 105 154 rewind;
+#X obj 9 227 list split 1;
+#X obj 9 252 ==;
+#X obj 9 300 list;
+#X obj 9 273 sel 1;
+#X obj 9 347 outlet;
+#X obj 116 57 t b l;
+#X connect 0 0 2 0;
+#X connect 1 0 9 0;
+#X connect 1 1 6 1;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 2 2 14 0;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 6 0;
+#X connect 7 1 8 0;
+#X connect 8 0 1 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 1;
+#X connect 10 0 12 0;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 14 0 7 0;
+#X connect 14 1 10 1;
diff --git a/s-lsystem-help.pd b/s-lsystem-help.pd
new file mode 100644
index 0000000..e374f8f
--- /dev/null
+++ b/s-lsystem-help.pd
@@ -0,0 +1,23 @@
+#N canvas 658 155 450 330 10;
+#X obj 13 293 print;
+#X msg 42 227 3 2 1;
+#X msg 13 170 clear \, rule 1 2 3 2 \, rule 2 3 3 1 \, rule 3 2 1;
+#X msg 42 195 1;
+#X floatatom 85 252 5 0 0 0 - - -;
+#X obj 13 270 s-lsystem 2;
+#X text 127 254 Iterations - watch out! Don't go above 5;
+#X text 12 8 s-lsystem is a Lindenmayer System implemented in Pd. See
+Wikipedia for exactly what a Lindenmayer System is. Basically you can
+set up rules (using the 'rule' message with a list) and then send source
+data into the abstraction. The list elements of the source data will
+be replaced by their corresponding rules (the first element of the
+rule list corresponds to the element that will be replaced). e.g. in
+this example \, 1 will be replaced by '2 3 2' because there is a 'rule
+1 2 3 2'. The 'clear' message will clear all rules out. The argument
+specifies the number of replacement iterations. Requires s-ireplace.
+;
+#X connect 1 0 5 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
diff --git a/s-lsystem.pd b/s-lsystem.pd
new file mode 100644
index 0000000..edbef0e
--- /dev/null
+++ b/s-lsystem.pd
@@ -0,0 +1,79 @@
+#N canvas 705 11 516 709 10;
+#X obj 14 382 s-ireplace;
+#X obj 14 43 route clear rule;
+#X obj 14 65 list prepend clear;
+#X obj 14 167 list trim;
+#X obj 67 192 list prepend rule;
+#X obj 67 213 list trim;
+#X obj 14 20 inlet;
+#X obj 18 683 outlet;
+#X obj 90 293 list split 1;
+#X obj 144 397 list append;
+#X obj 151 441 t l;
+#X obj 18 465 list;
+#X obj 41 441 list prepend;
+#X obj 121 169 t l b b;
+#X obj 60 331 t b l;
+#X obj 121 147 list;
+#X obj 248 61 loadbang;
+#X obj 248 82 \$1;
+#X obj 248 103 sel 0;
+#X msg 248 124 1;
+#X obj 121 91 t l b;
+#X obj 232 151 f;
+#X obj 261 179 - 1;
+#X obj 232 179 f;
+#X obj 72 515 f;
+#X obj 18 487 t b l;
+#X obj 50 657 list;
+#X obj 95 658 list;
+#X obj 307 124 inlet;
+#X obj 102 627 t b b;
+#X obj 72 557 sel 1;
+#X obj 72 536 <= 1;
+#X connect 0 0 12 0;
+#X connect 1 0 2 0;
+#X connect 1 1 4 0;
+#X connect 1 2 20 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 0 0;
+#X connect 6 0 1 0;
+#X connect 8 0 14 0;
+#X connect 8 1 9 1;
+#X connect 8 2 11 0;
+#X connect 9 0 8 0;
+#X connect 10 0 12 1;
+#X connect 11 0 25 0;
+#X connect 12 0 10 0;
+#X connect 12 0 11 1;
+#X connect 13 0 8 0;
+#X connect 13 1 12 1;
+#X connect 13 2 9 1;
+#X connect 14 0 9 0;
+#X connect 14 1 0 0;
+#X connect 15 0 13 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 18 1 21 1;
+#X connect 19 0 21 1;
+#X connect 20 0 15 0;
+#X connect 20 1 21 0;
+#X connect 21 0 23 0;
+#X connect 22 0 23 1;
+#X connect 23 0 22 0;
+#X connect 23 0 24 1;
+#X connect 24 0 31 0;
+#X connect 25 0 24 0;
+#X connect 25 1 26 1;
+#X connect 25 1 27 1;
+#X connect 26 0 7 0;
+#X connect 27 0 13 0;
+#X connect 28 0 21 1;
+#X connect 29 0 27 0;
+#X connect 29 1 23 0;
+#X connect 30 0 26 0;
+#X connect 30 1 29 0;
+#X connect 31 0 30 0;
diff --git a/s-midictlbuddy-help.pd b/s-midictlbuddy-help.pd
new file mode 100644
index 0000000..de424e0
--- /dev/null
+++ b/s-midictlbuddy-help.pd
@@ -0,0 +1,6 @@
+#N canvas 151 173 450 300 10;
+#X text 9 10 s-midibuddy is the all round nice-guy for helping you
+manage your midi devices. SSSAD enabled \, you can train a s-midibuddy
+instance once \, SSSAD save it \, and then forget about it - it will
+recall the correct midi listening configuration next time.;
+#X obj 132 155 s-midictlbuddy;
diff --git a/s-midictlbuddy.pd b/s-midictlbuddy.pd
new file mode 100644
index 0000000..fb76a08
--- /dev/null
+++ b/s-midictlbuddy.pd
@@ -0,0 +1,57 @@
+#N canvas 484 13 756 493 10;
+#X obj 58 227 ctlin;
+#X obj 58 394 spigot;
+#X obj 58 454 outlet;
+#X obj 173 182 loadbang;
+#X obj 173 227 == 0;
+#X obj 88 250 spigot;
+#X obj 58 341 spigot;
+#X obj 125 228 != 0;
+#X obj 120 431 spigot;
+#X obj 178 335 loadbang;
+#X msg 178 399 1;
+#X msg 236 399 0;
+#X obj 308 181 inlet;
+#X obj 308 202 route set;
+#X obj 308 225 unpack f f;
+#X obj 88 284 == \$3;
+#X obj 173 204 \$3;
+#X obj 120 455 s \$2;
+#X obj 178 377 select \$2;
+#X obj 178 356 symbol \$2;
+#X obj 95 371 == \$1;
+#X obj 5 19 tgl 16 0 \$0/record \$0/record record 20 8 0 8 -260818
+-1 -1 0 1;
+#X floatatom 116 22 5 0 0 0 - - -;
+#X floatatom 157 22 5 0 0 0 - - -;
+#X text 235 6 s-midictl [ctrl-num] [send-name] [channel];
+#X obj 402 110 ctlin;
+#X obj 458 110 r \$0/record;
+#X obj 425 164 spigot;
+#X connect 0 0 6 0;
+#X connect 0 1 20 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 17 0;
+#X connect 9 0 19 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 20 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 18 0 10 0;
+#X connect 18 1 11 0;
+#X connect 19 0 18 0;
+#X connect 20 0 1 1;
+#X coords 0 -1 1 1 200 40 1 0 0;
diff --git a/s-midirange-help.pd b/s-midirange-help.pd
new file mode 100644
index 0000000..cce960d
--- /dev/null
+++ b/s-midirange-help.pd
@@ -0,0 +1,9 @@
+#N canvas 203 263 450 300 10;
+#X floatatom 24 46 5 0 127 0 - - -;
+#X text 22 8 Maps the integers 0 -> 127 to 0 -> X where X is one larger
+than your maximum.;
+#X floatatom 24 91 5 0 0 0 - - -;
+#X text 67 91 Output goes from 0 to 16;
+#X obj 24 67 s-midirange 17;
+#X connect 0 0 4 0;
+#X connect 4 0 2 0;
diff --git a/s-midirange.pd b/s-midirange.pd
new file mode 100644
index 0000000..81567b2
--- /dev/null
+++ b/s-midirange.pd
@@ -0,0 +1,12 @@
+#N canvas 0 0 450 300 10;
+#X obj 12 8 inlet;
+#X obj 12 53 * \$1;
+#X obj 12 74 int;
+#X obj 12 96 change;
+#X obj 12 117 outlet;
+#X obj 12 30 / 128;
+#X connect 0 0 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 1 0;
diff --git a/s-partial~-help.pd b/s-partial~-help.pd
new file mode 100644
index 0000000..052073e
--- /dev/null
+++ b/s-partial~-help.pd
@@ -0,0 +1,29 @@
+#N canvas 89 28 719 605 10;
+#X obj 173 497 s-ezdac~ o;
+#X obj 156 389 catch~ a/sum;
+#X obj 221 424 catch~ b/sum;
+#X msg 362 26 \; a/trigger bang \; b/trigger bang \;;
+#X obj 493 115 s a/frequency;
+#X obj 482 138 s b/frequency;
+#X obj 482 87 mtof;
+#X obj 601 138 s b/duration;
+#X obj 613 115 s a/duration;
+#X obj 482 68 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 64 256;
+#X obj 601 67 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 236 256;
+#X obj 601 86 * 10;
+#X obj 25 97 s-partial~ a 3 1 1 0;
+#X obj 25 119 s-partial~ a 5 0.5 1.3333 0.1;
+#X obj 25 145 s-partial~ a 2 1 2.66667 0.1;
+#X obj 254 96 s-partial~ b 3 1 1 0.2;
+#X obj 253 118 s-partial~ b 5 0.5 1.3333 0.3;
+#X obj 253 144 s-partial~ b 2.5 1 2.66667 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 6 0 5 0;
+#X connect 6 0 4 0;
+#X connect 9 0 6 0;
+#X connect 10 0 11 0;
+#X connect 11 0 7 0;
+#X connect 11 0 8 0;
diff --git a/s-partial~.pd b/s-partial~.pd
new file mode 100644
index 0000000..3f00664
--- /dev/null
+++ b/s-partial~.pd
@@ -0,0 +1,77 @@
+#N canvas 18 78 880 448 10;
+#X obj 465 234 sqrt;
+#X text 17 71 trigger;
+#X text 33 175 relative frequency;
+#X obj 17 341 *~;
+#X obj 227 322 line~;
+#X obj 227 349 *~;
+#X obj 227 376 *~;
+#X msg 227 285 0 \$1;
+#X obj 465 261 sqrt;
+#X obj 227 158 t b b;
+#X text 303 209 relative duration;
+#X obj 17 123 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 465 288 \$1 5;
+#X obj 227 185 del 5;
+#X obj 465 207 * 0.1;
+#X text 550 178 get amplitude from argument 1;
+#X text 524 206 normalize to 0.1;
+#X text 516 233 take fourth root (square root twice);
+#X text 544 250 because we'll raise line~ output to;
+#X text 543 267 fourth power;
+#X text 515 292 attack time 5 msec;
+#X text 280 184 decay after 5 msec;
+#X text 469 157 attack;
+#X obj 227 258 *;
+#X text 264 258 actual duration;
+#X obj 17 252 *;
+#X obj 17 314 osc~;
+#X text 49 252 times global freq.;
+#X text 60 279 plus detune;
+#X text 271 285 decay msg to line~;
+#X text 266 350 raise to fourth power for;
+#X text 267 368 natural-sounding decay shape;
+#X text 73 405 add to global;
+#X text 72 424 summing bus;
+#X text 631 12 arguments:;
+#X text 25 4 s-partial is based on D01.additive.pd but is more generic.
+Any mistakes are my own!;
+#X text 605 37 0 name \; 1 amplitude \; 2 relative duration \; 3 relative
+frequency \; 4 detune;
+#X obj 17 96 r \$1/trigger;
+#X obj 17 200 float \$4;
+#X obj 226 211 float \$3;
+#X obj 39 226 r \$1/frequency;
+#X obj 17 279 + \$5;
+#X obj 249 235 r \$1/duration;
+#X obj 465 180 float \$2;
+#X obj 70 377 throw~ \$1/sum;
+#X obj 14 398 outlet~;
+#X connect 0 0 8 0;
+#X connect 3 0 44 0;
+#X connect 3 0 45 0;
+#X connect 4 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 6 0;
+#X connect 5 0 6 1;
+#X connect 6 0 3 1;
+#X connect 7 0 4 0;
+#X connect 8 0 12 0;
+#X connect 9 0 13 0;
+#X connect 9 1 43 0;
+#X connect 11 0 9 0;
+#X connect 11 0 38 0;
+#X connect 12 0 4 0;
+#X connect 13 0 39 0;
+#X connect 14 0 0 0;
+#X connect 23 0 7 0;
+#X connect 25 0 41 0;
+#X connect 26 0 3 0;
+#X connect 37 0 11 0;
+#X connect 38 0 25 0;
+#X connect 39 0 23 0;
+#X connect 40 0 25 1;
+#X connect 41 0 26 0;
+#X connect 42 0 23 1;
+#X connect 43 0 14 0;
diff --git a/s-recorder~-help.pd b/s-recorder~-help.pd
new file mode 100644
index 0000000..edae981
--- /dev/null
+++ b/s-recorder~-help.pd
@@ -0,0 +1,16 @@
+#N canvas 589 269 450 300 10;
+#X obj 10 108 s-recorder~ rec;
+#X obj 10 48 osc~ 440;
+#X obj 334 146 osc~ 220;
+#X text 9 5 Quick and easy way to record audio streams;
+#X text 10 197 Global receivers for left and right are called mainout-l
+and mainout-r.;
+#X obj 215 146 osc~ 110;
+#X msg 170 67 \; rec/record 1 \;;
+#X text 168 49 Trigger recording externally.;
+#X obj 334 174 throw~ mainout-l;
+#X obj 215 174 throw~ mainout-r;
+#X connect 1 0 0 0;
+#X connect 1 0 0 1;
+#X connect 2 0 8 0;
+#X connect 5 0 9 0;
diff --git a/s-serialize-help.pd b/s-serialize-help.pd
new file mode 100644
index 0000000..704a2bb
--- /dev/null
+++ b/s-serialize-help.pd
@@ -0,0 +1,13 @@
+#N canvas 632 290 450 300 10;
+#X obj 9 71 s-serialize;
+#X text 9 7 Takes a list and serialises it (outputs one value from
+the list every time it's banged.;
+#X msg 81 47 10 9 8 7 hello mr pants 3 2 1;
+#X obj 9 100 print;
+#X obj 81 96 print done;
+#X obj 9 48 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1
+;
+#X connect 0 0 3 0;
+#X connect 0 1 4 0;
+#X connect 2 0 0 1;
+#X connect 5 0 0 0;
diff --git a/s-serialize.pd b/s-serialize.pd
new file mode 100644
index 0000000..7a1b88f
--- /dev/null
+++ b/s-serialize.pd
@@ -0,0 +1,18 @@
+#N canvas 679 300 450 300 10;
+#X obj 6 71 list split 1;
+#X obj 56 96 list append;
+#X obj 6 96 t l b;
+#X obj 6 50 list;
+#X obj 6 22 inlet;
+#X obj 49 22 inlet;
+#X obj 6 121 outlet;
+#X obj 85 121 outlet;
+#X connect 0 0 2 0;
+#X connect 0 1 1 1;
+#X connect 0 2 7 0;
+#X connect 1 0 3 1;
+#X connect 2 0 6 0;
+#X connect 2 1 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
+#X connect 5 0 3 1;
diff --git a/s-sinesum~-help.pd b/s-sinesum~-help.pd
new file mode 100644
index 0000000..c0d1474
--- /dev/null
+++ b/s-sinesum~-help.pd
@@ -0,0 +1,36 @@
+#N canvas 519 220 502 482 10;
+#X obj 10 144 s-sinesum~ sinez;
+#X text 6 63 Signal inlet designates frequency;
+#X floatatom 10 89 5 0 0 0 - - -;
+#X obj 10 107 mtof~;
+#X obj 10 342 s-ezdac~ out;
+#X msg 276 221 \; sinez/harmonic/4 100 \;;
+#X msg 276 256 \; sinez/harmonic/4 20 \;;
+#X msg 117 120 0;
+#X text 155 135 <- Right inlet resets phase (like [phasor~]);
+#X text 8 10 s-sinesum~ makes complex \, harmonically rich sinusoids
+\, with SSSAD state saving.;
+#X obj 373 64 sssad/datastore;
+#N canvas 0 0 450 300 datastore 0;
+#X obj 10 10 r SSSADDATA;
+#X msg 10 30 \; SSSAD sinez/harmonic/12 0 \; SSSAD sinez/harmonic/11
+0 \; SSSAD sinez/harmonic/10 56 \; SSSAD sinez/harmonic/9 0 \; SSSAD
+sinez/harmonic/8 66 \; SSSAD sinez/harmonic/7 1 \; SSSAD sinez/harmonic/6
+1 \; SSSAD sinez/harmonic/5 0 \; SSSAD sinez/harmonic/4 20 \; SSSAD
+sinez/harmonic/3 27 \; SSSAD sinez/harmonic/2 9 \; SSSAD sinez/harmonic/1
+71 \; SSSAD out/volume 127 \; SSSAD out/pan 61.9881 \; SSSAD_ADMIN
+set \;;
+#X connect 0 0 1 0;
+#X restore 373 44 pd datastore;
+#X obj 10 320 *~ 5;
+#X obj 276 316 line;
+#X msg 276 293 127 \, 0 2000 \;;
+#X obj 276 338 s sinez/harmonic/5 \;;
+#X connect 0 0 12 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 7 0 0 1;
+#X connect 12 0 4 0;
+#X connect 12 0 4 1;
+#X connect 13 0 15 0;
+#X connect 14 0 13 0;
diff --git a/s-sinesum~.pd b/s-sinesum~.pd
new file mode 100644
index 0000000..7eabfc3
--- /dev/null
+++ b/s-sinesum~.pd
@@ -0,0 +1,139 @@
+#N canvas 85 105 1032 604 10;
+#X obj 861 10 inlet~;
+#X obj 861 122 outlet~;
+#X obj 861 37 phasor~;
+#X obj 909 9 inlet;
+#X obj 861 81 tabread4~ \$0/wavetable;
+#X obj 861 146 table \$0/wavetable;
+#X obj 254 549 s \$0/wavetable;
+#X obj 861 59 *~ 1024;
+#X msg 254 526 sinesum 1024 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 \$10
+\$11 \$12;
+#X obj 254 502 pack f f f f f f f f f f f f;
+#X obj 136 221 r \$0/harmonic/2;
+#X obj 23 221 r \$0/harmonic/1;
+#X obj 136 261 t b f;
+#X obj 136 241 / 127;
+#X obj 23 241 / 127;
+#X obj 190 283 t b f;
+#X obj 190 263 / 127;
+#X obj 239 308 t b f;
+#X obj 239 288 / 127;
+#X obj 190 243 r \$0/harmonic/3;
+#X obj 239 268 r \$0/harmonic/4;
+#X obj 288 332 t b f;
+#X obj 288 312 / 127;
+#X obj 288 292 r \$0/harmonic/5;
+#X obj 351 268 t b f;
+#X obj 351 248 / 127;
+#X obj 351 228 r \$0/harmonic/6;
+#X obj 405 288 t b f;
+#X obj 405 268 / 127;
+#X obj 405 248 r \$0/harmonic/7;
+#X obj 446 308 t b f;
+#X obj 446 288 / 127;
+#X obj 446 268 r \$0/harmonic/8;
+#X obj 488 328 t b f;
+#X obj 488 308 / 127;
+#X obj 488 288 r \$0/harmonic/9;
+#X obj 562 268 t b f;
+#X obj 562 248 / 127;
+#X obj 603 288 t b f;
+#X obj 603 268 / 127;
+#X obj 645 308 t b f;
+#X obj 645 288 / 127;
+#X obj 562 228 r \$0/harmonic/10;
+#X obj 603 248 r \$0/harmonic/11;
+#X obj 645 268 r \$0/harmonic/12;
+#X obj 5 33 vsl 8 128 0 127 0 0 \$0/harmonic/1 \$1/harmonic/1 harmonics
+2 -8 0 8 -260818 -1 -1 7100 1;
+#X obj 13 33 vsl 8 128 0 127 0 0 \$0/harmonic/2 \$1/harmonic/2 empty
+2 -8 0 8 -260818 -1 -1 900 1;
+#X obj 21 33 vsl 8 128 0 127 0 0 \$0/harmonic/3 \$1/harmonic/3 empty
+2 -8 0 8 -260818 -1 -1 2700 1;
+#X obj 29 33 vsl 8 128 0 127 0 0 \$0/harmonic/4 \$1/harmonic/4 empty
+2 -8 0 8 -260818 -1 -1 4300 1;
+#X obj 37 33 vsl 8 128 0 127 0 0 \$0/harmonic/5 \$1/harmonic/5 empty
+2 -8 0 8 -260818 -1 -1 0 1;
+#X obj 45 33 vsl 8 128 0 127 0 0 \$0/harmonic/6 \$1/harmonic/6 empty
+2 -8 0 8 -260818 -1 -1 100 1;
+#X obj 53 33 vsl 8 128 0 127 0 0 \$0/harmonic/7 \$1/harmonic/7 empty
+2 -8 0 8 -260818 -1 -1 100 1;
+#X obj 61 33 vsl 8 128 0 127 0 0 \$0/harmonic/8 \$1/harmonic/8 empty
+2 -8 0 8 -260818 -1 -1 6600 1;
+#X obj 69 33 vsl 8 128 0 127 0 0 \$0/harmonic/9 \$1/harmonic/9 empty
+2 -8 0 8 -260818 -1 -1 0 1;
+#X obj 77 33 vsl 8 128 0 127 0 0 \$0/harmonic/10 \$1/harmonic/10 empty
+0 -8 0 6 -260818 -1 -1 5600 1;
+#X obj 85 33 vsl 8 128 0 127 0 0 \$0/harmonic/11 \$1/harmonic/11 empty
+0 -8 0 6 -260818 -1 -1 0 1;
+#X obj 93 33 vsl 8 128 0 127 0 0 \$0/harmonic/12 \$1/harmonic/12 empty
+0 -8 0 6 -260818 -1 -1 0 1;
+#X obj 718 316 sssad/auto \$0/harmonic/1 \$1/harmonic/1;
+#X obj 718 335 sssad/auto \$0/harmonic/2 \$1/harmonic/2;
+#X obj 718 354 sssad/auto \$0/harmonic/3 \$1/harmonic/3;
+#X obj 718 373 sssad/auto \$0/harmonic/4 \$1/harmonic/4;
+#X obj 718 392 sssad/auto \$0/harmonic/5 \$1/harmonic/5;
+#X obj 718 411 sssad/auto \$0/harmonic/6 \$1/harmonic/6;
+#X obj 718 430 sssad/auto \$0/harmonic/7 \$1/harmonic/7;
+#X obj 718 449 sssad/auto \$0/harmonic/8 \$1/harmonic/8;
+#X obj 718 468 sssad/auto \$0/harmonic/9 \$1/harmonic/9;
+#X obj 718 487 sssad/auto \$0/harmonic/10 \$1/harmonic/10;
+#X obj 718 506 sssad/auto \$0/harmonic/11 \$1/harmonic/11;
+#X obj 718 525 sssad/auto \$0/harmonic/12 \$1/harmonic/12;
+#X obj 861 102 /~ 127;
+#X connect 0 0 2 0;
+#X connect 2 0 7 0;
+#X connect 3 0 2 1;
+#X connect 4 0 69 0;
+#X connect 7 0 4 0;
+#X connect 8 0 6 0;
+#X connect 9 0 8 0;
+#X connect 10 0 13 0;
+#X connect 11 0 14 0;
+#X connect 12 0 9 0;
+#X connect 12 1 9 1;
+#X connect 13 0 12 0;
+#X connect 14 0 9 0;
+#X connect 15 0 9 0;
+#X connect 15 1 9 2;
+#X connect 16 0 15 0;
+#X connect 17 0 9 0;
+#X connect 17 1 9 3;
+#X connect 18 0 17 0;
+#X connect 19 0 16 0;
+#X connect 20 0 18 0;
+#X connect 21 0 9 0;
+#X connect 21 1 9 4;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;
+#X connect 24 0 9 0;
+#X connect 24 1 9 5;
+#X connect 25 0 24 0;
+#X connect 26 0 25 0;
+#X connect 27 0 9 0;
+#X connect 27 1 9 6;
+#X connect 28 0 27 0;
+#X connect 29 0 28 0;
+#X connect 30 0 9 0;
+#X connect 30 1 9 7;
+#X connect 31 0 30 0;
+#X connect 32 0 31 0;
+#X connect 33 0 9 0;
+#X connect 33 1 9 8;
+#X connect 34 0 33 0;
+#X connect 35 0 34 0;
+#X connect 36 0 9 0;
+#X connect 36 1 9 9;
+#X connect 37 0 36 0;
+#X connect 38 0 9 0;
+#X connect 38 1 9 10;
+#X connect 39 0 38 0;
+#X connect 40 0 9 0;
+#X connect 40 1 9 11;
+#X connect 41 0 40 0;
+#X connect 42 0 37 0;
+#X connect 43 0 39 0;
+#X connect 44 0 41 0;
+#X connect 69 0 1 0;
+#X coords 0 -1 1 1 106 170 1 0 0;
diff --git a/sssad/multifile.pd b/sssad/multifile.pd
new file mode 100644
index 0000000..9d66abe
--- /dev/null
+++ b/sssad/multifile.pd
@@ -0,0 +1,81 @@
+#N canvas 0 0 590 570 10;
+#N canvas 425 94 599 674 saveme 0;
+#X obj 321 386 textfile;
+#X msg 210 287 clear;
+#X msg 395 369 print;
+#X obj 321 310 list prepend add;
+#X obj 321 336 list trim;
+#X obj 188 387 s SSSAD_ADMIN;
+#X obj 321 242 r SSSAD_ADMIN;
+#X obj 321 286 route persist;
+#X obj 321 264 list trim;
+#X msg 188 321 save;
+#X msg 202 360 set;
+#X obj 166 251 t a b b;
+#X msg 166 434 write \$1;
+#X obj 107 129 hradio 15 1 0 8 empty empty save 0 -6 0 8 -262144 -1
+-1 0;
+#X obj 107 543 until;
+#X msg 107 522 100;
+#X obj 107 499 t b a;
+#X msg 155 543 read \$1 \, rewind;
+#X text 139 522 Avoid loops. A bang normally also works.;
+#X obj 107 159 hradio 15 1 0 8 empty empty load 0 -6 0 8 -262144 -1
+-1 0;
+#X obj 166 220 makefilename state-%d.sssad;
+#X obj 107 457 makefilename state-%d.sssad;
+#X obj 319 433 s SSSAD;
+#X obj 386 430 s SSSAD_ADMIN;
+#X msg 386 405 set;
+#X connect 0 0 22 0;
+#X connect 0 1 24 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 6 0 8 0;
+#X connect 7 0 3 0;
+#X connect 8 0 7 0;
+#X connect 9 0 5 0;
+#X connect 10 0 5 0;
+#X connect 11 0 12 0;
+#X connect 11 1 9 0;
+#X connect 11 2 1 0;
+#X connect 12 0 0 0;
+#X connect 13 0 20 0;
+#X connect 14 0 0 0;
+#X connect 15 0 14 0;
+#X connect 16 0 15 0;
+#X connect 16 1 17 0;
+#X connect 17 0 0 0;
+#X connect 19 0 21 0;
+#X connect 20 0 11 0;
+#X connect 21 0 16 0;
+#X connect 24 0 23 0;
+#X coords 0 -1 1 1 155 80 1 100 100;
+#X restore 344 171 pd saveme;
+#X floatatom 171 91 5 0 0 0 - - -;
+#X obj 154 166 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 227 272 pack 0 0;
+#X obj 248 251 t b f;
+#X floatatom 227 225 5 0 0 0 - - -;
+#X floatatom 266 225 5 0 0 0 - - -;
+#X obj 104 318 unpack 0 0;
+#X obj 106 127 sssad/sssad store_me;
+#X obj 94 197 sssad/sssad store_me_too;
+#X obj 104 293 sssad/sssad store_a_list;
+#X text 56 17 This isn't finished yet. It's something Frank started
+that I want to turn into something else.;
+#X connect 1 0 8 1;
+#X connect 2 0 9 1;
+#X connect 3 0 10 1;
+#X connect 4 0 3 0;
+#X connect 4 1 3 1;
+#X connect 5 0 3 0;
+#X connect 6 0 4 0;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 1 0;
+#X connect 9 0 2 0;
+#X connect 10 0 7 0;
diff --git a/sssad/namedstore-help.pd b/sssad/namedstore-help.pd
new file mode 100644
index 0000000..984986b
--- /dev/null
+++ b/sssad/namedstore-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/namedstore.pd b/sssad/namedstore.pd
new file mode 100644
index 0000000..2bc6da0
--- /dev/null
+++ b/sssad/namedstore.pd
@@ -0,0 +1,71 @@
+#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 369 r SSSAD_ADMIN;
+#X obj 442 424 route persist;
+#X obj 442 394 list trim;
+#X obj 442 480 list trim;
+#X msg 96 239 save;
+#X obj 118 492 s SSSAD_ADMIN;
+#X obj 442 456 list prepend add SSSAD;
+#X msg 140 452 set \, addsemi;
+#X msg 96 520 add SSSAD_ADMIN set;
+#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 122 bang;
+#X obj 327 165 list trim;
+#X obj 327 144 list append \$1;
+#X obj 327 224 route 0;
+#X obj 327 102 loadbang;
+#X obj 478 253 makefilename pd-%s;
+#X obj 154 335 symbol;
+#X msg 191 316 symbol \$1;
+#X msg 328 253 symbol pd-datastore;
+#X obj 478 232 list;
+#X msg 154 379 \; \$1 clear \; \$1 obj 10 10 r \$1/SSSADDATA \; \$1
+msg 10 30 \; \$1 connect 0 0 1 0 \;;
+#X obj 233 559 s \$1/SSSADDATA;
+#X obj 16 126 s \$1/SSSADDATA;
+#X obj 154 357 pack s s;
+#X obj 357 205 list;
+#X obj 327 185 t a a;
+#X connect 3 0 30 0;
+#X connect 6 0 8 0;
+#X connect 7 0 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 29 0;
+#X connect 10 0 16 0;
+#X connect 12 0 9 0;
+#X connect 13 0 29 0;
+#X connect 14 0 29 0;
+#X connect 15 0 10 0;
+#X connect 16 0 14 0;
+#X connect 16 1 11 0;
+#X connect 16 2 13 0;
+#X connect 16 3 24 0;
+#X connect 16 4 17 0;
+#X connect 18 0 20 0;
+#X connect 19 0 33 0;
+#X connect 20 0 19 0;
+#X connect 21 0 26 0;
+#X connect 21 1 27 0;
+#X connect 22 0 18 0;
+#X connect 23 0 25 0;
+#X connect 24 0 31 0;
+#X connect 25 0 24 1;
+#X connect 26 0 25 0;
+#X connect 27 0 23 0;
+#X connect 31 0 28 0;
+#X connect 32 0 31 1;
+#X connect 33 0 21 0;
+#X connect 33 1 32 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/recorder.pd b/sx/recorder.pd
new file mode 100644
index 0000000..782cece
--- /dev/null
+++ b/sx/recorder.pd
@@ -0,0 +1,23 @@
+#N canvas 9 16 450 300 10;
+#X obj 16 126 gemhead -1;
+#X obj 16 270 pix_write;
+#X msg 150 147 auto 1;
+#X obj 16 170 spigot;
+#X obj 150 126 loadbang;
+#X obj 217 147 savepanel;
+#X msg 217 168 file \$1 80;
+#X obj 7 21 tgl 16 0 \$0/record \$1/record record 18 8 0 8 -260818
+-1 -1 0 1;
+#X obj 53 147 r \$0/record;
+#X obj 7 41 bng 16 250 50 0 \$0/file \$1/file file 18 8 0 8 -260818
+-1 -1;
+#X obj 217 126 r \$0/file;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
+#X connect 8 0 3 1;
+#X connect 10 0 5 0;
+#X coords 0 -1 1 1 85 60 1 0 0;
diff --git a/sx/repeater.pd b/sx/repeater.pd
new file mode 100644
index 0000000..0f6f7a7
--- /dev/null
+++ b/sx/repeater.pd
@@ -0,0 +1,44 @@
+#N canvas 13 12 450 300 10;
+#X obj 80 35 inlet;
+#X obj 80 205 outlet;
+#X obj 80 182 gemhead;
+#X obj 14 118 loadbang;
+#X msg 14 145 0;
+#X obj 80 151 t b a;
+#X obj 80 87 bang;
+#X obj 180 206 outlet;
+#N canvas 360 375 401 263 countto 0;
+#X obj 105 151 f;
+#X obj 139 152 + 1;
+#X msg 153 118 0;
+#X obj 105 20 inlet;
+#X obj 105 181 outlet;
+#X obj 105 119 until;
+#X obj 105 65 f;
+#X obj 105 45 t a b;
+#X obj 105 95 max 0;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 3 0 7 0;
+#X connect 5 0 0 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 2 0;
+#X connect 8 0 5 0;
+#X restore 80 130 pd countto;
+#X obj 159 36 inlet;
+#X obj 80 108 f;
+#X obj 159 56 s-default \$1 1;
+#X connect 0 0 6 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X connect 5 1 7 0;
+#X connect 6 0 10 0;
+#X connect 8 0 5 0;
+#X connect 9 0 11 0;
+#X connect 10 0 8 0;
+#X connect 11 0 10 1;