aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/bitsplit~.pd45
-rw-r--r--doc/blocknorm~.pd77
-rw-r--r--doc/blosc~.pd110
-rw-r--r--doc/bmatrix~.pd10
-rw-r--r--doc/bwin~.pd10
-rw-r--r--doc/clog~.pd8
-rw-r--r--doc/eadsr~.pd74
-rw-r--r--doc/ead~.pd47
-rw-r--r--doc/examples/formantdynwav.pd198
-rw-r--r--doc/lattice~.pd40
-rw-r--r--doc/reference.txt28
-rw-r--r--doc/resofilt~.pd79
-rw-r--r--doc/sbosc~.pd36
-rw-r--r--doc/scrollgrid1D~.pd111
14 files changed, 802 insertions, 71 deletions
diff --git a/doc/bitsplit~.pd b/doc/bitsplit~.pd
new file mode 100644
index 0000000..fffce2e
--- /dev/null
+++ b/doc/bitsplit~.pd
@@ -0,0 +1,45 @@
+#N canvas 180 482 616 243 10;
+#X obj 111 51 osc~;
+#X floatatom 111 29 5 0 0 0 - - -;
+#X obj 112 93 bitsplit~ 4;
+#X obj 81 177 dac~;
+#X obj 81 153 vol~;
+#X floatatom 110 136 5 0 0 0 - - -;
+#X obj 183 178 dac~;
+#X obj 183 154 vol~;
+#X floatatom 212 137 5 0 0 0 - - -;
+#X floatatom 178 50 5 0 0 0 - - -;
+#X obj 112 72 *~ 1;
+#X text 267 25 split a signal into a parallel binary word.;
+#X text 267 43 MSB = left \, LSB = right.;
+#X obj 339 127 *~;
+#X obj 367 127 / 2;
+#X obj 402 127 *~;
+#X obj 430 127 / 2;
+#N canvas 0 0 450 300 s 0;
+#X obj 152 123 *~;
+#X obj 152 89 inlet~;
+#X obj 206 90 inlet;
+#X obj 206 121 / 2;
+#X obj 152 150 outlet~;
+#X obj 206 151 outlet;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X restore 383 178 pd s;
+#X connect 0 0 10 0;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
+#X connect 2 3 7 0;
+#X connect 4 0 3 0;
+#X connect 4 0 3 1;
+#X connect 5 0 4 1;
+#X connect 7 0 6 0;
+#X connect 7 0 6 1;
+#X connect 8 0 7 1;
+#X connect 9 0 10 1;
+#X connect 10 0 2 0;
+#X connect 14 0 15 1;
+#X connect 14 0 16 0;
diff --git a/doc/blocknorm~.pd b/doc/blocknorm~.pd
new file mode 100644
index 0000000..3f25fc3
--- /dev/null
+++ b/doc/blocknorm~.pd
@@ -0,0 +1,77 @@
+#N canvas 623 54 632 460 10;
+#X text 62 14 blocknorm~: normalize a dsp block to RMS = 1;
+#X text 144 33 creation argument = nb channels;
+#X obj 96 349 lop~;
+#X obj 95 410 tabsend~ state;
+#X obj 95 384 blocknorm~ 1;
+#X obj 95 320 hip~;
+#X obj 134 298 hsl 128 15 100 10000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 3800 1;
+#X obj 93 131 tabreceive~ state;
+#X obj 138 222 fblock 64;
+#X obj 352 388 pdynwav~;
+#X obj 351 429 vol~;
+#X obj 350 458 dac~;
+#X floatatom 389 408 5 0 0 0 - - -;
+#X floatatom 406 365 5 0 0 0 - - -;
+#X obj 13 144 ead~ 0 20;
+#X obj 30 168 noise~;
+#X obj 14 191 *~;
+#X obj 13 121 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 237 134 1;
+#X floatatom 237 157 5 0 0 0 - - -;
+#X floatatom 138 202 5 0 0 0 - - -;
+#X text 11 64 example: a waveform folding oscillator: power is shifted
+up or down in frequency by contraction/dilatation \, and filtered \,
+but normalized to preserve total state energy.;
+#X obj 466 281 table state 64;
+#X obj 94 270 dynwav~;
+#X obj 138 245 phasor~;
+#X obj 310 181 bang~;
+#X msg 268 133 2;
+#X obj 310 205 f;
+#X floatatom 358 200 5 0 0 0 - - -;
+#X msg 357 179 0;
+#X msg 387 179 0.03;
+#X msg 425 179 0.17;
+#X obj 310 241 spigot;
+#X obj 348 223 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X text 403 201 phase offset;
+#X text 182 201 mod freq;
+#X text 366 222 phase sync;
+#X obj 134 326 hsl 128 15 100 10000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 8100 1;
+#X text 282 157 relative formant shift;
+#X connect 2 0 4 0;
+#X connect 2 0 9 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 1;
+#X connect 7 0 23 0;
+#X connect 8 0 24 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 10 0 11 1;
+#X connect 12 0 10 1;
+#X connect 13 0 9 1;
+#X connect 14 0 16 0;
+#X connect 15 0 16 1;
+#X connect 16 0 5 0;
+#X connect 17 0 14 0;
+#X connect 18 0 19 0;
+#X connect 19 0 8 1;
+#X connect 20 0 8 0;
+#X connect 23 0 5 0;
+#X connect 24 0 23 1;
+#X connect 25 0 27 0;
+#X connect 26 0 19 0;
+#X connect 27 0 32 0;
+#X connect 28 0 27 1;
+#X connect 29 0 28 0;
+#X connect 30 0 28 0;
+#X connect 31 0 28 0;
+#X connect 32 0 24 1;
+#X connect 33 0 32 1;
+#X connect 37 0 2 1;
diff --git a/doc/blosc~.pd b/doc/blosc~.pd
new file mode 100644
index 0000000..ce70940
--- /dev/null
+++ b/doc/blosc~.pd
@@ -0,0 +1,110 @@
+#N canvas 456 143 763 746 10;
+#X obj 80 243 dac~;
+#X obj 80 219 vol~;
+#X floatatom 103 195 5 0 0;
+#X obj 80 158 blosc~ pulse;
+#X floatatom 80 128 5 0 0;
+#X text 59 106 one-sided impulse;
+#X obj 255 243 dac~;
+#X obj 255 219 vol~;
+#X floatatom 278 195 5 0 0;
+#X floatatom 255 128 5 0 0;
+#X text 234 106 two-sided impulse;
+#X obj 255 158 blosc~ pulse2;
+#X obj 433 241 dac~;
+#X obj 433 217 vol~;
+#X floatatom 456 193 5 0 0;
+#X floatatom 433 126 5 0 0;
+#X text 442 105 sawtooth;
+#X obj 596 245 dac~;
+#X obj 596 221 vol~;
+#X floatatom 619 197 5 0 0;
+#X floatatom 596 130 5 0 0;
+#X text 571 106 hard synced sawtooth;
+#X text 53 18 blosc~ - some bandlimited oscillators based on minimal
+phase impulse and step functions. (inspired by Eli Brandt's paper "Hard
+Sync Without Aliasing".);
+#X obj 433 156 blosc~ saw;
+#X obj 596 160 blosc~ syncsaw;
+#X floatatom 642 130 5 0 0;
+#X obj 416 645 dac~;
+#X obj 416 610 vol~;
+#X floatatom 439 586 5 0 0;
+#X text 255 304 bandlimited comparator;
+#X obj 416 549 blosc~ comparator;
+#X obj 416 435 phasor~;
+#X obj 416 519 -~;
+#X floatatom 416 380 5 0 0;
+#X floatatom 416 355 5 0 0;
+#X obj 80 391 phasor~;
+#X floatatom 80 367 5 0 0;
+#X obj 80 448 blosc~ comparator;
+#X obj 80 538 dac~;
+#X obj 80 503 vol~;
+#X floatatom 103 479 5 0 0;
+#X obj 80 420 -~ 0.5;
+#X text 75 341 (square - pulse wave);
+#X floatatom 150 402 5 0 0;
+#X obj 153 384 hsl 50 15 0.01 0.99 0 0 empty empty empty -2 -6 0 8
+-262144 -1 -1 2050 1;
+#X msg 150 363 0.5;
+#X text 411 332 (pwm);
+#X obj 511 416 osc~;
+#X floatatom 511 383 5 0 0;
+#X obj 511 446 *~;
+#X floatatom 561 428 5 0 0;
+#X obj 564 406 hsl 50 15 0 0.99 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 2300 1;
+#X text 626 406 depth;
+#X obj 514 362 hsl 50 15 0.1 10 1 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 4300 1;
+#X text 578 362 mod freq;
+#X obj 416 460 *~ 2;
+#X obj 416 485 -~ 1;
+#X connect 1 0 0 0;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 7 0 6 0;
+#X connect 7 0 6 1;
+#X connect 8 0 7 1;
+#X connect 9 0 11 0;
+#X connect 11 0 7 0;
+#X connect 13 0 12 0;
+#X connect 13 0 12 1;
+#X connect 14 0 13 1;
+#X connect 15 0 23 0;
+#X connect 18 0 17 0;
+#X connect 18 0 17 1;
+#X connect 19 0 18 1;
+#X connect 20 0 24 0;
+#X connect 23 0 13 0;
+#X connect 24 0 18 0;
+#X connect 25 0 24 1;
+#X connect 27 0 26 0;
+#X connect 27 0 26 1;
+#X connect 28 0 27 1;
+#X connect 30 0 27 0;
+#X connect 31 0 55 0;
+#X connect 32 0 30 0;
+#X connect 33 0 31 0;
+#X connect 34 0 33 0;
+#X connect 35 0 41 0;
+#X connect 36 0 35 0;
+#X connect 37 0 39 0;
+#X connect 39 0 38 0;
+#X connect 39 0 38 1;
+#X connect 40 0 39 1;
+#X connect 41 0 37 0;
+#X connect 43 0 41 1;
+#X connect 44 0 43 0;
+#X connect 45 0 44 0;
+#X connect 47 0 49 0;
+#X connect 48 0 47 0;
+#X connect 49 0 32 1;
+#X connect 50 0 49 1;
+#X connect 51 0 50 0;
+#X connect 53 0 48 0;
+#X connect 55 0 56 0;
+#X connect 56 0 32 0;
diff --git a/doc/bmatrix~.pd b/doc/bmatrix~.pd
new file mode 100644
index 0000000..5cb34a5
--- /dev/null
+++ b/doc/bmatrix~.pd
@@ -0,0 +1,10 @@
+#N canvas 523 376 560 300 10;
+#X msg 69 127 load matrix.bin;
+#X text 27 39 added for completeness. mainly intended for spectral
+transfos;
+#X text 26 73 the file format is binary floating point \, column encoded.
+;
+#X obj 46 174 bmatrix~;
+#X text 29 23 bmatrix multiplies a signal block with an arbitrary matrix
+;
+#X connect 0 0 3 0;
diff --git a/doc/bwin~.pd b/doc/bwin~.pd
index 7f630d8..42b4fd6 100644
--- a/doc/bwin~.pd
+++ b/doc/bwin~.pd
@@ -1,5 +1,5 @@
-#N canvas 62 558 450 300 10;
-#N canvas 409 279 692 500 windowing 1;
+#N canvas 95 391 450 300 10;
+#N canvas 274 117 692 500 windowing 1;
#X obj 62 441 outlet~;
#X obj 62 65 inlet~;
#X obj 62 142 bfft~;
@@ -25,8 +25,8 @@ bwin~ bfft~ bifft~ and dist~;
#X msg 344 207 type bfft_db/octave \$1;
#X floatatom 517 172 5 0 0;
#X msg 345 277 type bfft_db/octave \$1;
-#X obj 545 427 block~ 16384 2;
#X floatatom 519 244 5 0 0;
+#X obj 545 427 block~ 1024 2;
#X connect 1 0 19 0;
#X connect 2 0 5 0;
#X connect 3 0 18 0;
@@ -40,12 +40,12 @@ bwin~ bfft~ bifft~ and dist~;
#X connect 20 0 16 0;
#X connect 21 0 20 0;
#X connect 22 0 17 0;
-#X connect 24 0 22 0;
+#X connect 23 0 22 0;
#X restore 53 88 pd windowing;
#X obj 41 219 dac~;
#X obj 53 150 vol~;
#X floatatom 76 124 5 0 0;
-#X obj 53 41 adc~ 7;
+#X obj 53 41 adc~ 1;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 2 0 1 1;
diff --git a/doc/clog~.pd b/doc/clog~.pd
new file mode 100644
index 0000000..490c406
--- /dev/null
+++ b/doc/clog~.pd
@@ -0,0 +1,8 @@
+#N canvas 642 410 542 207 10;
+#X obj 85 82 clog~;
+#X obj 145 82 cexp~;
+#X text 235 81 complex log and exp.;
+#X text 237 105 see also;
+#X obj 309 104 cep~;
+#X text 351 103 and;
+#X obj 384 105 icep~;
diff --git a/doc/eadsr~.pd b/doc/eadsr~.pd
index 220ea54..f72bdaf 100644
--- a/doc/eadsr~.pd
+++ b/doc/eadsr~.pd
@@ -1,41 +1,57 @@
#N canvas 478 386 580 306 10;
#X obj 89 227 *~;
#X obj 105 40 metro;
-#X obj 105 12 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
--1;
#X obj 26 203 osc~;
-#X floatatom 26 171 5 0 0;
-#X floatatom 135 12 5 0 0;
-#X floatatom 209 117 5 0 0;
-#X floatatom 208 139 5 0 0;
-#X obj 77 265 dac~;
+#X floatatom 26 171 5 0 0 0 - - -;
+#X floatatom 135 12 5 0 0 0 - - -;
+#X floatatom 209 117 5 0 0 0 - - -;
+#X floatatom 208 139 5 0 0 0 - - -;
+#X obj 81 277 dac~;
#X msg 58 12 stop;
#X msg 26 124 start;
#X msg 71 123 stop;
#X obj 105 77 del;
-#X floatatom 159 50 5 0 0;
+#X floatatom 159 50 5 0 0 0 - - -;
#X obj 105 197 eadsr~ 0 0;
#X text 191 81 exponential attack/decay/sustain/release envelope;
#X text 265 125 60db attack and decay time;
-#X text 265 182 60db attack and decay time;
-#X floatatom 209 160 5 0 0;
-#X floatatom 209 180 5 0 0;
+#X floatatom 209 160 5 0 0 0 - - -;
+#X floatatom 209 180 5 0 0 0 - - -;
#X text 264 159 sustain level;
-#X connect 0 0 8 0;
-#X connect 0 0 8 1;
-#X connect 1 0 10 0;
-#X connect 1 0 12 0;
-#X connect 2 0 1 0;
-#X connect 3 0 0 0;
-#X connect 4 0 3 0;
-#X connect 5 0 1 1;
-#X connect 6 0 14 1;
-#X connect 7 0 14 2;
-#X connect 9 0 1 0;
-#X connect 10 0 14 0;
-#X connect 11 0 14 0;
-#X connect 12 0 11 0;
-#X connect 13 0 12 1;
-#X connect 14 0 0 1;
-#X connect 18 0 14 3;
-#X connect 19 0 14 4;
+#X obj 88 253 vol~;
+#X floatatom 132 238 5 0 0 0 - - -;
+#X obj 343 228 table t 10000;
+#X obj 343 267 tabwrite~ t;
+#X obj 343 247 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 103 13 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 262 276 del;
+#X floatatom 276 225 5 0 0 0 - - -;
+#X text 265 182 60db release time;
+#X connect 0 0 19 0;
+#X connect 1 0 9 0;
+#X connect 1 0 11 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 1;
+#X connect 5 0 13 1;
+#X connect 6 0 13 2;
+#X connect 8 0 1 0;
+#X connect 9 0 13 0;
+#X connect 10 0 13 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 1;
+#X connect 13 0 0 1;
+#X connect 13 0 22 0;
+#X connect 16 0 13 3;
+#X connect 17 0 13 4;
+#X connect 19 0 7 1;
+#X connect 19 0 7 0;
+#X connect 20 0 19 1;
+#X connect 23 0 22 0;
+#X connect 23 0 25 0;
+#X connect 23 0 9 0;
+#X connect 24 0 1 0;
+#X connect 25 0 10 0;
+#X connect 26 0 25 1;
diff --git a/doc/ead~.pd b/doc/ead~.pd
index 9d9bc5f..835ba3d 100644
--- a/doc/ead~.pd
+++ b/doc/ead~.pd
@@ -2,28 +2,39 @@
#X obj 105 111 ead~ 0 0;
#X obj 89 179 *~;
#X obj 105 40 metro;
-#X obj 105 12 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
--1;
#X obj 41 144 osc~;
-#X floatatom 41 112 5 0 0;
-#X floatatom 135 12 5 0 0;
-#X floatatom 130 64 5 0 0;
-#X floatatom 156 86 5 0 0;
-#X obj 77 217 dac~;
+#X floatatom 41 112 5 0 0 0 - - -;
+#X floatatom 135 12 5 0 0 0 - - -;
+#X floatatom 130 64 5 0 0 0 - - -;
+#X floatatom 156 86 5 0 0 0 - - -;
+#X obj 78 242 dac~;
#X text 202 71 60db attack and decay time;
-#X obj 70 76 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+#X obj 70 76 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 58 12 stop;
#X text 201 51 exponential attack/decay envelope;
+#X obj 89 212 vol~;
+#X floatatom 117 193 5 0 0 0 - - -;
+#X obj 265 119 table t 5000;
+#X obj 265 176 tabwrite~ t;
+#X obj 265 152 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 105 13 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
#X connect 0 0 1 1;
-#X connect 1 0 9 0;
-#X connect 1 0 9 1;
+#X connect 0 0 16 0;
+#X connect 1 0 13 0;
#X connect 2 0 0 0;
-#X connect 3 0 2 0;
-#X connect 4 0 1 0;
-#X connect 5 0 4 0;
-#X connect 6 0 2 1;
-#X connect 7 0 0 1;
-#X connect 8 0 0 2;
-#X connect 11 0 0 0;
-#X connect 12 0 2 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 1;
+#X connect 6 0 0 1;
+#X connect 7 0 0 2;
+#X connect 10 0 0 0;
+#X connect 11 0 2 0;
+#X connect 13 0 8 0;
+#X connect 13 0 8 1;
+#X connect 14 0 13 1;
+#X connect 17 0 16 0;
+#X connect 17 0 0 0;
+#X connect 18 0 2 0;
diff --git a/doc/examples/formantdynwav.pd b/doc/examples/formantdynwav.pd
new file mode 100644
index 0000000..60afd11
--- /dev/null
+++ b/doc/examples/formantdynwav.pd
@@ -0,0 +1,198 @@
+#N canvas 131 302 276 242 10;
+#N canvas 342 154 748 636 stuff 1;
+#X obj 59 376 outlet~;
+#X obj 59 348 vol~;
+#X floatatom 176 317 5 0 0;
+#X obj 197 29 bang~;
+#X obj 59 290 pdynwav~;
+#X floatatom 189 221 5 0 0;
+#X obj 46 103 osc~;
+#X obj 91 103 osc~;
+#X obj 135 102 osc~;
+#X obj 104 223 *~;
+#X obj 345 87 phasor~;
+#X obj 277 185 *~;
+#X obj 346 136 *~;
+#X obj 346 108 onecomp~;
+#X obj 346 164 *~;
+#X text 38 33 formant frequencies;
+#N canvas 139 0 533 326 to_formant 0;
+#X obj 339 217 /;
+#X obj 391 149 t b f;
+#X obj 291 182 samplerate~;
+#X floatatom 335 243 5 0 0;
+#X obj 369 47 inlet;
+#X obj 405 126 * 1024;
+#X obj 30 158 *~;
+#X obj 88 159 *~;
+#X obj 150 156 *~;
+#X obj 30 192 outlet~;
+#X obj 88 193 outlet~;
+#X obj 150 190 outlet~;
+#X obj 150 100 inlet~;
+#X obj 88 103 inlet~;
+#X obj 30 102 inlet~;
+#X connect 0 0 3 0;
+#X connect 0 0 8 1;
+#X connect 0 0 7 1;
+#X connect 0 0 6 1;
+#X connect 1 0 2 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 9 0;
+#X connect 7 0 10 0;
+#X connect 8 0 11 0;
+#X connect 12 0 8 0;
+#X connect 13 0 7 0;
+#X connect 14 0 6 0;
+#X restore 45 71 pd to_formant;
+#X obj 189 260 +;
+#X obj 227 261 -;
+#X obj 136 374 outlet~;
+#X obj 136 346 vol~;
+#X obj 127 290 pdynwav~;
+#X floatatom 244 210 5 0 0;
+#X obj 253 237 t b f;
+#X obj 520 332 block~ 1024;
+#X obj 277 28 fblock 1024;
+#X obj 469 163 random 120;
+#X obj 469 191 - 60;
+#X obj 466 139 metro 750;
+#X obj 470 111 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 43 -75 *~;
+#X floatatom 59 -99 5 0 0;
+#X obj 43 -121 osc~;
+#X floatatom 43 -151 5 0 0;
+#X obj 113 -75 *~;
+#X floatatom 129 -99 5 0 0;
+#X obj 113 -121 osc~;
+#X floatatom 113 -151 5 0 0;
+#X obj 180 -74 *~;
+#X floatatom 196 -98 5 0 0;
+#X obj 180 -120 osc~;
+#X floatatom 180 -150 5 0 0;
+#X floatatom 531 106 5 0 0;
+#X floatatom 84 128 5 0 0;
+#X obj 44 157 vol~;
+#X floatatom 125 128 5 0 0;
+#X obj 85 157 vol~;
+#X floatatom 173 129 5 0 0;
+#X obj 133 158 vol~;
+#X floatatom 304 -126 5 0 0;
+#X msg 349 6 1;
+#X obj 277 159 phasor~;
+#X obj 94 199 *~ 1;
+#X msg 389 58 0;
+#X msg 197 60 0.25;
+#X obj 346 189 *~;
+#X msg 194 92 100;
+#X obj 374 242 tabsend~ period;
+#X obj 494 213 table period 1024;
+#X floatatom 298 322 5 0 0;
+#X obj 343 -83 loadbang;
+#X floatatom 198 -52 5 0 0;
+#X obj 182 -28 +~;
+#X floatatom 125 -49 5 0 0;
+#X obj 109 -25 +~;
+#X floatatom 65 -45 5 0 0;
+#X obj 49 -21 +~;
+#X connect 1 0 0 0;
+#X connect 2 0 1 1;
+#X connect 2 0 20 1;
+#X connect 3 0 54 0;
+#X connect 3 0 53 0;
+#X connect 4 0 1 0;
+#X connect 5 0 16 3;
+#X connect 5 0 17 0;
+#X connect 5 0 18 0;
+#X connect 6 0 44 0;
+#X connect 7 0 46 0;
+#X connect 8 0 48 0;
+#X connect 9 0 4 0;
+#X connect 9 0 21 0;
+#X connect 9 0 57 0;
+#X connect 10 0 13 0;
+#X connect 11 0 9 1;
+#X connect 12 0 14 0;
+#X connect 12 0 14 1;
+#X connect 13 0 12 1;
+#X connect 13 0 12 0;
+#X connect 14 0 55 0;
+#X connect 14 0 55 1;
+#X connect 14 0 11 1;
+#X connect 16 0 6 0;
+#X connect 16 1 7 0;
+#X connect 16 2 8 0;
+#X connect 17 0 4 1;
+#X connect 18 0 21 1;
+#X connect 20 0 19 0;
+#X connect 21 0 20 0;
+#X connect 22 0 17 1;
+#X connect 22 0 23 0;
+#X connect 23 0 18 0;
+#X connect 23 0 17 0;
+#X connect 23 1 18 1;
+#X connect 23 1 17 1;
+#X connect 25 0 10 0;
+#X connect 25 0 51 0;
+#X connect 26 0 27 0;
+#X connect 27 0 5 0;
+#X connect 28 0 26 0;
+#X connect 29 0 28 0;
+#X connect 30 0 66 0;
+#X connect 31 0 30 1;
+#X connect 32 0 30 0;
+#X connect 33 0 32 0;
+#X connect 34 0 64 0;
+#X connect 35 0 34 1;
+#X connect 36 0 34 0;
+#X connect 37 0 36 0;
+#X connect 38 0 62 0;
+#X connect 39 0 38 1;
+#X connect 40 0 38 0;
+#X connect 41 0 40 0;
+#X connect 42 0 28 1;
+#X connect 43 0 44 1;
+#X connect 44 0 52 0;
+#X connect 45 0 46 1;
+#X connect 46 0 52 0;
+#X connect 47 0 48 1;
+#X connect 48 0 52 0;
+#X connect 50 0 25 1;
+#X connect 51 0 11 0;
+#X connect 52 0 9 0;
+#X connect 53 0 10 1;
+#X connect 54 0 8 1;
+#X connect 54 0 7 1;
+#X connect 54 0 6 1;
+#X connect 56 0 47 0;
+#X connect 56 0 45 0;
+#X connect 56 0 43 0;
+#X connect 60 0 50 0;
+#X connect 61 0 62 1;
+#X connect 62 0 16 2;
+#X connect 63 0 64 1;
+#X connect 64 0 16 1;
+#X connect 65 0 66 1;
+#X connect 66 0 16 0;
+#X restore 18 14 pd stuff;
+#X obj 19 75 dac~;
+#X obj 94 79 vols~;
+#X obj 96 54 fdn~;
+#X floatatom 140 53 5 0 0;
+#X floatatom 108 24 5 0 0;
+#X floatatom 154 24 5 0 0;
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 0 1 1 1;
+#X connect 0 1 3 0;
+#X connect 2 0 1 0;
+#X connect 2 1 1 1;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
+#X connect 4 0 2 2;
+#X connect 5 0 3 1;
+#X connect 6 0 3 2;
diff --git a/doc/lattice~.pd b/doc/lattice~.pd
index 4545470..6f62e3e 100644
--- a/doc/lattice~.pd
+++ b/doc/lattice~.pd
@@ -1,21 +1,21 @@
#N canvas 338 162 527 557 10;
-#X obj 57 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144
--1 -1 12100 1;
+#X obj 57 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 0 8 -262144
+-1 -1 12500 1;
#X msg 57 223 rc 0 \$1;
-#X obj 88 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144
--1 -1 7150 1;
-#X obj 119 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144
--1 -1 5150 1;
-#X obj 149 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144
--1 -1 8100 1;
-#X obj 179 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144
--1 -1 11850 1;
-#X obj 210 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144
--1 -1 15850 1;
-#X obj 241 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144
--1 -1 17550 1;
-#X obj 271 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144
--1 -1 15050 1;
+#X obj 88 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 0 8 -262144
+-1 -1 6432 1;
+#X obj 119 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 0 8 -262144
+-1 -1 3732 1;
+#X obj 149 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 0 8 -262144
+-1 -1 4332 1;
+#X obj 179 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 0 8 -262144
+-1 -1 21232 1;
+#X obj 210 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 0 8 -262144
+-1 -1 24900 1;
+#X obj 241 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 0 8 -262144
+-1 -1 18232 1;
+#X obj 271 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 0 8 -262144
+-1 -1 16932 1;
#X msg 86 199 rc 1 \$1;
#X msg 118 224 rc 2 \$1;
#X msg 147 200 rc 3 \$1;
@@ -23,15 +23,16 @@
#X msg 208 199 rc 5 \$1;
#X msg 240 224 rc 6 \$1;
#X msg 269 200 rc 7 \$1;
-#X floatatom 154 -125 5 -1 1;
+#X floatatom 154 -125 5 -1 1 0 - - -;
#X obj 64 302 lattice~ 8;
#X obj 6 254 noise~;
#X obj 63 363 vol~;
#X obj 63 397 dac~;
-#X floatatom 85 333 5 0 0;
+#X floatatom 85 333 5 0 0 0 - - -;
#X text 159 298 lattice~ a lattice filter;
#X text 139 333 [rc <index> <val>] sets reflection coefficient;
#X text 159 311 creation argument sets order;
+#X obj 27 330 dist~ 1;
#X connect 0 0 1 0;
#X connect 1 0 17 0;
#X connect 2 0 9 0;
@@ -56,8 +57,9 @@
#X connect 16 0 6 0;
#X connect 16 0 7 0;
#X connect 16 0 8 0;
-#X connect 17 0 19 0;
+#X connect 17 0 25 0;
#X connect 18 0 17 0;
#X connect 19 0 20 1;
#X connect 19 0 20 0;
#X connect 21 0 19 1;
+#X connect 25 0 19 0;
diff --git a/doc/reference.txt b/doc/reference.txt
index 9518d84..ff314e0 100644
--- a/doc/reference.txt
+++ b/doc/reference.txt
@@ -5,14 +5,34 @@ bdft,bdfts set decay time (ms/sec) and osc frequency (for bdiag~)
bhip~ butterworth high pass filter
blop~ butterworth low pass filter
bpm convert bpm to metro time and phasor freq
+cadd~ complex add
+ccmap~ conformal self map of the unit disk
+cconj~ complex conjugate
+cep~/icep~ complex cepstrum and inverse
+cinv~ complex inverse
+cmul~ complex multiplication
count modulo counter
+cosc~ complex oscillator
+csub~ complex subtraction
+dsfosc~ (finite) discrete summation formula oscillator
eadh~ exponential attack decay (with hold == duration)
eadsrh~ exponential attack decay sustain release (..)
+expmap~ exponential map
fblock block relative frequency conversion
+fmod floating point modulo
+fmop~ fm operator
+frequor~ like phasor, but for block spectra
+idsfosc~ infinite discrete summation formula
inv inverse
+lattice3 expand a 3D harmonic lattice vector
+lpfft~ ifft + lowpass (for anti-aliased dynwav)
pdynwav~ phasor~ + dynwav~
scale7 arbitrary 7 tone scale
+ti_hihat hihat gop object
+ti_snare snare drum gop object
tblock block relative time conversion
+ucnorm~ normalize a complex signal to unit norm
+ucmod~ unit circle modulator
vols~ volume for a stereo signal
vol~ volume for a mono signal
@@ -28,9 +48,14 @@ tilde externs
abs~ absolute value
bdiag~ block diagonal state space system (spectral processor)
bfft~ reordered fft
+bitsplit~ convert signal to binary vector
bwin~ several windowing functions and spectral envelopes
biquadseries~ biquad second order sections (i.e. butterworth)
+bitsplit~ convert a signal to binary representation
+blocknorm~ normalize a (set of) dsp block(s) (i.e. for spectral processing)
+blosc~ several bandlimited oscillators
cheby~ chebyshev polynomial waveshaper
+clog~ complex log
diag~ diagonal state space system (spectral processor)
dist~ several distortions & waveshaping functions
dwt~ discrete wavelet transform
@@ -48,7 +73,10 @@ permut~ random permute a signal block
qmult~ multiply 2 quaternion signals
qnorm~ normalize a quaternion signal (or any 4 channel sig)
ramp~ generates an integer ramp
+resofilt~ a reso filter (4pole, 3pole)
+sbosc~ smallband oscillator (i.e. for formant synthesis)
statwav~ a tabread4~ clone with 8 point interpolation
+scrollgrid1D~ a stabilized scroll grid chaotic oscillator
tabreadmix~ a tabread~ clone with overlap add (for smooth time stretch)
xfm~ coupled frequency modulation
diff --git a/doc/resofilt~.pd b/doc/resofilt~.pd
new file mode 100644
index 0000000..5adad08
--- /dev/null
+++ b/doc/resofilt~.pd
@@ -0,0 +1,79 @@
+#N canvas 413 70 819 645 10;
+#X floatatom 50 203 5 0 0 0 - - -;
+#X obj 118 433 vol~;
+#X floatatom 157 409 5 0 0 0 - - -;
+#X obj 110 468 dac~;
+#X floatatom 291 252 5 0 0 0 - - -;
+#X floatatom 290 301 5 0 0 0 - - -;
+#X obj 119 341 vol~;
+#X floatatom 142 318 5 0 0 0 - - -;
+#X obj 295 232 hsl 128 15 20 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 7900 1;
+#X obj 294 282 hsl 128 15 0 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 5600 1;
+#X obj 242 225 ead~;
+#X obj 243 268 *~;
+#X obj 235 203 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 259 203 5 0 0 0 - - -;
+#X floatatom 305 202 5 0 0 0 - - -;
+#X obj 19 170 ead~;
+#X obj 20 273 *~;
+#X obj 19 102 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 35 147 5 0 0 0 - - -;
+#X floatatom 76 147 5 0 0 0 - - -;
+#X obj 86 71 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 87 44 metro 125;
+#X obj 88 20 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 147 16 5 0 0 0 - - -;
+#X msg 34 126 10;
+#X msg 76 126 400;
+#X msg 268 180 20;
+#X obj 36 225 blosc~ saw;
+#X obj 37 248 -~;
+#X msg 141 297 70;
+#X text 281 96 all inputs are signal inlets. frequency and reso are
+interpolated from their average (rms) value.;
+#X msg 305 181 500;
+#X text 279 28 resofilt~: high-quality implementations of the moog
+4-pole and tb303 3-pole reso ladder filter. state-limited which means
+it distorts on high reso input \, and can go into self oscillation
+when reso > 1;
+#X msg 53 182 70;
+#X obj 119 377 resofilt~ 4;
+#X text 222 378 creation argument 4 = 4pole \, 3 = 3pole;
+#X connect 0 0 27 0;
+#X connect 1 0 3 0;
+#X connect 1 0 3 1;
+#X connect 2 0 1 1;
+#X connect 4 0 11 1;
+#X connect 6 0 34 0;
+#X connect 7 0 6 1;
+#X connect 8 0 4 0;
+#X connect 9 0 5 0;
+#X connect 10 0 11 0;
+#X connect 12 0 10 0;
+#X connect 13 0 10 1;
+#X connect 14 0 10 2;
+#X connect 15 0 16 0;
+#X connect 16 0 6 0;
+#X connect 17 0 15 0;
+#X connect 18 0 15 1;
+#X connect 19 0 15 2;
+#X connect 20 0 12 0;
+#X connect 20 0 17 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 23 0 21 1;
+#X connect 24 0 18 0;
+#X connect 25 0 19 0;
+#X connect 26 0 13 0;
+#X connect 27 0 28 0;
+#X connect 28 0 16 1;
+#X connect 29 0 7 0;
+#X connect 31 0 14 0;
+#X connect 33 0 0 0;
+#X connect 34 0 1 0;
diff --git a/doc/sbosc~.pd b/doc/sbosc~.pd
new file mode 100644
index 0000000..804b30d
--- /dev/null
+++ b/doc/sbosc~.pd
@@ -0,0 +1,36 @@
+#N canvas 624 424 408 499 10;
+#X obj 70 158 sbosc~;
+#X floatatom 101 285 5 0 0 0 - - -;
+#X obj 70 308 vol~;
+#X obj 58 340 dac~;
+#X floatatom 70 68 5 0 0 0 - - -;
+#X floatatom 136 106 5 0 0 0 - - -;
+#X msg 129 139 0;
+#X text 171 139 phase;
+#X text 56 44 pitch;
+#X text 119 84 center freq;
+#X text 38 14 sbosc~: smallband periodic complex oscillator.;
+#X obj 134 53 hsl 128 15 20 20000 1 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 4163 1;
+#X obj 213 91 hsl 128 15 20 20000 1 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 7400 1;
+#X obj 85 228 idsfosc~;
+#X obj 70 256 *~;
+#X floatatom 136 206 5 0 0 0 - - -;
+#X obj 194 191 hsl 128 15 -0.99 0.99 0 0 empty empty empty -2 -6 0
+8 -262144 -1 -1 9100 1;
+#X text 136 188 bw;
+#X connect 0 0 14 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
+#X connect 4 0 0 0;
+#X connect 4 0 13 0;
+#X connect 5 0 0 1;
+#X connect 6 0 0 2;
+#X connect 11 0 4 0;
+#X connect 12 0 5 0;
+#X connect 13 0 14 1;
+#X connect 14 0 2 0;
+#X connect 15 0 13 1;
+#X connect 16 0 15 0;
diff --git a/doc/scrollgrid1D~.pd b/doc/scrollgrid1D~.pd
new file mode 100644
index 0000000..1649dfb
--- /dev/null
+++ b/doc/scrollgrid1D~.pd
@@ -0,0 +1,111 @@
+#N canvas 309 57 748 724 10;
+#X obj 116 116 scrollgrid1D~;
+#X msg 36 92 reset;
+#X floatatom 111 87 5 0 0;
+#X floatatom 187 87 5 0 0;
+#X floatatom 237 86 5 0 0;
+#X floatatom 290 85 5 0 0;
+#X obj 401 200 tabwrite~ t;
+#X obj 401 147 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144
+-1 -1;
+#X obj 504 206 table t 10000;
+#X obj 123 222 vol~;
+#X floatatom 146 196 5 0 0;
+#X text 103 47 frequency;
+#X text 197 45 T1;
+#X text 249 45 T2;
+#X text 301 46 N;
+#X msg 111 66 350;
+#X msg 235 66 1;
+#X msg 291 65 3;
+#X msg 188 65 12;
+#X obj 379 222 tabwrite~ t;
+#X obj 379 147 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144
+-1 -1;
+#X obj 353 243 tabwrite~ t;
+#X obj 353 148 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144
+-1 -1;
+#X text 233 292 parameters:;
+#X text 266 359 N = number of scrolls or unstable rotation centers
+in attractor;
+#X text 233 404 outputs:;
+#X text 230 468 some remarks;
+#X text 266 422 the first output is alongside the scoll centers \,
+the other two are orthogonal to this line.;
+#X text 368 130 X Y Z;
+#X obj 178 222 vol~;
+#X floatatom 201 196 5 0 0;
+#X obj 64 223 vol~;
+#X floatatom 87 197 5 0 0;
+#X obj 63 282 hip~ 10;
+#X floatatom 133 286 5 0 0;
+#X obj 63 305 blop~ 4;
+#X msg 132 263 500;
+#X msg 163 263 5000;
+#X text 265 325 T1 = unstable time constant in ms ("attack" time);
+#X text 265 342 T2 = stable time constant in ms ("release" time);
+#X text 265 660 the entire circuit is clipped \, which means that for
+some parameter values that would normally cause a blowup \, its behaviour
+is limited to that of an oscillator.;
+#X obj 4 283 hip~ 10;
+#X obj 4 306 blop~ 4;
+#X obj 34 340 dac~;
+#X floatatom 180 170 5 0 0;
+#X obj 4 402 tabwrite~ t;
+#X obj 21 380 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X msg 142 66 5000;
+#X text 264 309 freq = spiral frequency in Hz;
+#X text 265 493 this chaotic system is a switched unstable linear system.
+it consists of N scrolls (outward spirals). when the amplitude of the
+spiral has reached a certain threshold \, it is switched to the nearest
+fixed point (a neighbour spiral). the freq parameter determines the
+frequency of the outward spiralling motion on a scroll. T1 is the outward
+spiralling time constant. T1 large means slow buildup or mild chaotic
+motion \, T1 small means fast buildup or turbulent chaotic motion.
+T2 is the time constant with which a trajectory is attracted to the
+plane of a scroll. T2 small means fast attraction \, T2 large means
+slow attraction.;
+#X text 45 11 stabilized scroll grid chaotic oscillator with scroll
+centers located on a line.;
+#X msg 204 262 17000;
+#X connect 0 0 21 0;
+#X connect 0 0 31 0;
+#X connect 0 1 9 0;
+#X connect 0 1 19 0;
+#X connect 0 2 6 0;
+#X connect 0 2 29 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 0 2;
+#X connect 5 0 0 3;
+#X connect 7 0 6 0;
+#X connect 9 0 41 0;
+#X connect 10 0 9 1;
+#X connect 15 0 2 0;
+#X connect 16 0 4 0;
+#X connect 17 0 5 0;
+#X connect 18 0 3 0;
+#X connect 20 0 19 0;
+#X connect 22 0 21 0;
+#X connect 29 0 33 0;
+#X connect 30 0 29 1;
+#X connect 31 0 33 0;
+#X connect 31 0 41 0;
+#X connect 32 0 31 1;
+#X connect 33 0 35 0;
+#X connect 34 0 35 1;
+#X connect 34 0 42 1;
+#X connect 35 0 43 1;
+#X connect 35 0 45 0;
+#X connect 36 0 34 0;
+#X connect 37 0 34 0;
+#X connect 41 0 42 0;
+#X connect 42 0 43 0;
+#X connect 42 0 45 0;
+#X connect 44 0 10 0;
+#X connect 44 0 30 0;
+#X connect 46 0 45 0;
+#X connect 47 0 2 0;
+#X connect 51 0 34 0;