#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;
