aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/bdiag~.pd97
-rw-r--r--doc/bfft~.pd18
-rw-r--r--doc/biquadseries~.pd22
-rw-r--r--doc/cheby~.pd43
-rw-r--r--doc/dist~.pd17
-rw-r--r--doc/dwt~.pd72
-rw-r--r--doc/dynwav~.pd25
-rw-r--r--doc/eadsr~.pd41
-rw-r--r--doc/ead~.pd29
-rw-r--r--doc/ear~.pd35
-rw-r--r--doc/examples/xfmdelay.pd106
-rw-r--r--doc/ffpoly.pd35
-rw-r--r--doc/filterortho~.pd58
-rw-r--r--doc/fwarp.pd37
-rw-r--r--doc/lattice~.pd63
-rw-r--r--doc/matrix~.pd10
-rw-r--r--doc/permut~.pd19
-rw-r--r--doc/qmult~.pd63
-rw-r--r--doc/qnorm~.pd35
-rw-r--r--doc/ratio.pd18
-rw-r--r--doc/reference.txt49
-rw-r--r--doc/tabreadmix~.pd45
-rw-r--r--doc/xfm~.pd106
23 files changed, 1043 insertions, 0 deletions
diff --git a/doc/bdiag~.pd b/doc/bdiag~.pd
new file mode 100644
index 0000000..f5e835f
--- /dev/null
+++ b/doc/bdiag~.pd
@@ -0,0 +1,97 @@
+#N canvas 34 203 724 407 10;
+#X obj 34 45 metro;
+#X msg 34 20 bang;
+#X floatatom 76 20 5 0 0;
+#X obj 34 327 dist~ 1;
+#X obj 24 359 dac~;
+#N canvas 731 115 262 403 systemparams 1;
+#X floatatom 81 47 5 0 0;
+#X floatatom 125 47 5 0 0;
+#X floatatom 81 74 5 0 0;
+#X floatatom 125 74 5 0 0;
+#X floatatom 81 102 5 0 0;
+#X floatatom 125 102 5 0 0;
+#X floatatom 81 129 5 0 0;
+#X floatatom 125 129 5 0 0;
+#X floatatom 81 157 5 0 0;
+#X floatatom 125 157 5 0 0;
+#X floatatom 81 184 5 0 0;
+#X floatatom 125 184 5 0 0;
+#X floatatom 81 212 5 0 0;
+#X floatatom 125 212 5 0 0;
+#X floatatom 81 239 5 0 0;
+#X floatatom 125 239 5 0 0;
+#X obj 28 65 bdft 1;
+#X obj 27 93 bdft 2;
+#X obj 28 120 bdft 3;
+#X obj 28 175 bdft 7;
+#X obj 28 202 bdft 11;
+#X obj 28 230 bdft 17;
+#X obj 28 257 bdft 30;
+#X obj 28 319 outlet;
+#X text 20 23 frequency detune and damping;
+#X text 49 283 bdft argument = harmonic;
+#X obj 28 147 bdft 5;
+#X connect 0 0 16 0;
+#X connect 1 0 16 1;
+#X connect 2 0 17 0;
+#X connect 3 0 17 1;
+#X connect 4 0 18 0;
+#X connect 5 0 18 1;
+#X connect 6 0 26 0;
+#X connect 7 0 26 1;
+#X connect 8 0 19 0;
+#X connect 9 0 19 1;
+#X connect 10 0 20 0;
+#X connect 11 0 20 1;
+#X connect 12 0 21 0;
+#X connect 13 0 21 1;
+#X connect 14 0 22 0;
+#X connect 15 0 22 1;
+#X connect 16 0 23 0;
+#X connect 17 0 23 0;
+#X connect 18 0 23 0;
+#X connect 19 0 23 0;
+#X connect 20 0 23 0;
+#X connect 21 0 23 0;
+#X connect 22 0 23 0;
+#X connect 26 0 23 0;
+#X restore 89 76 pd systemparams;
+#X obj 34 93 bdiag~;
+#X obj 34 129 ibfft~;
+#X obj 34 232 dynwav~;
+#X obj 34 283 vol~;
+#X floatatom 57 257 5 0 0;
+#X floatatom 78 168 5 0 0;
+#X obj 78 196 phasor~;
+#X text 258 168 the [eig <index> <real> <imag>] message sets the eigenvalue
+for the corresponding block. there are n/2 blocks \, with n the dsp
+blocksize.;
+#X text 259 223 you can use [timefreq <index> <60dB time> <frequency>]
+for a more appropriate initialization of the eigenvalues using decay
+time in milliseconds and oscillation frequency in Hz.;
+#X text 256 18 bdiag~: parallel block diagonal state space model (parallel
+2d rotations) see bdiag.c for more info. the state equations for one
+block are:;
+#X text 300 70 state1 = real * state1 - imag * state2 + input1;
+#X text 300 85 state2 = real * state2 + imag * state1 + input2;
+#X text 258 121 this module is intended to "filter" spectral data produced
+by bfft or other short time spectral transforms like dwt.;
+#X text 256 279 [bang] or [random] set the state vector to a random
+value. [reset] sets it to 0;
+#X text 256 327 this patch uses of bdiag~ \, ibfft~ and dynwav~ to
+build a 32 voice harmonic modal synth \, with the state excited with
+white noise on bang.;
+#X connect 0 0 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 3 0 4 0;
+#X connect 3 0 4 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 3 0;
+#X connect 10 0 9 1;
+#X connect 11 0 12 0;
+#X connect 12 0 8 1;
diff --git a/doc/bfft~.pd b/doc/bfft~.pd
new file mode 100644
index 0000000..62507f9
--- /dev/null
+++ b/doc/bfft~.pd
@@ -0,0 +1,18 @@
+#N canvas 488 64 480 309 10;
+#X obj 17 62 osc~ 500;
+#X floatatom 17 -11 5 0 0;
+#X obj 17 23 * 187.5;
+#X obj 17 180 tabsend~ scope;
+#N canvas 0 0 450 300 graph2 0;
+#X array scope 64 float 0;
+#X coords 0 1 63 -1 200 140 1;
+#X restore 233 16 graph;
+#X obj 18 113 bfft~;
+#X obj 71 112 ibfft~;
+#X text 12 -60 spectrum: (DC \, NY) \, (R1 \, I1) \, ...(RN-1 \, IN-1)
+;
+#X text 13 -74 like fft~ but normalized and;
+#X connect 0 0 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 5 0 3 0;
diff --git a/doc/biquadseries~.pd b/doc/biquadseries~.pd
new file mode 100644
index 0000000..89d7ce0
--- /dev/null
+++ b/doc/biquadseries~.pd
@@ -0,0 +1,22 @@
+#N canvas 389 207 533 299 10;
+#X obj 37 246 dac~;
+#X msg 81 132 butterLP \$1;
+#X msg 173 131 butterHP \$1;
+#X floatatom 81 105 5 0 0;
+#X floatatom 173 104 5 0 0;
+#X obj 48 78 *~;
+#X floatatom 82 55 5 0 0;
+#X obj 48 35 noise~;
+#X text 269 132 butterworth lowpass and highpass;
+#X text 181 178 creation argument: number of 2nd order sections;
+#X obj 48 178 biquadseries~ 4;
+#X text 173 22 biquadseries~ second order iir series section;
+#X connect 1 0 10 0;
+#X connect 2 0 10 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 5 0;
+#X connect 10 0 0 0;
+#X connect 10 0 0 1;
diff --git a/doc/cheby~.pd b/doc/cheby~.pd
new file mode 100644
index 0000000..30bb77e
--- /dev/null
+++ b/doc/cheby~.pd
@@ -0,0 +1,43 @@
+#N canvas 262 87 566 348 10;
+#X obj 130 230 cheby~ 4;
+#X msg 147 149 coef 1 \$1;
+#X floatatom 147 93 5 0 0;
+#X obj 147 117 dbtorms;
+#X obj 124 313 dac~;
+#X obj 130 281 vol~;
+#X floatatom 156 261 5 0 0;
+#X obj 40 113 osc~;
+#X floatatom 40 88 5 0 0;
+#X floatatom 226 94 5 0 0;
+#X obj 226 118 dbtorms;
+#X floatatom 305 94 5 0 0;
+#X obj 305 118 dbtorms;
+#X floatatom 384 93 5 0 0;
+#X obj 384 117 dbtorms;
+#X msg 226 150 coef 2 \$1;
+#X msg 305 150 coef 3 \$1;
+#X msg 384 150 coef 4 \$1;
+#X text 96 3 chebychev waveshaper;
+#X text 207 229 creation argument: order of polynomial;
+#X text 135 47 coef n x sets coefficient of nth order cheby poly to
+x;
+#X text 135 60 if the input is a sine wave \, these are the amplitudes
+for the harmonics.;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 4 1;
+#X connect 5 0 4 0;
+#X connect 6 0 5 1;
+#X connect 7 0 0 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 15 0;
+#X connect 11 0 12 0;
+#X connect 12 0 16 0;
+#X connect 13 0 14 0;
+#X connect 14 0 17 0;
+#X connect 15 0 0 0;
+#X connect 16 0 0 0;
+#X connect 17 0 0 0;
diff --git a/doc/dist~.pd b/doc/dist~.pd
new file mode 100644
index 0000000..3533471
--- /dev/null
+++ b/doc/dist~.pd
@@ -0,0 +1,17 @@
+#N canvas 497 336 450 300 10;
+#X text 156 35 dist~ waveshaper;
+#X text 154 53 creation argument: type (see dist.c);
+#X floatatom 136 120 5 0 0;
+#X obj 64 121 osc~;
+#X obj 66 206 dac~;
+#X floatatom 63 84 5 0 0;
+#X text 189 119 right inlet: pre gain;
+#X obj 148 95 hsl 128 15 0.5 20 0 0 empty empty empty -2 -6 32 8 -262144
+-1 -1 7000 1;
+#X obj 64 157 dist~ 1;
+#X connect 2 0 8 1;
+#X connect 3 0 8 0;
+#X connect 5 0 3 0;
+#X connect 7 0 2 0;
+#X connect 8 0 4 0;
+#X connect 8 0 4 1;
diff --git a/doc/dwt~.pd b/doc/dwt~.pd
new file mode 100644
index 0000000..52986e1
--- /dev/null
+++ b/doc/dwt~.pd
@@ -0,0 +1,72 @@
+#N canvas 47 99 994 611 10;
+#X obj 17 62 osc~ 500;
+#X msg 83 -115 predict 0.5 0.5 \, update 0.25 0.25;
+#X msg 83 -76 predict -0.0625 0.5625 0.5625 -0.0625 \, update -0.03125
+0.28125 0.28125 -0.03125;
+#X floatatom 24 10 5 0 0;
+#X msg 201 144 mask -1 9 9 -1;
+#X obj 67 279 r coef;
+#X obj 82 -30 s coef;
+#X obj 195 337 s coef;
+#X msg 201 167 mask 3 -25 150 150 -25 3;
+#X msg 216 189 mask -5 49 -245 1225 1225 -245 49 -5;
+#X obj 196 39 pack;
+#X floatatom 222 8 5 0 0;
+#X floatatom 166 -4 5 0 0;
+#X msg 171 64 coef \$1 \$2;
+#X msg 191 120 mask 1 1;
+#X msg 228 212 mask 35 -405 2268 -8820 39690 39690 -8820 2268 -405
+35;
+#X msg 244 246 mask -63 847 -5445 22869 -76230 320166 320166 -76230
+22869 -5445 847 -63;
+#X msg 245 306 predict 1 0 \, update 0 0.5;
+#X obj 36 31 * 187.5;
+#X obj 26 341 dwt~ 1;
+#X obj 80 343 idwt~ 1;
+#X msg 469 376 mask 0 0 0 35 140 -70 28 -5;
+#X msg 469 352 mask 7 -45 126 -210 315 63 0 0 0 0;
+#X msg 469 328 mask -21 154 -495 924 -1155 1386 231 0 0 0 0 0;
+#X obj 26 443 tabsend~ scope;
+#N canvas 0 0 450 300 graph2 0;
+#X array scope 256 float 0;
+#X coords 0 1 255 -1 200 140 1;
+#X restore 718 -98 graph;
+#X text 61 165 print out coefs;
+#X msg 100 184 print;
+#X text 315 -24 dwt~ performs a discrete wavelet transform;
+#X text 315 -10 idwt~ performs the inverse transform;
+#X text 309 105 mask sets the predict mask \, and uses the corresponding
+update mask;
+#X text 266 63 coef sets half of a symmetric predict mask;
+#X text 243 286 predict and update masks can be specified explicitly
+;
+#X text 433 307 haar wavelet;
+#X msg 672 189 even \$1;
+#X floatatom 672 167 5 0 0;
+#X text 570 134 even <n> is the order symmetric interpolating biorthogonal
+wavelet with n vanishing moments.;
+#X connect 0 0 19 0;
+#X connect 1 0 6 0;
+#X connect 2 0 6 0;
+#X connect 3 0 18 0;
+#X connect 4 0 7 0;
+#X connect 5 0 20 0;
+#X connect 5 0 19 0;
+#X connect 8 0 7 0;
+#X connect 9 0 7 0;
+#X connect 10 0 13 0;
+#X connect 11 0 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 7 0;
+#X connect 14 0 7 0;
+#X connect 15 0 7 0;
+#X connect 16 0 7 0;
+#X connect 17 0 7 0;
+#X connect 18 0 0 0;
+#X connect 19 0 24 0;
+#X connect 21 0 7 0;
+#X connect 22 0 7 0;
+#X connect 23 0 7 0;
+#X connect 27 0 7 0;
+#X connect 34 0 7 0;
+#X connect 35 0 34 0;
diff --git a/doc/dynwav~.pd b/doc/dynwav~.pd
new file mode 100644
index 0000000..59f86bd
--- /dev/null
+++ b/doc/dynwav~.pd
@@ -0,0 +1,25 @@
+#N canvas 193 151 450 300 10;
+#X text 96 6 dynwav~: dynamic wavetable oscillator;
+#X obj 61 98 osc~;
+#X floatatom 60 56 5 0 0;
+#X obj 60 151 dynwav~;
+#X obj 60 214 vol~;
+#X floatatom 85 190 5 0 0;
+#X obj 50 256 dac~;
+#X obj 172 105 phasor~;
+#X floatatom 172 80 5 0 0;
+#X obj 107 54 bang~;
+#X text 171 22 (scanned synthesis);
+#X text 165 143 left inlet's dsp block = wavetable;
+#X msg 107 78 0.25;
+#X text 242 157 right inlet = phase (0-1);
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 6 1;
+#X connect 4 0 6 0;
+#X connect 5 0 4 1;
+#X connect 7 0 3 1;
+#X connect 8 0 7 0;
+#X connect 9 0 12 0;
+#X connect 12 0 1 1;
diff --git a/doc/eadsr~.pd b/doc/eadsr~.pd
new file mode 100644
index 0000000..220ea54
--- /dev/null
+++ b/doc/eadsr~.pd
@@ -0,0 +1,41 @@
+#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 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 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 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;
diff --git a/doc/ead~.pd b/doc/ead~.pd
new file mode 100644
index 0000000..9d9bc5f
--- /dev/null
+++ b/doc/ead~.pd
@@ -0,0 +1,29 @@
+#N canvas 478 386 459 306 10;
+#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 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
+-1;
+#X msg 58 12 stop;
+#X text 201 51 exponential attack/decay envelope;
+#X connect 0 0 1 1;
+#X connect 1 0 9 0;
+#X connect 1 0 9 1;
+#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;
diff --git a/doc/ear~.pd b/doc/ear~.pd
new file mode 100644
index 0000000..8527a12
--- /dev/null
+++ b/doc/ear~.pd
@@ -0,0 +1,35 @@
+#N canvas 478 386 459 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 41 192 osc~;
+#X floatatom 41 160 5 0 0;
+#X floatatom 135 12 5 0 0;
+#X floatatom 130 112 5 0 0;
+#X floatatom 157 134 5 0 0;
+#X obj 77 265 dac~;
+#X msg 58 12 stop;
+#X msg 26 124 start;
+#X msg 71 123 stop;
+#X obj 105 159 ear~ 0 0;
+#X obj 105 77 del;
+#X floatatom 159 50 5 0 0;
+#X text 201 99 exponential attack/release envelope;
+#X text 202 119 60db attack and release time;
+#X connect 0 0 8 0;
+#X connect 0 0 8 1;
+#X connect 1 0 10 0;
+#X connect 1 0 13 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 12 1;
+#X connect 7 0 12 2;
+#X connect 9 0 1 0;
+#X connect 10 0 12 0;
+#X connect 11 0 12 0;
+#X connect 12 0 0 1;
+#X connect 13 0 11 0;
+#X connect 14 0 13 1;
diff --git a/doc/examples/xfmdelay.pd b/doc/examples/xfmdelay.pd
new file mode 100644
index 0000000..078733a
--- /dev/null
+++ b/doc/examples/xfmdelay.pd
@@ -0,0 +1,106 @@
+#N canvas 25 206 921 653 10;
+#X obj 289 329 xfm~ 0 0 0 0;
+#X obj 279 280 *~;
+#X obj 398 233 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 862.744 256;
+#X obj 306 279 *~;
+#X obj 398 250 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 795.103 256;
+#X obj 332 279 *~;
+#X obj 399 266 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 23.7527 256;
+#X obj 359 278 *~;
+#X obj 398 284 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 224.294 256;
+#X obj 251 170 xfm~ 0 0 0 0;
+#X obj 392 111 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 703.454 256;
+#X obj 392 132 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 675.315 256;
+#X obj 304 138 *~;
+#X obj 393 148 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 51.5902 256;
+#X obj 331 137 *~;
+#X obj 392 166 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 49.5265 256;
+#X obj 191 403 vols~;
+#X floatatom 233 374 5 0 0;
+#X obj 195 525 dac~;
+#X obj 274 51 vd~ del1;
+#X obj 274 24 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 73 256;
+#X obj 339 23 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 339 256;
+#X obj 339 50 vd~ del2;
+#X obj 296 393 delwrite~ del1 1000;
+#X obj 448 393 delwrite~ del2 1000;
+#X msg 136 125 type 0;
+#X msg 137 146 type 1;
+#X obj 464 110 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 21700 1;
+#X obj 464 130 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 21600 1;
+#X obj 463 150 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 15300 1;
+#X obj 464 168 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 15200 1;
+#X obj 465 232 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 22200 1;
+#X obj 465 252 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 22000 1;
+#X obj 464 271 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 13400 1;
+#X obj 465 289 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 18900 1;
+#X text 479 29 2 xfm oscillators coupled by 2 delay lines;
+#X obj 188 475 *~;
+#X obj 217 474 *~;
+#X obj 270 458 osc~;
+#X obj 269 433 hsl 300 15 0.1 20000 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 18900 1;
+#X connect 0 0 23 0;
+#X connect 0 1 24 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 1;
+#X connect 3 0 0 1;
+#X connect 4 0 3 1;
+#X connect 5 0 0 2;
+#X connect 6 0 5 1;
+#X connect 7 0 0 3;
+#X connect 8 0 7 1;
+#X connect 9 0 3 0;
+#X connect 9 0 5 0;
+#X connect 9 0 16 0;
+#X connect 9 1 1 0;
+#X connect 9 1 7 0;
+#X connect 9 1 16 1;
+#X connect 10 0 9 0;
+#X connect 11 0 9 1;
+#X connect 12 0 9 2;
+#X connect 13 0 12 1;
+#X connect 14 0 9 3;
+#X connect 15 0 14 1;
+#X connect 16 0 36 0;
+#X connect 16 1 37 0;
+#X connect 17 0 16 2;
+#X connect 19 0 12 0;
+#X connect 20 0 19 0;
+#X connect 21 0 22 0;
+#X connect 22 0 14 0;
+#X connect 25 0 9 0;
+#X connect 25 0 0 0;
+#X connect 26 0 9 0;
+#X connect 26 0 0 0;
+#X connect 27 0 10 0;
+#X connect 28 0 11 0;
+#X connect 29 0 13 0;
+#X connect 30 0 15 0;
+#X connect 31 0 2 0;
+#X connect 32 0 4 0;
+#X connect 33 0 6 0;
+#X connect 34 0 8 0;
+#X connect 36 0 18 0;
+#X connect 37 0 18 1;
+#X connect 38 0 37 1;
+#X connect 38 0 36 1;
+#X connect 39 0 38 0;
diff --git a/doc/ffpoly.pd b/doc/ffpoly.pd
new file mode 100644
index 0000000..7ec8886
--- /dev/null
+++ b/doc/ffpoly.pd
@@ -0,0 +1,35 @@
+#N canvas 372 77 515 425 10;
+#X text 85 14 ffpoly - compute a finite field polynomial;
+#X msg 103 89 coef 0 \$1;
+#X floatatom 103 65 5 0 0;
+#X floatatom 181 65 5 0 0;
+#X floatatom 257 65 5 0 0;
+#X floatatom 334 64 5 0 0;
+#X msg 181 89 coef 1 \$1;
+#X msg 257 89 coef 2 \$1;
+#X msg 334 89 coef 3 \$1;
+#X floatatom 38 106 5 0 0;
+#X obj 38 350 ffpoly 3 5;
+#X text 125 350 creation args: <poly order> <field order>;
+#X floatatom 38 384 5 0 0;
+#X msg 334 150 order \$1;
+#X floatatom 334 125 5 0 0;
+#X text 332 174 finite field order;
+#X floatatom 335 217 5 0 0;
+#X msg 335 242 coefficients \$1;
+#X text 271 279 set coefs in packed form;
+#X text 203 292 digit representation in base = field order;
+#X connect 1 0 10 0;
+#X connect 2 0 1 0;
+#X connect 3 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 8 0;
+#X connect 6 0 10 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 12 0;
+#X connect 13 0 10 0;
+#X connect 14 0 13 0;
+#X connect 16 0 17 0;
+#X connect 17 0 10 0;
diff --git a/doc/filterortho~.pd b/doc/filterortho~.pd
new file mode 100644
index 0000000..e120101
--- /dev/null
+++ b/doc/filterortho~.pd
@@ -0,0 +1,58 @@
+#N canvas 634 361 578 534 10;
+#X obj 146 452 dac~;
+#X floatatom 255 83 7 0 0;
+#X floatatom 194 83 7 0 0;
+#X obj 158 405 filterortho~;
+#X obj 194 123 t b f;
+#X floatatom 29 31 5 0 0;
+#X obj 13 9 noise~;
+#X floatatom 133 83 7 0 0;
+#X obj 150 123 t b f;
+#X obj 13 52 *~;
+#X text 333 9 orthogonal biquad object;
+#X obj 157 330 pack s 0 0 0;
+#X obj 237 122 t b f;
+#X text 137 61 freq;
+#X text 213 61 Q;
+#X msg 335 126 setEQ;
+#X msg 335 150 setLP;
+#X msg 158 363 \$1 \$2 \$3 \$4;
+#X msg 336 175 setHP;
+#X msg 336 201 setBP;
+#X msg 336 225 setBR;
+#X msg 336 251 setHS;
+#X msg 337 275 setLS;
+#X msg 338 299 setAP;
+#X text 391 127 parametric equalizer;
+#X text 390 150 lowpass;
+#X text 391 175 highpass;
+#X text 391 201 bandpass;
+#X text 391 224 bandreject;
+#X text 390 252 highshelf;
+#X text 390 277 lowshelf;
+#X text 391 300 allpass;
+#X text 265 62 gain (only for EQ \, LS \, HS);
+#X connect 1 0 12 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 11 0;
+#X connect 4 1 11 2;
+#X connect 5 0 9 1;
+#X connect 6 0 9 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 8 1 11 1;
+#X connect 9 0 3 0;
+#X connect 11 0 17 0;
+#X connect 12 0 11 0;
+#X connect 12 1 11 3;
+#X connect 15 0 11 0;
+#X connect 16 0 11 0;
+#X connect 17 0 3 0;
+#X connect 18 0 11 0;
+#X connect 19 0 11 0;
+#X connect 20 0 11 0;
+#X connect 21 0 11 0;
+#X connect 22 0 11 0;
+#X connect 23 0 11 0;
diff --git a/doc/fwarp.pd b/doc/fwarp.pd
new file mode 100644
index 0000000..d43a5a3
--- /dev/null
+++ b/doc/fwarp.pd
@@ -0,0 +1,37 @@
+#N canvas 403 309 522 388 10;
+#X obj 18 85 fwarp;
+#X floatatom 18 53 5 0 0;
+#X floatatom 18 121 7 0 0;
+#X text 112 49 fwarp - warps a frequency using the formula;
+#X obj 173 261 xfm~ 0 0 0 0;
+#X obj 173 218 fwarp;
+#X floatatom 173 186 5 0 0;
+#X obj 117 260 osc~;
+#X obj 152 324 vol~;
+#X obj 152 350 dac~;
+#X floatatom 212 298 5 0 0;
+#X obj 351 263 xfm~ 0 0 0 0;
+#X floatatom 351 188 5 0 0;
+#X obj 295 262 osc~;
+#X obj 330 326 vol~;
+#X obj 330 352 dac~;
+#X floatatom 390 300 5 0 0;
+#X text 132 126 example: xfm~ uses warped frequencies;
+#X text 112 67 out = tan(2pi*in/sr) * (sr/2pi);
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 4 0 8 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 0 9 1;
+#X connect 10 0 8 1;
+#X connect 11 0 14 0;
+#X connect 12 0 13 0;
+#X connect 12 0 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 14 0 15 1;
+#X connect 16 0 14 1;
diff --git a/doc/lattice~.pd b/doc/lattice~.pd
new file mode 100644
index 0000000..4545470
--- /dev/null
+++ b/doc/lattice~.pd
@@ -0,0 +1,63 @@
+#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 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 msg 86 199 rc 1 \$1;
+#X msg 118 224 rc 2 \$1;
+#X msg 147 200 rc 3 \$1;
+#X msg 179 223 rc 4 \$1;
+#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 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 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 connect 0 0 1 0;
+#X connect 1 0 17 0;
+#X connect 2 0 9 0;
+#X connect 3 0 10 0;
+#X connect 4 0 11 0;
+#X connect 5 0 12 0;
+#X connect 6 0 13 0;
+#X connect 7 0 14 0;
+#X connect 8 0 15 0;
+#X connect 9 0 17 0;
+#X connect 10 0 17 0;
+#X connect 11 0 17 0;
+#X connect 12 0 17 0;
+#X connect 13 0 17 0;
+#X connect 14 0 17 0;
+#X connect 15 0 17 0;
+#X connect 16 0 0 0;
+#X connect 16 0 2 0;
+#X connect 16 0 3 0;
+#X connect 16 0 4 0;
+#X connect 16 0 5 0;
+#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 18 0 17 0;
+#X connect 19 0 20 1;
+#X connect 19 0 20 0;
+#X connect 21 0 19 1;
diff --git a/doc/matrix~.pd b/doc/matrix~.pd
new file mode 100644
index 0000000..5a6e9d5
--- /dev/null
+++ b/doc/matrix~.pd
@@ -0,0 +1,10 @@
+#N canvas 523 376 560 300 10;
+#X obj 30 165 matrix~;
+#X text 29 23 matrix multiplies a signal block with an arbitrary matrix
+;
+#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 connect 2 0 0 0;
diff --git a/doc/permut~.pd b/doc/permut~.pd
new file mode 100644
index 0000000..c8aa822
--- /dev/null
+++ b/doc/permut~.pd
@@ -0,0 +1,19 @@
+#N canvas 523 376 560 300 10;
+#X text 29 10 permut~ performs a random permutation on a signal block
+;
+#X text 30 27 mainly intended for shuffling spectral data (dynwav)
+;
+#X obj 73 127 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X msg 96 126 random;
+#X text 154 124 bang or random create a new random permutation;
+#X obj 30 91 osc~;
+#X obj 30 166 permut~;
+#X obj 29 210 dac~;
+#X floatatom 30 61 5 0 0;
+#X connect 2 0 6 0;
+#X connect 3 0 6 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 6 0 7 1;
+#X connect 8 0 5 0;
diff --git a/doc/qmult~.pd b/doc/qmult~.pd
new file mode 100644
index 0000000..674df3e
--- /dev/null
+++ b/doc/qmult~.pd
@@ -0,0 +1,63 @@
+#N canvas 195 283 786 398 10;
+#X obj 111 145 qnorm~;
+#X obj 38 71 osc~ 30;
+#X obj 101 71 osc~ 40;
+#X obj 163 70 osc~ 50;
+#X obj 229 71 osc~ 60;
+#X obj 143 319 dac~;
+#X obj 123 244 vol~;
+#X obj 163 244 vol~;
+#X floatatom 230 230 5 0 0;
+#X floatatom 58 36 5 0 0;
+#X floatatom 107 36 5 0 0;
+#X floatatom 159 36 5 0 0;
+#X floatatom 208 36 5 0 0;
+#X obj 167 282 hip~ 10;
+#X obj 103 281 hip~ 10;
+#X text 402 190 qmult multiplies 2 quaternion signals;
+#X floatatom 347 35 5 0 0;
+#X floatatom 396 35 5 0 0;
+#X floatatom 448 35 5 0 0;
+#X floatatom 497 35 5 0 0;
+#X obj 327 70 osc~ 70;
+#X obj 390 70 osc~ 80;
+#X obj 452 69 osc~ 90;
+#X obj 518 70 osc~ 100;
+#X obj 410 136 qnorm~;
+#X obj 106 195 qmult~ 0 0 0 0 0;
+#X text 410 208 "quaternion ring modulation";
+#X text 403 245 the inlets are in 1 x real 3 x imag form;
+#X connect 0 0 25 0;
+#X connect 0 1 25 1;
+#X connect 0 2 25 2;
+#X connect 0 3 25 3;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 3 0 0 2;
+#X connect 4 0 0 3;
+#X connect 6 0 14 0;
+#X connect 7 0 13 0;
+#X connect 8 0 7 1;
+#X connect 8 0 6 1;
+#X connect 9 0 1 0;
+#X connect 10 0 2 0;
+#X connect 11 0 3 0;
+#X connect 12 0 4 0;
+#X connect 13 0 5 1;
+#X connect 14 0 5 0;
+#X connect 16 0 20 0;
+#X connect 17 0 21 0;
+#X connect 18 0 22 0;
+#X connect 19 0 23 0;
+#X connect 20 0 24 0;
+#X connect 21 0 24 1;
+#X connect 22 0 24 2;
+#X connect 23 0 24 3;
+#X connect 24 0 25 4;
+#X connect 24 1 25 5;
+#X connect 24 2 25 6;
+#X connect 24 3 25 7;
+#X connect 25 0 6 0;
+#X connect 25 1 6 0;
+#X connect 25 2 7 0;
+#X connect 25 3 7 0;
diff --git a/doc/qnorm~.pd b/doc/qnorm~.pd
new file mode 100644
index 0000000..3f6a8d0
--- /dev/null
+++ b/doc/qnorm~.pd
@@ -0,0 +1,35 @@
+#N canvas 334 368 513 350 10;
+#X obj 119 137 qnorm~;
+#X obj 96 68 osc~ 30;
+#X obj 159 68 osc~ 40;
+#X obj 221 67 osc~ 50;
+#X obj 287 68 osc~ 60;
+#X obj 131 265 dac~;
+#X obj 111 190 vol~;
+#X obj 151 190 vol~;
+#X floatatom 185 154 5 0 0;
+#X floatatom 116 33 5 0 0;
+#X floatatom 165 33 5 0 0;
+#X floatatom 217 33 5 0 0;
+#X floatatom 266 33 5 0 0;
+#X obj 155 228 hip~ 10;
+#X obj 91 227 hip~ 10;
+#X text 45 -2 qnorm normalizes a quaternion signal to unit norm;
+#X connect 0 0 6 0;
+#X connect 0 1 6 0;
+#X connect 0 2 7 0;
+#X connect 0 3 7 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 3 0 0 2;
+#X connect 4 0 0 3;
+#X connect 6 0 14 0;
+#X connect 7 0 13 0;
+#X connect 8 0 7 1;
+#X connect 8 0 6 1;
+#X connect 9 0 1 0;
+#X connect 10 0 2 0;
+#X connect 11 0 3 0;
+#X connect 12 0 4 0;
+#X connect 13 0 5 1;
+#X connect 14 0 5 0;
diff --git a/doc/ratio.pd b/doc/ratio.pd
new file mode 100644
index 0000000..9750058
--- /dev/null
+++ b/doc/ratio.pd
@@ -0,0 +1,18 @@
+#N canvas 328 388 450 300 10;
+#X obj 75 99 ratio;
+#X obj 103 192 osc~;
+#X floatatom 131 122 5 0 0;
+#X obj 103 150 *;
+#X obj 103 223 dac~;
+#X floatatom 75 51 5 0 0;
+#X floatatom 35 135 5 0 0;
+#X text 189 32 ratio is an octave shifter.;
+#X text 188 46 output is between 1 and 2;
+#X text 189 62 it computes 2^(log2(x)-int(log2(x)));
+#X connect 0 0 3 0;
+#X connect 0 0 6 0;
+#X connect 1 0 4 0;
+#X connect 1 0 4 1;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X connect 5 0 0 0;
diff --git a/doc/reference.txt b/doc/reference.txt
new file mode 100644
index 0000000..6485266
--- /dev/null
+++ b/doc/reference.txt
@@ -0,0 +1,49 @@
+abstractions
+
+64k a beat shuffler using raw 64k/break sample banks
+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
+count modulo counter
+eadh~ exponential attack decay (with hold == duration)
+eadsrh~ exponential attack decay sustain release (..)
+fblock block relative frequency conversion
+inv inverse
+pdynwav~ phasor~ + dynwav~
+scale7 arbitrary 7 tone scale
+vols~ volume for a stereo signal
+vol~ volume for a mono signal
+
+externs
+
+ffpoly finite field polynomial
+fwarp tangent warp frequency
+ratio multiply by 2^k so result is 1<=r<2 (transposer)
+
+
+tilde externs
+
+abs~ absolute value
+bdiag~ block diagonal state space system (spectral processor)
+bfft~ reordered fft
+cheby~ chebychev polynomial waveshaper
+diag~ diagonal state space system (spectral processor)
+dist~ several distortions & waveshaping functions
+dwt~ discrete wavelet transform
+idwt~ inverse
+dynwav~ dynamic wavetable: use a signal block as wavetable
+ead~ exp. attack decay
+eadsr~ exp. attack decay sustain release
+ear~ exp. attack release
+lattice~ lattice filter
+matrix~ multiply a signal block with an arbitrary matrix
+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
+statwav~ a tabread4~ clone with 8 point interpolation
+tabreadmix~ a tabread~ clone with overlap add (for smooth time stretch)
+xfm~ coupled frequency modulation
+biquadseries~ biquad second order sections (i.e. butterworth)
+filterortho~ several biquad filters, orthogonal implementation
diff --git a/doc/tabreadmix~.pd b/doc/tabreadmix~.pd
new file mode 100644
index 0000000..aad25ab
--- /dev/null
+++ b/doc/tabreadmix~.pd
@@ -0,0 +1,45 @@
+#N canvas 466 143 551 422 10;
+#X floatatom 199 254 5 0 0;
+#X obj 48 315 dac~;
+#X floatatom 38 40 5 0 0;
+#X text 135 7 tabreadmix~ an overlap add tabread clone;
+#X obj 288 362 soundfiler;
+#X text 203 236 right inlet: window hop size;
+#X text 249 247 (window size = 2x hop size);
+#X obj 38 77 phasor~;
+#X obj 38 124 *~;
+#X text 136 40 usage analogous to tabread~;
+#X text 136 58 only sample adressing is modulo length;
+#X obj 288 311 openpanel;
+#X obj 288 291 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144
+-1 -1;
+#X msg 171 97 bang;
+#X text 219 97 reset windowing;
+#X msg 171 150 pitch \$1;
+#X floatatom 171 132 5 0 0;
+#X text 245 151 set window hop size corresponding to pitch;
+#X floatatom 172 178 5 0 0;
+#X msg 172 196 chunks \$1;
+#X text 246 196 set hop size to 1/xth of length;
+#X obj 374 304 table sample123;
+#X msg 288 338 read -resize \$1 sample123;
+#X obj 288 386 s length;
+#X obj 54 100 r length;
+#X obj 57 275 tabreadmix~ sample123;
+#X text 136 24 simple (sample rate synchronous) playback;
+#X connect 0 0 25 1;
+#X connect 2 0 7 0;
+#X connect 4 0 23 0;
+#X connect 7 0 8 0;
+#X connect 8 0 25 0;
+#X connect 11 0 22 0;
+#X connect 12 0 11 0;
+#X connect 13 0 25 0;
+#X connect 15 0 25 0;
+#X connect 16 0 15 0;
+#X connect 18 0 19 0;
+#X connect 19 0 25 0;
+#X connect 22 0 4 0;
+#X connect 24 0 8 1;
+#X connect 25 0 1 0;
+#X connect 25 0 1 1;
diff --git a/doc/xfm~.pd b/doc/xfm~.pd
new file mode 100644
index 0000000..6b59329
--- /dev/null
+++ b/doc/xfm~.pd
@@ -0,0 +1,106 @@
+#N canvas 182 174 656 604 10;
+#X text 298 24 xfm~ cross frequency modulation;
+#X msg 180 308 reset;
+#X floatatom 231 255 5 0 0;
+#X floatatom 282 255 5 0 0;
+#X floatatom 332 255 5 0 0;
+#X floatatom 382 255 5 0 0;
+#X obj 287 514 dac~;
+#X obj 231 282 lop~ 1;
+#X obj 282 282 lop~ 1;
+#X obj 332 282 lop~ 1;
+#X obj 382 282 lop~ 1;
+#X floatatom 444 268 5 0 0;
+#X text 228 232 freq1;
+#X text 279 232 freq2;
+#X text 337 233 fb1;
+#X text 381 234 fb2;
+#X text 297 43 freq_osc1 = freq1 + wave_out2*fb1;
+#X text 297 58 freq_osc2 = freq2 + wave_out1*fb2;
+#X obj 275 99 hsl 300 15 1 20000 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 15200 1;
+#X obj 275 121 hsl 300 15 1 20000 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 14400 1;
+#X obj 276 146 hsl 300 15 1 20000 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 18938 1;
+#X obj 276 171 hsl 300 15 1 20000 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 21000 1;
+#X floatatom 487 377 5 0 0;
+#X floatatom 534 375 5 0 0;
+#X obj 462 348 metro;
+#X floatatom 534 335 5 0 0;
+#X obj 463 324 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 534 306 500;
+#X msg 565 305 125;
+#X msg 444 241 0.1;
+#X msg 495 306 1000;
+#X msg 150 223 type 0;
+#X msg 151 263 type 1;
+#X text 42 213 square phasor;
+#X text 45 158 algo type;
+#X text 37 257 circular phasor;
+#X text 7 371 remark: all frequencies are warped;
+#X text 8 388 (f_real = arctan(2pi*f_in)/2pi);
+#X obj 288 485 vols~;
+#X floatatom 352 453 5 0 0;
+#X text 7 416 for frequencies under 1000Hz;
+#X text 8 430 this effect is minimal;
+#X text 9 465 use the fwarp to convert from;
+#X text 9 478 real to warped;
+#X text 9 505 the square phasor type is warped too;
+#X text 9 520 but not in such a nice way as the;
+#X text 9 534 circular phasor;
+#X text 36 229 (chaotic 4DOF);
+#X text 5 272 (quasiperiodic 2DOF);
+#X obj 277 325 xfm~;
+#X obj 462 411 ead~ 0 0;
+#X obj 442 517 dac~;
+#X obj 435 451 *~;
+#X obj 472 451 *~;
+#X obj 443 488 vols~;
+#X floatatom 507 456 5 0 0;
+#X text 2 173 (can be set by creation argument);
+#X connect 1 0 49 0;
+#X connect 2 0 7 0;
+#X connect 3 0 8 0;
+#X connect 4 0 9 0;
+#X connect 5 0 10 0;
+#X connect 7 0 49 0;
+#X connect 8 0 49 1;
+#X connect 9 0 49 2;
+#X connect 10 0 49 3;
+#X connect 11 0 10 1;
+#X connect 11 0 9 1;
+#X connect 11 0 7 1;
+#X connect 11 0 8 1;
+#X connect 18 0 2 0;
+#X connect 19 0 3 0;
+#X connect 20 0 4 0;
+#X connect 21 0 5 0;
+#X connect 22 0 50 1;
+#X connect 23 0 50 2;
+#X connect 24 0 50 0;
+#X connect 25 0 24 1;
+#X connect 25 0 23 0;
+#X connect 26 0 24 0;
+#X connect 27 0 25 0;
+#X connect 28 0 25 0;
+#X connect 29 0 11 0;
+#X connect 30 0 25 0;
+#X connect 31 0 49 0;
+#X connect 32 0 49 0;
+#X connect 38 0 6 0;
+#X connect 38 1 6 1;
+#X connect 39 0 38 2;
+#X connect 49 0 52 0;
+#X connect 49 0 38 0;
+#X connect 49 1 53 0;
+#X connect 49 1 38 1;
+#X connect 50 0 52 1;
+#X connect 50 0 53 1;
+#X connect 52 0 54 0;
+#X connect 53 0 54 1;
+#X connect 54 0 51 0;
+#X connect 54 1 51 1;
+#X connect 55 0 54 2;