#N canvas 412 23 626 723 12;
#X declare -stdpath ./;
#X floatatom 145 686 5 0 0 0 - - - 0;
#X obj 117 576 bp~;
#X obj 94 537 bp~;
#X obj 126 448 mtof;
#X floatatom 126 475 7 0 0 0 - - - 0;
#X floatatom 135 501 4 0 999 0 - \$0-q - 0;
#X floatatom 126 426 7 0 150 0 - \$0-pitch - 0;
#X obj 145 618 env~ 4096;
#X obj 95 349 *~ 0;
#X obj 94 374 +~ 1;
#X obj 145 640 + 0.5;
#X obj 145 663 int;
#X text 52 51 In this example we use two cascaded band-pass filters to troll for partials in Jonathan Harvey's famous bell sample., f 70;
#X text 52 212 You can hear partials around 48 \, 51.3 \, 55 (faint!) \, 57 (fainter!) \, 60 \, two beating partials around 65 \, 67 \, 69 \, 70.9 \, 71.75 \, 72.6 \, 74 \, 74.65 \, 75.6 \, 77 \, 81.2 \, 84.6 \, 86.5 \, and probably many more. There's also one down at 36 \, but it's easier to see it on the meter than hear it., f 70;
#X text 161 450 (shift-drag to fine tune);
#X obj 59 629 output~;
#X text 378 679 updated for Pd version 0.39;
#X text 52 89 Note that filters can give unexpected level changes. The bp~ object is designed to have roughly unit gain at the pass band \, so the higher you set "Q" the more amplitude is lost. You can correct for this by pushing the output amplitude \, but be sure to remember to reset the output amplitude before you reduce Q again. I set the Q to 100 and the output amplitude to 110 or 120 (with the room gain way down.) Then holding the shift key \, slowly drag the center pitch upward listening for modes., f 70;
#N canvas 316 23 512 371 startup 0;
#X obj 189 216 r readfile;
#X obj 189 269 soundfiler;
#X obj 123 17 loadbang;
#X obj 123 43 bng 19 250 50 0 empty empty empty 0 -6 0 8 #dfdfdf #000000 #000000;
#X obj 123 74 f \$0;
#X obj 95 284 /;
#X msg 60 254 44100;
#X obj 60 229 t b f, f 8;
#X obj 60 205 r \$0-totsamps;
#X obj 95 307 s \$0-loopf;
#X msg 123 101 \; readfile symbol \$1-array \; \$1-totsamps 143718 \; \$1-pitch 69 \; \$1-q 0;
#X msg 189 242 read -resize ../sound/bell.aiff \$1;
#X connect 0 0 11 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 10 0;
#X connect 5 0 9 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 7 1 5 1;
#X connect 8 0 7 0;
#X connect 11 0 1 0;
#X restore 312 580 pd startup;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-array 155944 float 0;
#X coords 0 1 155943 -1 200 150 1;
#X restore 383 346 graph;
#X obj 95 301 r \$0-loopf;
#X obj 95 325 phasor~;
#X obj 94 398 tabread4~ \$0-array;
#X obj 139 349 r \$0-totsamps;
#X text 55 19 MEASURING SPECTRA USING BAND-PASS FILTERS;
#X text 183 425 <= center pitch;
#X text 182 476 <= center frequency;
#X text 170 501 <= Q (filter selectivity);
#X obj 452 20 declare -stdpath ./;
#X connect 1 0 7 0;
#X connect 1 0 15 0;
#X connect 1 0 15 1;
#X connect 2 0 1 0;
#X connect 3 0 4 0;
#X connect 4 0 2 1;
#X connect 4 0 1 1;
#X connect 5 0 2 2;
#X connect 5 0 1 2;
#X connect 6 0 3 0;
#X connect 7 0 10 0;
#X connect 8 0 9 0;
#X connect 9 0 22 0;
#X connect 10 0 11 0;
#X connect 11 0 0 0;
#X connect 20 0 21 0;
#X connect 21 0 8 0;
#X connect 22 0 2 0;
#X connect 23 0 8 1;
