#N canvas 314 261 819 436 12; #X msg 2 279 freq \$1 100; #X obj 2 254 mtof; #X msg 108 279 amp \$1 100; #X obj 108 229 r amp; #X obj 206 230 r cf; #X obj 206 255 mtof; #X msg 206 280 cf \$1 100; #X obj 2 229 r pit; #X msg 140 374 bang; #X obj 71 403 dac~; #X obj 519 179 s vfr; #X obj 519 104 r vfr; #X obj 467 179 s vib; #X obj 467 104 r vib; #X msg 519 129 set \$1; #X floatatom 519 154 0 0 0 0 - - -; #X msg 467 129 set \$1; #X floatatom 467 154 0 0 0 0 - - -; #X obj 418 179 s bw; #X obj 369 179 s cf; #X obj 250 178 s amp; #X obj 309 177 s pit; #X obj 309 102 r pit; #X msg 309 127 set \$1; #X floatatom 309 152 0 0 0 0 - - -; #X obj 250 103 r amp; #X msg 250 128 set \$1; #X floatatom 250 153 0 0 0 0 - - -; #X msg 369 129 set \$1; #X floatatom 369 154 0 0 0 0 - - -; #X obj 369 104 r cf; #X msg 418 129 set \$1; #X floatatom 418 154 0 0 0 0 - - -; #X obj 418 104 r bw; #X msg 296 280 bw \$1 100; #X obj 296 230 r bw; #X obj 296 255 mtof; #X obj 385 229 r vib; #X msg 385 279 vib \$1 100; #X msg 483 279 vfr \$1 100; #X obj 483 254 / 8; #X obj 483 229 r vfr; #X obj 385 254 / 660; #X msg 573 129 set \$1; #X floatatom 573 154 0 0 0 0 - - -; #X obj 573 104 r shift; #X obj 573 179 s shift; #X obj 584 227 r shift; #X msg 584 277 shift \$1 100; #X obj 108 254 dbtorms; #X obj 85 348 paf~; #X obj 21 380 s~ foo; #X msg 705 278 phase 0 0 0; #X obj 140 399 print~ output; #N canvas 447 311 726 483 spectrum 0; #N canvas 0 0 450 300 graph1 0; #X array pulse-output 882 float 0; #X coords 0 1.02 882 -1.02 200 130 1; #X restore 405 271 graph; #X text 405 403 --------- 0.02 seconds ------; #N canvas 0 0 450 300 graph1 0; #X array spectrum 128 float 0; #X coords 0 500 128 0 256 130 1; #X restore 391 78 graph; #X obj 137 257 tabwrite~ pulse-output; #X msg 106 174 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 46 228 pd fft; #X text 33 8 PULSE SPECTRUM MEASUREMENT; #X text 379 221 0; #X text 627 218 5512; #X obj 94 123 r~ foo; #X obj 41 160 *~ 1; #X floatatom 44 113 0 0 0 0 - - -; #X obj 179 136 metro 1000; #X floatatom 178 108 0 0 0 0 - - -; #X obj 56 44 r graph; #X obj 140 205 *~ 10; #X connect 4 0 3 0; #X connect 4 0 5 1; #X connect 9 0 10 0; #X connect 9 0 15 0; #X connect 10 0 5 0; #X connect 11 0 10 1; #X connect 12 0 4 0; #X connect 13 0 12 0; #X connect 14 0 11 0; #X connect 14 0 13 0; #X connect 15 0 3 0; #X restore 664 340 pd spectrum; #X msg 20 136 \; pd dsp 1 \; pit 60 \; cf 60 \; graph 20; #X text 32 3 The "PAF" generator \, described in a paper in JAES 43/1 pp. 40-47 \, reprinted on Miller Puckette's web page. Often used in Philippe Manoury's music. The important controls are center frequency ("cf") and bandwidth ("bw") here controlled as MIDI values.; #X text 15 96 clich here to test; #X text 12 114 (then set amplitude); #X text 414 338 click here to see spectrum:; #X text 295 380 NOTE: the PAF algorithm is patented by IRCAM \, but is free for non-commercial use. For commercial use \, please see http://forum.ircam.fr ; #X connect 0 0 50 0; #X connect 1 0 0 0; #X connect 2 0 50 0; #X connect 3 0 49 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 50 0; #X connect 7 0 1 0; #X connect 8 0 53 0; #X connect 11 0 14 0; #X connect 13 0 16 0; #X connect 14 0 15 0; #X connect 15 0 10 0; #X connect 16 0 17 0; #X connect 17 0 12 0; #X connect 22 0 23 0; #X connect 23 0 24 0; #X connect 24 0 21 0; #X connect 25 0 26 0; #X connect 26 0 27 0; #X connect 27 0 20 0; #X connect 28 0 29 0; #X connect 29 0 19 0; #X connect 30 0 28 0; #X connect 31 0 32 0; #X connect 32 0 18 0; #X connect 33 0 31 0; #X connect 34 0 50 0; #X connect 35 0 36 0; #X connect 36 0 34 0; #X connect 37 0 42 0; #X connect 38 0 50 0; #X connect 39 0 50 0; #X connect 40 0 39 0; #X connect 41 0 40 0; #X connect 42 0 38 0; #X connect 43 0 44 0; #X connect 44 0 46 0; #X connect 45 0 43 0; #X connect 47 0 48 0; #X connect 48 0 50 0; #X connect 49 0 2 0; #X connect 50 0 9 0; #X connect 50 0 51 0; #X connect 50 0 9 1; #X connect 50 0 53 0; #X connect 52 0 50 0;