aboutsummaryrefslogtreecommitdiff
path: root/abs
diff options
context:
space:
mode:
authorTom Schouten <doelie@users.sourceforge.net>2003-09-12 22:26:57 +0000
committerTom Schouten <doelie@users.sourceforge.net>2003-09-12 22:26:57 +0000
commit494a07a361fe4ee0e54f77468a976b1a77818770 (patch)
treeb784b32b2a29e379c6ae5947cdcdcdaadde72b5e /abs
parent9f8757ccf742d984bd1c1a5d1e5906e9fd50784e (diff)
creb 0.9.0
svn path=/trunk/externals/creb/; revision=956
Diffstat (limited to 'abs')
-rw-r--r--abs/64k.pd38
-rw-r--r--abs/cadd~.pd12
-rw-r--r--abs/ccmap~.pd36
-rw-r--r--abs/cconj~.pd10
-rw-r--r--abs/cep~.pd18
-rw-r--r--abs/cinv~.pd27
-rw-r--r--abs/cmul~.pd28
-rw-r--r--abs/cosc~.pd22
-rw-r--r--abs/cstate+~.pd9
-rw-r--r--abs/cstate~.pd7
-rw-r--r--abs/csub~.pd16
-rw-r--r--abs/dsfosc~.pd73
-rw-r--r--abs/expmap~.pd38
-rw-r--r--abs/fblock.pd2
-rw-r--r--abs/fblock~.pd22
-rw-r--r--abs/fmod.pd25
-rw-r--r--abs/fmop~.pd20
-rw-r--r--abs/frequor~.pd26
-rw-r--r--abs/icep~.pd18
-rw-r--r--abs/idsfosc~.pd27
-rw-r--r--abs/lattice3.pd31
-rw-r--r--abs/lpifft~.pd61
-rw-r--r--abs/pulsor~.pd39
-rw-r--r--abs/sin~.pd8
-rw-r--r--abs/step_16.pd53
-rw-r--r--abs/step_16r.pd50
-rw-r--r--abs/step_4.pd36
-rw-r--r--abs/step_4r.pd26
-rw-r--r--abs/ti_hihat.pd195
-rw-r--r--abs/ti_snare.pd74
-rw-r--r--abs/ucmod~.pd27
-rw-r--r--abs/ucnorm~.pd27
32 files changed, 1081 insertions, 20 deletions
diff --git a/abs/64k.pd b/abs/64k.pd
index 7dc4933..9a919b1 100644
--- a/abs/64k.pd
+++ b/abs/64k.pd
@@ -1,19 +1,19 @@
-#N canvas 50 0 979 783 10;
+#N canvas 0 0 968 634 10;
#X obj 501 74 soundfiler;
#X obj 45 125 * 65536;
-#X obj 91 649 +~;
-#X obj 106 618 *~ 65536;
-#X obj 289 309 metro 62.5;
-#X obj 116 580 phasor~ 1;
-#X obj 279 460 sel 0;
-#X msg 279 527 0;
-#X obj 561 181 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144
--1 -1;
+#X obj 197 414 +~;
+#X obj 212 383 *~ 65536;
+#X obj 268 232 metro 62.5;
+#X obj 213 347 phasor~ 1;
+#X obj 272 271 sel 0;
+#X msg 270 296 0;
+#X obj 561 181 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
#X obj 45 35 +;
#X obj 45 10 *;
-#X obj 391 276 bpm;
-#X msg 286 254 reset;
-#X obj 202 164 count 32;
+#X obj 683 196 bpm;
+#X msg 265 177 reset;
+#X obj 189 133 count 32;
#X obj 478 -63 loadbang;
#X obj 265 55 mod 16;
#X obj 257 2 *;
@@ -32,7 +32,7 @@
#X text 151 -46 sample offset;
#X obj 377 -23 inlet;
#X text 357 -44 beat offset;
-#X obj 116 535 f;
+#X obj 601 278 f;
#X obj 681 144 inlet;
#X text 688 123 bpm;
#X msg 500 43 read -resize -raw 0 1 2 l \$1 \$2;
@@ -40,14 +40,14 @@
#X obj 571 -47 t b b;
#X obj 589 144 inlet;
#X text 589 123 reset;
-#X obj 91 704 outlet~;
+#X obj 193 477 outlet~;
#X obj 580 -17 symbol \$0-table;
#X obj 795 95 table \$0-table;
-#X obj 91 675 tabread4~ \$0-table;
-#X text 608 612 reset;
-#X obj 608 633 outlet;
-#X obj 387 644 outlet;
-#X text 387 623 counter;
+#X obj 201 441 tabread4~ \$0-table;
+#X text 433 459 reset;
+#X obj 433 480 outlet;
+#X obj 362 480 outlet;
+#X text 362 459 counter;
#X connect 0 0 24 0;
#X connect 1 0 2 0;
#X connect 2 0 43 0;
diff --git a/abs/cadd~.pd b/abs/cadd~.pd
new file mode 100644
index 0000000..47a31c0
--- /dev/null
+++ b/abs/cadd~.pd
@@ -0,0 +1,12 @@
+#N canvas 800 696 381 197 10;
+#X obj 58 49 inlet~;
+#X obj 58 159 outlet~;
+#X text 49 5 complex addition;
+#X obj 195 49 inlet~;
+#X obj 114 49 inlet~;
+#X obj 114 159 outlet~;
+#X obj 251 49 inlet~;
+#X connect 0 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 6 0 5 0;
diff --git a/abs/ccmap~.pd b/abs/ccmap~.pd
new file mode 100644
index 0000000..8fbeb31
--- /dev/null
+++ b/abs/ccmap~.pd
@@ -0,0 +1,36 @@
+#N canvas 725 589 450 300 10;
+#X obj 39 85 inlet~;
+#X obj 139 254 outlet~;
+#X obj 210 86 inlet~;
+#X obj 98 85 inlet~;
+#X obj 198 254 outlet~;
+#X obj 269 86 inlet~;
+#X text 63 58 z;
+#X text 237 60 a;
+#X obj 159 206 cinv~;
+#X obj 138 230 cmul~;
+#X obj 211 117 cconj~;
+#X obj 159 167 -~ 1;
+#X obj 64 169 csub~;
+#X text 23 10 conformal self map of the unit disk (z-a)/(1-conj(a)z)
+;
+#X obj 182 142 cmul~;
+#X connect 0 0 12 2;
+#X connect 0 0 14 0;
+#X connect 2 0 10 0;
+#X connect 2 0 12 0;
+#X connect 3 0 12 3;
+#X connect 3 0 14 1;
+#X connect 5 0 10 1;
+#X connect 5 0 12 1;
+#X connect 8 0 9 2;
+#X connect 8 1 9 3;
+#X connect 9 0 1 0;
+#X connect 9 1 4 0;
+#X connect 10 0 14 2;
+#X connect 10 1 14 3;
+#X connect 11 0 8 0;
+#X connect 12 0 9 0;
+#X connect 12 1 9 1;
+#X connect 14 0 11 0;
+#X connect 14 1 8 1;
diff --git a/abs/cconj~.pd b/abs/cconj~.pd
new file mode 100644
index 0000000..dcf2f5f
--- /dev/null
+++ b/abs/cconj~.pd
@@ -0,0 +1,10 @@
+#N canvas 700 418 285 166 10;
+#X obj 58 49 inlet~;
+#X obj 57 105 outlet~;
+#X obj 195 49 inlet~;
+#X obj 194 105 outlet~;
+#X obj 194 75 *~ -1;
+#X text 49 5 complex conjugate;
+#X connect 0 0 1 0;
+#X connect 2 0 4 0;
+#X connect 4 0 3 0;
diff --git a/abs/cep~.pd b/abs/cep~.pd
new file mode 100644
index 0000000..cbebf0e
--- /dev/null
+++ b/abs/cep~.pd
@@ -0,0 +1,18 @@
+#N canvas 203 382 521 228 10;
+#X obj 70 42 inlet~;
+#X obj 124 42 inlet~;
+#X obj 94 66 nfft~;
+#X obj 94 95 clog~;
+#X obj 94 124 nifft~;
+#X obj 68 164 outlet~;
+#X obj 126 164 outlet~;
+#X text 229 45 forward cepstrum;
+#X text 229 64 using normalized fft/ifft objects;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 0;
+#X connect 2 1 3 1;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
diff --git a/abs/cinv~.pd b/abs/cinv~.pd
new file mode 100644
index 0000000..c7d4fa3
--- /dev/null
+++ b/abs/cinv~.pd
@@ -0,0 +1,27 @@
+#N canvas 808 178 381 297 10;
+#X obj 58 49 inlet~;
+#X obj 58 207 outlet~;
+#X obj 59 182 *~;
+#X obj 110 84 *~;
+#X obj 195 49 inlet~;
+#X obj 179 208 outlet~;
+#X obj 180 183 *~;
+#X obj 145 83 *~;
+#X obj 94 119 /~;
+#X obj 196 111 *~ -1;
+#X obj 73 85 +~ 1;
+#X text 49 5 complex inverse;
+#X connect 0 0 2 0;
+#X connect 0 0 3 0;
+#X connect 0 0 3 1;
+#X connect 2 0 1 0;
+#X connect 3 0 8 1;
+#X connect 4 0 7 0;
+#X connect 4 0 7 1;
+#X connect 4 0 9 0;
+#X connect 6 0 5 0;
+#X connect 7 0 8 1;
+#X connect 8 0 2 1;
+#X connect 8 0 6 0;
+#X connect 9 0 6 1;
+#X connect 10 0 8 0;
diff --git a/abs/cmul~.pd b/abs/cmul~.pd
new file mode 100644
index 0000000..f7e9b5a
--- /dev/null
+++ b/abs/cmul~.pd
@@ -0,0 +1,28 @@
+#N canvas 24 618 381 197 10;
+#X obj 58 49 inlet~;
+#X obj 58 159 outlet~;
+#X obj 177 154 outlet~;
+#X text 49 5 complex multiplication;
+#X obj 178 131 +~;
+#X obj 58 136 -~;
+#X obj 58 105 *~;
+#X obj 108 49 inlet~;
+#X obj 108 105 *~;
+#X obj 192 49 inlet~;
+#X obj 177 106 *~;
+#X obj 242 49 inlet~;
+#X obj 227 106 *~;
+#X connect 0 0 6 0;
+#X connect 0 0 12 0;
+#X connect 4 0 2 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 7 0 10 0;
+#X connect 8 0 5 1;
+#X connect 9 0 6 1;
+#X connect 9 0 10 1;
+#X connect 10 0 4 0;
+#X connect 11 0 8 1;
+#X connect 11 0 12 1;
+#X connect 12 0 4 1;
diff --git a/abs/cosc~.pd b/abs/cosc~.pd
new file mode 100644
index 0000000..b2762f4
--- /dev/null
+++ b/abs/cosc~.pd
@@ -0,0 +1,22 @@
+#N canvas 267 527 381 197 10;
+#X obj 57 52 inlet~;
+#X obj 58 78 phasor~;
+#X obj 151 51 inlet;
+#X text 48 25 frequency;
+#X text 154 25 phase;
+#X text 49 5 complex oscillator (unit norm exponential);
+#X obj 59 131 cos~;
+#X obj 118 132 sin~;
+#X obj 58 159 outlet~;
+#X obj 119 158 outlet~;
+#X obj 221 52 inlet;
+#X obj 59 105 *~ 1;
+#X text 211 24 phase synchronous harmonic;
+#X connect 0 0 1 0;
+#X connect 1 0 11 0;
+#X connect 2 0 1 1;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 10 0 11 1;
+#X connect 11 0 7 0;
+#X connect 11 0 6 0;
diff --git a/abs/cstate+~.pd b/abs/cstate+~.pd
new file mode 100644
index 0000000..cfba48e
--- /dev/null
+++ b/abs/cstate+~.pd
@@ -0,0 +1,9 @@
+#N canvas 441 639 286 142 10;
+#X obj 23 12 table \$1-real \$2;
+#X obj 23 33 table \$1-imag \$2;
+#X obj 23 101 tabsend~ \$1-real;
+#X obj 143 101 tabsend~ \$1-imag;
+#X obj 22 70 inlet~;
+#X obj 143 69 inlet~;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
diff --git a/abs/cstate~.pd b/abs/cstate~.pd
new file mode 100644
index 0000000..f437c84
--- /dev/null
+++ b/abs/cstate~.pd
@@ -0,0 +1,7 @@
+#N canvas 441 639 416 164 10;
+#X obj 18 23 tabreceive~ \$1-real;
+#X obj 17 52 outlet~;
+#X obj 164 53 outlet~;
+#X obj 165 24 tabreceive~ \$1-imag;
+#X connect 0 0 1 0;
+#X connect 3 0 2 0;
diff --git a/abs/csub~.pd b/abs/csub~.pd
new file mode 100644
index 0000000..eaf2b06
--- /dev/null
+++ b/abs/csub~.pd
@@ -0,0 +1,16 @@
+#N canvas 703 725 381 197 10;
+#X obj 58 49 inlet~;
+#X obj 58 159 outlet~;
+#X obj 195 49 inlet~;
+#X obj 59 101 -~;
+#X obj 116 49 inlet~;
+#X obj 116 159 outlet~;
+#X obj 253 49 inlet~;
+#X obj 117 101 -~;
+#X text 49 5 complex subtraction;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X connect 4 0 7 0;
+#X connect 6 0 7 1;
+#X connect 7 0 5 0;
diff --git a/abs/dsfosc~.pd b/abs/dsfosc~.pd
new file mode 100644
index 0000000..2bb3675
--- /dev/null
+++ b/abs/dsfosc~.pd
@@ -0,0 +1,73 @@
+#N canvas 162 88 557 519 10;
+#X obj 201 473 outlet~;
+#X obj 258 473 outlet~;
+#X text 59 21 complex form of the discrete summation oscillator;
+#X text 62 38 (1-az^n)/(1-az) \, with z = e^(jw);
+#X obj 118 122 inlet~;
+#X text 93 100 frequency;
+#X obj 263 119 inlet;
+#X obj 118 284 cosc~;
+#X obj 233 258 *~ \$1;
+#X obj 118 350 *~;
+#X obj 149 350 *~;
+#X obj 233 283 cosc~;
+#X obj 232 340 *~;
+#X obj 263 340 *~;
+#X obj 118 378 +~ 1;
+#X obj 233 368 +~ 1;
+#X obj 119 404 cinv~;
+#X obj 213 446 cmul~;
+#X obj 354 122 inlet;
+#X obj 354 170 * -1;
+#X obj 166 327 lop~ 10;
+#X text 195 100 harmonics (N);
+#X text 317 102 modulation (r);
+#X obj 384 217 abs;
+#X obj 354 194 t f f;
+#X obj 354 278 *;
+#X obj 354 236 /;
+#X obj 384 256 pow \$1;
+#X floatatom 368 316 5 0 0 0 - - -;
+#X floatatom 192 270 5 0 0 0 - - -;
+#X obj 264 150 t b f;
+#X obj 354 148 f;
+#X obj 298 333 lop~ 10;
+#X connect 4 0 8 0;
+#X connect 4 0 7 0;
+#X connect 6 0 30 0;
+#X connect 7 0 9 0;
+#X connect 7 1 10 0;
+#X connect 8 0 11 0;
+#X connect 9 0 14 0;
+#X connect 10 0 16 1;
+#X connect 11 0 12 0;
+#X connect 11 1 13 0;
+#X connect 12 0 15 0;
+#X connect 13 0 17 3;
+#X connect 14 0 16 0;
+#X connect 15 0 17 2;
+#X connect 16 0 17 0;
+#X connect 16 1 17 1;
+#X connect 17 0 0 0;
+#X connect 17 1 1 0;
+#X connect 18 0 31 0;
+#X connect 19 0 24 0;
+#X connect 19 0 20 0;
+#X connect 20 0 10 1;
+#X connect 20 0 9 1;
+#X connect 23 0 26 1;
+#X connect 23 0 27 0;
+#X connect 24 0 26 0;
+#X connect 24 1 23 0;
+#X connect 25 0 32 0;
+#X connect 26 0 25 0;
+#X connect 27 0 25 1;
+#X connect 28 0 32 1;
+#X connect 28 0 29 0;
+#X connect 29 0 20 1;
+#X connect 30 0 31 0;
+#X connect 30 1 8 1;
+#X connect 30 1 27 1;
+#X connect 31 0 19 0;
+#X connect 32 0 13 1;
+#X connect 32 0 12 1;
diff --git a/abs/expmap~.pd b/abs/expmap~.pd
new file mode 100644
index 0000000..902b856
--- /dev/null
+++ b/abs/expmap~.pd
@@ -0,0 +1,38 @@
+#N canvas 754 478 456 394 10;
+#X obj 75 47 inlet~;
+#X obj 134 47 inlet;
+#X obj 186 47 inlet;
+#X obj 167 138 /;
+#X obj 167 160 log;
+#X text 138 29 min;
+#X text 193 30 max;
+#X text 80 9 exponential map from (-1 \, 1) to (min \, max);
+#X obj 75 244 *~;
+#X obj 75 302 *~;
+#X obj 74 335 outlet~;
+#X obj 214 114 f \$1;
+#X obj 167 114 f \$2;
+#X obj 75 268 exp~;
+#X obj 271 70 t b b;
+#X obj 271 49 loadbang;
+#X obj 134 71 t b f;
+#X obj 74 137 +~ 1;
+#X obj 74 162 *~ 0.5;
+#X connect 0 0 17 0;
+#X connect 1 0 16 0;
+#X connect 2 0 12 0;
+#X connect 3 0 4 0;
+#X connect 4 0 8 1;
+#X connect 8 0 13 0;
+#X connect 9 0 10 0;
+#X connect 11 0 3 1;
+#X connect 11 0 9 1;
+#X connect 12 0 3 0;
+#X connect 13 0 9 0;
+#X connect 14 0 12 0;
+#X connect 14 1 11 0;
+#X connect 15 0 14 0;
+#X connect 16 0 12 0;
+#X connect 16 1 11 0;
+#X connect 17 0 18 0;
+#X connect 18 0 8 0;
diff --git a/abs/fblock.pd b/abs/fblock.pd
index b75a8b2..a3d0828 100644
--- a/abs/fblock.pd
+++ b/abs/fblock.pd
@@ -7,12 +7,12 @@
#X obj 59 158 +;
#X obj 103 144 *;
#X obj 103 59 t b b f;
-#X text 200 35 fblock: compute block relative frequencies;
#X text 200 79 right inlet is also "active";
#X text 201 119 main usage is to compute block synchronous frequencies
;
#X text 200 134 for spectral domain processing;
#X text 201 49 out = left + right * (sys samplerate / blocksize);
+#X text 200 35 fblock: compute block relative frequencies;
#X connect 0 0 5 0;
#X connect 1 0 7 0;
#X connect 3 0 4 0;
diff --git a/abs/fblock~.pd b/abs/fblock~.pd
new file mode 100644
index 0000000..256c5c8
--- /dev/null
+++ b/abs/fblock~.pd
@@ -0,0 +1,22 @@
+#N canvas 64 291 617 246 10;
+#X text 201 77 main usage is to compute block synchronous frequencies
+;
+#X text 200 92 for spectral domain processing;
+#X text 201 49 out = left + right * (sys samplerate / blocksize);
+#X obj 36 36 inlet~;
+#X obj 37 198 outlet~;
+#X obj 102 110 samplerate~;
+#X text 200 35 fblock~: compute block relative frequencies;
+#X obj 102 83 loadbang;
+#X obj 57 165 *~;
+#X obj 101 35 inlet~;
+#X obj 102 138 / \$1;
+#X obj 171 86 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X connect 3 0 4 0;
+#X connect 5 0 10 0;
+#X connect 7 0 5 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 0;
+#X connect 10 0 8 1;
+#X connect 11 0 5 0;
diff --git a/abs/fmod.pd b/abs/fmod.pd
new file mode 100644
index 0000000..8cff45c
--- /dev/null
+++ b/abs/fmod.pd
@@ -0,0 +1,25 @@
+#N canvas 714 472 443 338 10;
+#X obj 52 36 inlet;
+#X obj 52 255 outlet;
+#X obj 110 36 inlet;
+#X obj 52 64 / \$1;
+#X obj 52 230 * \$1;
+#X obj 82 122 int;
+#X obj 52 96 t f f;
+#X obj 52 148 -;
+#X text 175 90 floating point version of;
+#X text 361 91 [mod];
+#X obj 52 175 moses 0;
+#X obj 52 203 + 1;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 2 0 4 1;
+#X connect 3 0 6 0;
+#X connect 4 0 1 0;
+#X connect 5 0 7 1;
+#X connect 6 0 7 0;
+#X connect 6 1 5 0;
+#X connect 7 0 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 4 0;
+#X connect 11 0 4 0;
diff --git a/abs/fmop~.pd b/abs/fmop~.pd
new file mode 100644
index 0000000..e68f8e5
--- /dev/null
+++ b/abs/fmop~.pd
@@ -0,0 +1,20 @@
+#N canvas 662 414 450 300 10;
+#X obj 82 154 cos~;
+#X obj 82 89 phasor~;
+#X obj 160 96 osc~;
+#X obj 160 122 *~;
+#X obj 82 190 outlet~;
+#X obj 82 61 inlet~;
+#X obj 160 60 inlet~;
+#X obj 230 60 inlet~;
+#X text 76 12 fm operator;
+#X text 234 38 mod depth;
+#X text 157 40 mod freq;
+#X text 59 39 carrier freq;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 5 0 1 0;
+#X connect 6 0 2 0;
+#X connect 7 0 3 1;
diff --git a/abs/frequor~.pd b/abs/frequor~.pd
new file mode 100644
index 0000000..e12aace
--- /dev/null
+++ b/abs/frequor~.pd
@@ -0,0 +1,26 @@
+#N canvas 649 489 450 300 10;
+#X obj 133 212 *~ 2;
+#X obj 134 235 -~ 1;
+#X obj 230 141 + 0.5;
+#X obj 133 188 phasor~;
+#X msg 190 112 0;
+#X obj 190 90 loadbang;
+#X obj 135 258 outlet~;
+#X obj 133 165 fblock \$1;
+#X msg 190 141 1;
+#X obj 132 92 inlet;
+#X text 28 4 frequor~: frequency domain phasor~ (for traversing spectra)
+;
+#X text 98 75 nb windings;
+#X text 102 25 output: (0 \, N/2-1) -> (0 \, 1);
+#X text 152 41 (N/2 \, N-1) -> (-1 \, 0);
+#X connect 0 0 1 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 1;
+#X connect 3 0 0 0;
+#X connect 4 0 2 0;
+#X connect 4 0 8 0;
+#X connect 5 0 4 0;
+#X connect 7 0 3 0;
+#X connect 8 0 7 1;
+#X connect 9 0 7 1;
diff --git a/abs/icep~.pd b/abs/icep~.pd
new file mode 100644
index 0000000..ec05a93
--- /dev/null
+++ b/abs/icep~.pd
@@ -0,0 +1,18 @@
+#N canvas 318 596 521 228 10;
+#X obj 70 42 inlet~;
+#X obj 124 42 inlet~;
+#X obj 94 66 nfft~;
+#X obj 94 124 nifft~;
+#X obj 68 164 outlet~;
+#X obj 126 164 outlet~;
+#X text 229 45 backward cepstrum;
+#X obj 94 95 cexp~;
+#X text 229 64 using normalized fft/ifft objects;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 7 0;
+#X connect 2 1 7 1;
+#X connect 3 0 4 0;
+#X connect 3 1 5 0;
+#X connect 7 0 3 0;
+#X connect 7 1 3 1;
diff --git a/abs/idsfosc~.pd b/abs/idsfosc~.pd
new file mode 100644
index 0000000..76db5bf
--- /dev/null
+++ b/abs/idsfosc~.pd
@@ -0,0 +1,27 @@
+#N canvas 414 255 527 400 10;
+#X obj 118 339 outlet~;
+#X obj 175 339 outlet~;
+#X obj 118 122 inlet~;
+#X text 93 100 frequency;
+#X obj 118 162 cosc~;
+#X obj 118 228 *~;
+#X obj 149 228 *~;
+#X obj 118 256 +~ 1;
+#X obj 119 282 cinv~;
+#X text 59 21 complex form of the (infinite) discrete summation oscillator
+;
+#X text 62 38 1/(1-az) \, with z = e^(jw);
+#X text 178 103 modulation (a);
+#X obj 215 123 inlet~;
+#X obj 214 192 *~ -1;
+#X connect 2 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 1;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 8 1 1 0;
+#X connect 12 0 13 0;
+#X connect 13 0 6 1;
+#X connect 13 0 5 1;
diff --git a/abs/lattice3.pd b/abs/lattice3.pd
new file mode 100644
index 0000000..dadae9c
--- /dev/null
+++ b/abs/lattice3.pd
@@ -0,0 +1,31 @@
+#N canvas 178 387 450 300 10;
+#X obj 59 138 pow;
+#X msg 59 116 2;
+#X obj 106 139 pow;
+#X obj 159 136 pow;
+#X msg 106 117 1.5;
+#X msg 159 114 1.25;
+#X obj 106 166 *;
+#X obj 59 197 *;
+#X obj 130 47 unpack 0 0 0;
+#X obj 59 46 t b b b a;
+#X obj 59 226 outlet;
+#X obj 59 24 inlet;
+#X text 22 4 expand harmonic lattice vector in the (2 \, 3/2 \, 5/4)
+basis;
+#X connect 0 0 7 0;
+#X connect 1 0 0 0;
+#X connect 2 0 6 0;
+#X connect 3 0 6 1;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 0 1;
+#X connect 8 1 2 1;
+#X connect 8 2 3 1;
+#X connect 9 0 1 0;
+#X connect 9 1 4 0;
+#X connect 9 2 5 0;
+#X connect 9 3 8 0;
+#X connect 11 0 9 0;
diff --git a/abs/lpifft~.pd b/abs/lpifft~.pd
new file mode 100644
index 0000000..60dde2d
--- /dev/null
+++ b/abs/lpifft~.pd
@@ -0,0 +1,61 @@
+#N canvas 261 505 536 346 10;
+#X obj 407 227 f;
+#X obj 351 251 * -1;
+#X obj 73 189 *~;
+#X obj 104 189 *~;
+#X obj 49 41 inlet~;
+#X obj 103 42 inlet~;
+#X obj 64 242 +~;
+#X obj 112 246 -~;
+#X obj 361 35 inlet;
+#X obj 377 59 fblock \$1;
+#X msg 434 38 1;
+#X obj 361 85 /;
+#X obj 392 299 +~;
+#X obj 361 109 moses 1;
+#X msg 361 131 1;
+#X obj 407 154 t b f;
+#X msg 407 176 0.5;
+#X obj 409 204 /;
+#X obj 407 275 pulsor~ \$1;
+#X obj 329 275 pulsor~ \$1;
+#X obj 446 15 loadbang;
+#X obj 48 315 outlet~;
+#X obj 123 312 outlet~;
+#X text 18 265 xform s.t. real spectrum = mono;
+#X text 18 7 ifft with rectangular lowpass for anti-aliased dynwav
+;
+#X text 9 18 creation arg = fft size \, right inlet = dynwav cutoff
+freq;
+#X obj 122 165 +~;
+#X obj 73 214 nifft~;
+#X connect 0 0 1 0;
+#X connect 0 0 18 0;
+#X connect 1 0 19 0;
+#X connect 2 0 27 0;
+#X connect 3 0 27 1;
+#X connect 4 0 2 0;
+#X connect 5 0 3 0;
+#X connect 6 0 21 0;
+#X connect 7 0 22 0;
+#X connect 8 0 11 0;
+#X connect 9 0 11 1;
+#X connect 10 0 9 1;
+#X connect 11 0 13 0;
+#X connect 12 0 26 0;
+#X connect 13 0 14 0;
+#X connect 13 1 15 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 15 1 17 1;
+#X connect 16 0 17 0;
+#X connect 17 0 0 0;
+#X connect 18 0 12 1;
+#X connect 19 1 12 0;
+#X connect 20 0 10 0;
+#X connect 26 0 3 1;
+#X connect 26 0 2 1;
+#X connect 27 0 6 0;
+#X connect 27 0 7 0;
+#X connect 27 1 6 1;
+#X connect 27 1 7 1;
diff --git a/abs/pulsor~.pd b/abs/pulsor~.pd
new file mode 100644
index 0000000..7069986
--- /dev/null
+++ b/abs/pulsor~.pd
@@ -0,0 +1,39 @@
+#N canvas 641 469 535 446 10;
+#X obj 96 90 fblock \$1;
+#X obj 203 102 bang~;
+#X msg 203 126 0;
+#X obj 96 179 phasor~;
+#X obj 159 179 phasor~;
+#X obj 133 216 -~;
+#X msg 154 64 1;
+#X obj 154 37 loadbang;
+#X obj 203 151 +;
+#X obj 266 78 inlet;
+#X text 251 57 duty cycle;
+#X text 46 11 pulsor~: rectangular window w. duty cycle;
+#X obj 133 243 +~;
+#X obj 266 126 fmod 1;
+#X obj 132 273 onecomp~;
+#X obj 133 301 outlet~;
+#X text 115 332 pulse outlet;
+#X obj 266 104 * -1;
+#X obj 232 301 outlet~;
+#X text 228 331 complement;
+#X connect 0 0 4 0;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 0 3 1;
+#X connect 3 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 12 0;
+#X connect 6 0 0 1;
+#X connect 7 0 6 0;
+#X connect 8 0 4 1;
+#X connect 9 0 17 0;
+#X connect 12 0 14 0;
+#X connect 12 0 18 0;
+#X connect 13 0 8 1;
+#X connect 13 0 12 1;
+#X connect 14 0 15 0;
+#X connect 17 0 13 0;
diff --git a/abs/sin~.pd b/abs/sin~.pd
new file mode 100644
index 0000000..c9b09ba
--- /dev/null
+++ b/abs/sin~.pd
@@ -0,0 +1,8 @@
+#N canvas 843 64 157 187 10;
+#X obj 29 28 inlet~;
+#X obj 29 59 -~ 0.25;
+#X obj 29 90 cos~;
+#X obj 29 117 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
diff --git a/abs/step_16.pd b/abs/step_16.pd
new file mode 100644
index 0000000..317bf6a
--- /dev/null
+++ b/abs/step_16.pd
@@ -0,0 +1,53 @@
+#N canvas 347 311 817 158 10;
+#X obj 42 62 inlet;
+#X obj 84 62 inlet;
+#X obj 125 62 inlet;
+#X obj 166 62 inlet;
+#X obj 209 62 inlet;
+#X obj 251 62 inlet;
+#X obj 292 62 inlet;
+#X obj 333 62 inlet;
+#X obj 374 62 inlet;
+#X obj 416 62 inlet;
+#X obj 457 62 inlet;
+#X obj 498 62 inlet;
+#X obj 541 62 inlet;
+#X obj 583 62 inlet;
+#X obj 624 62 inlet;
+#X obj 665 62 inlet;
+#X text 51 14 16 part step sequencer array input;
+#X obj 185 41 + 4;
+#X obj 42 110 step_4 \$1;
+#X obj 209 110 step_4 \$1;
+#X obj 374 41 + 4;
+#X obj 374 110 step_4 \$1;
+#X obj 541 110 step_4 \$1;
+#X obj 540 40 + 4;
+#X obj 737 40 inlet;
+#X obj 100 40 f 0;
+#X obj 341 15 loadbang;
+#X connect 0 0 18 0;
+#X connect 1 0 18 1;
+#X connect 2 0 18 2;
+#X connect 3 0 18 3;
+#X connect 4 0 19 0;
+#X connect 5 0 19 1;
+#X connect 6 0 19 2;
+#X connect 7 0 19 3;
+#X connect 8 0 21 0;
+#X connect 9 0 21 1;
+#X connect 10 0 21 2;
+#X connect 11 0 21 3;
+#X connect 12 0 22 0;
+#X connect 13 0 22 1;
+#X connect 14 0 22 2;
+#X connect 15 0 22 3;
+#X connect 17 0 19 4;
+#X connect 17 0 20 0;
+#X connect 20 0 21 4;
+#X connect 20 0 23 0;
+#X connect 23 0 22 4;
+#X connect 24 0 25 0;
+#X connect 25 0 17 0;
+#X connect 25 0 18 4;
+#X connect 26 0 25 0;
diff --git a/abs/step_16r.pd b/abs/step_16r.pd
new file mode 100644
index 0000000..aaa16a0
--- /dev/null
+++ b/abs/step_16r.pd
@@ -0,0 +1,50 @@
+#N canvas 602 279 442 438 10;
+#X obj 135 64 inlet;
+#X text 43 21 4 part building block (read) for a step sequencer array
+input;
+#X obj 135 148 + 4;
+#X obj 135 173 step_4r \$1;
+#X obj 200 203 outlet;
+#X obj 178 229 outlet;
+#X obj 156 252 outlet;
+#X obj 135 278 outlet;
+#X obj 21 176 step_4r \$1;
+#X obj 86 206 outlet;
+#X obj 64 232 outlet;
+#X obj 42 255 outlet;
+#X obj 21 281 outlet;
+#X obj 363 166 step_4r \$1;
+#X obj 428 196 outlet;
+#X obj 406 222 outlet;
+#X obj 384 245 outlet;
+#X obj 363 271 outlet;
+#X obj 249 169 step_4r \$1;
+#X obj 314 199 outlet;
+#X obj 292 225 outlet;
+#X obj 270 248 outlet;
+#X obj 249 274 outlet;
+#X obj 249 144 + 8;
+#X obj 363 141 + 12;
+#X connect 0 0 2 0;
+#X connect 0 0 8 0;
+#X connect 0 0 23 0;
+#X connect 0 0 24 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 3 1 6 0;
+#X connect 3 2 5 0;
+#X connect 3 3 4 0;
+#X connect 8 0 12 0;
+#X connect 8 1 11 0;
+#X connect 8 2 10 0;
+#X connect 8 3 9 0;
+#X connect 13 0 17 0;
+#X connect 13 1 16 0;
+#X connect 13 2 15 0;
+#X connect 13 3 14 0;
+#X connect 18 0 22 0;
+#X connect 18 1 21 0;
+#X connect 18 2 20 0;
+#X connect 18 3 19 0;
+#X connect 23 0 18 0;
+#X connect 24 0 13 0;
diff --git a/abs/step_4.pd b/abs/step_4.pd
new file mode 100644
index 0000000..226173f
--- /dev/null
+++ b/abs/step_4.pd
@@ -0,0 +1,36 @@
+#N canvas 241 612 442 251 10;
+#X obj 59 51 inlet;
+#X obj 90 186 tabwrite \$1;
+#X obj 59 79 t f b;
+#X msg 89 104 0;
+#X obj 102 51 inlet;
+#X obj 102 79 t f b;
+#X obj 145 51 inlet;
+#X obj 145 79 t f b;
+#X obj 188 51 inlet;
+#X obj 188 79 t f b;
+#X msg 132 104 1;
+#X msg 175 104 2;
+#X msg 218 104 3;
+#X text 43 21 4 part building block for a step sequencer array input
+;
+#X obj 293 50 inlet;
+#X obj 162 157 +;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 15 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 5 1 10 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 7 1 11 0;
+#X connect 8 0 9 0;
+#X connect 9 0 1 0;
+#X connect 9 1 12 0;
+#X connect 10 0 15 0;
+#X connect 11 0 15 0;
+#X connect 12 0 15 0;
+#X connect 14 0 15 1;
+#X connect 15 0 1 1;
diff --git a/abs/step_4r.pd b/abs/step_4r.pd
new file mode 100644
index 0000000..6b5849b
--- /dev/null
+++ b/abs/step_4r.pd
@@ -0,0 +1,26 @@
+#N canvas 241 612 442 251 10;
+#X obj 59 173 tabread \$1;
+#X obj 59 199 outlet;
+#X obj 135 64 inlet;
+#X obj 135 173 tabread \$1;
+#X obj 135 199 outlet;
+#X obj 210 173 tabread \$1;
+#X obj 210 199 outlet;
+#X obj 288 173 tabread \$1;
+#X obj 288 199 outlet;
+#X obj 135 148 + 1;
+#X obj 210 148 + 2;
+#X obj 288 148 + 3;
+#X text 43 21 4 part building block (read) for a step sequencer array
+input;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 2 0 9 0;
+#X connect 2 0 10 0;
+#X connect 2 0 11 0;
+#X connect 3 0 4 0;
+#X connect 5 0 6 0;
+#X connect 7 0 8 0;
+#X connect 9 0 3 0;
+#X connect 10 0 5 0;
+#X connect 11 0 7 0;
diff --git a/abs/ti_hihat.pd b/abs/ti_hihat.pd
new file mode 100644
index 0000000..a75619d
--- /dev/null
+++ b/abs/ti_hihat.pd
@@ -0,0 +1,195 @@
+#N canvas 512 35 209 79 10;
+#X obj 160 133 inlet;
+#X text 9 2 ti_hihat;
+#X obj 211 103 inlet;
+#X obj 151 214 ead~;
+#X obj 114 214 *~;
+#N canvas 413 387 659 494 hihat 0;
+#X obj 27 324 square~;
+#X obj 87 324 square~;
+#X obj 60 360 *~;
+#X obj 156 326 square~;
+#X obj 216 326 square~;
+#X obj 189 362 *~;
+#X obj 289 329 square~;
+#X obj 349 329 square~;
+#X obj 322 365 *~;
+#X obj 418 331 square~;
+#X obj 478 331 square~;
+#X obj 451 367 *~;
+#X obj 320 396 +~;
+#X obj 165 408 +~;
+#X obj 217 444 outlet~;
+#X obj 212 181 f;
+#X obj 251 183 + 1;
+#X obj 211 155 until;
+#X msg 210 131 8;
+#X msg 242 130 0;
+#X obj 210 108 t b b;
+#X obj 210 79 t b f;
+#X obj 277 212 random 20000;
+#X msg 309 128 seed \$1;
+#X obj 211 211 t f b;
+#X obj 212 256 pack 0 0;
+#X obj 212 278 route 0 1 2 3 4 5 6 7;
+#X obj 210 34 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 600.246 256;
+#X floatatom 28 304 5 0 0 0 - - -;
+#X floatatom 93 305 5 0 0 0 - - -;
+#X floatatom 161 305 5 0 0 0 - - -;
+#X floatatom 219 307 5 0 0 0 - - -;
+#X floatatom 292 307 5 0 0 0 - - -;
+#X floatatom 353 305 5 0 0 0 - - -;
+#X floatatom 421 307 5 0 0 0 - - -;
+#X floatatom 481 311 5 0 0 0 - - -;
+#X obj 279 237 + 0;
+#X text 193 16 magic number;
+#X obj 355 37 nbx 5 14 20 20000 1 1 empty empty empty 0 -6 0 10 -262144
+-1 -1 10752.2 256;
+#X text 344 18 freq range;
+#X obj 464 37 nbx 5 14 20 20000 1 1 empty empty empty 0 -6 0 10 -262144
+-1 -1 95.6572 256;
+#X text 433 16 bottom freq;
+#X obj 143 31 inlet;
+#X obj 307 38 inlet;
+#X obj 424 36 inlet;
+#X obj 143 62 * 1000;
+#X obj 210 55 f 0;
+#X obj 456 79 t b f;
+#X obj 354 59 t b f;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 13 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 13 1;
+#X connect 6 0 8 0;
+#X connect 7 0 8 1;
+#X connect 8 0 12 0;
+#X connect 9 0 11 0;
+#X connect 10 0 11 1;
+#X connect 11 0 12 1;
+#X connect 12 0 14 0;
+#X connect 13 0 14 0;
+#X connect 15 0 16 0;
+#X connect 15 0 24 0;
+#X connect 16 0 15 1;
+#X connect 17 0 15 0;
+#X connect 18 0 17 0;
+#X connect 19 0 15 1;
+#X connect 20 0 18 0;
+#X connect 20 1 19 0;
+#X connect 21 0 20 0;
+#X connect 21 1 23 0;
+#X connect 22 0 36 0;
+#X connect 23 0 22 0;
+#X connect 24 0 25 0;
+#X connect 24 1 22 0;
+#X connect 25 0 26 0;
+#X connect 26 0 28 0;
+#X connect 26 1 29 0;
+#X connect 26 2 30 0;
+#X connect 26 3 31 0;
+#X connect 26 4 32 0;
+#X connect 26 5 33 0;
+#X connect 26 6 34 0;
+#X connect 26 7 35 0;
+#X connect 27 0 46 0;
+#X connect 28 0 0 0;
+#X connect 29 0 1 0;
+#X connect 30 0 3 0;
+#X connect 31 0 4 0;
+#X connect 32 0 6 0;
+#X connect 33 0 7 0;
+#X connect 34 0 9 0;
+#X connect 35 0 10 0;
+#X connect 36 0 25 1;
+#X connect 38 0 48 0;
+#X connect 40 0 36 1;
+#X connect 40 0 47 0;
+#X connect 42 0 45 0;
+#X connect 43 0 38 0;
+#X connect 44 0 40 0;
+#X connect 45 0 27 0;
+#X connect 46 0 21 0;
+#X connect 47 0 46 0;
+#X connect 47 1 36 1;
+#X connect 48 0 46 0;
+#X connect 48 1 22 1;
+#X restore 114 184 pd hihat;
+#X obj 112 323 vol~;
+#X obj 140 53 nbx 3 14 -1e+37 1e+37 0 1 empty empty VOL -20 7 0 10
+-262144 -1 -1 111.47 256;
+#X obj 140 30 nbx 5 14 20 20000 1 1 empty empty HP -20 7 0 10 -24198
+-1 -1 6796.42 256;
+#X obj 113 283 bhip~ 1;
+#X obj 74 30 nbx 3 14 -1e+37 1e+37 0 1 empty empty A' -14 7 0 10 -225271
+-1 -1 -17 256;
+#X obj 43 106 +;
+#X obj 12 29 nbx 3 14 -1e+37 1e+37 0 1 empty empty A -10 7 0 10 -260818
+-1 -1 16 256;
+#X obj 44 172 +;
+#X obj 13 50 nbx 3 14 -1e+37 1e+37 0 1 empty empty D -10 7 0 10 -260818
+-1 -1 156 256;
+#X obj 43 83 *;
+#X obj 44 134 *;
+#X obj 101 347 outlet~;
+#X obj 80 4 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1;
+#X obj 178 172 spigot;
+#X obj 74 50 nbx 3 14 -1e+37 1e+37 0 1 empty empty D' -14 7 0 10 -225271
+-1 -1 -58 256;
+#X obj 174 152 t b b;
+#X obj 101 106 f;
+#X obj 315 10 inlet;
+#X obj 315 57 unpack 0 0 0 0 0 0;
+#X obj 315 123 symbol set;
+#X obj 315 146 pack s 0 0 0 0 0 0;
+#X obj 314 202 outlet;
+#X obj 315 28 route bang;
+#X msg 315 96 bang;
+#X msg 316 172 \$1 \$2 \$3 \$4 \$5 \$6 \$7;
+#X obj 176 4 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X connect 0 0 21 0;
+#X connect 2 0 22 0;
+#X connect 3 0 4 1;
+#X connect 4 0 9 0;
+#X connect 5 0 4 0;
+#X connect 6 0 17 0;
+#X connect 7 0 6 1;
+#X connect 7 0 26 6;
+#X connect 8 0 9 1;
+#X connect 8 0 26 5;
+#X connect 9 0 6 0;
+#X connect 10 0 15 1;
+#X connect 10 0 26 3;
+#X connect 11 0 3 1;
+#X connect 12 0 11 1;
+#X connect 12 0 26 1;
+#X connect 13 0 3 2;
+#X connect 14 0 13 1;
+#X connect 14 0 26 2;
+#X connect 15 0 11 0;
+#X connect 16 0 13 0;
+#X connect 18 0 19 1;
+#X connect 19 0 3 0;
+#X connect 20 0 16 1;
+#X connect 20 0 26 4;
+#X connect 21 0 19 0;
+#X connect 22 0 16 0;
+#X connect 22 0 15 0;
+#X connect 23 0 28 0;
+#X connect 24 0 12 0;
+#X connect 24 1 14 0;
+#X connect 24 2 10 0;
+#X connect 24 3 20 0;
+#X connect 24 4 8 0;
+#X connect 24 5 7 0;
+#X connect 25 0 26 0;
+#X connect 26 0 30 0;
+#X connect 28 0 29 0;
+#X connect 28 1 24 0;
+#X connect 29 0 25 0;
+#X connect 30 0 27 0;
+#X connect 31 0 29 0;
+#X coords 0 0 1 1 200 50 1;
diff --git a/abs/ti_snare.pd b/abs/ti_snare.pd
new file mode 100644
index 0000000..467a9b2
--- /dev/null
+++ b/abs/ti_snare.pd
@@ -0,0 +1,74 @@
+#N canvas 448 117 288 79 10;
+#X obj 143 84 inlet;
+#X obj 243 84 inlet;
+#X obj 112 323 vol~;
+#X obj 222 52 nbx 3 14 -1e+37 1e+37 0 1 empty empty VOL -20 7 0 10
+-262144 -1 -1 99.47 256;
+#X obj 140 30 nbx 5 14 20 20000 1 1 empty empty T1 -20 7 0 10 -24198
+-1 -1 552.632 256;
+#X obj 74 30 nbx 3 14 -1e+37 1e+37 0 1 empty empty A' -14 7 0 10 -225271
+-1 -1 0 256;
+#X obj 43 106 +;
+#X obj 12 29 nbx 3 14 -1e+37 1e+37 0 1 empty empty A -10 7 0 10 -260818
+-1 -1 -1 256;
+#X obj 44 172 +;
+#X obj 13 50 nbx 3 14 -1e+37 1e+37 0 1 empty empty D -10 7 0 10 -260818
+-1 -1 113 256;
+#X obj 43 83 *;
+#X obj 44 134 *;
+#X obj 101 347 outlet~;
+#X obj 80 4 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1;
+#X obj 178 153 spigot;
+#X obj 74 50 nbx 3 14 -1e+37 1e+37 0 1 empty empty D' -14 7 0 10 -225271
+-1 -1 45 256;
+#X obj 140 51 nbx 5 14 20 20000 1 1 empty empty T2 -20 7 0 10 -24198
+-1 -1 151.334 256;
+#X obj 222 30 nbx 5 14 20 20000 1 1 empty empty T3 -20 7 0 10 -24198
+-1 -1 9652.14 256;
+#X text 9 2 ti_snare;
+#X obj 186 209 ead~;
+#X obj 236 247 osc~;
+#X obj 122 172 osc~;
+#X obj 109 286 *~;
+#X obj 242 178 noise~;
+#X obj 240 210 lop~;
+#X obj 151 209 *~;
+#X obj 82 250 *~;
+#X obj 103 207 *~;
+#X obj 154 109 t b b;
+#X obj 116 110 f 0;
+#X connect 0 0 28 0;
+#X connect 1 0 29 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 1;
+#X connect 4 0 21 0;
+#X connect 5 0 10 1;
+#X connect 6 0 19 1;
+#X connect 7 0 6 1;
+#X connect 8 0 19 2;
+#X connect 9 0 8 1;
+#X connect 10 0 6 0;
+#X connect 11 0 8 0;
+#X connect 13 0 14 1;
+#X connect 14 0 19 0;
+#X connect 15 0 11 1;
+#X connect 16 0 20 0;
+#X connect 17 0 24 1;
+#X connect 19 0 22 1;
+#X connect 19 0 25 1;
+#X connect 19 0 26 1;
+#X connect 20 0 22 0;
+#X connect 21 0 25 0;
+#X connect 21 0 27 0;
+#X connect 22 0 2 0;
+#X connect 23 0 24 0;
+#X connect 24 0 22 0;
+#X connect 24 0 27 1;
+#X connect 25 0 22 0;
+#X connect 26 0 22 1;
+#X connect 27 0 26 0;
+#X connect 28 0 14 0;
+#X connect 28 1 29 0;
+#X connect 29 0 10 0;
+#X connect 29 0 11 0;
+#X coords 0 0 1 1 270 50 1;
diff --git a/abs/ucmod~.pd b/abs/ucmod~.pd
new file mode 100644
index 0000000..9257300
--- /dev/null
+++ b/abs/ucmod~.pd
@@ -0,0 +1,27 @@
+#N canvas 0 0 450 300 10;
+#X obj 74 72 inlet~;
+#X obj 121 72 inlet~;
+#X obj 150 147 *~ -1;
+#X obj 87 114 *~;
+#X obj 124 114 *~;
+#X obj 179 71 inlet~;
+#X obj 86 146 +~ 1;
+#X obj 88 236 cmul~;
+#X obj 135 193 cinv~;
+#X obj 87 266 outlet~;
+#X obj 144 267 outlet~;
+#X text 84 18 unit circle modulator. (1+r conj(z)/(1+rz);
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 8 1;
+#X connect 3 0 6 0;
+#X connect 4 0 7 1;
+#X connect 4 0 2 0;
+#X connect 5 0 4 1;
+#X connect 5 0 3 1;
+#X connect 6 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 7 1 10 0;
+#X connect 8 0 7 2;
+#X connect 8 1 7 3;
diff --git a/abs/ucnorm~.pd b/abs/ucnorm~.pd
new file mode 100644
index 0000000..6a524f7
--- /dev/null
+++ b/abs/ucnorm~.pd
@@ -0,0 +1,27 @@
+#N canvas 0 0 450 300 10;
+#X text 59 21 normalize complex number to unit magnitude;
+#X obj 117 70 inlet~;
+#X obj 131 99 *~;
+#X obj 187 70 inlet~;
+#X obj 203 99 *~;
+#X obj 226 157 +~ 1;
+#X obj 226 185 /~;
+#X obj 226 213 sqrt~;
+#X obj 116 242 *~;
+#X obj 116 264 outlet~;
+#X obj 186 242 *~;
+#X obj 186 264 outlet~;
+#X connect 1 0 2 0;
+#X connect 1 0 2 1;
+#X connect 1 0 8 0;
+#X connect 2 0 6 1;
+#X connect 3 0 4 0;
+#X connect 3 0 4 1;
+#X connect 3 0 10 0;
+#X connect 4 0 6 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 1;
+#X connect 7 0 8 1;
+#X connect 8 0 9 0;
+#X connect 10 0 11 0;