#N canvas 83 221 774 628 12;
#X obj 302 351 line~;
#X obj 34 444 cos~;
#X floatatom 71 560 0 0 0;
#N canvas 176 241 532 273 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 398 111 moses 1;
#X obj 83 148 dbtorms;
#X obj 398 86 r master-lvl;
#X obj 83 42 r master-lvl;
#X obj 338 210 s master-lvl;
#X obj 17 148 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 15 125 audio;
#X text 93 110 show level;
#X obj 17 177 hip~ 1;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 12 0;
#X connect 5 0 12 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 5 0;
#X connect 8 1 4 1;
#X connect 9 0 23 0;
#X connect 10 0 1 1;
#X connect 10 0 8 0;
#X connect 11 0 9 0;
#X connect 11 0 17 0;
#X connect 13 0 26 0;
#X connect 14 0 16 0;
#X connect 14 0 19 0;
#X connect 17 0 18 0;
#X connect 20 0 21 1;
#X connect 21 0 22 0;
#X connect 21 0 22 1;
#X connect 23 0 20 0;
#X connect 26 0 21 0;
#X restore 35 587 pd output;
#X msg 111 560 MUTE;
#X obj 302 327 pack 0 50;
#X floatatom 302 255 0 0 0;
#X obj 34 356 -~ 0.5;
#X obj 34 395 *~;
#X obj 302 279 / 10;
#X obj 34 420 clip~ -0.5 0.5;
#X text 302 233 bandwidth;
#X obj 302 375 +~ 1;
#X obj 35 467 +~ 1;
#X obj 184 440 cos~;
#X obj 35 496 *~;
#X floatatom 206 269 4 0 0;
#X obj 206 293 / 10;
#X obj 184 414 *~;
#X text 204 224 center;
#X text 204 243 freq.;
#X obj 302 303 max 0;
#X obj 206 365 line~;
#X obj 206 341 pack 0 50;
#X obj 206 317 max 0;
#X floatatom 34 308 4 0 0;
#X obj 34 332 phasor~ 100;
#X text 156 559 <-- output;
#X text 30 283 freq.;
#X text 30 264 fundamental;
#X graph graph1 0 0 128 500 440 492 696 362;
#X array spectrum 128 float 0;
#X pop;
#X msg 108 498 bang;
#N canvas 204 17 358 238 fft 0;
#X obj 46 48 inlet~;
#X obj 159 181 tabwrite~ spectrum;
#X obj 159 145 inlet;
#X obj 46 78 rfft~;
#X obj 46 111 *~;
#X obj 77 111 *~;
#X obj 46 141 sqrt~;
#X obj 191 45 block~ 1024 1;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 4 0;
#X connect 3 0 4 1;
#X connect 3 1 5 0;
#X connect 3 1 5 1;
#X connect 4 0 6 0;
#X connect 5 0 6 0;
#X connect 6 0 1 0;
#X restore 59 524 pd fft;
#X text 439 502 0;
#X text 687 499 5512;
#X text 149 498 <-- graph;
#X text 31 2 WINDOWED PACKET SPECTRUM;
#X text 19 34 Here's the spectrum you get. Note that even if you put
the center frequency right on a partial \, there is significant energy
in neighboring partials (try fundamental 440 \, "center freq" 30 \,
bandwidth 0.);
#X text 18 104 The center frequency is in units of ten per partial
\, or in other words a value of "30" means "centered on the third partial".
;
#X text 505 596 updated for Pd version 0.34;
#X text 22 155 This technique only works if you're doing Hanning-window
shaped PWM--you can't combine this naturally with FM or with the waveshaping
technique we'll see later.;
#X connect 0 0 12 0;
#X connect 1 0 13 0;
#X connect 2 0 3 1;
#X connect 3 0 2 0;
#X connect 4 0 3 2;
#X connect 5 0 0 0;
#X connect 6 0 9 0;
#X connect 7 0 8 0;
#X connect 7 0 18 0;
#X connect 8 0 10 0;
#X connect 9 0 21 0;
#X connect 10 0 1 0;
#X connect 12 0 8 1;
#X connect 13 0 15 0;
#X connect 14 0 15 1;
#X connect 15 0 3 0;
#X connect 15 0 32 0;
#X connect 16 0 17 0;
#X connect 17 0 24 0;
#X connect 18 0 14 0;
#X connect 21 0 5 0;
#X connect 22 0 18 1;
#X connect 23 0 22 0;
#X connect 24 0 23 0;
#X connect 25 0 26 0;
#X connect 26 0 7 0;
#X connect 31 0 32 1;
