aboutsummaryrefslogtreecommitdiff
path: root/desiredata/doc/7.stuff/soundfile-tools
diff options
context:
space:
mode:
Diffstat (limited to 'desiredata/doc/7.stuff/soundfile-tools')
-rw-r--r--desiredata/doc/7.stuff/soundfile-tools/1.ring-mod.pd189
-rw-r--r--desiredata/doc/7.stuff/soundfile-tools/2.bandpass.pd202
-rw-r--r--desiredata/doc/7.stuff/soundfile-tools/3.phase.vocoder.pd551
-rw-r--r--desiredata/doc/7.stuff/soundfile-tools/4.looper.pd338
-rw-r--r--desiredata/doc/7.stuff/soundfile-tools/5.reverb.pd214
-rw-r--r--desiredata/doc/7.stuff/soundfile-tools/6.vocoder.pd314
-rw-r--r--desiredata/doc/7.stuff/soundfile-tools/README.txt2
7 files changed, 1810 insertions, 0 deletions
diff --git a/desiredata/doc/7.stuff/soundfile-tools/1.ring-mod.pd b/desiredata/doc/7.stuff/soundfile-tools/1.ring-mod.pd
new file mode 100644
index 00000000..72fb9c7f
--- /dev/null
+++ b/desiredata/doc/7.stuff/soundfile-tools/1.ring-mod.pd
@@ -0,0 +1,189 @@
+#N canvas 73 28 687 421 12;
+#N canvas 213 187 495 352 input-sample 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 91065 float 0;
+#X coords 0 1 91065 -1 400 300 1;
+#X restore 56 23 graph;
+#X text 151 393 INPUT SAMPLE;
+#X restore 179 299 pd input-sample;
+#N canvas 192 180 507 343 output-sample 0;
+#N canvas 0 0 450 300 graph2 0;
+#X array array2 95475 float 0;
+#X coords 0 1 95475 -1 400 300 1;
+#X restore 60 13 graph;
+#X text 161 388 OUTPUT SAMPLE;
+#X restore 179 323 pd output-sample;
+#N canvas 110 33 827 602 guts 0;
+#X msg 25 133 bang;
+#X obj 25 360 openpanel;
+#X obj 144 31 inlet;
+#X obj 441 403 dac~;
+#X obj 441 342 *~;
+#X obj 456 318 line~;
+#X obj 456 296 r master-amp;
+#X msg 597 130 bang;
+#X obj 597 155 savepanel;
+#X obj 231 164 spigot;
+#X msg 233 132 0;
+#X msg 265 132 1;
+#X obj 497 427 outlet;
+#X obj 299 132 r frequency;
+#X obj 219 321 tabwrite~ array2;
+#X msg 219 193 bang;
+#X obj 420 289 +~;
+#X msg 96 129 \; pd dsp 1;
+#X obj 441 370 hip~ 7;
+#X obj 231 223 tabplay~ array1;
+#X msg 439 131 bang;
+#X obj 439 160 tabplay~ array2;
+#X msg 597 180 write \$1 array2;
+#X obj 597 205 soundfiler;
+#X obj 144 53 route read run start hear save;
+#N canvas 0 0 368 263 audio-transformation 0;
+#X obj 113 95 osc~;
+#X obj 97 116 *~;
+#X obj 97 138 hip~ 7;
+#X obj 113 71 r frequency;
+#X obj 97 22 inlet~;
+#X obj 97 169 outlet~;
+#X obj 97 47 hip~ 7;
+#X connect 0 0 1 1;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 3 0 0 0;
+#X connect 4 0 6 0;
+#X connect 6 0 1 0;
+#X restore 231 251 pd audio-transformation;
+#X obj 497 402 env~ 16384;
+#X obj 570 91 route normalized;
+#X msg 571 300 write -normalize \$1 array2;
+#X msg 571 250 bang;
+#X obj 571 276 savepanel;
+#X obj 571 325 soundfiler;
+#X obj 25 413 soundfiler;
+#X msg 25 390 read -resize -maxsize 1e+06 \$1 array1;
+#X msg 25 460 \; array2 resize \$1;
+#X obj 25 437 + 4410;
+#X floatatom 96 436 0 0 0;
+#X connect 0 0 1 0;
+#X connect 1 0 33 0;
+#X connect 2 0 24 0;
+#X connect 4 0 18 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 22 0;
+#X connect 9 0 10 0;
+#X connect 9 0 15 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 13 0 9 0;
+#X connect 15 0 14 0;
+#X connect 15 0 19 0;
+#X connect 16 0 4 0;
+#X connect 18 0 3 0;
+#X connect 18 0 3 1;
+#X connect 18 0 26 0;
+#X connect 19 0 25 0;
+#X connect 20 0 21 0;
+#X connect 21 0 16 1;
+#X connect 22 0 23 0;
+#X connect 24 0 0 0;
+#X connect 24 1 15 0;
+#X connect 24 1 10 0;
+#X connect 24 1 17 0;
+#X connect 24 2 11 0;
+#X connect 24 2 17 0;
+#X connect 24 3 20 0;
+#X connect 24 4 27 0;
+#X connect 25 0 14 0;
+#X connect 25 0 16 0;
+#X connect 26 0 12 0;
+#X connect 27 0 29 0;
+#X connect 27 1 7 0;
+#X connect 28 0 31 0;
+#X connect 29 0 30 0;
+#X connect 30 0 28 0;
+#X connect 32 0 35 0;
+#X connect 32 0 36 0;
+#X connect 33 0 32 0;
+#X connect 35 0 34 0;
+#X restore 28 265 pd guts;
+#X msg 28 155 run the transformation;
+#X msg 28 199 hear the output buffer again;
+#X text 28 113 click below to:;
+#X msg 28 221 save the output buffer;
+#X floatatom 404 257 0 0 0;
+#N canvas 194 37 397 591 output 0;
+#X obj 66 203 t b;
+#X obj 66 152 f;
+#X obj 66 102 inlet;
+#X text 71 81 mute;
+#X obj 66 228 f;
+#X msg 134 244 0;
+#X msg 66 127 bang;
+#X obj 66 178 moses 1;
+#X obj 134 218 t b f;
+#X obj 96 442 outlet;
+#X msg 96 416 set \$1;
+#X obj 186 163 moses 1;
+#X obj 224 444 dbtorms;
+#X obj 224 469 pack 0 100;
+#X obj 186 138 r master-lvl;
+#X obj 96 382 r master-lvl;
+#X obj 83 286 s master-lvl;
+#X obj 224 494 s master-amp;
+#X obj 208 244 loadbang;
+#X msg 208 269 \; master-lvl 90;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 16 0;
+#X connect 5 0 16 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 10 0 9 0;
+#X connect 11 1 4 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 14 0 1 1;
+#X connect 14 0 11 0;
+#X connect 15 0 10 0;
+#X connect 15 0 12 0;
+#X connect 18 0 19 0;
+#X restore 404 235 pd output;
+#X msg 404 213 mute;
+#X obj 404 279 s master-lvl;
+#X text 448 212 <-- mute button;
+#X msg 28 177 start transformation when I change frequency;
+#X floatatom 392 117 0 0 0;
+#X obj 392 139 s frequency;
+#X text 392 97 modulation frequency (Hz.);
+#X floatatom 28 287 0 0 0;
+#X text 10 330 100 maximum;
+#X text 10 311 output meter;
+#X text 429 115 <--set me;
+#X text 443 255 <--set me;
+#X msg 28 133 read an input file;
+#X msg 28 243 save normalized to max amplitude;
+#X text 29 8 Ring modulator. Read in a sample first \, then you can
+either set a frequency and hit the "run" button or else hit the "start..."
+button and start the transformation by dragging on the frequency control.
+The output level should be "100" for unit gain.;
+#X text 22 361 Outputs are saved as "wav" files \, although you can
+edit the patch to make "aiff" or "nextstep" instead. Any of the three
+are OK for source files.;
+#X text 397 302 LINE OUT LEVEL in dB (100 max);
+#X connect 2 0 16 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 10 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 12 0 2 0;
+#X connect 13 0 14 0;
+#X connect 21 0 2 0;
+#X connect 22 0 2 0;
diff --git a/desiredata/doc/7.stuff/soundfile-tools/2.bandpass.pd b/desiredata/doc/7.stuff/soundfile-tools/2.bandpass.pd
new file mode 100644
index 00000000..c75335eb
--- /dev/null
+++ b/desiredata/doc/7.stuff/soundfile-tools/2.bandpass.pd
@@ -0,0 +1,202 @@
+#N canvas 73 28 846 432 12;
+#N canvas 213 187 495 352 input-sample 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 155948 float 0;
+#X coords 0 1 155948 -1 400 300 1;
+#X restore 55 22 graph;
+#X text 149 386 INPUT SAMPLE;
+#X restore 238 282 pd input-sample;
+#N canvas 192 180 507 343 output-sample 0;
+#N canvas 0 0 450 300 graph2 0;
+#X array array2 160358 float 0;
+#X coords 0 1 160358 -1 400 300 1;
+#X restore 59 13 graph;
+#X text 158 381 OUTPUT SAMPLE;
+#X restore 237 305 pd output-sample;
+#N canvas 116 150 735 425 guts 0;
+#X msg 25 131 bang;
+#X obj 25 354 openpanel;
+#X obj 142 31 inlet;
+#X obj 458 378 dac~;
+#X obj 458 335 *~;
+#X obj 473 312 line~;
+#X obj 473 290 r master-amp;
+#X msg 726 87 bang;
+#X obj 726 109 savepanel;
+#X obj 275 165 spigot;
+#X msg 260 131 0;
+#X msg 291 131 1;
+#X obj 513 408 outlet;
+#X obj 324 131 r frequency;
+#X obj 263 320 tabwrite~ array2;
+#X msg 263 194 bang;
+#X obj 438 283 +~;
+#X msg 143 131 \; pd dsp 1;
+#X obj 458 356 hip~ 7;
+#X obj 275 223 tabplay~ array1;
+#X msg 453 127 bang;
+#X obj 453 149 tabplay~ array2;
+#X msg 726 130 write \$1 array2;
+#X obj 726 151 soundfiler;
+#X obj 142 52 route read run start hear save;
+#N canvas 0 0 368 259 audio-transformation 0;
+#X obj 111 70 r frequency;
+#X obj 96 21 inlet~;
+#X obj 96 178 outlet~;
+#X obj 179 123 r q;
+#X obj 111 94 pack 0 100;
+#X obj 110 119 line~;
+#X obj 96 153 vcf~;
+#X connect 0 0 4 0;
+#X connect 1 0 6 0;
+#X connect 3 0 6 2;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 2 0;
+#X restore 275 244 pd audio-transformation;
+#X obj 513 387 env~ 16384;
+#X obj 585 88 route normalized;
+#X msg 585 184 write -normalize \$1 array2;
+#X msg 585 142 bang;
+#X obj 585 163 savepanel;
+#X obj 585 209 soundfiler;
+#X obj 25 406 soundfiler;
+#X msg 25 383 read -resize -maxsize 1e+06 \$1 array1;
+#X msg 25 452 \; array2 resize \$1;
+#X obj 25 430 + 4410;
+#X floatatom 94 428 0 0 0;
+#X obj 413 132 r q;
+#X connect 0 0 1 0;
+#X connect 1 0 33 0;
+#X connect 2 0 24 0;
+#X connect 4 0 18 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 22 0;
+#X connect 9 0 10 0;
+#X connect 9 0 15 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 13 0 9 0;
+#X connect 15 0 14 0;
+#X connect 15 0 19 0;
+#X connect 16 0 4 0;
+#X connect 18 0 3 0;
+#X connect 18 0 3 1;
+#X connect 18 0 26 0;
+#X connect 19 0 25 0;
+#X connect 20 0 21 0;
+#X connect 21 0 16 1;
+#X connect 22 0 23 0;
+#X connect 24 0 0 0;
+#X connect 24 1 15 0;
+#X connect 24 1 10 0;
+#X connect 24 1 17 0;
+#X connect 24 2 11 0;
+#X connect 24 2 17 0;
+#X connect 24 3 20 0;
+#X connect 24 4 27 0;
+#X connect 25 0 14 0;
+#X connect 25 0 16 0;
+#X connect 26 0 12 0;
+#X connect 27 0 29 0;
+#X connect 27 1 7 0;
+#X connect 28 0 31 0;
+#X connect 29 0 30 0;
+#X connect 30 0 28 0;
+#X connect 32 0 35 0;
+#X connect 32 0 36 0;
+#X connect 33 0 32 0;
+#X connect 35 0 34 0;
+#X connect 37 0 9 0;
+#X restore 34 236 pd guts;
+#X msg 34 131 run the transformation;
+#X msg 34 173 hear the output buffer again;
+#X text 34 91 click below to:;
+#X msg 34 194 save the output buffer;
+#X floatatom 562 334 0 0 120;
+#N canvas 194 37 397 591 output 0;
+#X obj 65 199 t b;
+#X obj 65 150 f;
+#X obj 65 100 inlet;
+#X text 70 79 mute;
+#X obj 65 224 f;
+#X msg 132 240 0;
+#X msg 65 125 bang;
+#X obj 65 175 moses 1;
+#X obj 132 215 t b f;
+#X obj 94 434 outlet;
+#X msg 94 409 set \$1;
+#X obj 183 160 moses 1;
+#X obj 221 437 dbtorms;
+#X obj 221 461 pack 0 100;
+#X obj 183 136 r master-lvl;
+#X obj 94 375 r master-lvl;
+#X obj 81 281 s master-lvl;
+#X obj 221 486 s master-amp;
+#X obj 204 240 loadbang;
+#X msg 204 264 \; master-lvl 90;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 16 0;
+#X connect 5 0 16 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 10 0 9 0;
+#X connect 11 1 4 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 14 0 1 1;
+#X connect 14 0 11 0;
+#X connect 15 0 10 0;
+#X connect 15 0 12 0;
+#X connect 18 0 19 0;
+#X restore 562 313 pd output;
+#X msg 562 292 mute;
+#X obj 562 355 s master-lvl;
+#X text 604 291 <-- mute button;
+#X floatatom 34 257 0 0 0;
+#X text 35 300 100 maximum;
+#X text 35 282 output meter;
+#X text 600 335 <--set me;
+#X msg 34 110 read an input file;
+#X msg 34 215 save normalized to max amplitude;
+#X msg 34 152 start transformation when I change f or q;
+#X floatatom 479 164 0 0 0;
+#X obj 479 185 s frequency;
+#X text 479 85 center;
+#X floatatom 482 229 0 0 10000;
+#X text 482 210 "q";
+#X obj 482 252 s q;
+#X obj 479 143 mtof;
+#X floatatom 479 122 0 0 128;
+#X text 536 163 <- set in Hz;
+#X text 533 230 <--set selectivity;
+#X text 479 103 frequency;
+#X text 534 123 <- set in MIDI units;
+#X text 31 341 Note -- you can shift-click on the controls to change
+them in hundredths. You can also click and type numbers in \, followed
+by the "enter" key.;
+#X text 16 5 Bandpass filter. Read in a sample first \, then you can
+either set a frequency and hit the "run" button or else hit the "start..."
+button and start the transformation by dragging on the frequency or
+q control.;
+#X text 552 377 OUTPUT LEVEL in dB (100 norm);
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 10 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 16 0 2 0;
+#X connect 17 0 2 0;
+#X connect 18 0 2 0;
+#X connect 19 0 20 0;
+#X connect 22 0 24 0;
+#X connect 25 0 19 0;
+#X connect 26 0 25 0;
diff --git a/desiredata/doc/7.stuff/soundfile-tools/3.phase.vocoder.pd b/desiredata/doc/7.stuff/soundfile-tools/3.phase.vocoder.pd
new file mode 100644
index 00000000..b69d5e86
--- /dev/null
+++ b/desiredata/doc/7.stuff/soundfile-tools/3.phase.vocoder.pd
@@ -0,0 +1,551 @@
+#N canvas 223 113 913 495 12;
+#X floatatom 457 258 0 0 0;
+#X floatatom 793 114 0 0 0;
+#X floatatom 654 114 0 0 0;
+#N canvas 249 280 600 398 loc&precess 0;
+#X floatatom 218 312 0 0 0;
+#X msg 369 239 set \$1;
+#X obj 367 282 outlet;
+#X obj 114 364 outlet;
+#X obj 233 96 r location;
+#X msg 113 321 set \$1;
+#X obj 368 203 r speed;
+#X obj 75 95 r see-location;
+#X obj 92 139 t b f;
+#X obj 113 292 f;
+#X obj 73 173 int;
+#X obj 73 206 sel 0;
+#X msg 209 139 1;
+#X msg 275 138 0;
+#X obj 150 245 del 300;
+#X connect 1 0 2 0;
+#X connect 4 0 8 0;
+#X connect 5 0 3 0;
+#X connect 6 0 1 0;
+#X connect 7 0 8 0;
+#X connect 8 0 10 0;
+#X connect 8 1 9 1;
+#X connect 9 0 5 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 0 14 0;
+#X connect 12 0 10 1;
+#X connect 13 0 10 1;
+#X connect 14 0 13 0;
+#X connect 14 0 9 0;
+#X restore 654 91 pd loc&precess;
+#N canvas 0 0 600 400 setlocprecess 0;
+#X obj 235 113 inlet;
+#X obj 100 109 inlet;
+#X obj 231 144 s speed;
+#X obj 101 144 s location;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X restore 654 138 pd setlocprecess;
+#X obj 457 279 s transpo;
+#X obj 457 216 r transpo;
+#X msg 457 237 set \$1;
+#X msg 673 387 \; location 0 \; speed 200;
+#X text 200 8 PHASE VOCODER;
+#X text 609 18 set location;
+#X text 609 36 and stop;
+#X text 609 54 precession;
+#X text 785 53 precession;
+#X text 785 71 speed in;
+#X text 785 89 hundredths;
+#X text 457 179 transposition;
+#X text 457 197 in cents;
+#X text 666 360 contraction;
+#X text 784 360 expansion;
+#X msg 776 387 \; location 0 \; speed 10;
+#X text 30 349 100 maximum;
+#X text 30 331 output meter;
+#X floatatom 610 218 0 5 60;
+#X text 645 218 <--set me to change length;
+#N canvas 0 0 265 196 length 0;
+#X obj 46 23 inlet;
+#X obj 48 101 * 44100;
+#X msg 84 125 \; array2 resize \$1;
+#X obj 46 48 min 60;
+#X obj 60 75 s output-length;
+#X obj 46 159 s maxoutsize;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 1 0 5 0;
+#X connect 3 0 1 0;
+#X connect 3 0 4 0;
+#X restore 610 239 pd length;
+#N canvas 219 38 198 151 /SUBPATCH/ 0;
+#X obj 77 118 outlet;
+#X obj 77 72 loadbang;
+#X msg 77 95 10;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 610 197 pd;
+#X text 610 259 length in seconds of the output;
+#X text 610 277 buffer... maximum 60;
+#N canvas 42 0 1083 546 guts 0;
+#X msg 24 129 bang;
+#X obj 24 405 openpanel;
+#X obj 139 30 inlet;
+#X obj 450 385 dac~;
+#X obj 450 329 *~;
+#X obj 465 306 line~;
+#X obj 465 283 r master-amp;
+#X msg 728 129 bang;
+#X obj 728 150 savepanel;
+#X obj 219 164 spigot;
+#X msg 206 102 0;
+#X msg 238 102 1;
+#X obj 503 444 outlet;
+#X obj 292 251 tabwrite~ array2;
+#X obj 449 246 +~;
+#X obj 450 356 hip~ 7;
+#X msg 446 97 bang;
+#X obj 446 118 tabplay~ array2;
+#X msg 728 175 write \$1 array2;
+#X obj 728 200 soundfiler;
+#X obj 505 386 env~ 16384;
+#X obj 591 101 route normalized;
+#X msg 591 284 write -normalize \$1 array2;
+#X msg 591 242 bang;
+#X obj 591 263 savepanel;
+#X obj 591 308 soundfiler;
+#X obj 24 450 soundfiler;
+#X msg 24 428 read -resize -maxsize 1e+06 \$1 array1;
+#X floatatom 24 473 0 0 0;
+#X obj 680 345 loadbang;
+#X msg 680 368 \; window-size 2048 \; transpo 0;
+#N canvas 9 7 835 599 fft-analysis 0;
+#X obj 267 304 *~;
+#X obj 235 304 *~;
+#X obj 235 326 -~;
+#X obj 333 305 *~;
+#X obj 302 305 *~;
+#X obj 302 328 +~;
+#X obj 348 131 *~;
+#X obj 317 131 *~;
+#X obj 288 131 *~;
+#X obj 256 131 *~;
+#X obj 256 153 +~;
+#X obj 225 183 *~;
+#X obj 88 570 *~;
+#X obj 375 256 rfft~;
+#X obj 396 55 rfft~;
+#X obj 488 652 *~;
+#X obj 702 295 r window-size;
+#X obj 770 211 r sample-rate;
+#X obj 624 239 f;
+#X obj 617 53 r sample-rate;
+#X obj 592 30 r window-size;
+#X obj 615 100 t b f;
+#X obj 592 124 /;
+#X obj 519 652 *~;
+#X obj 89 549 *~;
+#X obj 106 525 rifft~;
+#X obj 89 596 outlet~;
+#X obj 639 457 print~;
+#X msg 639 428 bang;
+#X text 155 526 inverse real FFT;
+#X obj 603 215 bang~;
+#X obj 528 434 line~;
+#X obj 592 146 * 1000;
+#X text 645 139 window size (msec);
+#X obj 617 78 * 4;
+#X obj 647 162 r speed;
+#X obj 726 164 r location;
+#X obj 655 240 +;
+#X obj 648 204 *;
+#X msg 726 193 0;
+#X obj 624 349 +;
+#X obj 615 305 t f f;
+#X msg 528 406 \$1 \, \$2 \$3;
+#X obj 528 378 pack 0 0 0;
+#X obj 770 234 / 1000;
+#X obj 624 276 *;
+#X text 654 276 reading location (samples);
+#X obj 652 390 / 4;
+#X text 684 395 hop size (samples);
+#X obj 578 476 sig~;
+#X obj 546 474 +~;
+#X text 653 85 (overlap times parent SR);
+#X text 653 71 local sample rate;
+#X obj 23 52 tabreceive~ phase-real;
+#X obj 194 183 *~;
+#X obj 194 205 +~;
+#X obj 194 231 rsqrt~;
+#X obj 317 153 -~;
+#X obj 237 261 *~;
+#X obj 298 261 *~;
+#X obj 203 52 tabreceive~ phase-imag;
+#X obj 108 390 sig~;
+#X obj 90 319 t b f;
+#X msg 90 340 1;
+#X obj 104 364 /;
+#X obj 232 447 tabsend~ phase-real;
+#X obj 262 418 tabsend~ phase-imag;
+#X obj 107 136 sig~ 1.5e-20;
+#X obj 647 184 * 0.01;
+#X obj 708 217 s speed;
+#X obj 479 256 s see-location;
+#X floatatom 688 368 0 0 0;
+#X obj 686 347 *;
+#X obj 848 245 r transpo;
+#X obj 848 264 * 0.01;
+#X obj 849 285 + 69;
+#X obj 851 307 mtof;
+#X obj 851 327 / 440;
+#X obj 705 324 t b f;
+#X obj 90 297 r window-size;
+#X floatatom 855 361 0 0 0;
+#X obj 564 556 tabreceive~ hanning;
+#X obj 549 500 tabread4~ array1;
+#X obj 514 524 tabread4~ array1;
+#X obj 612 608 r running;
+#X obj 612 632 switch~ 2048 4;
+#X connect 0 0 2 1;
+#X connect 1 0 2 0;
+#X connect 2 0 65 0;
+#X connect 2 0 25 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 66 0;
+#X connect 5 0 25 1;
+#X connect 6 0 57 1;
+#X connect 7 0 57 0;
+#X connect 8 0 10 1;
+#X connect 9 0 10 0;
+#X connect 10 0 58 1;
+#X connect 10 0 54 0;
+#X connect 10 0 54 1;
+#X connect 11 0 55 1;
+#X connect 12 0 26 0;
+#X connect 13 0 1 1;
+#X connect 13 0 3 1;
+#X connect 13 1 0 1;
+#X connect 13 1 4 1;
+#X connect 14 0 9 1;
+#X connect 14 0 7 1;
+#X connect 14 1 6 1;
+#X connect 14 1 8 1;
+#X connect 15 0 14 0;
+#X connect 16 0 72 0;
+#X connect 17 0 44 0;
+#X connect 18 0 37 0;
+#X connect 18 0 45 0;
+#X connect 18 0 70 0;
+#X connect 19 0 34 0;
+#X connect 20 0 22 0;
+#X connect 21 0 22 0;
+#X connect 21 1 22 1;
+#X connect 22 0 32 0;
+#X connect 23 0 13 0;
+#X connect 24 0 12 0;
+#X connect 25 0 24 1;
+#X connect 28 0 27 0;
+#X connect 30 0 18 0;
+#X connect 31 0 27 0;
+#X connect 31 0 50 0;
+#X connect 31 0 83 0;
+#X connect 32 0 43 2;
+#X connect 32 0 38 1;
+#X connect 34 0 21 0;
+#X connect 35 0 68 0;
+#X connect 36 0 39 0;
+#X connect 36 0 18 1;
+#X connect 37 0 18 1;
+#X connect 38 0 37 1;
+#X connect 39 0 69 0;
+#X connect 40 0 43 1;
+#X connect 41 0 43 0;
+#X connect 41 1 40 0;
+#X connect 42 0 31 0;
+#X connect 43 0 42 0;
+#X connect 44 0 45 1;
+#X connect 45 0 41 0;
+#X connect 47 0 49 0;
+#X connect 49 0 50 1;
+#X connect 50 0 82 0;
+#X connect 53 0 9 0;
+#X connect 53 0 6 0;
+#X connect 54 0 55 0;
+#X connect 55 0 56 0;
+#X connect 56 0 58 0;
+#X connect 56 0 59 0;
+#X connect 57 0 59 1;
+#X connect 57 0 11 0;
+#X connect 57 0 11 1;
+#X connect 58 0 1 0;
+#X connect 58 0 4 0;
+#X connect 59 0 0 0;
+#X connect 59 0 3 0;
+#X connect 60 0 7 0;
+#X connect 60 0 8 0;
+#X connect 61 0 24 0;
+#X connect 62 0 63 0;
+#X connect 62 1 64 1;
+#X connect 63 0 64 0;
+#X connect 64 0 61 0;
+#X connect 67 0 10 0;
+#X connect 68 0 38 0;
+#X connect 71 0 47 0;
+#X connect 71 0 40 1;
+#X connect 72 0 71 0;
+#X connect 73 0 74 0;
+#X connect 74 0 75 0;
+#X connect 75 0 76 0;
+#X connect 76 0 77 0;
+#X connect 77 0 78 0;
+#X connect 77 0 80 0;
+#X connect 78 0 72 0;
+#X connect 78 1 72 1;
+#X connect 79 0 62 0;
+#X connect 81 0 23 1;
+#X connect 81 0 15 1;
+#X connect 81 0 12 1;
+#X connect 82 0 23 0;
+#X connect 83 0 15 0;
+#X connect 84 0 85 0;
+#X restore 291 222 pd fft-analysis;
+#X msg 203 187 bang;
+#X obj 38 225 samplerate~;
+#X obj 38 247 s sample-rate;
+#N canvas 260 23 647 768 phase-tables 0;
+#N canvas 0 0 450 300 graph2 0;
+#X array phase-imag 4096 float 0;
+#X coords 0 1 4096 -1 400 300 1;
+#X restore 234 396 graph;
+#N canvas 0 0 450 300 graph3 0;
+#X array phase-real 4096 float 0;
+#X coords 0 1 4096 -1 400 300 1;
+#X restore 232 23 graph;
+#X msg 229 769 \; phase-real resize 4096 \; phase-imag resize 4096
+;
+#X restore 681 423 pd phase-tables;
+#N canvas 138 111 767 761 hanning-window 0;
+#X obj 125 281 phasor~;
+#X obj 125 319 cos~;
+#X obj 31 448 tabwrite~ hanning;
+#X obj 41 345 -~;
+#X obj 38 298 sig~ 1;
+#X msg 51 246 0;
+#X text 193 19 CALCULATE HANNING;
+#X text 193 37 WINDOW TABLE;
+#N canvas 0 0 450 300 graph1 0;
+#X array hanning 4096 float 0;
+#X coords 0 1 4096 -1 400 300 1;
+#X restore 375 384 graph;
+#X obj 126 233 sig~;
+#X text 239 202 sample rate / window size;
+#X msg 31 196 bang;
+#X obj 90 367 sig~ 0.5;
+#X obj 67 409 *~;
+#X obj 128 109 samplerate~;
+#X obj 34 31 r window-size;
+#X obj 34 72 t b f;
+#X msg 375 746 \; hanning resize 4096;
+#X obj 126 180 /;
+#X connect 0 0 1 0;
+#X connect 1 0 3 1;
+#X connect 3 0 13 0;
+#X connect 4 0 3 0;
+#X connect 5 0 0 1;
+#X connect 9 0 0 0;
+#X connect 11 0 2 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 1;
+#X connect 13 0 2 0;
+#X connect 14 0 18 0;
+#X connect 15 0 16 0;
+#X connect 16 0 14 0;
+#X connect 16 0 11 0;
+#X connect 16 1 18 1;
+#X connect 18 0 9 0;
+#X restore 681 447 pd hanning-window;
+#X obj 100 335 delay;
+#X obj 160 332 + 100;
+#X obj 139 51 route read run start hear save stop;
+#X obj 895 245 timer;
+#X obj 895 269 * 44.1;
+#X obj 232 314 r maxoutsize;
+#X obj 217 338 f;
+#X msg 217 360 \; array2 resize \$1;
+#X msg 100 358 \; action stop;
+#X obj 186 30 r action;
+#X obj 910 172 r running;
+#X obj 894 195 f;
+#X obj 894 219 sel 1;
+#X obj 895 344 moses;
+#X obj 946 345 r maxoutsize;
+#X msg 895 366 \; array2 resize \$1;
+#X msg 918 293 \; running 0;
+#X msg 293 277 \; running 1;
+#X obj 160 310 / 44.1;
+#X msg 751 10 bang;
+#X obj 277 92 r location;
+#X obj 277 115 r speed;
+#X obj 278 137 r transpo;
+#X msg 43 283 \; pd dsp 1;
+#X obj 503 414 int;
+#X connect 0 0 1 0;
+#X connect 1 0 27 0;
+#X connect 2 0 39 0;
+#X connect 4 0 15 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 18 0;
+#X connect 9 0 10 0;
+#X connect 9 0 32 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 14 0 4 0;
+#X connect 15 0 3 0;
+#X connect 15 0 3 1;
+#X connect 15 0 20 0;
+#X connect 16 0 17 0;
+#X connect 17 0 14 1;
+#X connect 18 0 19 0;
+#X connect 20 0 61 0;
+#X connect 21 0 23 0;
+#X connect 21 1 7 0;
+#X connect 22 0 25 0;
+#X connect 23 0 24 0;
+#X connect 24 0 22 0;
+#X connect 26 0 28 0;
+#X connect 27 0 26 0;
+#X connect 29 0 30 0;
+#X connect 31 0 13 0;
+#X connect 31 0 14 0;
+#X connect 32 0 33 0;
+#X connect 32 0 37 0;
+#X connect 32 0 40 0;
+#X connect 32 0 43 0;
+#X connect 32 0 13 0;
+#X connect 32 0 54 0;
+#X connect 32 0 60 0;
+#X connect 33 0 34 0;
+#X connect 37 0 45 0;
+#X connect 38 0 37 1;
+#X connect 39 0 0 0;
+#X connect 39 1 10 0;
+#X connect 39 1 32 0;
+#X connect 39 2 11 0;
+#X connect 39 3 16 0;
+#X connect 39 4 21 0;
+#X connect 39 5 56 0;
+#X connect 40 0 41 0;
+#X connect 41 0 53 0;
+#X connect 41 0 50 0;
+#X connect 42 0 43 1;
+#X connect 42 0 55 0;
+#X connect 43 0 44 0;
+#X connect 46 0 39 0;
+#X connect 47 0 48 1;
+#X connect 48 0 49 0;
+#X connect 49 0 40 1;
+#X connect 50 0 52 0;
+#X connect 51 0 50 1;
+#X connect 55 0 38 0;
+#X connect 56 0 48 0;
+#X connect 57 0 9 0;
+#X connect 58 0 9 0;
+#X connect 59 0 9 0;
+#X connect 61 0 12 0;
+#X restore 30 290 pd guts;
+#X msg 30 164 run the transformation;
+#X msg 30 227 hear the output buffer again;
+#X text 30 124 click below to:;
+#X msg 30 248 save the output buffer;
+#X floatatom 30 311 0 0 0;
+#X msg 30 143 read an input file;
+#X msg 30 269 save normalized to max amplitude;
+#N canvas 213 187 495 352 input-sample 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 63024 float 0;
+#X coords 0 1 63023 -1 400 300 1;
+#X restore 55 22 graph;
+#X text 146 379 INPUT SAMPLE;
+#X restore 41 401 pd input-sample;
+#N canvas 192 180 507 343 output-sample 0;
+#N canvas 0 0 450 300 graph2 0;
+#X array array2 2.646e+06 float 0;
+#X coords 0 1 2.646e+06 -1 400 300 1;
+#X restore 58 13 graph;
+#X text 155 375 OUTPUT SAMPLE;
+#X restore 41 426 pd output-sample;
+#X floatatom 385 382 0 0 120;
+#N canvas 194 37 397 591 output 0;
+#X obj 64 196 t b;
+#X obj 64 147 f;
+#X obj 64 99 inlet;
+#X text 68 78 mute;
+#X obj 64 220 f;
+#X msg 130 235 0;
+#X msg 64 123 bang;
+#X obj 64 172 moses 1;
+#X obj 130 211 t b f;
+#X obj 93 427 outlet;
+#X msg 93 403 set \$1;
+#X obj 180 158 moses 1;
+#X obj 217 429 dbtorms;
+#X obj 217 454 pack 0 100;
+#X obj 180 133 r master-lvl;
+#X obj 93 369 r master-lvl;
+#X obj 80 276 s master-lvl;
+#X obj 217 478 s master-amp;
+#X obj 201 235 loadbang;
+#X msg 201 260 \; master-lvl 90;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 16 0;
+#X connect 5 0 16 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 10 0 9 0;
+#X connect 11 1 4 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 14 0 1 1;
+#X connect 14 0 11 0;
+#X connect 15 0 10 0;
+#X connect 15 0 12 0;
+#X connect 18 0 19 0;
+#X restore 385 361 pd output;
+#X msg 385 340 mute;
+#X obj 385 403 s master-lvl;
+#X text 427 339 <-- mute button;
+#X text 422 381 <--set me;
+#X text 385 423 LINE OUT LEVEL in dB (100 norm);
+#X text 14 25 This is a Fourier-based analysis/resynthesis tool.;
+#X text 22 45 You can move forward or backward in the sample \, or
+"freeze" at any point using the "precession" and "location" controls.
+Transposition is in hundredths of a half-tone.;
+#X msg 30 185 start transformation when I change controls;
+#X msg 30 206 stop the transformation;
+#X text 731 329 examples:;
+#X msg 614 94 -40;
+#X connect 0 0 5 0;
+#X connect 1 0 4 1;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 3 1 1 0;
+#X connect 6 0 7 0;
+#X connect 7 0 0 0;
+#X connect 23 0 25 0;
+#X connect 26 0 23 0;
+#X connect 29 0 34 0;
+#X connect 30 0 29 0;
+#X connect 31 0 29 0;
+#X connect 33 0 29 0;
+#X connect 35 0 29 0;
+#X connect 36 0 29 0;
+#X connect 39 0 42 0;
+#X connect 40 0 39 0;
+#X connect 41 0 40 0;
+#X connect 48 0 29 0;
+#X connect 49 0 29 0;
+#X connect 51 0 2 0;
diff --git a/desiredata/doc/7.stuff/soundfile-tools/4.looper.pd b/desiredata/doc/7.stuff/soundfile-tools/4.looper.pd
new file mode 100644
index 00000000..0b969a42
--- /dev/null
+++ b/desiredata/doc/7.stuff/soundfile-tools/4.looper.pd
@@ -0,0 +1,338 @@
+#N canvas 0 16 878 417 12;
+#N canvas 213 187 495 352 input-sample 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 63024 float 0;
+#X coords 0 1 63023 -1 400 300 1;
+#X restore 56 23 graph;
+#X text 151 393 INPUT SAMPLE;
+#X restore 143 301 pd input-sample;
+#N canvas 192 180 507 343 output-sample 0;
+#N canvas 0 0 450 300 graph2 0;
+#X array array2 441000 float 0;
+#X coords 0 1 440999 -1 400 300 1;
+#X restore 60 13 graph;
+#X text 161 388 OUTPUT SAMPLE;
+#X restore 143 325 pd output-sample;
+#N canvas 41 102 912 552 guts 0;
+#X msg 25 133 bang;
+#X obj 15 468 openpanel;
+#X obj 144 28 inlet;
+#X obj 478 392 dac~;
+#X obj 478 342 *~;
+#X obj 494 301 line~;
+#X obj 494 276 r master-amp;
+#X msg 759 352 bang;
+#X obj 759 377 savepanel;
+#X obj 274 203 spigot;
+#X msg 248 133 0;
+#X msg 281 133 1;
+#X obj 555 384 outlet;
+#X obj 268 325 tabwrite~ array2;
+#X msg 262 232 bang;
+#X obj 456 312 +~;
+#X obj 478 367 hip~ 7;
+#X msg 480 228 bang;
+#X obj 480 253 tabplay~ array2;
+#X msg 759 402 write \$1 array2;
+#X obj 759 427 soundfiler;
+#N canvas 92 118 921 631 audio-transformation 0;
+#X obj 320 509 outlet~;
+#X obj 221 41 r transposition;
+#X obj 287 175 r looplength;
+#X obj 221 66 / 120;
+#X obj 235 139 pow;
+#X obj 221 91 t b f;
+#X msg 221 115 2;
+#X text 305 107 2 to the power (octaves);
+#X text 304 123 gives speed change for the;
+#X text 305 141 desired transposition;
+#X text 280 65 transposition in octaves;
+#X obj 470 264 * 441;
+#X floatatom 470 234 0 0 0;
+#X obj 426 352 samphold~;
+#X obj 545 335 -~ 0.5;
+#X obj 545 461 clip~ -0.5 0.5;
+#X obj 545 437 *~ 1;
+#X obj 545 486 cos~;
+#X obj 545 365 wrap~;
+#X obj 545 400 -~ 0.5;
+#X obj 545 532 *~ -0.5;
+#X obj 545 508 -~ 1;
+#X floatatom 617 406 0 0 0;
+#X obj 601 254 r smoothing;
+#X obj 470 208 r startpoint;
+#X obj 617 431 max 1;
+#X obj 602 308 max 0.001;
+#X obj 602 334 t b f;
+#X obj 602 358 1;
+#X obj 617 382 /;
+#X obj 320 482 *~;
+#X obj 320 456 tabread4~ array1;
+#X obj 320 430 +~;
+#X obj 227 472 print~;
+#X msg 227 443 bang;
+#X obj 601 61 loadbang;
+#X msg 598 91 \; transposition 0 \; looplength 0 \; startpoint 0 \;
+smoothing 0;
+#X obj 236 263 ../../../extra/loop~;
+#X obj 285 233 * 441;
+#X obj 284 307 *~;
+#X obj 133 41 loadbang;
+#X obj 78 174 r running;
+#X obj 78 203 sel 1;
+#X obj 602 282 * 0.01;
+#X obj 286 202 max 0.01;
+#X connect 1 0 3 0;
+#X connect 2 0 44 0;
+#X connect 3 0 5 0;
+#X connect 4 0 37 0;
+#X connect 5 0 6 0;
+#X connect 5 1 4 1;
+#X connect 6 0 4 0;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 13 0 32 1;
+#X connect 14 0 18 0;
+#X connect 15 0 17 0;
+#X connect 16 0 15 0;
+#X connect 17 0 21 0;
+#X connect 18 0 19 0;
+#X connect 19 0 16 0;
+#X connect 20 0 30 1;
+#X connect 21 0 20 0;
+#X connect 22 0 25 0;
+#X connect 23 0 43 0;
+#X connect 24 0 12 0;
+#X connect 25 0 16 1;
+#X connect 26 0 27 0;
+#X connect 27 0 28 0;
+#X connect 27 1 29 1;
+#X connect 28 0 29 0;
+#X connect 29 0 22 0;
+#X connect 30 0 0 0;
+#X connect 31 0 30 0;
+#X connect 32 0 31 0;
+#X connect 32 0 33 0;
+#X connect 34 0 33 0;
+#X connect 35 0 36 0;
+#X connect 37 0 13 1;
+#X connect 37 0 39 0;
+#X connect 37 0 14 0;
+#X connect 37 1 39 1;
+#X connect 38 0 37 1;
+#X connect 39 0 32 0;
+#X connect 40 0 3 0;
+#X connect 41 0 42 0;
+#X connect 42 0 37 0;
+#X connect 43 0 26 0;
+#X connect 44 0 38 0;
+#X restore 274 283 pd audio-transformation;
+#X obj 553 331 env~ 16384;
+#X obj 665 317 route normalized;
+#X msg 667 457 write -normalize \$1 array2;
+#X msg 667 407 bang;
+#X obj 667 432 savepanel;
+#X obj 667 482 soundfiler;
+#X obj 15 518 soundfiler;
+#X msg 15 493 read -resize -maxsize 1e+06 \$1 array1;
+#X obj 330 100 r transposition;
+#X obj 330 125 r looplength;
+#X obj 330 175 r smoothing;
+#X obj 708 110 timer;
+#X obj 708 135 * 44.1;
+#X obj 724 37 r running;
+#X obj 708 60 f;
+#X obj 708 85 sel 1;
+#X obj 708 227 moses;
+#X obj 753 227 r maxoutsize;
+#X msg 708 252 \; array2 resize \$1;
+#X msg 685 37 bang;
+#X obj 144 53 route read run start hear save stop;
+#X obj 312 427 delay;
+#X obj 331 404 + 100;
+#X obj 145 329 r maxoutsize;
+#X obj 86 329 f;
+#X msg 86 354 \; array2 resize \$1;
+#X msg 312 452 \; action stop;
+#X obj 331 379 / 44.1;
+#X msg 62 271 \; pd dsp 1;
+#X msg 334 240 \; running 1;
+#X obj 202 28 r action;
+#X msg 733 160 \; running 0 \; pd dsp 0;
+#X obj 330 150 r startpoint;
+#X obj 553 357 int;
+#X connect 0 0 1 0;
+#X connect 1 0 29 0;
+#X connect 2 0 42 0;
+#X connect 4 0 16 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 19 0;
+#X connect 9 0 10 0;
+#X connect 9 0 14 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 14 0 13 0;
+#X connect 14 0 46 0;
+#X connect 14 0 43 0;
+#X connect 14 0 50 0;
+#X connect 14 0 51 0;
+#X connect 14 0 33 0;
+#X connect 15 0 4 0;
+#X connect 15 0 22 0;
+#X connect 16 0 3 0;
+#X connect 16 0 3 1;
+#X connect 17 0 18 0;
+#X connect 18 0 15 1;
+#X connect 19 0 20 0;
+#X connect 21 0 13 0;
+#X connect 21 0 15 0;
+#X connect 22 0 55 0;
+#X connect 23 0 25 0;
+#X connect 23 1 7 0;
+#X connect 24 0 27 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 0;
+#X connect 29 0 28 0;
+#X connect 30 0 9 0;
+#X connect 31 0 9 0;
+#X connect 32 0 9 0;
+#X connect 33 0 34 0;
+#X connect 34 0 53 0;
+#X connect 34 0 38 0;
+#X connect 35 0 36 1;
+#X connect 36 0 37 0;
+#X connect 37 0 33 1;
+#X connect 38 0 40 0;
+#X connect 39 0 38 1;
+#X connect 41 0 36 0;
+#X connect 42 0 0 0;
+#X connect 42 1 14 0;
+#X connect 42 1 10 0;
+#X connect 42 2 11 0;
+#X connect 42 3 17 0;
+#X connect 42 4 23 0;
+#X connect 42 5 41 0;
+#X connect 43 0 48 0;
+#X connect 44 0 43 1;
+#X connect 45 0 46 1;
+#X connect 45 0 49 0;
+#X connect 46 0 47 0;
+#X connect 49 0 44 0;
+#X connect 52 0 42 0;
+#X connect 54 0 9 0;
+#X connect 55 0 12 0;
+#X restore 19 228 pd guts;
+#X msg 19 96 run the transformation;
+#X msg 19 163 hear the output buffer again;
+#X text 19 55 click below to:;
+#X msg 19 185 save the output buffer;
+#X floatatom 367 337 0 0 120;
+#N canvas 194 37 397 591 output 0;
+#X obj 66 203 t b;
+#X obj 66 152 f;
+#X obj 66 102 inlet;
+#X text 71 81 mute;
+#X obj 66 228 f;
+#X msg 134 244 0;
+#X msg 66 127 bang;
+#X obj 66 178 moses 1;
+#X obj 134 218 t b f;
+#X obj 96 442 outlet;
+#X msg 96 416 set \$1;
+#X obj 186 163 moses 1;
+#X obj 224 444 dbtorms;
+#X obj 224 469 pack 0 100;
+#X obj 186 138 r master-lvl;
+#X obj 96 382 r master-lvl;
+#X obj 83 286 s master-lvl;
+#X obj 224 494 s master-amp;
+#X obj 208 244 loadbang;
+#X msg 208 269 \; master-lvl 90;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 16 0;
+#X connect 5 0 16 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 10 0 9 0;
+#X connect 11 1 4 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 14 0 1 1;
+#X connect 14 0 11 0;
+#X connect 15 0 10 0;
+#X connect 15 0 12 0;
+#X connect 18 0 19 0;
+#X restore 367 316 pd output;
+#X msg 367 294 mute;
+#X obj 367 359 s master-lvl;
+#X text 410 293 <-- mute button;
+#X floatatom 19 250 0 0 0;
+#X text 20 294 100 maximum;
+#X text 20 276 output meter;
+#X text 405 336 <--set me;
+#X msg 19 74 read an input file;
+#X text 367 379 LINE OUT LEVEL in dB (100 norm);
+#X msg 19 206 save normalized to max amplitude;
+#X floatatom 368 73 0 0 1000;
+#X floatatom 369 19 0 0 0;
+#X obj 369 47 s transposition;
+#X floatatom 369 170 0 0 100;
+#X obj 369 192 s smoothing;
+#X obj 368 95 s looplength;
+#X text 418 73 <- loop length \, hundredths of a second;
+#X floatatom 369 122 0 0 60000;
+#X obj 369 144 s startpoint;
+#X text 420 123 <- start point \, hundredths of a second;
+#X text 419 171 <- envelope smoothing \, 0-100;
+#X text 38 9 looping sample player.;
+#X msg 19 118 start looping when I change something;
+#X msg 19 140 stop looping;
+#X floatatom 368 239 0 0 60;
+#N canvas 0 0 265 196 length 0;
+#X obj 48 24 inlet;
+#X obj 49 104 * 44100;
+#X msg 86 130 \; array2 resize \$1;
+#X obj 48 49 min 60;
+#X obj 62 78 s output-length;
+#X obj 48 164 s maxoutsize;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 1 0 5 0;
+#X connect 3 0 1 0;
+#X connect 3 0 4 0;
+#X restore 368 260 pd length;
+#N canvas 219 38 198 151 /SUBPATCH/ 0;
+#X obj 79 122 outlet;
+#X obj 79 74 loadbang;
+#X msg 79 98 10;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 368 217 pd;
+#X text 455 241 length in seconds of the output;
+#X text 453 259 buffer... maximum 60;
+#X text 404 241 <- set;
+#X text 408 20 <- transposition up or down \, 10ths of a half step
+;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 10 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 16 0 2 0;
+#X connect 18 0 2 0;
+#X connect 19 0 24 0;
+#X connect 20 0 21 0;
+#X connect 22 0 23 0;
+#X connect 26 0 27 0;
+#X connect 31 0 2 0;
+#X connect 32 0 2 0;
+#X connect 33 0 34 0;
+#X connect 35 0 33 0;
diff --git a/desiredata/doc/7.stuff/soundfile-tools/5.reverb.pd b/desiredata/doc/7.stuff/soundfile-tools/5.reverb.pd
new file mode 100644
index 00000000..0b0cdb11
--- /dev/null
+++ b/desiredata/doc/7.stuff/soundfile-tools/5.reverb.pd
@@ -0,0 +1,214 @@
+#N canvas 186 43 739 364 12;
+#N canvas 213 187 495 352 input-sample 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 63024 float 0;
+#X coords 0 1 63023 -1 400 300 1;
+#X restore 54 22 graph;
+#X text 145 376 INPUT SAMPLE;
+#X restore 154 226 pd input-sample;
+#N canvas 192 180 507 343 output-sample 0;
+#N canvas 0 0 450 300 graph2 0;
+#X array array2 504024 float 0;
+#X coords 0 1 504023 -1 400 300 1;
+#X restore 57 13 graph;
+#X text 154 372 OUTPUT SAMPLE;
+#X restore 155 249 pd output-sample;
+#N canvas 116 150 735 421 guts 0;
+#X msg 24 128 bang;
+#X obj 24 345 openpanel;
+#X obj 138 30 inlet;
+#X obj 446 368 dac~;
+#X obj 446 327 *~;
+#X obj 461 304 line~;
+#X obj 461 283 r master-amp;
+#X msg 707 85 bang;
+#X obj 707 106 savepanel;
+#X obj 268 161 spigot;
+#X msg 253 128 0;
+#X msg 284 128 1;
+#X obj 500 398 outlet;
+#X obj 316 128 r frequency;
+#X obj 256 312 tabwrite~ array2;
+#X msg 256 189 bang;
+#X obj 427 276 +~;
+#X msg 139 128 \; pd dsp 1;
+#X obj 446 347 hip~ 7;
+#X obj 268 217 tabplay~ array1;
+#X msg 442 124 bang;
+#X obj 442 145 tabplay~ array2;
+#X msg 707 126 write \$1 array2;
+#X obj 707 147 soundfiler;
+#X obj 138 51 route read run start hear save;
+#N canvas 0 0 632 395 audio-transformation 0;
+#X obj 101 49 inlet~;
+#X obj 105 268 outlet~;
+#X obj 101 148 ../../../extra/rev1~ xxx;
+#X obj 339 79 r revgain;
+#X obj 338 102 dbtorms;
+#X obj 338 130 pack 0 50;
+#X obj 338 154 line~;
+#X obj 103 204 *~;
+#X obj 181 51 r revtime;
+#X obj 213 236 *~;
+#X obj 340 209 dbtorms;
+#X obj 340 237 pack 0 50;
+#X obj 340 261 line~;
+#X obj 294 37 inlet;
+#X msg 293 61 bang;
+#X obj 342 186 r drygain;
+#X connect 0 0 2 0;
+#X connect 0 0 9 0;
+#X connect 2 0 7 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 1 0;
+#X connect 8 0 2 1;
+#X connect 9 0 1 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 9 1;
+#X connect 13 0 14 0;
+#X connect 14 0 2 2;
+#X connect 15 0 10 0;
+#X restore 268 238 pd audio-transformation;
+#X obj 500 377 env~ 16384;
+#X obj 570 86 route normalized;
+#X msg 570 179 write -normalize \$1 array2;
+#X msg 570 138 bang;
+#X obj 570 159 savepanel;
+#X obj 570 204 soundfiler;
+#X obj 24 396 soundfiler;
+#X msg 24 374 read -resize -maxsize 1e+06 \$1 array1;
+#X msg 24 440 \; array2 resize \$1;
+#X obj 402 129 r q;
+#X obj 24 419 + 441000;
+#X connect 0 0 1 0;
+#X connect 1 0 33 0;
+#X connect 2 0 24 0;
+#X connect 4 0 18 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 22 0;
+#X connect 9 0 10 0;
+#X connect 9 0 15 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 13 0 9 0;
+#X connect 15 0 14 0;
+#X connect 15 0 19 0;
+#X connect 15 0 25 1;
+#X connect 16 0 4 0;
+#X connect 18 0 3 0;
+#X connect 18 0 3 1;
+#X connect 18 0 26 0;
+#X connect 19 0 25 0;
+#X connect 20 0 21 0;
+#X connect 21 0 16 1;
+#X connect 22 0 23 0;
+#X connect 24 0 0 0;
+#X connect 24 1 15 0;
+#X connect 24 1 10 0;
+#X connect 24 1 17 0;
+#X connect 24 2 11 0;
+#X connect 24 2 17 0;
+#X connect 24 3 20 0;
+#X connect 24 4 27 0;
+#X connect 25 0 14 0;
+#X connect 25 0 16 0;
+#X connect 26 0 12 0;
+#X connect 27 0 29 0;
+#X connect 27 1 7 0;
+#X connect 28 0 31 0;
+#X connect 29 0 30 0;
+#X connect 30 0 28 0;
+#X connect 32 0 36 0;
+#X connect 33 0 32 0;
+#X connect 35 0 9 0;
+#X connect 36 0 34 0;
+#X restore 35 190 pd guts;
+#X msg 35 85 run the transformation;
+#X msg 35 127 hear the output buffer again;
+#X text 35 45 click below to:;
+#X msg 35 148 save the output buffer;
+#X floatatom 445 285 0 0 120;
+#N canvas 194 37 397 591 output 0;
+#X obj 63 194 t b;
+#X obj 63 146 f;
+#X obj 63 98 inlet;
+#X text 68 77 mute;
+#X obj 63 218 f;
+#X msg 129 233 0;
+#X msg 63 122 bang;
+#X obj 63 170 moses 1;
+#X obj 129 209 t b f;
+#X obj 92 423 outlet;
+#X msg 92 399 set \$1;
+#X obj 178 156 moses 1;
+#X obj 215 425 dbtorms;
+#X obj 215 450 pack 0 100;
+#X obj 178 132 r master-lvl;
+#X obj 92 366 r master-lvl;
+#X obj 79 274 s master-lvl;
+#X obj 215 474 s master-amp;
+#X obj 199 233 loadbang;
+#X msg 199 258 \; master-lvl 90;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 16 0;
+#X connect 5 0 16 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 10 0 9 0;
+#X connect 11 1 4 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 14 0 1 1;
+#X connect 14 0 11 0;
+#X connect 15 0 10 0;
+#X connect 15 0 12 0;
+#X connect 18 0 19 0;
+#X restore 445 264 pd output;
+#X msg 445 243 mute;
+#X obj 445 306 s master-lvl;
+#X text 486 242 <-- mute button;
+#X floatatom 35 211 0 0 0;
+#X text 13 251 100 maximum;
+#X text 13 233 output meter;
+#X text 482 284 <--set me;
+#X msg 35 64 read an input file;
+#X text 445 326 LINE OUT LEVEL in dB (100 norm);
+#X msg 35 169 save normalized to max amplitude;
+#X msg 35 106 start transformation when I change f or q;
+#X floatatom 445 82 0 0 120;
+#X floatatom 445 40 0 0 100;
+#X obj 445 61 s revtime;
+#X obj 445 103 s revgain;
+#X floatatom 446 184 0 0 120;
+#X text 494 84 <-- reverb gain;
+#X text 482 185 <-- dry gain;
+#X obj 446 205 s drygain;
+#X obj 446 142 loadbang;
+#X msg 446 163 100;
+#X text 486 39 <- reverb time 0-100;
+#X text 23 15 Reverberator. Read in a sample first.;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 10 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 16 0 2 0;
+#X connect 18 0 2 0;
+#X connect 19 0 2 0;
+#X connect 20 0 23 0;
+#X connect 21 0 22 0;
+#X connect 24 0 27 0;
+#X connect 28 0 29 0;
+#X connect 29 0 24 0;
diff --git a/desiredata/doc/7.stuff/soundfile-tools/6.vocoder.pd b/desiredata/doc/7.stuff/soundfile-tools/6.vocoder.pd
new file mode 100644
index 00000000..ce822ef4
--- /dev/null
+++ b/desiredata/doc/7.stuff/soundfile-tools/6.vocoder.pd
@@ -0,0 +1,314 @@
+#N canvas 73 102 706 428 12;
+#X floatatom 462 162 0 0 100;
+#X msg 462 137 set \$1;
+#X text 29 322 100 maximum;
+#X text 29 304 output meter;
+#N canvas 145 136 937 540 guts 0;
+#X msg 5 296 bang;
+#X obj 5 321 openpanel;
+#X obj 136 29 inlet;
+#X obj 452 375 dac~;
+#X obj 452 323 *~;
+#X obj 467 300 line~;
+#X obj 467 280 r master-amp;
+#X msg 689 157 bang;
+#X obj 689 177 savepanel;
+#X obj 506 393 outlet;
+#X obj 297 238 tabwrite~ array2;
+#X obj 454 238 +~;
+#X obj 452 343 hip~ 7;
+#X msg 446 108 bang;
+#X obj 446 133 tabplay~ array2;
+#X msg 689 197 write \$1 array2;
+#X obj 689 218 soundfiler;
+#X obj 506 373 env~ 16384;
+#X obj 587 129 route normalized;
+#X msg 587 250 write -normalize \$1 array2;
+#X msg 587 209 bang;
+#X obj 587 230 savepanel;
+#X obj 587 274 soundfiler;
+#X obj 5 365 soundfiler;
+#X msg 5 343 read -resize -maxsize 1e+06 \$1 array1;
+#X obj 676 338 loadbang;
+#N canvas 0 0 690 470 fft-analysis 0;
+#X obj 275 314 *~;
+#X obj 257 348 *~;
+#X obj 218 348 *~;
+#X obj 105 163 *~;
+#X obj 66 156 *~;
+#X obj 66 182 +~;
+#X obj 216 104 *~;
+#X obj 253 104 inlet~;
+#X obj 216 130 rfft~;
+#X obj 42 371 *~;
+#X floatatom 458 208 0 0 0;
+#X obj 334 177 *~;
+#X obj 66 104 *~;
+#X obj 103 104 inlet~;
+#X obj 45 65 tabreceive~ hanning;
+#X obj 66 130 rfft~;
+#X obj 218 374 rifft~;
+#X obj 42 397 outlet~;
+#X obj 297 177 *~;
+#X obj 297 203 +~;
+#X obj 307 314 sig~ 0.001;
+#X text 122 214 modulus;
+#X obj 66 208 sqrt~;
+#X obj 275 288 *~;
+#X obj 457 58 r squelch;
+#X obj 329 418 block~ 1024 4;
+#X obj 297 229 rsqrt~;
+#X obj 341 203 sig~ 1e-20;
+#X obj 297 255 clip~;
+#X obj 458 130 t f f;
+#X obj 458 156 *;
+#X obj 458 182 * 0.01;
+#X obj 456 94 max 1;
+#X obj 559 58 loadbang;
+#X obj 458 234 max 0;
+#X connect 0 0 1 1;
+#X connect 0 0 2 1;
+#X connect 1 0 16 1;
+#X connect 2 0 16 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 22 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 1;
+#X connect 8 0 18 0;
+#X connect 8 0 18 1;
+#X connect 8 0 2 0;
+#X connect 8 1 11 0;
+#X connect 8 1 11 1;
+#X connect 8 1 1 0;
+#X connect 9 0 17 0;
+#X connect 10 0 34 0;
+#X connect 11 0 19 1;
+#X connect 12 0 15 0;
+#X connect 13 0 12 1;
+#X connect 14 0 12 0;
+#X connect 14 0 6 0;
+#X connect 14 0 9 0;
+#X connect 15 0 4 0;
+#X connect 15 0 4 1;
+#X connect 15 1 3 0;
+#X connect 15 1 3 1;
+#X connect 16 0 9 1;
+#X connect 18 0 19 0;
+#X connect 19 0 26 0;
+#X connect 20 0 0 1;
+#X connect 22 0 23 0;
+#X connect 23 0 0 0;
+#X connect 24 0 32 0;
+#X connect 26 0 28 0;
+#X connect 27 0 26 0;
+#X connect 28 0 23 1;
+#X connect 29 0 30 0;
+#X connect 29 0 30 1;
+#X connect 30 0 31 0;
+#X connect 31 0 10 0;
+#X connect 32 0 29 0;
+#X connect 33 0 32 0;
+#X connect 34 0 28 2;
+#X restore 296 194 pd fft-analysis;
+#X msg 202 86 bang;
+#N canvas 46 0 723 534 hanning-window 0;
+#X obj 122 273 phasor~;
+#X obj 122 311 cos~;
+#X obj 31 436 tabwrite~ hanning;
+#X obj 40 336 -~;
+#X obj 37 290 sig~ 1;
+#X msg 50 240 0;
+#X text 188 18 CALCULATE HANNING;
+#X text 188 36 WINDOW TABLE;
+#N canvas 0 0 450 300 graph1 0;
+#X array hanning 1024 float 0;
+#X coords 0 1 1023 -1 400 300 1;
+#X restore 342 235 graph;
+#X obj 123 227 sig~;
+#X text 156 173 sample rate / window size;
+#X msg 31 191 bang;
+#X obj 88 357 sig~ 0.5;
+#X obj 66 399 *~;
+#X obj 124 106 samplerate~;
+#X obj 33 31 r window-size;
+#X obj 123 175 /;
+#X msg 262 106 \; hanning resize \$1;
+#X obj 31 70 t b f f;
+#X connect 0 0 1 0;
+#X connect 1 0 3 1;
+#X connect 3 0 13 0;
+#X connect 4 0 3 0;
+#X connect 5 0 0 1;
+#X connect 9 0 0 0;
+#X connect 11 0 2 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 1;
+#X connect 13 0 2 0;
+#X connect 14 0 16 0;
+#X connect 15 0 18 0;
+#X connect 16 0 9 0;
+#X connect 18 0 14 0;
+#X connect 18 0 11 0;
+#X connect 18 1 16 1;
+#X connect 18 2 17 0;
+#X restore 673 403 pd hanning-window;
+#X obj 181 29 r action;
+#X msg 150 163 \; pd dsp 1;
+#X msg 389 106 stop;
+#X msg 58 455 \; array2 resize \$1;
+#X obj 58 434 + 4410;
+#X obj 136 50 route read AND run hear save stop;
+#X obj 58 412 min;
+#X obj 107 380 t b f;
+#X obj 107 270 openpanel;
+#X obj 107 314 soundfiler;
+#X msg 107 293 read -resize -maxsize 1e+06 \$1 array3;
+#X msg 106 239 bang;
+#X msg 676 360 \; window-size 1024 \;;
+#X obj 296 145 tabplay~ array1;
+#X obj 314 167 tabplay~ array3;
+#X connect 0 0 1 0;
+#X connect 1 0 24 0;
+#X connect 2 0 34 0;
+#X connect 4 0 12 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 15 0;
+#X connect 11 0 4 0;
+#X connect 12 0 3 0;
+#X connect 12 0 3 1;
+#X connect 12 0 17 0;
+#X connect 13 0 14 0;
+#X connect 14 0 11 1;
+#X connect 15 0 16 0;
+#X connect 17 0 9 0;
+#X connect 18 0 20 0;
+#X connect 18 1 7 0;
+#X connect 19 0 22 0;
+#X connect 20 0 21 0;
+#X connect 21 0 19 0;
+#X connect 23 0 35 0;
+#X connect 24 0 23 0;
+#X connect 25 0 41 0;
+#X connect 26 0 10 0;
+#X connect 26 0 11 0;
+#X connect 27 0 10 0;
+#X connect 27 0 30 0;
+#X connect 27 0 42 0;
+#X connect 27 0 43 0;
+#X connect 29 0 34 0;
+#X connect 31 0 14 0;
+#X connect 33 0 32 0;
+#X connect 34 0 0 0;
+#X connect 34 1 40 0;
+#X connect 34 2 27 0;
+#X connect 34 3 13 0;
+#X connect 34 4 18 0;
+#X connect 34 5 31 0;
+#X connect 35 0 33 0;
+#X connect 36 0 35 0;
+#X connect 36 1 35 1;
+#X connect 37 0 39 0;
+#X connect 38 0 36 0;
+#X connect 39 0 38 0;
+#X connect 40 0 37 0;
+#X connect 42 0 26 0;
+#X connect 43 0 26 1;
+#X restore 29 263 pd guts;
+#X msg 29 158 run the transformation;
+#X msg 29 200 hear the output buffer again;
+#X text 29 97 click below to:;
+#X msg 29 221 save the output buffer;
+#X floatatom 29 284 0 0 0;
+#X msg 29 242 save normalized to max amplitude;
+#N canvas 130 10 488 287 input-sample 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 188955 float 0;
+#X coords 0 1 188954 -1 400 100 1;
+#X restore 53 21 graph;
+#N canvas 0 0 450 300 graph3 0;
+#X array array3 225280 float 0;
+#X coords 0 1 225279 -1 400 100 1;
+#X restore 54 146 graph;
+#X text 227 279 INPUT SAMPLES;
+#X restore 169 368 pd input-sample;
+#N canvas 192 180 507 343 output-sample 0;
+#N canvas 0 0 450 300 graph2 0;
+#X array array2 193365 float 0;
+#X coords 0 1 193364 -1 400 300 1;
+#X restore 56 12 graph;
+#X text 151 365 OUTPUT SAMPLE;
+#X restore 168 393 pd output-sample;
+#X floatatom 408 365 0 0 0;
+#N canvas 194 37 397 591 output 0;
+#X obj 62 191 t b;
+#X obj 62 144 f;
+#X obj 62 96 inlet;
+#X text 67 76 mute;
+#X obj 62 215 f;
+#X msg 127 229 0;
+#X msg 62 120 bang;
+#X obj 62 167 moses 1;
+#X obj 127 206 t b f;
+#X obj 90 416 outlet;
+#X msg 90 392 set \$1;
+#X obj 175 154 moses 1;
+#X obj 211 418 dbtorms;
+#X obj 211 442 pack 0 100;
+#X obj 175 130 r master-lvl;
+#X obj 90 359 r master-lvl;
+#X obj 78 269 s master-lvl;
+#X obj 211 466 s master-amp;
+#X obj 195 229 loadbang;
+#X msg 195 253 \; master-lvl 90;
+#X connect 0 0 4 0;
+#X connect 1 0 7 0;
+#X connect 2 0 6 0;
+#X connect 4 0 16 0;
+#X connect 5 0 16 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 10 0 9 0;
+#X connect 11 1 4 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 14 0 1 1;
+#X connect 14 0 11 0;
+#X connect 15 0 10 0;
+#X connect 15 0 12 0;
+#X connect 18 0 19 0;
+#X restore 408 344 pd output;
+#X msg 408 323 mute;
+#X obj 408 386 s master-lvl;
+#X text 449 322 <-- mute button;
+#X text 444 363 <--set me;
+#X text 408 406 LINE OUT LEVEL in dB (100 norm);
+#X msg 29 179 stop the transformation;
+#X text 193 9 (old-fashioned) VOCODER;
+#X text 28 31 This takes in two soundfiles and uses the first to "vocode"
+the second. THe resulting sound is as long as the shorter of the two
+inputs.;
+#X msg 29 116 read the analysis sound from file;
+#X msg 29 137 AND read the sound to be processed from file;
+#X text 462 97 SQUELCH;
+#X obj 462 116 r squelch;
+#X obj 462 187 s squelch;
+#X text 526 161 1-100 or so;
+#X connect 0 0 27 0;
+#X connect 1 0 0 0;
+#X connect 4 0 9 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 8 0 4 0;
+#X connect 10 0 4 0;
+#X connect 13 0 16 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 20 0 4 0;
+#X connect 23 0 4 0;
+#X connect 24 0 4 0;
+#X connect 26 0 1 0;
diff --git a/desiredata/doc/7.stuff/soundfile-tools/README.txt b/desiredata/doc/7.stuff/soundfile-tools/README.txt
new file mode 100644
index 00000000..1670af3f
--- /dev/null
+++ b/desiredata/doc/7.stuff/soundfile-tools/README.txt
@@ -0,0 +1,2 @@
+Here are some standard audio transformations packaged to work with mono
+soundfiles.