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