aboutsummaryrefslogtreecommitdiff
path: root/externals/build
diff options
context:
space:
mode:
authorGuenter Geiger <ggeiger@users.sourceforge.net>2003-07-08 07:33:49 +0000
committerGuenter Geiger <ggeiger@users.sourceforge.net>2003-07-08 07:33:49 +0000
commit6bff2f46afd0e8a5efc018e1e15e662e7577c972 (patch)
treeb0bda77e64dcde8379bc38117ab448c85d4debcb /externals/build
parent8b651c5cf9e0f1024d7fb65ea0b949ad2cde76cf (diff)
renamed help-files
svn path=/trunk/; revision=749
Diffstat (limited to 'externals/build')
-rw-r--r--externals/build/doc/help-ann_som.pd114
-rw-r--r--externals/build/doc/help-arraysize.pd12
-rw-r--r--externals/build/doc/help-atan2~.pd4
-rw-r--r--externals/build/doc/help-bandpass.pd38
-rw-r--r--externals/build/doc/help-bdiag~.pd97
-rw-r--r--externals/build/doc/help-bfft~.pd18
-rw-r--r--externals/build/doc/help-bwin~.pd53
-rw-r--r--externals/build/doc/help-cheby~.pd43
-rw-r--r--externals/build/doc/help-dist~.pd17
-rw-r--r--externals/build/doc/help-dwt~.pd72
-rw-r--r--externals/build/doc/help-dynwav~.pd25
-rw-r--r--externals/build/doc/help-eadsr~.pd41
-rw-r--r--externals/build/doc/help-ead~.pd29
-rw-r--r--externals/build/doc/help-ear~.pd35
-rw-r--r--externals/build/doc/help-envgen.pd70
-rw-r--r--externals/build/doc/help-fdn~.pd61
-rw-r--r--externals/build/doc/help-ffpoly.pd35
-rw-r--r--externals/build/doc/help-fwarp.pd37
-rw-r--r--externals/build/doc/help-getenv.pd23
-rw-r--r--externals/build/doc/help-henon.pd24
-rw-r--r--externals/build/doc/help-highpass.pd35
-rw-r--r--externals/build/doc/help-highshelf.pd39
-rw-r--r--externals/build/doc/help-ifeel.pd34
-rw-r--r--externals/build/doc/help-ikeda.pd26
-rw-r--r--externals/build/doc/help-image.pd5
-rw-r--r--externals/build/doc/help-inv.pd26
-rw-r--r--externals/build/doc/help-junction~.pd56
-rw-r--r--externals/build/doc/help-lattice~.pd63
-rw-r--r--externals/build/doc/help-linuxevent.pd14
-rw-r--r--externals/build/doc/help-linuxjoystick.pd98
-rw-r--r--externals/build/doc/help-linuxmouse.pd16
-rw-r--r--externals/build/doc/help-ln~.pd15
-rw-r--r--externals/build/doc/help-lorenz.pd25
-rw-r--r--externals/build/doc/help-lowpass.pd35
-rw-r--r--externals/build/doc/help-lowshelf.pd39
-rw-r--r--externals/build/doc/help-matrix~.pd10
-rw-r--r--externals/build/doc/help-moog~.pd39
-rw-r--r--externals/build/doc/help-notch.pd35
-rw-r--r--externals/build/doc/help-pan_gogins~.pd95
-rw-r--r--externals/build/doc/help-pansig~.pd104
-rw-r--r--externals/build/doc/help-pan~.pd94
-rw-r--r--externals/build/doc/help-permut~.pd19
-rw-r--r--externals/build/doc/help-pipewrite~.pd216
-rw-r--r--externals/build/doc/help-plugin~.pd71
-rw-r--r--externals/build/doc/help-qmult~.pd63
-rw-r--r--externals/build/doc/help-qnorm~.pd35
-rw-r--r--externals/build/doc/help-range.pd31
-rw-r--r--externals/build/doc/help-ratio.pd18
-rw-r--r--externals/build/doc/help-rec2pol~.pd44
-rw-r--r--externals/build/doc/help-rhythm_ioi_histogram.pd7
-rw-r--r--externals/build/doc/help-rhythm_quantum.pd6
-rw-r--r--externals/build/doc/help-rhythm_slave_metro.pd2
-rw-r--r--externals/build/doc/help-rossler.pd25
-rw-r--r--externals/build/doc/help-rtin~.pd32
-rw-r--r--externals/build/doc/help-serialize.pd8
-rw-r--r--externals/build/doc/help-sfread~.pd44
-rw-r--r--externals/build/doc/help-sfwrite~.pd45
-rw-r--r--externals/build/doc/help-shell.pd39
-rw-r--r--externals/build/doc/help-shuffle.pd28
-rw-r--r--externals/build/doc/help-slider.pd30
-rw-r--r--externals/build/doc/help-sprinkler.pd48
-rw-r--r--externals/build/doc/help-state.pd44
-rw-r--r--externals/build/doc/help-streamin~.pd41
-rw-r--r--externals/build/doc/help-streamout~.pd49
-rw-r--r--externals/build/doc/help-stripdir.pd7
-rw-r--r--externals/build/doc/help-susloop~.pd102
-rw-r--r--externals/build/doc/help-system.pd8
-rw-r--r--externals/build/doc/help-tabreadmix~.pd45
-rw-r--r--externals/build/doc/help-ticker.pd10
-rw-r--r--externals/build/doc/help-unwonk.pd36
-rw-r--r--externals/build/doc/help-vbap.pd52
-rw-r--r--externals/build/doc/help-xfm~.pd106
-rw-r--r--externals/build/doc/help_rhythm.pd3
-rw-r--r--externals/build/doc/polygate~.pd251
74 files changed, 3316 insertions, 0 deletions
diff --git a/externals/build/doc/help-ann_som.pd b/externals/build/doc/help-ann_som.pd
new file mode 100644
index 00000000..9f039792
--- /dev/null
+++ b/externals/build/doc/help-ann_som.pd
@@ -0,0 +1,114 @@
+#N canvas 50 -127 640 687 10;
+#X msg 131 495 print;
+#X msg 132 528 new 5 8 8;
+#X msg 127 99 init;
+#X msg 128 274 train;
+#X msg 129 296 test;
+#X msg 128 387 write;
+#X obj 70 559 ann_som 4 9 10;
+#X msg 70 49 1 0 0 1;
+#X msg 70 68 0 1 0 1;
+#X msg 70 87 2 1 0 0;
+#X msg 128 118 init 0.5;
+#X msg 128 138 init 1 0.5 0 0.5;
+#X text 234 101 init all weights with "0";
+#X text 235 120 init all weights with "0.5";
+#X text 235 137 init weights for each sensor;
+#X msg 128 163 learn 1;
+#X msg 128 197 learn 1 0.9 0.1;
+#X text 226 163 set learning rate to 1;
+#X msg 128 180 learn 0.5 0.999;
+#X text 227 179 set learning rate to 0.5 and factor to 0.999;
+#X text 227 197 set learning rate to 1 \, factor to 0.9 and offset to 0.1;
+#X msg 128 214 neighbour 1;
+#X msg 128 231 neighbour 0.5 0.999;
+#X msg 128 248 neighbour 1 0.9 0.1;
+#X text 248 215 set neighbourhood to 1;
+#X text 249 231 set neighbourhoodto 0.5 and factor to 0.999;
+#X text 249 249 set neighbourhood to 1 \, factor to 0.9 and offset to 0.1;
+#X text 180 269 set som to "train" mode (learn from sensor-input and output winning neuron);
+#X text 179 291 set som to "test" mode (output winning neuron for sensor-input \, but do not learn !);
+#X msg 129 328 rule INSTAR;
+#X msg 129 345 rule OUTSTAR;
+#X msg 129 362 rule KOHONEN;
+#X text 218 327 learn with IN-STAR rule;
+#X text 219 345 learn with OUT-STAR rule;
+#X text 219 362 learn with KOHONENrule;
+#X msg 128 405 write mysom.som;
+#X msg 129 429 read;
+#X msg 129 447 read mysom.som;
+#X text 156 68 present various data to the SOM;
+#X text 203 495 for debugging;
+#X text 207 530 create a new SOM with 8x8 neurons \, each having 5 sensors;
+#X text 204 561 create a new SOM with 9x10 neurons \, each having 4 sensors;
+#X floatatom 70 614 4 0 0;
+#X text 113 618 winning neuron;
+#N canvas 13 0 889 630 SOMs 0;
+#X text 76 27 SOM :: Self-Organized Maps;
+#X text 55 53 SOMs are "Artificial Neural Networks" \, that are trying to learn something about the data presented to them without a supervisor/teacher.;
+#X text 59 118 in short:;
+#X text 120 119 the neuron \, whose weight-configuration matches the presented data best is the winner (its number (counting from the lower-left corner) is sent to the output);
+#X text 121 163 to match the data better the next time it is presented \, the weights of the winning neuron are adjusted.;
+#X text 121 188 the weights of the neurons neighbouring the winner are adjusted to match the data too \, but not so strong as the winner's.;
+#X text 121 276 lr(n+1)=lr(n)*factor;
+#X text 275 277 learning_rate=lr+offset;
+#X text 121 289 nb(n+1)=nb(n)*factor;
+#X text 275 290 neighbourhood=nb+offset;
+#X text 121 230 both neighbourhood and learning-rate (==amount of how much the weights of the winner (and \, proportional \, the weights of the neighbours) are adjusted) are decreasing recursively with time.;
+#X text 119 319 thus you will sooner or (most of the time) later get a "brain map" \, where similar inputs will activate neurons in specifique regions (like there are regions for seeing and regions for hearing in our brains);
+#X text 97 381 there are various rules \, how to re-adjust the weights of the neurons : in-star \, out-star and kohonen (maybe there are others \, but these i found in literature);
+#X obj 607 220 +;
+#X text 640 182 ...;
+#X obj 579 185 * \$1;
+#X obj 607 185 * \$2;
+#X obj 670 185 * \$0;
+#X obj 579 128 unpack 0 0 0 0 0;
+#X text 602 111 n sensors;
+#X text 705 186 weights 1 to n;
+#X obj 579 90 inlet;
+#X obj 607 288 outlet;
+#X text 594 62 a neuron;
+#X text 566 307 the neuron with the highest weighted sum;
+#X text 567 318 matches best and is therefore the winner;
+#X text 53 452 notes:;
+#X text 101 453 each neuron of the SOM has n sensors. you have to present a list of n floats to the SOM to make it work;
+#X text 102 482 you should init the weights for each sensor with the expected mean of the sensor values before you start training to get best and fastest results;
+#X text 55 87 they were first proposed by the Finnish scientist T.Kohonen in the 80ies (i think).;
+#X text 98 543 if you have no clue \, what's this all about \, maybe you do not need SOMs (which i doubt) or you should have a look at;
+#X text 118 577 http://www.eas.asu.edu/~eee511;
+#X text 118 591 http://www.cis.hut.fi/projects/ica;
+#X connect 13 0 22 0;
+#X connect 15 0 13 0;
+#X connect 16 0 13 0;
+#X connect 17 0 13 0;
+#X connect 18 0 15 0;
+#X connect 18 1 16 0;
+#X connect 18 4 17 0;
+#X connect 21 0 18 0;
+#X restore 535 44 pd SOMs;
+#X text 81 13 ann_som :: train and test Self-Organized Maps;
+#X obj 73 660 ann_som test.som;
+#X text 211 664 load a SOM-file;
+#X connect 0 0 6 0;
+#X connect 1 0 6 0;
+#X connect 2 0 6 0;
+#X connect 3 0 6 0;
+#X connect 4 0 6 0;
+#X connect 5 0 6 0;
+#X connect 6 0 42 0;
+#X connect 7 0 6 0;
+#X connect 8 0 6 0;
+#X connect 9 0 6 0;
+#X connect 11 0 6 0;
+#X connect 15 0 6 0;
+#X connect 16 0 6 0;
+#X connect 18 0 6 0;
+#X connect 21 0 6 0;
+#X connect 22 0 6 0;
+#X connect 23 0 6 0;
+#X connect 29 0 6 0;
+#X connect 30 0 6 0;
+#X connect 31 0 6 0;
+#X connect 35 0 6 0;
+#X connect 36 0 6 0;
+#X connect 37 0 6 0;
diff --git a/externals/build/doc/help-arraysize.pd b/externals/build/doc/help-arraysize.pd
new file mode 100644
index 00000000..68e11d00
--- /dev/null
+++ b/externals/build/doc/help-arraysize.pd
@@ -0,0 +1,12 @@
+#N canvas 0 0 450 300 10;
+#N canvas 0 0 450 300 graph1 0;
+#X array test 100 float 0;
+#X coords 0 1 99 -1 200 140 1;
+#X restore 197 38 graph;
+#X obj 22 49 arraysize test;
+#X floatatom 22 73 5 0 0 0 - - -;
+#X msg 22 26 bang;
+#X text 24 205 arraysize returns the size of an array when banged.
+;
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
diff --git a/externals/build/doc/help-atan2~.pd b/externals/build/doc/help-atan2~.pd
new file mode 100644
index 00000000..e7ff494e
--- /dev/null
+++ b/externals/build/doc/help-atan2~.pd
@@ -0,0 +1,4 @@
+#N canvas 197 203 500 184 10;
+#X obj 33 88 atan2~;
+#X text 30 121 (C) Guenter Geiger;
+#X text 30 18 The atan2 function is used to get the phase from a imaginary value of the fft.;
diff --git a/externals/build/doc/help-bandpass.pd b/externals/build/doc/help-bandpass.pd
new file mode 100644
index 00000000..73cace4b
--- /dev/null
+++ b/externals/build/doc/help-bandpass.pd
@@ -0,0 +1,38 @@
+#N canvas 295 68 622 469 10;
+#X obj 77 199 print;
+#X floatatom 77 114 0 0 0;
+#X floatatom 139 114 0 0 0;
+#X msg 360 109 \; paint 0;
+#X obj 164 196 filtgain;
+#X msg 91 138 bang;
+#X text 139 93 bandwidth (0 - 100);
+#X text 6 334 See also:;
+#X obj 72 335 bandpass;
+#X obj 139 336 notch;
+#X obj 195 337 lowpass;
+#X obj 247 336 highpass;
+#X obj 247 358 equalizer;
+#X obj 72 357 highshelf;
+#X obj 139 357 lowshelf;
+#X obj 195 357 hlshelf;
+#X text 75 226 These filters are all controlled by a bandwidth which
+is expressed in octaves. A bandwidth of 100 is equivalent to one octave.
+;
+#X text 358 25 click first;
+#X text 186 159 click on filtgain to view frequency plot;
+#X text 76 12 Bandpass coefficients for biquad~;
+#X text 70 26 ===================================;
+#X text 6 393 (C) Guenter Geiger 2000;
+#X text 75 92 frequency;
+#X text 75 268 Attention \, only the left inlet triggers new coefficients
+for biquad~;
+#X obj 77 160 bandpass 4000 33;
+#X obj 33 114 r doit;
+#X msg 360 45 \; pd dsp 1 \; paint 1 \; doit bang \;;
+#X connect 1 0 24 0;
+#X connect 2 0 24 1;
+#X connect 2 0 5 0;
+#X connect 5 0 24 0;
+#X connect 24 0 0 0;
+#X connect 24 0 4 0;
+#X connect 25 0 5 0;
diff --git a/externals/build/doc/help-bdiag~.pd b/externals/build/doc/help-bdiag~.pd
new file mode 100644
index 00000000..f5e835f9
--- /dev/null
+++ b/externals/build/doc/help-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/help-bfft~.pd b/externals/build/doc/help-bfft~.pd
new file mode 100644
index 00000000..62507f9d
--- /dev/null
+++ b/externals/build/doc/help-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/help-bwin~.pd b/externals/build/doc/help-bwin~.pd
new file mode 100644
index 00000000..7f630d8d
--- /dev/null
+++ b/externals/build/doc/help-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/help-cheby~.pd b/externals/build/doc/help-cheby~.pd
new file mode 100644
index 00000000..1cf1f94d
--- /dev/null
+++ b/externals/build/doc/help-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/help-dist~.pd b/externals/build/doc/help-dist~.pd
new file mode 100644
index 00000000..3533471a
--- /dev/null
+++ b/externals/build/doc/help-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/help-dwt~.pd b/externals/build/doc/help-dwt~.pd
new file mode 100644
index 00000000..52986e1c
--- /dev/null
+++ b/externals/build/doc/help-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/help-dynwav~.pd b/externals/build/doc/help-dynwav~.pd
new file mode 100644
index 00000000..59f86bdd
--- /dev/null
+++ b/externals/build/doc/help-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/help-eadsr~.pd b/externals/build/doc/help-eadsr~.pd
new file mode 100644
index 00000000..220ea546
--- /dev/null
+++ b/externals/build/doc/help-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/help-ead~.pd b/externals/build/doc/help-ead~.pd
new file mode 100644
index 00000000..9d9bc5fa
--- /dev/null
+++ b/externals/build/doc/help-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/help-ear~.pd b/externals/build/doc/help-ear~.pd
new file mode 100644
index 00000000..8527a122
--- /dev/null
+++ b/externals/build/doc/help-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/help-envgen.pd b/externals/build/doc/help-envgen.pd
new file mode 100644
index 00000000..8c537f98
--- /dev/null
+++ b/externals/build/doc/help-envgen.pd
@@ -0,0 +1,70 @@
+#N canvas 289 62 893 565 12;
+#X obj 21 239 osc~;
+#X obj 21 214 sig~ 220;
+#X obj 21 269 *~;
+#X floatatom 18 178 0 0 0;
+#X graph graph2 0 -1 44100 1 440 522 840 222;
+#X array array1 44100 float 0;
+#X pop;
+#X obj 21 299 tabwrite~ array1;
+#X msg 695 174 \; array1 resize 44100;
+#X msg 213 123 0 200 1 200 0;
+#X msg 213 67 -1 500 0.7 200;
+#X text 102 4 envgen - A (not so) simple envelope generator;
+#X obj 178 193 envgen 247 144;
+#X msg 213 45 1 100 0.5 100 0.7 100 0.1 100 1;
+#X msg 213 88 0 50 1 10 0 10 1 10 0 10 1 10 0 10 1 10 0 10 1 10 0 10
+1 10 0 10 1 10 0 10 1 10 0 10 1 10 0 10 1 10 0 10 1;
+#X msg 346 156 duration 1000;
+#X msg 448 156 duration 300;
+#X msg 213 155 freeze 1;
+#X msg 279 156 freeze 0;
+#X obj 97 63 metro 2000;
+#X obj 149 345 line~;
+#X obj 97 32 ticker 15 15;
+#X floatatom 36 83 0 0 0;
+#X floatatom 207 346 0 0 0;
+#X text 13 59 indexing;
+#X obj 691 107 state env;
+#X msg 701 45 1;
+#X msg 634 44 save;
+#X msg 736 45 2;
+#X text 21 357 Messages:;
+#X text 20 375 freeze: addition of new breakpoints on/off;
+#X text 21 391 duration: duration in ms;
+#X text 21 407 bang: output pairs suitable for line~;
+#X text 18 446 <float>: output value at time (in ms);
+#X text 20 465 <list>: set breakpoints in;
+#X text 74 481 <val> <dur> <val> <dur> ... <val> format;
+#X msg 448 187 dump;
+#X text 20 426 dump: output a list suitable to input in other envgen
+;
+#X text 19 498 hitting backspace deletes the selected point;
+#X obj 338 346 print dump;
+#X text 19 514 NEW ! clicking in the lower right corner resizes (in
+run mode ????);
+#X text 18 546 (C) 1999 - 2002 Guenter Geiger;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 1 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 10 0 21 0;
+#X connect 10 0 18 0;
+#X connect 10 1 37 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 13 0 10 0;
+#X connect 14 0 10 0;
+#X connect 15 0 10 0;
+#X connect 16 0 10 0;
+#X connect 17 0 10 0;
+#X connect 17 0 5 0;
+#X connect 18 0 2 1;
+#X connect 19 0 17 0;
+#X connect 20 0 10 0;
+#X connect 24 0 23 0;
+#X connect 25 0 23 0;
+#X connect 26 0 23 0;
+#X connect 34 0 10 0;
diff --git a/externals/build/doc/help-fdn~.pd b/externals/build/doc/help-fdn~.pd
new file mode 100644
index 00000000..3903d639
--- /dev/null
+++ b/externals/build/doc/help-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/help-ffpoly.pd b/externals/build/doc/help-ffpoly.pd
new file mode 100644
index 00000000..7ec8886a
--- /dev/null
+++ b/externals/build/doc/help-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/help-fwarp.pd b/externals/build/doc/help-fwarp.pd
new file mode 100644
index 00000000..d43a5a3a
--- /dev/null
+++ b/externals/build/doc/help-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/help-getenv.pd b/externals/build/doc/help-getenv.pd
new file mode 100644
index 00000000..58ac79d2
--- /dev/null
+++ b/externals/build/doc/help-getenv.pd
@@ -0,0 +1,23 @@
+#N canvas 597 95 404 421 10;
+#X floatatom 445 83 4 0 0;
+#X obj 441 107 t b f;
+#X obj 593 177 strconcat .wav;
+#X obj 517 236 strconcat;
+#X symbolatom 360 301 60 0 0;
+#X msg 363 108 set HOME;
+#X msg 300 87 set SOUNDSTORE;
+#X obj 410 190 makefilename %s/sound;
+#X floatatom 608 216 4 0 0;
+#X msg 305 53 set SUMDAYPLAY;
+#X obj 401 149 getenv SUMDAYPLAY;
+#X connect 0 0 1 0;
+#X connect 1 0 10 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 1;
+#X connect 3 0 4 0;
+#X connect 5 0 10 0;
+#X connect 6 0 10 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 2;
+#X connect 9 0 10 0;
+#X connect 10 0 7 0;
diff --git a/externals/build/doc/help-henon.pd b/externals/build/doc/help-henon.pd
new file mode 100644
index 00000000..99c9db89
--- /dev/null
+++ b/externals/build/doc/help-henon.pd
@@ -0,0 +1,24 @@
+#N canvas 450 295 368 335 10;
+#X obj 29 114 metro 50;
+#X obj 29 90 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 1 1
+;
+#X floatatom 80 89 5 0 0;
+#X floatatom 74 285 5 0 0;
+#X text 5 66 Calculate;
+#X text 113 161 Reset To Initial Conditions;
+#X text 115 212 Modify Parameters;
+#X floatatom 29 285 5 0 0;
+#X text 23 264 Output;
+#X text 4 21 Chaos PD Externals - Copyright Ben Bogart 2002;
+#X msg 117 195 param 1.4 0.3;
+#X obj 29 177 henon;
+#X text 5 6 Henon's Attractor;
+#X text 3 37 (This attractor is not continuous);
+#X msg 114 143 reset 1 1;
+#X connect 0 0 11 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 10 0 11 0;
+#X connect 11 0 7 0;
+#X connect 11 1 3 0;
+#X connect 14 0 11 0;
diff --git a/externals/build/doc/help-highpass.pd b/externals/build/doc/help-highpass.pd
new file mode 100644
index 00000000..e953888f
--- /dev/null
+++ b/externals/build/doc/help-highpass.pd
@@ -0,0 +1,35 @@
+#N canvas 365 183 620 463 10;
+#X obj 77 182 print;
+#X floatatom 77 114;
+#X floatatom 168 115;
+#X msg 360 109 \; paint 0;
+#X obj 159 175 filtgain;
+#X msg 91 138 bang;
+#X text 168 94 bandwidth (0 - 100);
+#X text 6 334 See also:;
+#X obj 72 335 bandpass;
+#X obj 139 336 notch;
+#X obj 195 337 lowpass;
+#X obj 247 336 highpass;
+#X obj 247 358 equalizer;
+#X obj 72 357 highshelf;
+#X obj 139 357 lowshelf;
+#X obj 195 357 hlshelf;
+#X text 75 226 These filters are all controlled by a bandwidth which is expressed in octaves. A bandwidth of 100 is equivalent to one octave.;
+#X text 358 25 click first;
+#X text 182 148 click on filtgain to view frequency plot;
+#X text 70 26 ===================================;
+#X text 6 393 (C) Guenter Geiger 2000;
+#X text 75 92 frequency;
+#X text 75 268 Attention \, only the left inlet triggers new coefficients for biquad~;
+#X text 76 12 Highpass coefficients for biquad~;
+#X obj 77 160 highpass 4000 33;
+#X obj 34 113 r doit;
+#X msg 360 45 \; pd dsp 1 \; paint 1 \; doit bang \;;
+#X connect 1 0 24 0;
+#X connect 2 0 5 0;
+#X connect 2 0 24 1;
+#X connect 5 0 24 0;
+#X connect 24 0 0 0;
+#X connect 24 0 4 0;
+#X connect 25 0 24 0;
diff --git a/externals/build/doc/help-highshelf.pd b/externals/build/doc/help-highshelf.pd
new file mode 100644
index 00000000..be2a5775
--- /dev/null
+++ b/externals/build/doc/help-highshelf.pd
@@ -0,0 +1,39 @@
+#N canvas 310 193 620 455 10;
+#X obj 77 182 print;
+#X floatatom 77 114;
+#X floatatom 186 112;
+#X msg 360 117 \; paint 0;
+#X obj 159 175 filtgain;
+#X msg 91 138 bang;
+#X text 6 334 See also:;
+#X obj 72 335 bandpass;
+#X obj 139 336 notch;
+#X obj 195 337 lowpass;
+#X obj 247 336 highpass;
+#X obj 247 358 equalizer;
+#X obj 72 357 highshelf;
+#X obj 139 357 lowshelf;
+#X obj 195 357 hlshelf;
+#X text 75 226 These filters are all controlled by a bandwidth which is expressed in octaves. A bandwidth of 100 is equivalent to one octave.;
+#X text 358 25 click first;
+#X text 208 159 click on filtgain to view frequency plot;
+#X text 6 393 (C) Guenter Geiger 2000;
+#X text 75 92 frequency;
+#X text 75 268 Attention \, only the left inlet triggers new coefficients for biquad~;
+#X floatatom 129 113;
+#X text 138 92 gain;
+#X text 71 26 ==============================================;
+#X text 186 91 slope (0 - 100);
+#X text 76 12 Highshelf coefficients for biquad~;
+#X obj 77 160 highshelf 5000 70 100;
+#X obj 30 113 r doit;
+#X msg 360 45 \; pd dsp 1 \; paint 1 \; doit bang \;;
+#X connect 1 0 26 0;
+#X connect 2 0 5 0;
+#X connect 2 0 26 2;
+#X connect 5 0 26 0;
+#X connect 21 0 5 0;
+#X connect 21 0 26 1;
+#X connect 26 0 0 0;
+#X connect 26 0 4 0;
+#X connect 27 0 26 0;
diff --git a/externals/build/doc/help-ifeel.pd b/externals/build/doc/help-ifeel.pd
new file mode 100644
index 00000000..7001c79d
--- /dev/null
+++ b/externals/build/doc/help-ifeel.pd
@@ -0,0 +1,34 @@
+#N canvas 736 320 450 300 10;
+#X obj 105 228 ifeel /dev/input/ifeel0;
+#X obj 160 82 hsl 128 20 0 255 0 0 empty empty interval_(0-255) 6 8
+32 8 -225271 -1 -1 12700 0;
+#X obj 212 130 hsl 128 20 0 255 0 0 empty empty count_(0-255) 6 8 32
+8 -261681 -1 -1 0 0;
+#X obj 264 178 hsl 128 20 0 1 0 0 empty empty level_(0-1) 6 8 32 8
+-261689 -1 -1 12700 0;
+#X obj 61 157 bng 25 250 50 0 empty empty empty 0 -6 32 8 -24198 -1
+-1;
+#X obj 105 157 bng 25 250 50 0 empty empty empty 0 -6 32 8 -258699
+-1 -1;
+#X msg 105 187 stop;
+#X msg 61 187 start;
+#X obj 261 201 nbx 5 14 -1e+37 1e+37 0 0 pack_bang_env empty empty
+0 -6 33 10 -233017 -1 -1 1 256;
+#X obj 209 153 nbx 3 14 -1e+37 1e+37 0 0 pack_bang_env empty empty
+0 -6 33 10 -233017 -1 -1 0 256;
+#X obj 157 105 nbx 3 14 -1e+37 1e+37 0 0 pack_bang_env empty empty
+0 -6 33 10 -233017 -1 -1 255 256;
+#X obj 120 9 cnv 15 20 20 empty empty ifeel 4 12 33 14 -228992 -66577
+0;
+#X text 190 15 control the pulse in an iFeel mouse;
+#X obj 4 13 force-feedback;
+#X connect 1 0 10 0;
+#X connect 2 0 9 0;
+#X connect 3 0 8 0;
+#X connect 4 0 7 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 3;
+#X connect 9 0 0 2;
+#X connect 10 0 0 1;
diff --git a/externals/build/doc/help-ikeda.pd b/externals/build/doc/help-ikeda.pd
new file mode 100644
index 00000000..e94bfca7
--- /dev/null
+++ b/externals/build/doc/help-ikeda.pd
@@ -0,0 +1,26 @@
+#N canvas 48 298 368 335 10;
+#X obj 29 114 metro 50;
+#X obj 29 90 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 1 1
+;
+#X floatatom 80 89 5 0 0;
+#X floatatom 74 285 5 0 0;
+#X text 5 66 Calculate;
+#X text 113 161 Reset To Initial Conditions;
+#X text 114 234 Modify Parameters;
+#X floatatom 29 285 5 0 0;
+#X text 23 264 Output;
+#X text 4 21 Chaos PD Externals - Copyright Ben Bogart 2002;
+#X text 3 37 (This attractor is not continuous);
+#X obj 29 177 ikeda;
+#X msg 116 215 param 0.4 0.9 6 1;
+#X msg 116 193 param 0.4 0.8 20 1;
+#X text 5 6 Ikeda Attractor;
+#X msg 114 143 reset 0.1 0.1;
+#X connect 0 0 11 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 11 0 7 0;
+#X connect 11 1 3 0;
+#X connect 12 0 11 0;
+#X connect 13 0 11 0;
+#X connect 15 0 11 0;
diff --git a/externals/build/doc/help-image.pd b/externals/build/doc/help-image.pd
new file mode 100644
index 00000000..486b8ea1
--- /dev/null
+++ b/externals/build/doc/help-image.pd
@@ -0,0 +1,5 @@
+#N canvas 273 269 450 300 10;
+#X obj 66 203 image logo100.gif;
+#X text 12 14 Putting images into your patch;
+#X text 10 74 image <filename>;
+#X text 12 36 Working formats are gif and png \, I think;
diff --git a/externals/build/doc/help-inv.pd b/externals/build/doc/help-inv.pd
new file mode 100644
index 00000000..47244495
--- /dev/null
+++ b/externals/build/doc/help-inv.pd
@@ -0,0 +1,26 @@
+#N canvas 201 39 506 289 10;
+#X floatatom 32 76;
+#X floatatom 32 137;
+#X obj 188 93 sig~ 220;
+#X floatatom 188 74;
+#X obj 188 150 1/x~;
+#X obj 188 192 clip~ -1 1;
+#X obj 181 222 dac~;
+#X text 25 267 (C) Guenter Geiger;
+#X obj 188 111 phasor~;
+#X obj 188 129 +~ 1;
+#X obj 188 173 -~ 0.5;
+#X text 184 54 the signal version doesnt look useful to me;
+#X text 34 54 To make life easier;
+#X text 32 12 1/x takes the inverse of the input;
+#X obj 32 107 invert;
+#X connect 0 0 14 0;
+#X connect 2 0 8 0;
+#X connect 3 0 2 0;
+#X connect 4 0 10 0;
+#X connect 5 0 6 0;
+#X connect 5 0 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 4 0;
+#X connect 10 0 5 0;
+#X connect 14 0 1 0;
diff --git a/externals/build/doc/help-junction~.pd b/externals/build/doc/help-junction~.pd
new file mode 100644
index 00000000..591e4bce
--- /dev/null
+++ b/externals/build/doc/help-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/help-lattice~.pd b/externals/build/doc/help-lattice~.pd
new file mode 100644
index 00000000..45454708
--- /dev/null
+++ b/externals/build/doc/help-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/help-linuxevent.pd b/externals/build/doc/help-linuxevent.pd
new file mode 100644
index 00000000..9e6be44e
--- /dev/null
+++ b/externals/build/doc/help-linuxevent.pd
@@ -0,0 +1,14 @@
+#N canvas 454 205 450 300 10;
+#X floatatom 244 176 5 0 0 3 code - -;
+#X floatatom 303 176 5 0 0 3 value - -;
+#X floatatom 185 176 4 0 0 3 type - -;
+#X floatatom 112 176 9 0 0 3 time - -;
+#X msg 176 53 start;
+#X msg 187 91 stop;
+#X obj 126 123 linuxevent /dev/input/event0;
+#X connect 4 0 6 0;
+#X connect 5 0 6 0;
+#X connect 6 0 3 0;
+#X connect 6 1 2 0;
+#X connect 6 2 0 0;
+#X connect 6 3 1 0;
diff --git a/externals/build/doc/help-linuxjoystick.pd b/externals/build/doc/help-linuxjoystick.pd
new file mode 100644
index 00000000..0c37469e
--- /dev/null
+++ b/externals/build/doc/help-linuxjoystick.pd
@@ -0,0 +1,98 @@
+#N canvas 61 386 886 505 10;
+#X msg 192 64 start;
+#X msg 203 95 stop;
+#X floatatom 397 180 2 0 0 3 button# - -;
+#X floatatom 454 179 2 0 0 3 button_value - -;
+#X floatatom 143 180 5 0 0 3 y-axis - -;
+#X floatatom 95 180 5 0 0 3 x-axis - -;
+#X floatatom 242 181 3 0 0 3 hat-X - -;
+#X floatatom 288 181 3 0 0 3 hat-Y - -;
+#X floatatom 192 181 5 0 0 3 twist - -;
+#X floatatom 331 180 5 0 0 3 throttle - -;
+#X obj 192 123 linuxjoystick /dev/input/event1;
+#X obj 299 309 select 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
+19 20 21;
+#X obj 297 354 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 313 355 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 333 354 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 351 354 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 370 353 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 389 354 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 409 353 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 734 354 bng 30 250 50 0 empty empty not_recognized 0 -6 0 8
+-261689 -1 -1;
+#X obj 689 352 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 667 350 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 647 351 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 631 354 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 613 352 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 596 350 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 579 352 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 561 351 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 541 349 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 523 351 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 503 350 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 485 351 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 466 351 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 447 353 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 428 353 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 439 220 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X connect 0 0 10 0;
+#X connect 1 0 10 0;
+#X connect 2 0 11 0;
+#X connect 3 0 35 0;
+#X connect 10 0 5 0;
+#X connect 10 1 4 0;
+#X connect 10 2 8 0;
+#X connect 10 3 6 0;
+#X connect 10 4 7 0;
+#X connect 10 5 9 0;
+#X connect 10 6 2 0;
+#X connect 10 7 3 0;
+#X connect 11 0 12 0;
+#X connect 11 1 13 0;
+#X connect 11 2 14 0;
+#X connect 11 3 15 0;
+#X connect 11 4 16 0;
+#X connect 11 5 17 0;
+#X connect 11 6 18 0;
+#X connect 11 7 34 0;
+#X connect 11 8 33 0;
+#X connect 11 9 32 0;
+#X connect 11 10 31 0;
+#X connect 11 11 30 0;
+#X connect 11 12 29 0;
+#X connect 11 13 28 0;
+#X connect 11 14 27 0;
+#X connect 11 15 26 0;
+#X connect 11 16 25 0;
+#X connect 11 17 24 0;
+#X connect 11 18 23 0;
+#X connect 11 19 22 0;
+#X connect 11 20 21 0;
+#X connect 11 21 20 0;
+#X connect 11 22 19 0;
+#X connect 35 0 2 0;
diff --git a/externals/build/doc/help-linuxmouse.pd b/externals/build/doc/help-linuxmouse.pd
new file mode 100644
index 00000000..e7352962
--- /dev/null
+++ b/externals/build/doc/help-linuxmouse.pd
@@ -0,0 +1,16 @@
+#N canvas 454 205 450 300 10;
+#X floatatom 258 160 5 0 0 3 button# - -;
+#X floatatom 321 162 5 0 0 3 button_value - -;
+#X floatatom 175 160 2 0 0 3 wheel - -;
+#X floatatom 99 161 4 0 0 3 y-axis - -;
+#X floatatom 24 162 4 0 0 3 x-axis - -;
+#X obj 75 110 linuxmouse /dev/input/event0;
+#X msg 125 40 start;
+#X msg 136 78 stop;
+#X connect 5 0 4 0;
+#X connect 5 1 3 0;
+#X connect 5 2 2 0;
+#X connect 5 3 0 0;
+#X connect 5 4 1 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
diff --git a/externals/build/doc/help-ln~.pd b/externals/build/doc/help-ln~.pd
new file mode 100644
index 00000000..ec8a4be7
--- /dev/null
+++ b/externals/build/doc/help-ln~.pd
@@ -0,0 +1,15 @@
+#N canvas 277 128 450 300 10;
+#X obj 145 100 ln~;
+#X obj 158 126 ln~ -1;
+#X text 23 4 ln~;
+#X text 22 23 same as log~ however '-1' argument creates inverse;
+#X obj 129 53 sig~ 22;
+#X msg 47 94 bang;
+#X obj 59 128 print~ log;
+#X obj 43 165 print~ alog;
+#X connect 0 0 1 0;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 5 0 7 0;
diff --git a/externals/build/doc/help-lorenz.pd b/externals/build/doc/help-lorenz.pd
new file mode 100644
index 00000000..55170fc2
--- /dev/null
+++ b/externals/build/doc/help-lorenz.pd
@@ -0,0 +1,25 @@
+#N canvas 288 95 368 335 10;
+#X obj 29 114 metro 50;
+#X obj 29 90 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 80 89 5 0 0;
+#X obj 29 177 lorenz;
+#X floatatom 74 285 5 0 0;
+#X msg 115 194 param 0.02 10 28 2.667;
+#X text 5 6 Lorenz's Attractor;
+#X text 5 66 Calculate;
+#X text 113 161 Reset To Initial Conditions;
+#X text 115 212 Modify Parameters;
+#X floatatom 29 285 5 0 0;
+#X floatatom 120 285 5 0 0;
+#X text 58 258 Output;
+#X text 4 21 Chaos PD Externals - Copyright Ben Bogart 2002;
+#X msg 114 143 reset 0.1 0 0;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 3 0 10 0;
+#X connect 3 1 4 0;
+#X connect 3 2 11 0;
+#X connect 5 0 3 0;
+#X connect 14 0 3 0;
diff --git a/externals/build/doc/help-lowpass.pd b/externals/build/doc/help-lowpass.pd
new file mode 100644
index 00000000..9d15c16f
--- /dev/null
+++ b/externals/build/doc/help-lowpass.pd
@@ -0,0 +1,35 @@
+#N canvas 365 183 620 467 10;
+#X obj 77 182 print;
+#X floatatom 77 114;
+#X floatatom 162 114;
+#X msg 360 109 \; paint 0;
+#X obj 159 175 filtgain;
+#X msg 91 138 bang;
+#X text 139 93 bandwidth (0 - 100);
+#X text 6 334 See also:;
+#X obj 72 335 bandpass;
+#X obj 139 336 notch;
+#X obj 195 337 lowpass;
+#X obj 247 336 highpass;
+#X obj 247 358 equalizer;
+#X obj 72 357 highshelf;
+#X obj 139 357 lowshelf;
+#X obj 195 357 hlshelf;
+#X text 75 226 These filters are all controlled by a bandwidth which is expressed in octaves. A bandwidth of 100 is equivalent to one octave.;
+#X text 358 25 click first;
+#X text 175 159 click on filtgain to view frequency plot;
+#X text 70 26 ===================================;
+#X text 6 393 (C) Guenter Geiger 2000;
+#X text 75 92 frequency;
+#X text 75 268 Attention \, only the left inlet triggers new coefficients for biquad~;
+#X text 71 12 Lowpass coefficients for biquad~;
+#X msg 360 45 \; pd dsp 1 \; paint 1 \; doit bang \;;
+#X obj 32 114 r doit;
+#X obj 77 160 lowpass 4000 33;
+#X connect 1 0 26 0;
+#X connect 2 0 5 0;
+#X connect 2 0 26 1;
+#X connect 5 0 26 0;
+#X connect 25 0 26 0;
+#X connect 26 0 0 0;
+#X connect 26 0 4 0;
diff --git a/externals/build/doc/help-lowshelf.pd b/externals/build/doc/help-lowshelf.pd
new file mode 100644
index 00000000..140c754a
--- /dev/null
+++ b/externals/build/doc/help-lowshelf.pd
@@ -0,0 +1,39 @@
+#N canvas 365 183 620 459 10;
+#X obj 77 182 print;
+#X floatatom 77 114;
+#X floatatom 192 113;
+#X msg 360 117 \; paint 0;
+#X obj 159 175 filtgain;
+#X msg 91 138 bang;
+#X text 6 334 See also:;
+#X obj 72 335 bandpass;
+#X obj 139 336 notch;
+#X obj 195 337 lowpass;
+#X obj 247 336 highpass;
+#X obj 247 358 equalizer;
+#X obj 72 357 highshelf;
+#X obj 139 357 lowshelf;
+#X obj 195 357 hlshelf;
+#X text 75 226 These filters are all controlled by a bandwidth which is expressed in octaves. A bandwidth of 100 is equivalent to one octave.;
+#X text 358 25 click first;
+#X text 211 159 click on filtgain to view frequency plot;
+#X text 6 393 (C) Guenter Geiger 2000;
+#X text 75 92 frequency;
+#X text 75 268 Attention \, only the left inlet triggers new coefficients for biquad~;
+#X floatatom 129 113;
+#X text 138 92 gain;
+#X text 71 26 ==============================================;
+#X text 192 92 slope (0 - 100);
+#X text 76 12 Lowshelf coefficients for biquad~;
+#X obj 31 113 r doit;
+#X msg 360 45 \; pd dsp 1 \; paint 1 \; doit bang \;;
+#X obj 77 160 lowshelf 4000 50 100;
+#X connect 1 0 28 0;
+#X connect 2 0 5 0;
+#X connect 2 0 28 2;
+#X connect 5 0 28 0;
+#X connect 21 0 5 0;
+#X connect 21 0 28 1;
+#X connect 26 0 28 0;
+#X connect 28 0 0 0;
+#X connect 28 0 4 0;
diff --git a/externals/build/doc/help-matrix~.pd b/externals/build/doc/help-matrix~.pd
new file mode 100644
index 00000000..5a6e9d56
--- /dev/null
+++ b/externals/build/doc/help-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/help-moog~.pd b/externals/build/doc/help-moog~.pd
new file mode 100644
index 00000000..7e0139ba
--- /dev/null
+++ b/externals/build/doc/help-moog~.pd
@@ -0,0 +1,39 @@
+#N canvas 225 113 568 397 10;
+#X obj 186 210 moog~;
+#X obj 178 288 dac~;
+#X floatatom 226 163 5 0 0;
+#X floatatom 183 104 5 0 0;
+#X floatatom 25 113 5 0 0;
+#X obj 238 237 env~;
+#X floatatom 238 257 5 0 0;
+#X obj 186 257 *~ 0.1;
+#X msg 182 163 reset;
+#X obj 116 105 +~ 1;
+#X floatatom 116 63 5 0 0;
+#X floatatom 180 128 5 0 0;
+#X obj 116 146 +~ 100;
+#X obj 116 84 osc~ 0.25;
+#X obj 116 125 *~ 2000;
+#X obj 226 182 sig~ 3;
+#X obj 25 139 phasor~ 110;
+#X msg 249 52 \; pd dsp 1 \;;
+#X text 17 7 A signal controlled "moog" resonant lowpass;
+#X text 272 163 Q (1-4);
+#X text 61 46 resonance freq modulation;
+#X connect 0 0 5 0;
+#X connect 0 0 7 0;
+#X connect 2 0 15 0;
+#X connect 3 0 14 1;
+#X connect 4 0 16 0;
+#X connect 5 0 6 0;
+#X connect 7 0 1 0;
+#X connect 7 0 1 1;
+#X connect 8 0 0 0;
+#X connect 9 0 14 0;
+#X connect 10 0 13 0;
+#X connect 11 0 12 1;
+#X connect 12 0 0 1;
+#X connect 13 0 9 0;
+#X connect 14 0 12 0;
+#X connect 15 0 0 2;
+#X connect 16 0 0 0;
diff --git a/externals/build/doc/help-notch.pd b/externals/build/doc/help-notch.pd
new file mode 100644
index 00000000..a65d9c42
--- /dev/null
+++ b/externals/build/doc/help-notch.pd
@@ -0,0 +1,35 @@
+#N canvas 363 47 620 467 10;
+#X obj 77 182 print;
+#X floatatom 77 114;
+#X floatatom 150 114;
+#X msg 360 109 \; paint 0;
+#X obj 159 175 filtgain;
+#X msg 91 138 bang;
+#X text 150 93 bandwidth (0 - 100);
+#X text 6 334 See also:;
+#X obj 72 335 bandpass;
+#X obj 139 336 notch;
+#X obj 195 337 lowpass;
+#X obj 247 336 highpass;
+#X obj 247 358 equalizer;
+#X obj 72 357 highshelf;
+#X obj 139 357 lowshelf;
+#X obj 195 357 hlshelf;
+#X text 75 226 These filters are all controlled by a bandwidth which is expressed in octaves. A bandwidth of 100 is equivalent to one octave.;
+#X text 358 25 click first;
+#X text 165 159 click on filtgain to view frequency plot;
+#X text 70 26 ===================================;
+#X text 6 393 (C) Guenter Geiger 2000;
+#X text 75 92 frequency;
+#X text 75 268 Attention \, only the left inlet triggers new coefficients for biquad~;
+#X text 72 13 Notch coefficients for biquad~;
+#X msg 360 46 \; pd dsp 1 \; paint 1 \; doit bang \;;
+#X obj 35 114 r doit;
+#X obj 77 160 notch 4000 33;
+#X connect 1 0 26 0;
+#X connect 2 0 5 0;
+#X connect 2 0 26 1;
+#X connect 5 0 26 0;
+#X connect 25 0 26 0;
+#X connect 26 0 0 0;
+#X connect 26 0 4 0;
diff --git a/externals/build/doc/help-pan_gogins~.pd b/externals/build/doc/help-pan_gogins~.pd
new file mode 100644
index 00000000..281573dd
--- /dev/null
+++ b/externals/build/doc/help-pan_gogins~.pd
@@ -0,0 +1,95 @@
+#N canvas 229 280 522 407 10;
+#X floatatom 94 35 4 -45 45 0 - - -;
+#X floatatom 112 85 0 0 0 0 - - -;
+#N canvas 184 223 495 266 output 0;
+#X obj 338 160 t b;
+#X obj 338 110 f;
+#X obj 338 60 inlet;
+#X text 344 29 mute;
+#X obj 338 185 f;
+#X msg 425 178 0;
+#X msg 338 85 bang;
+#X obj 338 135 moses 1;
+#X obj 425 153 t b f;
+#X obj 397 117 moses 1;
+#X obj 83 148 dbtorms;
+#X obj 397 92 r master-lvl;
+#X obj 83 42 r master-lvl;
+#X obj 338 210 s master-lvl;
+#X obj -15 176 inlet~;
+#X obj 199 41 inlet;
+#X text 199 18 level;
+#X obj 199 100 s master-lvl;
+#X msg 96 65 set \$1;
+#X obj 96 89 outlet;
+#X msg 214 64 \; pd dsp 1;
+#X obj 83 194 line~;
+#X obj -15 207 *~;
+#X obj -15 236 dac~;
+#X obj 83 171 pack 0 50;
+#X text -17 153 audio;
+#X text 93 110 show level;
+#X obj 31 182 inlet~;
+#X obj 31 218 *~;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 0;
+#X connect 6 0 1 0;
+#X connect 7 0 0 0;
+#X connect 7 1 8 0;
+#X connect 8 0 5 0;
+#X connect 9 1 4 1;
+#X connect 10 0 24 0;
+#X connect 11 0 1 1;
+#X connect 11 0 9 0;
+#X connect 12 0 10 0;
+#X connect 12 0 18 0;
+#X connect 14 0 22 0;
+#X connect 15 0 17 0;
+#X connect 15 0 20 0;
+#X connect 18 0 19 0;
+#X connect 21 0 22 1;
+#X connect 21 0 28 1;
+#X connect 22 0 23 0;
+#X connect 24 0 21 0;
+#X connect 27 0 28 0;
+#X connect 28 0 23 1;
+#X restore 74 112 pd output;
+#X msg 132 84 MUTE;
+#X text 166 83 <-- output amplitude;
+#N canvas 5 21 600 400 pulse 0;
+#X obj 175 203 cos~;
+#X obj 175 131 -~ 0.5;
+#X obj 175 179 clip~ -0.5 0.5;
+#X obj 175 227 hip~ 5;
+#X obj 175 155 *~ 82;
+#X obj 175 107 phasor~ 16;
+#X obj 175 251 outlet~;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 3 0 6 0;
+#X connect 4 0 2 0;
+#X connect 5 0 1 0;
+#X restore 22 33 pd pulse;
+#X msg 21 177 \; pd dsp 1;
+#X msg 91 177 \; pd dsp 0;
+#X text 43 208 ON;
+#X text 108 208 OFF;
+#X obj 22 152 loadbang;
+#X text 133 36 angle in degrees range -45 to 45;
+#X obj 22 58 pan_gogins~;
+#X text 17 324 pan_gogins~ a modification of pan~ by Ian Mott;
+#X text 16 341 implements an algorithm conceived by Michael Gogins
+and described at: http://www.csounds.com/ezine/autumn1999/beginners/
+;
+#X connect 0 0 12 1;
+#X connect 1 0 2 2;
+#X connect 2 0 1 0;
+#X connect 3 0 2 3;
+#X connect 5 0 12 0;
+#X connect 10 0 6 0;
+#X connect 12 0 2 0;
+#X connect 12 1 2 1;
diff --git a/externals/build/doc/help-pansig~.pd b/externals/build/doc/help-pansig~.pd
new file mode 100644
index 00000000..29e61249
--- /dev/null
+++ b/externals/build/doc/help-pansig~.pd
@@ -0,0 +1,104 @@
+#N canvas 5 21 629 519 10;
+#X floatatom 462 138 4 0 0;
+#X floatatom 187 239 0 0 0;
+#N canvas 184 223 495 266 output 0;
+#X obj 338 160 t b;
+#X obj 338 110 f;
+#X obj 338 60 inlet;
+#X text 344 29 mute;
+#X obj 338 185 f;
+#X msg 425 178 0;
+#X msg 338 85 bang;
+#X obj 338 135 moses 1;
+#X obj 425 153 t b f;
+#X obj 397 117 moses 1;
+#X obj 83 148 dbtorms;
+#X obj 397 92 r master-lvl;
+#X obj 83 42 r master-lvl;
+#X obj 338 210 s master-lvl;
+#X obj -15 176 inlet~;
+#X obj 199 41 inlet;
+#X text 199 18 level;
+#X obj 199 100 s master-lvl;
+#X msg 96 65 set \$1;
+#X obj 96 89 outlet;
+#X msg 214 64 \; pd dsp 1;
+#X obj 83 194 line~;
+#X obj -15 207 *~;
+#X obj -15 236 dac~;
+#X obj 83 171 pack 0 50;
+#X text -17 153 audio;
+#X text 93 110 show level;
+#X obj 31 182 inlet~;
+#X obj 31 218 *~;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 0;
+#X connect 6 0 1 0;
+#X connect 7 0 0 0;
+#X connect 7 1 8 0;
+#X connect 8 0 5 0;
+#X connect 9 1 4 1;
+#X connect 10 0 24 0;
+#X connect 11 0 1 1;
+#X connect 11 0 9 0;
+#X connect 12 0 10 0;
+#X connect 12 0 18 0;
+#X connect 14 0 22 0;
+#X connect 15 0 17 0;
+#X connect 15 0 20 0;
+#X connect 18 0 19 0;
+#X connect 21 0 22 1;
+#X connect 21 0 28 1;
+#X connect 22 0 23 0;
+#X connect 24 0 21 0;
+#X connect 27 0 28 0;
+#X connect 28 0 23 1;
+#X restore 158 267 pd output;
+#X msg 216 239 MUTE;
+#X text 250 238 <-- output amplitude;
+#N canvas 5 21 600 400 pulse 1;
+#X obj 175 203 cos~;
+#X obj 175 131 -~ 0.5;
+#X obj 175 179 clip~ -0.5 0.5;
+#X obj 175 227 hip~ 5;
+#X obj 175 155 *~ 82;
+#X obj 175 107 phasor~ 16;
+#X obj 175 251 outlet~;
+#X floatatom 169 61 4 0 0;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 3 0 6 0;
+#X connect 4 0 2 0;
+#X connect 5 0 1 0;
+#X connect 7 0 5 0;
+#X restore 122 46 pd pulse;
+#X msg 368 41 \; pd dsp 1;
+#X msg 438 41 \; pd dsp 0;
+#X text 390 72 ON;
+#X text 455 72 OFF;
+#X obj 369 16 loadbang;
+#X obj 461 162 / 100;
+#X msg 461 182 \$1 30;
+#X obj 460 206 line;
+#X obj 159 151 pansig~;
+#X obj 222 113 osc~ 0.01;
+#X floatatom 222 61 4 0 0;
+#X obj 263 153 noise~;
+#X obj 222 86 / 100;
+#X connect 0 0 11 0;
+#X connect 1 0 2 2;
+#X connect 2 0 1 0;
+#X connect 3 0 2 3;
+#X connect 5 0 14 0;
+#X connect 10 0 6 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 14 0 2 0;
+#X connect 14 1 2 1;
+#X connect 15 0 14 1;
+#X connect 16 0 18 0;
+#X connect 18 0 15 0;
diff --git a/externals/build/doc/help-pan~.pd b/externals/build/doc/help-pan~.pd
new file mode 100644
index 00000000..bf3533aa
--- /dev/null
+++ b/externals/build/doc/help-pan~.pd
@@ -0,0 +1,94 @@
+#N canvas 5 21 629 519 10;
+#X obj 159 151 pan~;
+#X floatatom 200 120 4 0 0;
+#X floatatom 187 239 0 0 0;
+#N canvas 184 223 495 266 output 0;
+#X obj 338 160 t b;
+#X obj 338 110 f;
+#X obj 338 60 inlet;
+#X text 344 29 mute;
+#X obj 338 185 f;
+#X msg 425 178 0;
+#X msg 338 85 bang;
+#X obj 338 135 moses 1;
+#X obj 425 153 t b f;
+#X obj 397 117 moses 1;
+#X obj 83 148 dbtorms;
+#X obj 397 92 r master-lvl;
+#X obj 83 42 r master-lvl;
+#X obj 338 210 s master-lvl;
+#X obj -15 176 inlet~;
+#X obj 199 41 inlet;
+#X text 199 18 level;
+#X obj 199 100 s master-lvl;
+#X msg 96 65 set \$1;
+#X obj 96 89 outlet;
+#X msg 214 64 \; pd dsp 1;
+#X obj 83 194 line~;
+#X obj -15 207 *~;
+#X obj -15 236 dac~;
+#X obj 83 171 pack 0 50;
+#X text -17 153 audio;
+#X text 93 110 show level;
+#X obj 31 182 inlet~;
+#X obj 31 218 *~;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 0;
+#X connect 6 0 1 0;
+#X connect 7 0 0 0;
+#X connect 7 1 8 0;
+#X connect 8 0 5 0;
+#X connect 9 1 4 1;
+#X connect 10 0 24 0;
+#X connect 11 0 1 1;
+#X connect 11 0 9 0;
+#X connect 12 0 10 0;
+#X connect 12 0 18 0;
+#X connect 14 0 22 0;
+#X connect 15 0 17 0;
+#X connect 15 0 20 0;
+#X connect 18 0 19 0;
+#X connect 21 0 22 1;
+#X connect 21 0 28 1;
+#X connect 22 0 23 0;
+#X connect 24 0 21 0;
+#X connect 27 0 28 0;
+#X connect 28 0 23 1;
+#X restore 158 267 pd output;
+#X msg 216 239 MUTE;
+#X text 250 238 <-- output amplitude;
+#N canvas 5 21 600 400 pulse 0;
+#X obj 175 203 cos~;
+#X obj 175 131 -~ 0.5;
+#X obj 175 179 clip~ -0.5 0.5;
+#X obj 175 227 hip~ 5;
+#X obj 175 155 *~ 82;
+#X obj 175 107 phasor~ 16;
+#X obj 175 251 outlet~;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 3 0 6 0;
+#X connect 4 0 2 0;
+#X connect 5 0 1 0;
+#X restore 122 46 pd pulse;
+#X msg 368 41 \; pd dsp 1;
+#X msg 438 41 \; pd dsp 0;
+#X text 390 72 ON;
+#X text 455 72 OFF;
+#X obj 369 16 loadbang;
+#X text 239 120 angle in degrees range -45 to 45;
+#X text 459 335 IM 2001;
+#X text -9 32 pan~;
+#X text -9 51 equal power panning;
+#X connect 0 0 3 0;
+#X connect 0 1 3 1;
+#X connect 1 0 0 1;
+#X connect 2 0 3 2;
+#X connect 3 0 2 0;
+#X connect 4 0 3 3;
+#X connect 6 0 0 0;
+#X connect 11 0 7 0;
diff --git a/externals/build/doc/help-permut~.pd b/externals/build/doc/help-permut~.pd
new file mode 100644
index 00000000..c8aa822c
--- /dev/null
+++ b/externals/build/doc/help-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/help-pipewrite~.pd b/externals/build/doc/help-pipewrite~.pd
new file mode 100644
index 00000000..fe332f8a
--- /dev/null
+++ b/externals/build/doc/help-pipewrite~.pd
@@ -0,0 +1,216 @@
+/* (C) Guenter Geiger <geiger@epy.co.at> */
+
+
+#include "m_imp.h"
+//#include <m_pd.h>
+#include "g_canvas.h"
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <signal.h>
+
+/*
+ * -------------------------- pipewrite~ -------------------------------
+ */
+
+#define MAX_CHANS 4
+#define BLOCKTIME 0.001
+#define uint32 unsigned int
+#define uint16 unsigned short
+
+static t_class *pipewrite_class;
+
+typedef struct _pipewrite
+{
+ t_object x_obj;
+ t_symbol* filename;
+ int x_file;
+ t_int x_channels;
+ t_int size;
+ t_glist * x_glist;
+ t_int x_blocked;
+ t_int x_blockwarn;
+ short maxval;
+} t_pipewrite;
+
+static void pipewrite_close(t_pipewrite *x)
+{
+ if (x->x_file > 0) {
+ close(x->x_file);
+ }
+ x->x_file = -1;
+ x->size=0;
+}
+
+
+static void pipewrite_open(t_pipewrite *x,t_symbol *filename)
+{
+ char fname[MAXPDSTRING];
+
+ if (filename == &s_) {
+ post("pipewrite: open without filename");
+ return;
+ }
+
+ canvas_makefilename(glist_getcanvas(x->x_glist), filename->s_name,
+ fname, MAXPDSTRING);
+ x->x_blocked = 0;
+ x->filename = filename;
+ x->maxval=0;
+ x->size=0;
+ post("pipewrite: filename = %s",x->filename->s_name);
+
+ pipewrite_close(x);
+
+ if ((x->x_file = open(fname,O_WRONLY | O_NONBLOCK)) < 0)
+ {
+
+ error("can't open pipe %s: ",fname);
+ perror("system says");
+ return;
+ }
+}
+
+static void pipewrite_block(t_pipewrite *x, t_floatarg f)
+{
+ x->x_blockwarn = f;
+}
+
+
+static short out[4*64];
+
+static t_int *pipewrite_perform(t_int *w)
+{
+ t_pipewrite* x = (t_pipewrite*)(w[1]);
+ t_float * in[4];
+ int c = x->x_channels;
+ int i,num,n;
+ short* tout = out;
+ int ret;
+ double timebefore,timeafter;
+ double late;
+ struct sigaction action;
+ struct sigaction oldaction;
+
+
+ if (x->x_file < 0) {
+ pipewrite_open(x,x->filename);
+ }
+
+ action.sa_handler = SIG_IGN;
+ sigaction(SIGPIPE, &action, &oldaction);
+
+ for (i=0;i < c;i++) {
+ in[i] = (t_float *)(w[2+i]);
+ }
+
+ n = num = (int)(w[2+c]);
+
+ /* loop */
+
+ if (x->x_file >= 0) {
+
+ while (n--) {
+ for (i=0;i<c;i++) {
+ if (*(in[i]) > 1. ) { *(in[i]) = 1. ; }
+ if (*(in[i]) < -1. ) { *(in[i]) = -1. ; }
+ *tout++ = (*(in[i])++ * 32768.);
+ }
+ }
+
+ timebefore = sys_getrealtime();
+ if ((ret = write(x->x_file,out,sizeof(short)*num*c)) < sizeof(short)*num*c) {
+ post("pipewrite: short write %d",ret);
+
+ }
+
+ timeafter = sys_getrealtime();
+ late = timeafter - timebefore;
+ x->size +=ret;
+ /* OK, we let only 10 ms block here */
+ if (late > BLOCKTIME && x->x_blockwarn) {
+ x->x_blocked++;
+ if (x->x_blocked > x->x_blockwarn) {
+ x->x_blocked=0;
+/* post("maximum blockcount %d reached",x->x_blockwarn); */
+ }
+ }
+ }
+
+ sigaction(SIGPIPE, &oldaction, NULL);
+
+ return (w+3+c);
+}
+
+
+
+static void pipewrite_dsp(t_pipewrite *x, t_signal **sp)
+{
+ switch (x->x_channels) {
+ case 1:
+ dsp_add(pipewrite_perform, 3, x, sp[0]->s_vec,
+ sp[0]->s_n);
+ break;
+ case 2:
+ dsp_add(pipewrite_perform, 4, x, sp[0]->s_vec,
+ sp[1]->s_vec, sp[0]->s_n);
+ break;
+ case 4:
+ dsp_add(pipewrite_perform, 6, x, sp[0]->s_vec,
+ sp[1]->s_vec,
+ sp[2]->s_vec,
+ sp[3]->s_vec,
+ sp[0]->s_n);
+ break;
+ }
+}
+
+static void pipewrite_free(t_pipewrite* x)
+{
+ pipewrite_close(x);
+}
+
+
+static void *pipewrite_new(t_symbol* name,t_floatarg chan)
+{
+ t_pipewrite *x = (t_pipewrite *)pd_new(pipewrite_class);
+ t_int c = chan;
+
+ if (c<1 || c > MAX_CHANS) c = 1;
+
+ x->x_glist = (t_glist*) canvas_getcurrent();
+ x->x_channels = c--;
+ post("channels:%d",x->x_channels);
+ x->x_file=0;
+ x->x_blocked = 0;
+ x->x_blockwarn = 10;
+ while (c--) {
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
+ }
+
+ if (name && name != &s_) { /* start the pipe */
+ pipewrite_open(x,name);
+ }
+
+ return (x);
+}
+
+void pipewrite_tilde_setup(void)
+{
+ pipewrite_class = class_new(gensym("pipewrite~"), (t_newmethod)pipewrite_new, (t_method)pipewrite_free,
+ sizeof(t_pipewrite), 0,A_DEFSYM,A_DEFFLOAT,A_NULL);
+ class_addmethod(pipewrite_class,nullfn,gensym("signal"), 0);
+ class_addmethod(pipewrite_class, (t_method) pipewrite_dsp, gensym("dsp"), 0);
+ class_addmethod(pipewrite_class, (t_method) pipewrite_open, gensym("open"), A_SYMBOL,A_NULL);
+ class_addmethod(pipewrite_class, (t_method) pipewrite_close, gensym("close"), 0);
+ class_addmethod(pipewrite_class, (t_method)pipewrite_block,gensym("block"),A_DEFFLOAT,0);
+
+}
diff --git a/externals/build/doc/help-plugin~.pd b/externals/build/doc/help-plugin~.pd
new file mode 100644
index 00000000..58c9e39e
--- /dev/null
+++ b/externals/build/doc/help-plugin~.pd
@@ -0,0 +1,71 @@
+#N canvas 251 141 580 621 8;
+#X floatatom 443 329 0 0 0 0 - - -;
+#X msg 443 299 440;
+#X obj 393 266 loadbang;
+#X msg 442 358 control freq \$1;
+#X msg 344 357 control amp \$1;
+#X msg 344 300 0.7;
+#X floatatom 344 331 0 0 0 0 - - -;
+#X obj 97 389 plugin~ amp_stereo amp.so;
+#X msg 67 351 control gain \$1;
+#X floatatom 67 326 0 0 0 0 - - -;
+#X obj 401 434 plugin~ sine_fcac;
+#X msg 307 390 print;
+#X obj 200 436 dac~;
+#X obj 20 47 plugin~ lpf;
+#X obj 309 50 plugin~ lpf filter.so;
+#X text 13 11 plugin~: LADSPA plug-in hosting for Pd.;
+#X obj 66 269 loadbang;
+#X msg 16 340 print;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 100 float 0;
+#X coords 0 1 100 -1 200 140 1;
+#X restore 84 465 graph;
+#X obj 402 503 tabwrite~ array1;
+#X obj 312 472 metro 500;
+#X msg 311 450 1;
+#X obj 311 428 loadbang;
+#X text 19 65 Create a plug-in by label. All LADSPA plug-in libraries
+will be searched.;
+#X text 309 70 Create a plug-in by label and library name. Only the
+selected LADSPA plug-in library is searched.;
+#X text 30 246 Example: stereo amplifier from LADSPA SDK;
+#X text 297 245 Example: sine oscillator from LADSPA SDK;
+#X obj 219 167 plugin~ lpf;
+#X text 106 114 In- and outlet functionality:;
+#X text 56 189 You can investigate the inputs and outputs by sending
+a "print" message to the first inlet.;
+#X msg 290 210 print;
+#X text 12 140 The first inlet is for control input messages. The first
+outlet is for control output messages \, correspondingly.;
+#X text 305 140 The rest inlets are for audio input and the rest outlets
+are for audio output signals.;
+#X msg 14 310 reset;
+#X msg 304 365 reset;
+#X obj 202 306 osc~ 220;
+#X msg 66 300 0.05;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 2 0 5 0;
+#X connect 3 0 10 0;
+#X connect 4 0 10 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 1 12 0;
+#X connect 7 2 12 1;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 10 1 19 0;
+#X connect 11 0 10 0;
+#X connect 16 0 36 0;
+#X connect 17 0 7 0;
+#X connect 20 0 19 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 30 0 27 0;
+#X connect 33 0 7 0;
+#X connect 34 0 10 0;
+#X connect 35 0 7 1;
+#X connect 35 0 7 2;
+#X connect 36 0 9 0;
diff --git a/externals/build/doc/help-qmult~.pd b/externals/build/doc/help-qmult~.pd
new file mode 100644
index 00000000..674df3ed
--- /dev/null
+++ b/externals/build/doc/help-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/help-qnorm~.pd b/externals/build/doc/help-qnorm~.pd
new file mode 100644
index 00000000..3f6a8d04
--- /dev/null
+++ b/externals/build/doc/help-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/help-range.pd b/externals/build/doc/help-range.pd
new file mode 100644
index 00000000..8a3b11c0
--- /dev/null
+++ b/externals/build/doc/help-range.pd
@@ -0,0 +1,31 @@
+#N canvas 381 126 552 355 12;
+#X floatatom 27 277 8 0 0;
+#X floatatom 27 73 5 0 0;
+#X text 213 48 written by <olaf.matthes@gmx.de>;
+#X text 37 306 creation:;
+#X text 141 11 range :: range input from a certain input range;
+#X text 212 29 to lie between output boundaries;
+#X floatatom 56 131 5 0 0;
+#X floatatom 85 152 5 0 0;
+#X floatatom 115 173 5 0 0;
+#X floatatom 144 194 5 0 0;
+#X text 84 71 input value;
+#X text 106 278 ranged output value;
+#X text 111 130 in low;
+#X text 137 151 in high;
+#X text 171 172 out low;
+#X text 200 194 out high;
+#X text 57 104 creation arguments can be changed dynamically:;
+#X text 53 323 range <in low> <in high> <out low> <out high> <log coeff>
+;
+#X obj 27 249 range 0 9 100 255 0;
+#X floatatom 174 220 5 0 0;
+#X text 227 219 log coefficient;
+#X text 265 237 0 = linear 1 = log;
+#X connect 1 0 18 0;
+#X connect 6 0 18 1;
+#X connect 7 0 18 2;
+#X connect 8 0 18 3;
+#X connect 9 0 18 4;
+#X connect 18 0 0 0;
+#X connect 19 0 18 5;
diff --git a/externals/build/doc/help-ratio.pd b/externals/build/doc/help-ratio.pd
new file mode 100644
index 00000000..97500582
--- /dev/null
+++ b/externals/build/doc/help-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/help-rec2pol~.pd b/externals/build/doc/help-rec2pol~.pd
new file mode 100644
index 00000000..b20693f6
--- /dev/null
+++ b/externals/build/doc/help-rec2pol~.pd
@@ -0,0 +1,44 @@
+#N canvas 83 81 488 482 10;
+#X obj 151 219 sig~ 222;
+#X obj 221 225 sig~ 111;
+#X obj 133 352 snapshot~;
+#X obj 205 352 snapshot~;
+#X floatatom 109 392 8 0 0;
+#X floatatom 215 396 8 0 0;
+#X msg 117 319 bang;
+#X floatatom 254 176 4 0 0;
+#X floatatom 149 176 4 0 0;
+#X obj 180 253 rec2pol~;
+#X obj 180 311 pol2rec~;
+#X obj 69 243 snapshot~;
+#X floatatom 45 283 8 0 0;
+#X msg 70 184 bang;
+#X obj 315 242 snapshot~;
+#X floatatom 291 289 8 0 0;
+#X msg 315 225 bang;
+#X text 37 6 rec2pol - convert rectangular coords to polar coords;
+#X text 97 19 eg - convert sine & cosine output of rfft;
+#X text 97 33 to phase and magnitude;
+#X text 36 48 pol2rec - convert back;
+#X text 400 422 IM 2001;
+#X text 34 71 see also polvoc.pd for an example of use;
+#X connect 0 0 9 0;
+#X connect 1 0 9 1;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 6 0 2 0;
+#X connect 6 0 3 0;
+#X connect 7 0 1 0;
+#X connect 8 0 0 0;
+#X connect 9 0 11 0;
+#X connect 9 0 10 0;
+#X connect 9 1 14 0;
+#X connect 9 1 10 1;
+#X connect 10 0 2 0;
+#X connect 10 1 3 0;
+#X connect 11 0 12 0;
+#X connect 13 0 11 0;
+#X connect 13 0 14 0;
+#X connect 13 0 6 0;
+#X connect 14 0 15 0;
+#X connect 16 0 14 0;
diff --git a/externals/build/doc/help-rhythm_ioi_histogram.pd b/externals/build/doc/help-rhythm_ioi_histogram.pd
new file mode 100644
index 00000000..5e42bece
--- /dev/null
+++ b/externals/build/doc/help-rhythm_ioi_histogram.pd
@@ -0,0 +1,7 @@
+#N canvas 0 0 450 300 10;
+#N canvas 0 0 450 300 graph6 0;
+#X array histogram 100 float 0;
+#X coords 0 1 99 -1 200 140 1;
+#X restore 206 147 graph;
+#X obj 61 89 rhythm_ioi_histogram histogram;
+#X text 78 30 TODO;
diff --git a/externals/build/doc/help-rhythm_quantum.pd b/externals/build/doc/help-rhythm_quantum.pd
new file mode 100644
index 00000000..c619e292
--- /dev/null
+++ b/externals/build/doc/help-rhythm_quantum.pd
@@ -0,0 +1,6 @@
+#N canvas 0 0 450 300 10;
+#N canvas 0 0 450 300 graph7 0;
+#X array histogram 100 float 0;
+#X coords 0 1 99 -1 200 140 1;
+#X restore 234 132 graph;
+#X obj 88 47 rhythm_quantum histogram;
diff --git a/externals/build/doc/help-rhythm_slave_metro.pd b/externals/build/doc/help-rhythm_slave_metro.pd
new file mode 100644
index 00000000..ba650b31
--- /dev/null
+++ b/externals/build/doc/help-rhythm_slave_metro.pd
@@ -0,0 +1,2 @@
+#N canvas 0 0 450 300 10;
+#X obj 67 116 rhythm_slave_metro;
diff --git a/externals/build/doc/help-rossler.pd b/externals/build/doc/help-rossler.pd
new file mode 100644
index 00000000..1b07ebe6
--- /dev/null
+++ b/externals/build/doc/help-rossler.pd
@@ -0,0 +1,25 @@
+#N canvas 48 298 368 335 10;
+#X obj 29 114 metro 50;
+#X obj 29 90 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 80 89 5 0 0;
+#X floatatom 74 285 5 0 0;
+#X text 5 66 Calculate;
+#X text 113 161 Reset To Initial Conditions;
+#X text 115 212 Modify Parameters;
+#X floatatom 29 285 5 0 0;
+#X floatatom 120 285 5 0 0;
+#X text 58 258 Output;
+#X text 4 21 Chaos PD Externals - Copyright Ben Bogart 2002;
+#X obj 29 177 rossler;
+#X msg 115 193 param 0.01 0.39 0.4 5.8;
+#X text 5 6 Rossler's Attractor;
+#X msg 114 143 reset 0.1 0 0;
+#X connect 0 0 11 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 11 0 7 0;
+#X connect 11 1 3 0;
+#X connect 11 2 8 0;
+#X connect 12 0 11 0;
+#X connect 14 0 11 0;
diff --git a/externals/build/doc/help-rtin~.pd b/externals/build/doc/help-rtin~.pd
new file mode 100644
index 00000000..176be1a6
--- /dev/null
+++ b/externals/build/doc/help-rtin~.pd
@@ -0,0 +1,32 @@
+#N canvas 321 9 450 300 10;
+#X obj 121 96 noise~;
+#X obj 139 202 dac~;
+#X obj 152 157 *~;
+#X obj 210 121 line~;
+#X msg 175 34 bang;
+#X obj 332 193 print;
+#X msg 141 69 1 \, 0 10;
+#X obj 270 89 int;
+#X obj 329 86 + 1;
+#X obj 263 141 sel 0;
+#X floatatom 274 167 5 0 0;
+#X obj 366 82 metro 20;
+#X floatatom 355 52 5 0 0;
+#X obj 270 110 % 8;
+#X obj 227 15 rtin~;
+#X msg 231 48 bang;
+#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 6 0;
+#X connect 6 0 3 0;
+#X connect 7 0 13 0;
+#X connect 8 0 7 1;
+#X connect 9 0 6 0;
+#X connect 12 0 11 1;
+#X connect 13 0 8 0;
+#X connect 13 0 9 0;
+#X connect 13 0 10 0;
+#X connect 14 0 15 0;
+#X connect 15 0 7 0;
diff --git a/externals/build/doc/help-serialize.pd b/externals/build/doc/help-serialize.pd
new file mode 100644
index 00000000..0fbacf62
--- /dev/null
+++ b/externals/build/doc/help-serialize.pd
@@ -0,0 +1,8 @@
+#N canvas 246 82 551 292 10;
+#X obj 34 106 serialize 4;
+#X obj 34 141 print;
+#X floatatom 34 69;
+#X text 30 195 (C) 2000 Guenter Geiger;
+#X text 30 39 serialize ... turn a stream of floats into a list;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
diff --git a/externals/build/doc/help-sfread~.pd b/externals/build/doc/help-sfread~.pd
new file mode 100644
index 00000000..5cc1058f
--- /dev/null
+++ b/externals/build/doc/help-sfread~.pd
@@ -0,0 +1,44 @@
+#N canvas 89 114 600 456 8;
+#X msg 34 135 bang;
+#X obj 228 324 dac~;
+#X msg 70 218 1;
+#X floatatom 348 128;
+#X text 14 33 file to open;
+#X text 33 116 start playback;
+#X msg 70 240 0;
+#X text 34 10 SFREAD;
+#X text 34 21 =======;
+#X text 346 96 playback speed (defaults to 1);
+#X text 93 8 The file should have the systems samplerate (44100) and endianess matching the machine.;
+#X text 25 257 pause on/off during playback;
+#X text 277 46 resets sound to position;
+#X msg 322 63 200;
+#X text 288 164 instatiation: sfread <channels> <skip>;
+#X text 276 35 start position in samples (defaults to <skip>);
+#X floatatom 231 102;
+#X msg 172 114 loop 1;
+#X msg 152 94 loop 0;
+#X msg 364 224 size;
+#X floatatom 336 275;
+#X text 333 205 Get the size (in frames);
+#X obj 207 164 sfread~ 2 62;
+#X msg 14 85 open \$1;
+#X obj 14 66 openpanel;
+#X msg 69 66 bang;
+#X msg 365 249 state;
+#X connect 0 0 22 0;
+#X connect 2 0 22 0;
+#X connect 3 0 22 2;
+#X connect 6 0 22 0;
+#X connect 13 0 22 1;
+#X connect 16 0 22 1;
+#X connect 17 0 22 0;
+#X connect 18 0 22 0;
+#X connect 19 0 22 0;
+#X connect 22 0 1 0;
+#X connect 22 1 1 1;
+#X connect 22 2 20 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 25 0 24 0;
+#X connect 26 0 22 0;
diff --git a/externals/build/doc/help-sfwrite~.pd b/externals/build/doc/help-sfwrite~.pd
new file mode 100644
index 00000000..1426cf33
--- /dev/null
+++ b/externals/build/doc/help-sfwrite~.pd
@@ -0,0 +1,45 @@
+#N canvas 340 71 600 460 12;
+#X obj 185 96 sfwrite~ 2;
+#X msg 65 16 open test.wav;
+#X floatatom 185 16;
+#X msg 147 308 0;
+#X obj 232 17 adc~;
+#X msg 91 278 0;
+#X msg 59 278 1;
+#X obj 142 222 table;
+#X msg 136 171 bang;
+#X msg 32 171 resize 441000;
+#X msg 181 172 read16 test.wav 200 l;
+#X obj 417 104 env~;
+#X obj 298 34 osc~ 220;
+#X obj 125 396 dac~;
+#X floatatom 411 10;
+#X obj 125 341 sfread~ 2;
+#X obj 281 379 dbtorms;
+#X obj 281 279 slider 96 0 15;
+#X obj 159 372 *~ 0;
+#X obj 125 372 *~ 0;
+#X msg 125 277 open test.wav \, bang;
+#X floatatom 417 129;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 15 1;
+#X connect 5 0 15 0;
+#X connect 6 0 15 0;
+#X connect 8 0 7 0;
+#X connect 9 0 7 0;
+#X connect 10 0 7 0;
+#X connect 11 0 21 0;
+#X connect 12 0 0 0;
+#X connect 12 0 0 1;
+#X connect 12 0 11 0;
+#X connect 12 0 19 0;
+#X connect 12 0 18 0;
+#X connect 14 0 12 0;
+#X connect 15 0 19 0;
+#X connect 15 1 18 0;
+#X connect 16 0 18 1;
+#X connect 16 0 19 1;
+#X connect 18 0 13 1;
+#X connect 19 0 13 0;
+#X connect 20 0 15 0;
diff --git a/externals/build/doc/help-shell.pd b/externals/build/doc/help-shell.pd
new file mode 100644
index 00000000..767559c1
--- /dev/null
+++ b/externals/build/doc/help-shell.pd
@@ -0,0 +1,39 @@
+#N canvas 420 4 512 424 10;
+#X obj 137 98 shell;
+#X msg 36 39 ls;
+#X obj 121 165 print;
+#X msg 64 40 ls makefile;
+#X msg 330 86 date +%k%M;
+#X floatatom 330 130 4 0 0;
+#X obj 330 107 shell;
+#X text 330 68 Getting the date;
+#X msg 118 17 bang;
+#X obj 60 17 metro 10;
+#X floatatom 271 89 4 0 0;
+#X obj 53 245 shell;
+#X obj 97 306 print;
+#X msg 133 215 cvs commit -m fixed_bug_in_shell;
+#X msg 19 191 cvs -q update;
+#X obj 53 268 route ?;
+#X msg 207 147 xedit;
+#X obj 168 124 print done;
+#X msg 215 257 send sadf asdf asdf;
+#X msg 163 286 /usr/bin/perl;
+#X msg 160 41 ./test;
+#X connect 0 0 2 0;
+#X connect 0 1 17 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 6 0;
+#X connect 6 0 5 0;
+#X connect 8 0 9 0;
+#X connect 9 0 3 0;
+#X connect 10 0 11 0;
+#X connect 11 0 15 0;
+#X connect 13 0 11 0;
+#X connect 14 0 11 0;
+#X connect 15 1 12 0;
+#X connect 16 0 11 0;
+#X connect 18 0 11 0;
+#X connect 19 0 11 0;
+#X connect 20 0 0 0;
diff --git a/externals/build/doc/help-shuffle.pd b/externals/build/doc/help-shuffle.pd
new file mode 100644
index 00000000..abd47a62
--- /dev/null
+++ b/externals/build/doc/help-shuffle.pd
@@ -0,0 +1,28 @@
+#N canvas 5 21 828 307 10;
+#X floatatom 170 127 4 0 0;
+#X floatatom 252 124 4 0 0;
+#X floatatom 302 124 4 0 0;
+#X floatatom 169 210 4 0 0;
+#X msg 81 83 bang;
+#X text 379 140 Argument 2: upper limit;
+#X text 378 63 Shuffle;
+#X text 379 158 Argument 3: fraction of the end of a series;
+#X text 168 94 lower;
+#X text 252 105 upper;
+#X text 302 105 frac;
+#X text 379 122 Argument 1: lower limit;
+#X text 131 105 (activate changes);
+#X text 379 176 and beginning of next (after reshuffle);
+#X text 55 47 output shuffled;
+#X text 55 65 integer series;
+#X obj 169 169 shuffle -1 5 0.25;
+#X text 379 194 where no repetitions occur (range betwwen 0 & 0.5);
+#X text 379 104 comment;
+#X text 379 86 A no-repeat random number generator;
+#X text 378 105 shuffles a nuber series;
+#X text 448 258 IM 2001;
+#X connect 0 0 16 0;
+#X connect 1 0 16 1;
+#X connect 2 0 16 2;
+#X connect 4 0 16 0;
+#X connect 16 0 3 0;
diff --git a/externals/build/doc/help-slider.pd b/externals/build/doc/help-slider.pd
new file mode 100644
index 00000000..bd216b08
--- /dev/null
+++ b/externals/build/doc/help-slider.pd
@@ -0,0 +1,30 @@
+#N canvas 465 157 666 446 12;
+#X obj 14 121 slider 127 0 15;
+#X floatatom 12 42 0 0 0;
+#X floatatom 14 319 0 0 0;
+#X text 139 188 This was instantiated with "slider 200 100";
+#X obj 14 85 random 127;
+#X obj 468 343 state sl;
+#X msg 468 283 save;
+#X msg 520 283 1;
+#X floatatom 98 296 0 0 0;
+#X obj 186 252 slider 127 0 40;
+#X text 184 231 This was instantiated with "slider 127 0 40";
+#X obj 274 333 sliderh 127 0 30;
+#X text 273 307 Same with sliderh;
+#X floatatom 274 384 5 0 0;
+#X text 126 11 Instantiate a new slider with Put->Object and type slider
+into the object. The slider takes up to 3 parameters \, the first is
+the maximum value \, the second is the minimum. The third is the width
+of the slider (contributed by Dieter <dieter@rhiz.org>. Click on the
+through to move in 0.01. Middle button jumps.;
+#X obj 12 64 metro 2;
+#X obj 98 167 slider 200 100 15;
+#X connect 0 0 2 0;
+#X connect 1 0 15 0;
+#X connect 4 0 0 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 11 0 13 0;
+#X connect 15 0 4 0;
+#X connect 16 0 8 0;
diff --git a/externals/build/doc/help-sprinkler.pd b/externals/build/doc/help-sprinkler.pd
new file mode 100644
index 00000000..6f5b3c44
--- /dev/null
+++ b/externals/build/doc/help-sprinkler.pd
@@ -0,0 +1,48 @@
+#N canvas 186 52 500 508 10;
+#X floatatom 26 36 5 0 0;
+#X symbolatom 36 100 10 0 0;
+#X text 25 309 ARGUMENTS: none;
+#X text 183 307 INLETS:;
+#X text 183 343 OUTLETS: none;
+#X text 217 161 forward lists;
+#X text 161 45 forward single floats;
+#X text 169 107 forward single symbols;
+#X text 41 379 NOTES:;
+#X text 185 321 1 - list or message of the form DST MSG;
+#X text 165 477 Bryan Jurish <moocow@ling.uni-potsdam.de>;
+#X floatatom 118 254 5 0 0;
+#X obj 54 254 pack s 0;
+#X text 175 219 dynamic destination;
+#X msg 45 153 420;
+#X obj 26 284 sprinkler;
+#X text 53 3 sprinkler : dynamic control-message dissemination;
+#X text 41 393 When a [sprinkler] object gets an input message of the
+form "DST MSG" at its inlet \, the message MSG is sent to the [receive]
+object(s) named by DST. 'sprinkler' is really only useful if you don't
+know (or don't want to know) the length and/or type(s) of your messages
+beforehand.;
+#X msg 25 59 sprinkler-help1 \$1;
+#X msg 35 121 sprinkler-help2 \$1;
+#X msg 45 177 sprinkler-help1 \$1 24 7;
+#X msg 55 209 sprinkler-help1;
+#X msg 61 231 sprinkler-help2;
+#X obj 340 42 r sprinkler-help1;
+#X obj 340 64 print sprinkler-help1;
+#X obj 340 110 r sprinkler-help2;
+#X obj 340 132 print sprinkler-help2;
+#X text 39 327 ALIASES:;
+@SPRINKLER_ALIAS_1@
+@SPRINKLER_ALIAS_2@
+#X text 135 18 @SPRINKLER_COMPAT_TEXT@;
+#X connect 0 0 18 0;
+#X connect 1 0 19 0;
+#X connect 11 0 12 1;
+#X connect 12 0 15 0;
+#X connect 14 0 20 0;
+#X connect 18 0 15 0;
+#X connect 19 0 15 0;
+#X connect 20 0 15 0;
+#X connect 21 0 12 0;
+#X connect 22 0 12 0;
+#X connect 23 0 24 0;
+#X connect 25 0 26 0;
diff --git a/externals/build/doc/help-state.pd b/externals/build/doc/help-state.pd
new file mode 100644
index 00000000..7ca95713
--- /dev/null
+++ b/externals/build/doc/help-state.pd
@@ -0,0 +1,44 @@
+#N canvas 182 231 789 437 10;
+#X obj 20 393 state;
+#X msg 20 322 save;
+#X floatatom 405 85 5 0 0;
+#X obj 552 69 ticker;
+#X obj 684 31 slider 127 0 15;
+#X obj 654 192 float;
+#X obj 654 163 toddle black 15 15;
+#X floatatom 654 221 5 0 0;
+#X text 87 10 The state object;
+#X text 7 37 With the state object settings within a patch;
+#X text 7 51 can be saved to a file. You can add a name to;
+#X text 7 66 the state (if you have several states in your;
+#X text 7 81 system this might be a good idea).;
+#X text 9 120 Note that the state object has several problems:;
+#X text 8 146 1) you can not delete "saveable objects" without;
+#X text 10 164 making the already saved states bogus;
+#X text 9 190 2) Not all the gui objects are saveable (Which is;
+#X text 8 208 good in some situations \, you might for example not
+;
+#X text 9 226 save the state selecting widget ....;
+#X text 373 8 saveable:;
+#X text 374 66 Numberboxes:;
+#X text 544 10 This is the "slider" object !!:;
+#X text 545 28 (not vslider);
+#X text 299 289 Not saveable:;
+#X obj 403 295 vsl 15 128 0 127 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 1;
+#X obj 440 318 hdl 15 1 0 8 empty empty empty 20 8 0 8 -262144 -1 -1
+0;
+#X text 605 410 (C) Guenter Geiger 2002;
+#X obj 373 141 envgen 196 106;
+#X msg 29 346 1;
+#X msg 60 346 2;
+#X msg 90 346 3;
+#X text 370 118 envgen;
+#X text 422 292 ...etc (everything from the menu except "number");
+#X connect 1 0 0 0;
+#X connect 4 0 5 1;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 28 0 0 0;
+#X connect 29 0 0 0;
+#X connect 30 0 0 0;
diff --git a/externals/build/doc/help-streamin~.pd b/externals/build/doc/help-streamin~.pd
new file mode 100644
index 00000000..e248f275
--- /dev/null
+++ b/externals/build/doc/help-streamin~.pd
@@ -0,0 +1,41 @@
+#N canvas 248 65 623 459 12;
+#X obj 49 95 print~;
+#X msg 49 67 bang;
+#X obj 27 24 streamin~ 3000;
+#X obj 132 210 streamout~;
+#X msg 132 108 disconnect;
+#X obj 372 72 osc~;
+#X obj 372 47 sig~ 220;
+#X floatatom 372 20 0 0 0;
+#X msg 285 162 format float;
+#X msg 284 184 format 16bit;
+#X text 14 432 (C) 1999 Guenter Geiger;
+#X msg 286 204 format 8bit;
+#X floatatom 132 235 0 0 0;
+#X text 21 295 The streamin~ object just takes the portnumber it is
+listening to as it's argument.;
+#X text 23 334 For help on the streamout object \, see the streamout.pd
+patch.;
+#X obj 27 159 dac~;
+#X obj 355 115 *~ 0.1;
+#X floatatom 418 88 0 0 0;
+#X floatatom 149 159 0 0 0;
+#X msg 285 252 connect gige 3001;
+#X msg 132 86 connect localhost 3000;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 2 0 15 0;
+#X connect 2 0 15 1;
+#X connect 3 0 12 0;
+#X connect 4 0 3 0;
+#X connect 5 0 16 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 3 0;
+#X connect 9 0 3 0;
+#X connect 11 0 3 0;
+#X connect 16 0 3 0;
+#X connect 17 0 16 1;
+#X connect 18 0 3 0;
+#X connect 19 0 3 0;
+#X connect 20 0 3 0;
diff --git a/externals/build/doc/help-streamout~.pd b/externals/build/doc/help-streamout~.pd
new file mode 100644
index 00000000..56b2eceb
--- /dev/null
+++ b/externals/build/doc/help-streamout~.pd
@@ -0,0 +1,49 @@
+#N canvas 45 154 820 483 12;
+#X floatatom 227 194 0 0 0;
+#X msg 46 32 disconnect;
+#X obj 368 72 osc~;
+#X floatatom 368 20 0 0 0;
+#X obj 368 44 sig~ 220;
+#X text 13 239 The format message sets the transmission format;
+#X text 11 419 Hopefully we will sometimes have a version where we can compress it for transmission over the "real" net.;
+#X text 14 462 (C) 1999 Guenter Geiger;
+#X obj 455 21 streamin~ 3001;
+#X obj 448 78 dac~;
+#X msg 156 68 connect tritonus 3000;
+#X msg 20 113 format float;
+#X msg 20 144 format 16bit;
+#X text 13 256 format float: send float numbers;
+#X text 12 275 format 16bit: send 16 bit integers;
+#X msg 20 176 format 8bit;
+#X text 380 246 host:;
+#X text 13 219 format:;
+#X obj 227 162 streamout~ localhost 3000;
+#X text 379 193 connect:;
+#X text 378 210 connect sets the host and portnumber and immediatly tries to connect .;
+#X text 380 263 Set the host name and connect to the host \, if a connection was active.;
+#X msg 250 100 1;
+#X msg 284 100 0;
+#X text 379 298 disconnect (0);
+#X text 378 315 disconnect and 0 disconnect the object;
+#X text 379 335 1:;
+#X text 376 352 if the number 1 is sent to streamout \, the object connects to the stored host and portnumber. Default is localhost \, port number 3000;
+#X obj 366 107 *~ 0.01;
+#X msg 179 12 connect gige 15001;
+#X msg 156 37 connect localhost 3001;
+#X text 12 292 format 8bit: send 8 bit integers;
+#X connect 1 0 18 0;
+#X connect 2 0 28 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 8 0 9 0;
+#X connect 8 0 9 1;
+#X connect 10 0 18 0;
+#X connect 11 0 18 0;
+#X connect 12 0 18 0;
+#X connect 15 0 18 0;
+#X connect 18 0 0 0;
+#X connect 22 0 18 0;
+#X connect 23 0 18 0;
+#X connect 28 0 18 0;
+#X connect 29 0 18 0;
+#X connect 30 0 18 0;
diff --git a/externals/build/doc/help-stripdir.pd b/externals/build/doc/help-stripdir.pd
new file mode 100644
index 00000000..1d200a80
--- /dev/null
+++ b/externals/build/doc/help-stripdir.pd
@@ -0,0 +1,7 @@
+#N canvas 231 207 452 294 10;
+#X obj 22 78 stripdir;
+#X symbolatom 22 48 0 0 0;
+#X obj 22 105 print;
+#X text 20 22 strips all leading directories from a path;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
diff --git a/externals/build/doc/help-susloop~.pd b/externals/build/doc/help-susloop~.pd
new file mode 100644
index 00000000..bce37913
--- /dev/null
+++ b/externals/build/doc/help-susloop~.pd
@@ -0,0 +1,102 @@
+#N canvas 236 83 735 643 10;
+#N canvas 0 0 450 300 graph1 0;
+#X array sample 86754 float 0;
+#X coords 0 1 86753 -1 200 64 1;
+#X restore 441 412 graph;
+#X obj 480 341 soundfiler;
+#X msg 480 315 read -resize \$1 sample;
+#X obj 480 289 openpanel;
+#X obj 480 267 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X obj 8 513 dac~;
+#X floatatom 69 489 5 0 0;
+#X obj 69 513 / 100;
+#X obj 8 450 tabread4~ sample;
+#X obj 8 481 *~;
+#X floatatom 127 272 5 0 0;
+#X obj 127 310 mtosr 44100;
+#X msg 17 271 type 0;
+#X msg 17 299 type 1;
+#X msg 176 272 44100;
+#X floatatom 322 380 5 0 0;
+#X floatatom 179 380 6 0 0;
+#X floatatom 245 380 6 0 0;
+#X obj 88 271 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X text 514 265 <- load a sample;
+#X text 421 230 Ben Saylor - bsaylor@macalester.edu;
+#X msg 124 489 70;
+#X obj 156 489 loadbang;
+#X text 54 45 optional creation args:;
+#X text 239 45 [loopstart loopend [looptype [startpos]]];
+#X text 172 336 loopstart;
+#X text 242 337 loopend;
+#X text 319 338 startpos;
+#X text 38 154 <looptype> is 0 for a forward loop (default) and 1 for
+a pingpong loop.;
+#X text 40 193 Playback speed is in samples/sec - send a float or signal
+to the left inlet.;
+#X text 10 7 susloop~ - another phase generator for sample looping
+;
+#X obj 127 414 susloop~ 4000 12000;
+#X text 37 94 When the left inlet gets a bang \, the phase output will
+start at <startpos> (defaults to 0) \, continue until it reaches <loopend>
+\, and then start looping between <loopstart> and <loopend>.;
+#X floatatom 480 366 5 0 0;
+#X obj 442 480 hsl 200 15 0 1 0 0 empty empty loop_start 10 8 0 8 -195568
+-33289 -33289 13700 0;
+#X obj 442 499 hsl 200 15 0 1 0 0 empty empty loop_end 10 8 0 8 -233017
+-1 -1 16900 0;
+#X obj 250 565 *;
+#X obj 293 565 *;
+#X obj 293 589 int;
+#X obj 250 589 int;
+#X obj 531 366 s filesize;
+#X obj 266 501 r filesize;
+#X obj 229 616 s lstart;
+#X obj 293 615 s lend;
+#X obj 245 356 r lend;
+#X obj 179 358 r lstart;
+#X obj 442 516 hsl 200 15 0 1 0 0 empty empty start 10 8 0 8 -262144
+-1 -1 0 0;
+#X obj 346 567 *;
+#X obj 346 591 int;
+#X obj 346 616 s start;
+#X obj 322 356 r start;
+#X connect 1 0 33 0;
+#X connect 1 0 40 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 6 0 7 0;
+#X connect 7 0 9 1;
+#X connect 8 0 9 0;
+#X connect 9 0 5 0;
+#X connect 9 0 5 1;
+#X connect 10 0 11 0;
+#X connect 11 0 31 0;
+#X connect 12 0 31 0;
+#X connect 13 0 31 0;
+#X connect 14 0 31 0;
+#X connect 15 0 31 3;
+#X connect 16 0 31 1;
+#X connect 17 0 31 2;
+#X connect 18 0 31 0;
+#X connect 21 0 7 0;
+#X connect 22 0 21 0;
+#X connect 31 0 8 0;
+#X connect 34 0 36 0;
+#X connect 35 0 37 0;
+#X connect 36 0 39 0;
+#X connect 37 0 38 0;
+#X connect 38 0 43 0;
+#X connect 39 0 42 0;
+#X connect 41 0 36 1;
+#X connect 41 0 37 1;
+#X connect 41 0 47 1;
+#X connect 44 0 17 0;
+#X connect 45 0 16 0;
+#X connect 46 0 47 0;
+#X connect 47 0 48 0;
+#X connect 48 0 49 0;
+#X connect 50 0 15 0;
diff --git a/externals/build/doc/help-system.pd b/externals/build/doc/help-system.pd
new file mode 100644
index 00000000..867fee19
--- /dev/null
+++ b/externals/build/doc/help-system.pd
@@ -0,0 +1,8 @@
+#N canvas 131 96 450 300 10;
+#X obj 151 137 system;
+#X text 47 33 send a system message to the console;
+#X msg 113 72 echo "Hello my name is" $USERNAME;
+#X msg 160 102 ps -ef | grep $USERNAME;
+#X text 242 186 IM 2001;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
diff --git a/externals/build/doc/help-tabreadmix~.pd b/externals/build/doc/help-tabreadmix~.pd
new file mode 100644
index 00000000..aad25abd
--- /dev/null
+++ b/externals/build/doc/help-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/help-ticker.pd b/externals/build/doc/help-ticker.pd
new file mode 100644
index 00000000..ca33386d
--- /dev/null
+++ b/externals/build/doc/help-ticker.pd
@@ -0,0 +1,10 @@
+#N canvas 392 208 450 300 10;
+#X obj 60 85 metro 200;
+#X obj 60 41 ticker;
+#X obj 60 129 ticker;
+#X obj 119 130 ticker;
+#X floatatom 60 171 5 0 0;
+#X connect 0 0 2 0;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
diff --git a/externals/build/doc/help-unwonk.pd b/externals/build/doc/help-unwonk.pd
new file mode 100644
index 00000000..2769a1e1
--- /dev/null
+++ b/externals/build/doc/help-unwonk.pd
@@ -0,0 +1,36 @@
+#N canvas 273 9 542 405 10;
+#X obj 53 134 unwonk;
+#X obj 211 246 print;
+#X floatatom 39 175;
+#X floatatom 65 175;
+#X obj 144 179 unwonk 1 2 3;
+#X floatatom 119 223;
+#X floatatom 145 223;
+#X floatatom 171 223;
+#X msg 30 100 1 2 3 4 5 6 7 8;
+#X obj 30 267 unwonk 1 2 3 4 5 6 7 8 9;
+#X floatatom 27 310;
+#X floatatom 53 310;
+#X floatatom 79 310;
+#X floatatom 105 311;
+#X floatatom 131 311;
+#X floatatom 157 311;
+#X text 25 364 (C) 1999 Guenter Geiger;
+#X text 27 24 unwonk is an unpack which sends;
+#X text 27 41 unused symbols to the last outlet;
+#X text 25 59 instead of discarding them;
+#X connect 0 0 2 0;
+#X connect 0 1 3 0;
+#X connect 0 2 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
+#X connect 4 2 7 0;
+#X connect 4 3 1 0;
+#X connect 8 0 0 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 9 2 12 0;
+#X connect 9 3 13 0;
+#X connect 9 4 14 0;
+#X connect 9 5 15 0;
diff --git a/externals/build/doc/help-vbap.pd b/externals/build/doc/help-vbap.pd
new file mode 100644
index 00000000..7a1f9794
--- /dev/null
+++ b/externals/build/doc/help-vbap.pd
@@ -0,0 +1,52 @@
+#N canvas 91 360 949 493 10;
+#X obj 112 257 vbap 0 0;
+#X obj 134 319 print;
+#X obj 62 113 define_loudspeakers 3 -45 0 45 0 0 45 180 45;
+#X msg 62 87 bang;
+#X text 442 79 1 Use define_loudspeakers to list the speaker positions.
+The example here defines loudspeakers in three dimensions (the first
+parameter). For each speaker \, define its azimuth and elevation. Here
+we have speakers front left and right with no elevation (-45 0 45 0)
+and front and back with 45 degrees of elevation (0 45 180 45). Send
+the data to vbap.;
+#X floatatom 129 223 5 0 0;
+#X floatatom 173 223 5 0 0;
+#X floatatom 217 223 5 0 0;
+#X msg 112 179 bang;
+#X obj 112 356 route 0 1 2 3;
+#X floatatom 112 415 10 0 0;
+#X floatatom 191 415 10 0 0;
+#X floatatom 270 415 10 0 0;
+#X floatatom 349 415 10 0 0;
+#X text 442 169 In two dimensions \, only specify the azimuth. (for
+example "define_loudspeakers 2 -45 45 0 180";
+#X text 151 201 azimuth \, elevation and spread;
+#X text 444 352 For an example of how to use vbap with matrix~ from
+zexy-library \, see vbap-demo.pd.;
+#X text 63 21 VBAP and define_loudspeakers;
+#X text 444 300 The spread-parameter can be used to prevent a situation
+where sound is coming from one speaker only \, which would make speaker
+positions "visible". The range is 0 to 100;
+#X floatatom 152 286 5 0 0;
+#X floatatom 196 286 5 0 0;
+#X floatatom 240 286 5 0 0;
+#X text 178 306 actual location;
+#X text 444 222 2 For vbap \, give azimuth and elevation for the desired
+location. Bang the first inlet and vbap will output gain-factors for
+each speaker and the actual location produced. This can be different
+from the desired one depending where your speakers are.;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 0 1 19 0;
+#X connect 0 2 20 0;
+#X connect 0 3 21 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 5 0 0 1;
+#X connect 6 0 0 2;
+#X connect 7 0 0 3;
+#X connect 8 0 0 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 9 2 12 0;
+#X connect 9 3 13 0;
diff --git a/externals/build/doc/help-xfm~.pd b/externals/build/doc/help-xfm~.pd
new file mode 100644
index 00000000..6b59329e
--- /dev/null
+++ b/externals/build/doc/help-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;
diff --git a/externals/build/doc/help_rhythm.pd b/externals/build/doc/help_rhythm.pd
new file mode 100644
index 00000000..a300d78e
--- /dev/null
+++ b/externals/build/doc/help_rhythm.pd
@@ -0,0 +1,3 @@
+#N canvas 0 0 450 300 10;
+#X obj 105 105 rhythm;
+#X text 48 31 TODO;
diff --git a/externals/build/doc/polygate~.pd b/externals/build/doc/polygate~.pd
new file mode 100644
index 00000000..90daa984
--- /dev/null
+++ b/externals/build/doc/polygate~.pd
@@ -0,0 +1,251 @@
+#N canvas 25 21 986 603 10;
+#X obj 162 342 s tone1;
+#N canvas 78 354 600 400 tone2 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 140 r tone2;
+#X obj 123 161 osc~ 100;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 146 148 pd tone2;
+#N canvas 0 0 600 400 tone3 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 141 r tone3;
+#X obj 123 161 osc~ 150;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 201 148 pd tone3;
+#N canvas 32 253 600 400 tone4 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 141 r tone4;
+#X obj 129 162 osc~ 200;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 256 148 pd tone4;
+#N canvas 0 0 600 400 tone5 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 141 r tone5;
+#X obj 121 160 osc~ 250;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 313 148 pd tone5;
+#X obj 216 342 s tone2;
+#X obj 267 342 s tone3;
+#X obj 317 342 s tone4;
+#X obj 368 342 s tone5;
+#X text 312 -14 argument 2: fade time in msec;
+#X text 312 -34 argument 1: number of input channels (1-10);
+#X text 427 357 switch tones on & off when needed;
+#X msg -116 415 \; pd dsp 1;
+#X msg -48 416 \; pd dsp 0;
+#X text -103 449 ON;
+#X text -30 450 OFF;
+#N canvas 29 106 600 400 tone6 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 124 162 osc~ 300;
+#X obj 265 140 r tone6;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X restore 372 148 pd tone6;
+#N canvas 0 0 600 400 tone7 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 140 r tone7;
+#X obj 124 162 osc~ 350;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 427 148 pd tone7;
+#N canvas 0 0 600 400 tone8 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 141 r tone8;
+#X obj 123 162 osc~ 400;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 482 148 pd tone8;
+#N canvas 32 253 600 400 tone9 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 141 r tone9;
+#X obj 129 162 osc~ 450;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 537 148 pd tone9;
+#N canvas 0 0 600 400 tone10 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 141 r tone10;
+#X obj 123 162 osc~ 500;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 594 148 pd tone10;
+#X obj 162 365 s tone6;
+#X obj 216 365 s tone7;
+#X obj 267 365 s tone8;
+#X obj 317 365 s tone9;
+#X obj 368 365 s tone10;
+#X floatatom -90 333 0 0 0;
+#N canvas 159 26 495 270 output 0;
+#X obj 338 160 t b;
+#X obj 338 110 f;
+#X obj 338 60 inlet;
+#X text 344 29 mute;
+#X obj 338 185 f;
+#X msg 425 178 0;
+#X msg 338 85 bang;
+#X obj 338 135 moses 1;
+#X obj 425 153 t b f;
+#X obj 397 117 moses 1;
+#X obj 83 148 dbtorms;
+#X obj 397 92 r master-lvl;
+#X obj 83 42 r master-lvl;
+#X obj 338 210 s master-lvl;
+#X obj 22 182 inlet~;
+#X obj 199 41 inlet;
+#X text 199 18 level;
+#X obj 199 100 s master-lvl;
+#X msg 96 65 set \$1;
+#X obj 96 89 outlet;
+#X msg 214 64 \; pd dsp 1;
+#X obj 83 194 line~;
+#X obj 22 212 *~;
+#X obj 22 241 dac~;
+#X obj 83 171 pack 0 50;
+#X text 20 159 audio;
+#X text 93 110 show level;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 0;
+#X connect 6 0 1 0;
+#X connect 7 0 0 0;
+#X connect 7 1 8 0;
+#X connect 8 0 5 0;
+#X connect 9 1 4 1;
+#X connect 10 0 24 0;
+#X connect 11 0 1 1;
+#X connect 11 0 9 0;
+#X connect 12 0 10 0;
+#X connect 12 0 18 0;
+#X connect 14 0 22 0;
+#X connect 15 0 17 0;
+#X connect 15 0 20 0;
+#X connect 18 0 19 0;
+#X connect 21 0 22 1;
+#X connect 22 0 23 0;
+#X connect 22 0 23 1;
+#X connect 24 0 21 0;
+#X restore -118 385 pd output;
+#X msg -70 355 MUTE;
+#X text -61 332 <-- output amplitude;
+#N canvas 0 0 600 400 tone1 0;
+#X obj 124 205 outlet~;
+#X obj 258 182 switch~ 0;
+#X obj 266 141 r tone1;
+#X obj 124 162 osc~ 50;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 91 148 pd tone1;
+#X text 312 6 argument 3: (optional) "linear";
+#X text 312 -54 polygate~ - switch between signal inputs;
+#X text 312 26 If 3rd argument isn't specified \, polygate~ will;
+#X text 312 46 perform equal-power crossfades between inputs;
+#X text 25 95 zero = off;
+#X obj -183 355 loadbang;
+#X msg -183 378 86;
+#X floatatom -220 72 8 0 0;
+#X floatatom -19 90 4 0 10;
+#X msg -19 113 choice \$1;
+#X floatatom -216 207 8 0 0;
+#X msg -220 110 ftime-epower \$1;
+#X msg -216 239 ftime-linear \$1;
+#X text -220 38 change fade-time;
+#X text -220 51 equal power;
+#X text -218 172 change fade-time;
+#X text -218 185 linear;
+#X obj -19 -9 metro 80;
+#X floatatom -19 -30 4 0 0;
+#X floatatom 36 -29 4 0 0;
+#X msg 75 -26 1000;
+#X floatatom -237 8 8 0 0;
+#X obj -19 14 shuffle 1 10 0.25;
+#X msg -252 -26 200;
+#X msg -218 -25 199;
+#X msg 28 -59 80;
+#X msg -234 -53 300;
+#X msg -170 -61 3000;
+#X msg -211 -87 22;
+#X msg -133 207 22;
+#X msg -204 -65 198;
+#X msg -257 -87 170;
+#X msg -185 -100 22;
+#X obj 191 280 polygate~ 10 200;
+#X obj 388 277 polygate~ 4 8000 linear;
+#X text 533 276 example with linear startup;
+#X text 26 83 change input channel 1- 10;
+#X msg -99 212 3000;
+#X text 424 436 IM 2001;
+#X msg -162 -86 1000;
+#X obj -87 -40 vslider 15 128 0 10 0 1 choice aaa choice 8 -8 1 10 8 18 18 5300;
+#X msg -160 -39 10000;
+#X floatatom 163 61 4 0 10;
+#X obj 142 31 r choice;
+#X connect 1 0 64 1;
+#X connect 2 0 64 2;
+#X connect 3 0 64 3;
+#X connect 4 0 64 4;
+#X connect 16 0 64 5;
+#X connect 17 0 64 6;
+#X connect 18 0 64 7;
+#X connect 19 0 64 8;
+#X connect 20 0 64 9;
+#X connect 26 0 27 1;
+#X connect 27 0 26 0;
+#X connect 28 0 27 2;
+#X connect 30 0 64 0;
+#X connect 36 0 37 0;
+#X connect 37 0 26 0;
+#X connect 37 0 12 0;
+#X connect 38 0 42 0;
+#X connect 39 0 40 0;
+#X connect 40 0 64 0;
+#X connect 41 0 43 0;
+#X connect 42 0 64 0;
+#X connect 43 0 64 0;
+#X connect 48 0 53 0;
+#X connect 49 0 48 0;
+#X connect 50 0 48 1;
+#X connect 51 0 48 1;
+#X connect 52 0 42 0;
+#X connect 53 0 39 0;
+#X connect 54 0 52 0;
+#X connect 55 0 52 0;
+#X connect 56 0 48 1;
+#X connect 57 0 52 0;
+#X connect 58 0 52 0;
+#X connect 59 0 52 0;
+#X connect 60 0 43 0;
+#X connect 61 0 52 0;
+#X connect 62 0 52 0;
+#X connect 63 0 52 0;
+#X connect 64 0 27 0;
+#X connect 64 1 0 0;
+#X connect 64 2 5 0;
+#X connect 64 3 6 0;
+#X connect 64 4 7 0;
+#X connect 64 5 8 0;
+#X connect 64 6 21 0;
+#X connect 64 7 22 0;
+#X connect 64 8 23 0;
+#X connect 64 9 24 0;
+#X connect 64 10 25 0;
+#X connect 68 0 43 0;
+#X connect 70 0 52 0;
+#X connect 71 0 39 0;
+#X connect 72 0 52 0;
+#X connect 74 0 73 0;