#N canvas 4 72 958 502 12;
#N canvas 293 9 611 700 freeze 0;
#X obj 27 137 vasp.split 2;
#X obj 30 463 vasp.join 2;
#X obj 27 74 vasp.cfft @detach 1;
#X obj 32 519 vasp.c!fft @detach 1;
#X obj 25 13 inlet;
#X obj 32 617 outlet;
#X obj 91 230 * 0.01;
#X obj 302 17 inlet;
#X obj 26 107 vasp.polar @detach 1;
#X obj 32 490 vasp.rect @detach 1;
#X obj 29 321 vasp.gate @detach 1;
#X obj 95 374 vasp.noise @detach 1;
#X obj 29 434 vasp.sync;
#X obj 91 208 vasp.max? @detach 1;
#X obj 381 17 inlet;
#X obj 167 619 outlet;
#X obj 32 591 vasp.opt;
#N canvas 238 212 472 322 non0 0;
#X obj 58 254 outlet;
#X obj 60 158 / 1;
#X obj 26 11 inlet;
#X obj 26 39 t a a;
#X obj 234 77 vasp.f?;
#X obj 46 98 vasp.!= 0 @detach 1;
#X obj 27 124 vasp.sum?;
#X obj 60 195 rmstodb;
#X obj 60 225 - 100;
#X obj 47 71 vasp.!;
#X connect 1 0 7 0;
#X connect 2 0 3 0;
#X connect 3 0 6 0;
#X connect 3 1 4 0;
#X connect 4 0 1 1;
#X connect 5 0 6 0;
#X connect 6 1 1 0;
#X connect 7 0 8 0;
#X connect 8 0 0 0;
#X connect 9 0 5 0;
#X restore 164 553 pd non0;
#X obj 32 564 vasp.n 0;
#X obj 302 45 + 100;
#X obj 326 117 expr pow(2. \, -$f1/1200);
#X obj 300 76 dbtorms;
#N canvas 445 282 482 332 cplx 0;
#X obj 19 229 vasp.join;
#X obj 19 73 t a b a;
#X obj 149 137 vasp.f?;
#X obj 19 14 inlet;
#X obj 19 258 outlet;
#X text 216 135 get length of source;
#X text 225 181 make immediate;
#X text 225 196 initialized to 0;
#X text 101 230 make complex vasp;
#X obj 87 176 vasp.! @detach 1;
#X obj 19 203 vasp.sync;
#X connect 0 0 4 0;
#X connect 1 0 10 0;
#X connect 1 1 9 0;
#X connect 1 2 2 0;
#X connect 2 0 9 1;
#X connect 3 0 1 0;
#X connect 9 0 10 1;
#X connect 10 0 0 0;
#X connect 10 1 0 1;
#X restore 27 43 pd cplx;
#X text 281 166 resample;
#X text 146 230 find spectral peak;
#X text 203 320 gate spectrum below threshold;
#X text 106 435 wait for threads to finish;
#X text 193 75 FFT;
#X text 195 100 -> polar;
#X text 191 487 -> cartesian;
#X text 201 515 inverse FFT;
#X text 266 371 randomize complex arguments;
#X text 228 551 get spectral density;
#X obj 28 168 vasp.xtilt 1 @detach 1 @inter 2;
#X obj 30 347 vasp.pow @detach 1;
#X obj 441 21 inlet;
#X text 194 347 treat spectrum exponentially;
#X obj 398 444 loadbang;
#X msg 398 469 detach 1;
#X text 105 591 normalize result;
#X text 391 490 no attributes yet;
#X obj 28 238 t a a;
#X obj 28 288 vasp;
#X obj 89 257 t b f;
#X obj 95 399 vasp.* 3.14159 @detach 1;
#X connect 0 0 33 0;
#X connect 0 1 11 0;
#X connect 1 0 9 0;
#X connect 2 0 8 0;
#X connect 3 0 18 0;
#X connect 4 0 22 0;
#X connect 6 0 43 0;
#X connect 7 0 19 0;
#X connect 8 0 0 0;
#X connect 9 0 3 0;
#X connect 10 0 34 0;
#X connect 11 0 44 0;
#X connect 12 0 1 0;
#X connect 12 1 1 1;
#X connect 13 0 6 0;
#X connect 14 0 20 0;
#X connect 16 0 5 0;
#X connect 17 0 15 0;
#X connect 18 0 16 0;
#X connect 19 0 21 0;
#X connect 20 0 33 1;
#X connect 21 0 6 1;
#X connect 22 0 2 0;
#X connect 33 0 41 0;
#X connect 34 0 12 0;
#X connect 34 0 17 0;
#X connect 35 0 34 1;
#X connect 37 0 38 0;
#X connect 38 0 16 0;
#X connect 41 0 13 0;
#X connect 41 1 42 1;
#X connect 42 0 10 0;
#X connect 43 0 42 0;
#X connect 43 1 10 1;
#X connect 44 0 12 1;
#X restore 18 331 pd freeze;
#X obj 104 214 nbx 6 18 -100 0 0 1 empty empty spectral_gate(dB) 0
-8 0 12 -225271 -1 -1 -20 256;
#X obj 104 257 nbx 7 18 -10000 10000 0 1 empty empty transpose(cents)
0 -8 0 12 -225271 -1 -1 0 256;
#X obj 448 278 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 729 279 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#N canvas 0 0 468 318 save 0;
#X obj 30 198 soundfiler;
#X obj 30 134 symbol;
#X obj 29 106 savepanel;
#X obj 32 8 inlet;
#X obj 27 232 outlet;
#X obj 30 42 route new again;
#X obj 29 73 t b;
#X obj 84 73 t b;
#X msg 27 169 write -bytes 3 -wave \$1 dst;
#X connect 0 0 4 0;
#X connect 1 0 8 0;
#X connect 2 0 1 0;
#X connect 3 0 5 0;
#X connect 5 0 6 0;
#X connect 5 1 7 0;
#X connect 6 0 2 0;
#X connect 7 0 1 0;
#X connect 8 0 0 0;
#X restore 729 250 pd save;
#N canvas 205 58 335 472 open 0;
#X obj 18 192 soundfiler;
#X obj 19 96 openpanel;
#X obj 21 6 inlet;
#X obj 15 390 outlet;
#X obj 20 123 symbol;
#X obj 17 345 vasp.u;
#X obj 17 233 t b;
#X obj 22 33 route new again;
#X obj 19 66 t b;
#X obj 74 66 t b;
#X msg 19 152 read -resize \$1 src;
#X msg 16 281 vasp src;
#X obj 74 230 s \$0-srclen;
#X obj 15 313 vasp.opt;
#X connect 0 0 6 0;
#X connect 0 0 12 0;
#X connect 1 0 4 0;
#X connect 2 0 7 0;
#X connect 4 0 10 0;
#X connect 5 0 3 0;
#X connect 6 0 11 0;
#X connect 7 0 8 0;
#X connect 7 1 9 0;
#X connect 8 0 1 0;
#X connect 9 0 4 0;
#X connect 10 0 0 0;
#X connect 11 0 13 0;
#X connect 13 0 5 0;
#X restore 448 250 pd open;
#X msg 381 222 stop;
#N canvas 0 0 450 300 graph10 0;
#X array src 165888 float 0;
#X coords 0 1 165887 -1 600 150 1;
#X restore 322 20 graph;
#X msg 447 222 new;
#X msg 482 222 again;
#X msg 728 222 new;
#X msg 761 222 again;
#X msg 332 222 play;
#X obj 8 9 cnv 15 300 48 empty empty freeze 5 14 0 20 -233017 -66577
0;
#X text 128 13 make static sound;
#X obj 18 108 bng 25 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 107 115 nbx 12 18 0 1e+008 0 1 empty empty length(frames) 0
-8 0 12 -225271 -1 -1 1e+006 256;
#X obj 85 368 nbx 9 14 -1e+037 1e+037 0 0 empty empty spectral_density(dB)
0 -6 0 10 -262131 -1 -1 0 256;
#X obj 332 197 cnv 15 100 20 empty empty play_src 5 8 0 10 -261681
-66577 0;
#X obj 447 197 cnv 15 100 20 empty empty read_src 5 8 0 10 -261681
-66577 0;
#X obj 727 197 cnv 15 100 20 empty empty write_dst 5 8 0 10 -261681
-66577 0;
#N canvas 0 0 450 300 graph10 0;
#X array dst 1e+006 float 0;
#X coords 0 1 999999 -1 600 150 1;
#X restore 325 304 graph;
#X msg 663 223 stop;
#X msg 614 223 play;
#X obj 614 198 cnv 15 100 20 empty empty play_dst 5 8 0 10 -261681
-66577 0;
#N canvas 0 0 503 355 playsrc 0;
#X obj 18 245 dac~;
#X obj 19 21 inlet;
#X obj 17 49 route play;
#X obj 18 197 tabplay~ src;
#X obj 338 23 r \$0-srclen;
#X obj 166 22 r \$0-offs;
#X obj 249 22 r \$0-len;
#X obj 338 48 t b f;
#X obj 166 94 *;
#X obj 248 93 *;
#X obj 75 132 pack 0 0;
#X obj 19 81 t b;
#X obj 19 159 lister;
#X obj 77 105 loadbang;
#X obj 109 239 outlet;
#X connect 1 0 2 0;
#X connect 2 0 11 0;
#X connect 2 1 3 0;
#X connect 3 0 0 0;
#X connect 3 0 0 1;
#X connect 3 1 14 0;
#X connect 4 0 7 0;
#X connect 5 0 8 0;
#X connect 6 0 9 0;
#X connect 7 0 8 0;
#X connect 7 0 9 0;
#X connect 7 1 8 1;
#X connect 7 1 9 1;
#X connect 8 0 10 0;
#X connect 9 0 10 1;
#X connect 10 0 12 1;
#X connect 11 0 12 0;
#X connect 12 0 3 0;
#X connect 13 0 10 0;
#X restore 332 250 pd playsrc;
#N canvas 0 0 483 335 playdst 0;
#X obj 21 118 dac~;
#X obj 19 21 inlet;
#X obj 22 51 route play;
#X obj 21 83 tabplay~ dst;
#X obj 98 118 outlet;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 2 1 3 0;
#X connect 3 0 0 0;
#X connect 3 0 0 1;
#X connect 3 1 4 0;
#X restore 614 251 pd playdst;
#N canvas 249 202 547 490 copy 0;
#X obj 27 26 inlet;
#X obj 27 51 t b b;
#X obj 316 19 inlet;
#X obj 25 361 outlet;
#X obj 26 81 vasp src;
#X obj 26 229 vasp.f;
#X obj 26 201 vasp.o;
#X obj 128 31 r \$0-offs;
#X obj 211 31 r \$0-len;
#X obj 316 87 f 1e+006;
#X obj 366 21 loadbang;
#X obj 84 169 *;
#X obj 117 169 *;
#X obj 82 139 vasp.f?;
#X obj 27 109 t a a;
#X obj 27 259 vasp.sync;
#X obj 26 328 vasp.f -1;
#X text 167 288 copy src to dst;
#X text 108 328 take all dst;
#X text 311 193 resize dst buffer;
#X text 341 221 set to zero;
#X obj 185 222 vasp.= 0 @detach 1;
#X obj 26 287 vasp.-> @detach 1;
#X obj 187 174 vasp.s @ref dst @detach 1;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 1 1 23 0;
#X connect 2 0 9 0;
#X connect 4 0 14 0;
#X connect 5 0 15 0;
#X connect 6 0 5 0;
#X connect 7 0 11 1;
#X connect 8 0 12 1;
#X connect 9 0 23 1;
#X connect 10 0 9 0;
#X connect 11 0 6 1;
#X connect 12 0 5 1;
#X connect 13 0 11 0;
#X connect 13 0 12 0;
#X connect 14 0 6 0;
#X connect 14 1 13 0;
#X connect 15 0 22 0;
#X connect 15 1 22 1;
#X connect 16 0 3 0;
#X connect 21 0 15 1;
#X connect 22 1 16 0;
#X connect 23 0 21 0;
#X restore 18 159 pd copy;
#X text 85 160 copy and resize;
#X obj 323 170 hsl 600 15 0 1 0 1 \$0-r2 empty empty -2 -6 1152 8 -262131
-1 -1 52000 1;
#X obj 323 5 hsl 600 15 0 1 0 1 \$0-r1 empty empty -2 -6 1152 8 -262131
-1 -1 28800 1;
#N canvas 148 330 301 261 sel 0;
#X obj 30 25 r \$0-r1;
#X obj 110 25 r \$0-r2;
#X obj 30 100 min;
#X obj 113 100 max;
#X obj 30 53 t f f;
#X obj 110 50 t b b f;
#X obj 113 130 -;
#X obj 27 190 s \$0-offs;
#X obj 113 190 s \$0-len;
#X obj 114 161 * -1;
#X connect 0 0 4 0;
#X connect 1 0 5 0;
#X connect 2 0 6 0;
#X connect 2 0 7 0;
#X connect 3 0 6 1;
#X connect 4 0 2 0;
#X connect 4 1 3 0;
#X connect 5 0 2 0;
#X connect 5 1 3 0;
#X connect 5 2 3 1;
#X connect 5 2 2 1;
#X connect 6 0 9 0;
#X connect 9 0 8 0;
#X restore 871 198 pd sel;
#X text 125 31 (C)2002 Thomas Grill;
#X text 19 89 do!;
#X obj 104 301 nbx 7 18 0 3 0 1 empty empty power 0 -8 0 12 -225271
-1 -1 1 256;
#X text 10 35 (needs zexy!);
#X obj 18 410 vasp.u;
#X text 76 412 update graphics;
#X obj 28 381 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 331 277 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 613 277 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X connect 0 0 37 0;
#X connect 0 1 18 0;
#X connect 1 0 0 1;
#X connect 2 0 0 2;
#X connect 5 0 4 0;
#X connect 6 0 3 0;
#X connect 7 0 26 0;
#X connect 9 0 6 0;
#X connect 10 0 6 0;
#X connect 11 0 5 0;
#X connect 12 0 5 0;
#X connect 13 0 26 0;
#X connect 16 0 28 0;
#X connect 17 0 28 1;
#X connect 23 0 27 0;
#X connect 24 0 27 0;
#X connect 26 0 40 0;
#X connect 27 0 41 0;
#X connect 28 0 0 0;
#X connect 35 0 0 3;
#X connect 39 0 37 0;
#X connect 40 0 13 0;
#X connect 41 0 24 0;