aboutsummaryrefslogtreecommitdiff
path: root/externals
diff options
context:
space:
mode:
authorGuenter Geiger <ggeiger@users.sourceforge.net>2003-03-20 19:16:35 +0000
committerGuenter Geiger <ggeiger@users.sourceforge.net>2003-03-20 19:16:35 +0000
commit9056179fcd52793c16112471d1d7fed45722194c (patch)
tree6367029852093ba5f9fd4d2d188c5464af79cd27 /externals
parent79646ab9709aad75a2cf8d2a7ee4843e178b6382 (diff)
added creb library
svn path=/trunk/; revision=487
Diffstat (limited to 'externals')
-rw-r--r--externals/build/doc/bdiag~.pd97
-rw-r--r--externals/build/doc/bfft~.pd18
-rw-r--r--externals/build/doc/biquadseries~.pd22
-rw-r--r--externals/build/doc/bwin~.pd53
-rw-r--r--externals/build/doc/cheby~.pd43
-rw-r--r--externals/build/doc/dist~.pd17
-rw-r--r--externals/build/doc/dwt~.pd72
-rw-r--r--externals/build/doc/dynwav~.pd25
-rw-r--r--externals/build/doc/eadsr~.pd41
-rw-r--r--externals/build/doc/ead~.pd29
-rw-r--r--externals/build/doc/ear~.pd35
-rw-r--r--externals/build/doc/fdn~.pd61
-rw-r--r--externals/build/doc/ffpoly.pd35
-rw-r--r--externals/build/doc/filterortho~.pd58
-rw-r--r--externals/build/doc/fwarp.pd37
-rw-r--r--externals/build/doc/junction~.pd56
-rw-r--r--externals/build/doc/lattice~.pd63
-rw-r--r--externals/build/doc/matrix~.pd10
-rw-r--r--externals/build/doc/permut~.pd19
-rw-r--r--externals/build/doc/qmult~.pd63
-rw-r--r--externals/build/doc/qnorm~.pd35
-rw-r--r--externals/build/doc/ratio.pd18
-rw-r--r--externals/build/doc/tabreadmix~.pd45
-rw-r--r--externals/build/doc/xfm~.pd106
24 files changed, 1058 insertions, 0 deletions
diff --git a/externals/build/doc/bdiag~.pd b/externals/build/doc/bdiag~.pd
new file mode 100644
index 00000000..f5e835f9
--- /dev/null
+++ b/externals/build/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/externals/build/doc/bfft~.pd b/externals/build/doc/bfft~.pd
new file mode 100644
index 00000000..62507f9d
--- /dev/null
+++ b/externals/build/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/externals/build/doc/biquadseries~.pd b/externals/build/doc/biquadseries~.pd
new file mode 100644
index 00000000..89d7ce0a
--- /dev/null
+++ b/externals/build/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/externals/build/doc/bwin~.pd b/externals/build/doc/bwin~.pd
new file mode 100644
index 00000000..7f630d8d
--- /dev/null
+++ b/externals/build/doc/bwin~.pd
@@ -0,0 +1,53 @@
+#N canvas 62 558 450 300 10;
+#N canvas 409 279 692 500 windowing 1;
+#X obj 62 441 outlet~;
+#X obj 62 65 inlet~;
+#X obj 62 142 bfft~;
+#X obj 62 365 ibfft~;
+#X floatatom 85 173 5 0 0;
+#X obj 62 199 vol~;
+#X text 60 6 bwin~ multiplies a signal block with a window;
+#X text 211 310 after maximizing the spectrum is multiplied by a pink
+noise envelope;
+#X obj 62 250 dist~ 1;
+#X text 211 105 apply analysis window;
+#X text 211 172 set drive;
+#X text 212 251 soft clip spectral data;
+#X text 212 133 transform block to freq domain;
+#X text 210 360 transform block back to time domain;
+#X text 212 401 undo analysis window + apply synthesis window;
+#X text 212 39 this example is a poor man's spectral maximizer using
+bwin~ bfft~ bifft~ and dist~;
+#X obj 62 225 bwin~ bfft_blue;
+#X obj 62 327 bwin~ bfft_pink;
+#X obj 62 401 bwin~ hann/hamming;
+#X obj 62 106 bwin~ hamming;
+#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 connect 1 0 19 0;
+#X connect 2 0 5 0;
+#X connect 3 0 18 0;
+#X connect 4 0 5 1;
+#X connect 5 0 16 0;
+#X connect 8 0 17 0;
+#X connect 16 0 8 0;
+#X connect 17 0 3 0;
+#X connect 18 0 0 0;
+#X connect 19 0 2 0;
+#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 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 connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 0 1 1;
+#X connect 3 0 2 1;
+#X connect 4 0 0 0;
diff --git a/externals/build/doc/cheby~.pd b/externals/build/doc/cheby~.pd
new file mode 100644
index 00000000..1cf1f94d
--- /dev/null
+++ b/externals/build/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 chebyshev 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/externals/build/doc/dist~.pd b/externals/build/doc/dist~.pd
new file mode 100644
index 00000000..3533471a
--- /dev/null
+++ b/externals/build/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/externals/build/doc/dwt~.pd b/externals/build/doc/dwt~.pd
new file mode 100644
index 00000000..52986e1c
--- /dev/null
+++ b/externals/build/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/externals/build/doc/dynwav~.pd b/externals/build/doc/dynwav~.pd
new file mode 100644
index 00000000..59f86bdd
--- /dev/null
+++ b/externals/build/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/externals/build/doc/eadsr~.pd b/externals/build/doc/eadsr~.pd
new file mode 100644
index 00000000..220ea546
--- /dev/null
+++ b/externals/build/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/externals/build/doc/ead~.pd b/externals/build/doc/ead~.pd
new file mode 100644
index 00000000..9d9bc5fa
--- /dev/null
+++ b/externals/build/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/externals/build/doc/ear~.pd b/externals/build/doc/ear~.pd
new file mode 100644
index 00000000..8527a122
--- /dev/null
+++ b/externals/build/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/externals/build/doc/fdn~.pd b/externals/build/doc/fdn~.pd
new file mode 100644
index 00000000..3903d639
--- /dev/null
+++ b/externals/build/doc/fdn~.pd
@@ -0,0 +1,61 @@
+#N canvas 310 312 826 610 10;
+#X obj 146 529 vols~;
+#X floatatom 203 509 5 0 0;
+#X obj 143 562 dac~;
+#X obj 128 131 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 10 415 print;
+#X floatatom 216 431 5 0 0;
+#X floatatom 267 432 5 0 0;
+#X obj 54 144 noise~;
+#X obj 94 190 *~;
+#X floatatom 203 111 5 0 0;
+#X obj 146 157 ead~;
+#X msg 360 119 lines 501 752 5003 7504 105 206 307 408;
+#X floatatom 152 110 5 0 0;
+#X msg 361 248 linear 32 100 105;
+#X msg 360 271 linear 32 1000 1005;
+#X msg 12 465 reset;
+#X obj 142 463 fdn~ 64 40000;
+#X msg 358 327 exponential 32 10 5000;
+#X msg 360 292 linear 32 100 2015;
+#X msg 361 224 linear 8 75 100;
+#X msg 361 201 linear 32 50 2175;
+#X msg 360 374 exponential 8 50 175;
+#X text 186 20 fdn~ a feedback delay network;
+#X text 316 468 creation arguments: <max nb delaylines> <total delay
+memory in ms>;
+#X text 3 396 print delay lengths;
+#X text 2 448 reset state;
+#X text 316 512 nb delay lines is always a multiple of 4;
+#X text 358 96 specify delay line lengths manually;
+#X text 359 152 specify a linear/exponential delay length range;
+#X text 361 170 <type> <nb lines> <min length> <max length>;
+#X text 359 430 inlets: low/high frequency reverb time (60dB time)
+;
+#X msg 358 351 exponential 64 1000 10;
+#X connect 0 0 2 0;
+#X connect 0 1 2 1;
+#X connect 1 0 0 2;
+#X connect 3 0 10 0;
+#X connect 4 0 16 0;
+#X connect 5 0 16 1;
+#X connect 6 0 16 2;
+#X connect 7 0 8 0;
+#X connect 8 0 16 0;
+#X connect 9 0 10 2;
+#X connect 10 0 8 1;
+#X connect 10 0 16 0;
+#X connect 11 0 16 0;
+#X connect 12 0 10 1;
+#X connect 13 0 16 0;
+#X connect 14 0 16 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 16 1 0 1;
+#X connect 17 0 16 0;
+#X connect 18 0 16 0;
+#X connect 19 0 16 0;
+#X connect 20 0 16 0;
+#X connect 21 0 16 0;
+#X connect 31 0 16 0;
diff --git a/externals/build/doc/ffpoly.pd b/externals/build/doc/ffpoly.pd
new file mode 100644
index 00000000..7ec8886a
--- /dev/null
+++ b/externals/build/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/externals/build/doc/filterortho~.pd b/externals/build/doc/filterortho~.pd
new file mode 100644
index 00000000..e120101d
--- /dev/null
+++ b/externals/build/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/externals/build/doc/fwarp.pd b/externals/build/doc/fwarp.pd
new file mode 100644
index 00000000..d43a5a3a
--- /dev/null
+++ b/externals/build/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/externals/build/doc/junction~.pd b/externals/build/doc/junction~.pd
new file mode 100644
index 00000000..591e4bce
--- /dev/null
+++ b/externals/build/doc/junction~.pd
@@ -0,0 +1,56 @@
+#N canvas 420 323 450 300 10;
+#X obj 181 138 junction~ 4;
+#X obj 253 167 delwrite~ del1 1000;
+#X obj 123 51 vd~ del1;
+#X obj 183 51 vd~ del2;
+#X obj 244 51 vd~ del3;
+#X obj 304 51 vd~ del4;
+#X obj 123 30 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10
+-262144 -1 -1 115 256;
+#X obj 183 30 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10
+-262144 -1 -1 87 256;
+#X obj 245 31 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10
+-262144 -1 -1 270 256;
+#X obj 305 31 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10
+-262144 -1 -1 144 256;
+#X obj 63 262 dac~;
+#X obj 13 121 ead~;
+#X obj 30 97 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10
+-262144 -1 -1 37 256;
+#X obj 90 97 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10
+-262144 -1 -1 77 256;
+#X obj 4 97 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X obj 229 189 delwrite~ del2 1000;
+#X obj 205 210 delwrite~ del3 1000;
+#X obj 181 232 delwrite~ del4 1000;
+#X msg 313 111 random \$1;
+#X obj 314 85 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10
+-262144 -1 -1 74 256;
+#X text 61 5 junction~: a circular lossless signal junction;
+#X obj 58 238 vols~;
+#X obj 105 221 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
+10 -262144 -1 -1 77 256;
+#X connect 0 0 17 0;
+#X connect 0 0 21 0;
+#X connect 0 1 16 0;
+#X connect 0 1 21 1;
+#X connect 0 2 15 0;
+#X connect 0 3 1 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 6 0 2 0;
+#X connect 7 0 3 0;
+#X connect 8 0 4 0;
+#X connect 9 0 5 0;
+#X connect 11 0 0 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 2;
+#X connect 14 0 11 0;
+#X connect 18 0 0 0;
+#X connect 19 0 18 0;
+#X connect 21 0 10 0;
+#X connect 21 1 10 1;
+#X connect 22 0 21 2;
diff --git a/externals/build/doc/lattice~.pd b/externals/build/doc/lattice~.pd
new file mode 100644
index 00000000..45454708
--- /dev/null
+++ b/externals/build/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/externals/build/doc/matrix~.pd b/externals/build/doc/matrix~.pd
new file mode 100644
index 00000000..5a6e9d56
--- /dev/null
+++ b/externals/build/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/externals/build/doc/permut~.pd b/externals/build/doc/permut~.pd
new file mode 100644
index 00000000..c8aa822c
--- /dev/null
+++ b/externals/build/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/externals/build/doc/qmult~.pd b/externals/build/doc/qmult~.pd
new file mode 100644
index 00000000..674df3ed
--- /dev/null
+++ b/externals/build/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/externals/build/doc/qnorm~.pd b/externals/build/doc/qnorm~.pd
new file mode 100644
index 00000000..3f6a8d04
--- /dev/null
+++ b/externals/build/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/externals/build/doc/ratio.pd b/externals/build/doc/ratio.pd
new file mode 100644
index 00000000..97500582
--- /dev/null
+++ b/externals/build/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/externals/build/doc/tabreadmix~.pd b/externals/build/doc/tabreadmix~.pd
new file mode 100644
index 00000000..aad25abd
--- /dev/null
+++ b/externals/build/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/externals/build/doc/xfm~.pd b/externals/build/doc/xfm~.pd
new file mode 100644
index 00000000..6b59329e
--- /dev/null
+++ b/externals/build/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;