#N canvas 412 23 626 723 12;
#X declare -stdpath ./;
#X floatatom 59 691 5 0 0 0 - - - 0;
#X obj 147 576 bp~;
#X obj 124 537 bp~;
#X obj 156 448 mtof;
#X floatatom 156 475 7 0 0 0 - - - 0;
#X floatatom 165 501 4 0 999 0 - \$0-q - 0;
#X floatatom 156 426 7 0 150 0 - \$0-pitch - 0;
#X obj 59 616 env~ 4096;
#X obj 125 349 *~ 0;
#X obj 124 374 +~ 1;
#X obj 59 640 + 0.5;
#X obj 59 666 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 191 450 (shift-drag to fine tune);
#X obj 147 623 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 2;
#X coords 0 1 155944 -1 200 150 1;
#X restore 383 346 graph;
#X obj 125 301 r \$0-loopf;
#X obj 125 325 phasor~;
#X obj 124 398 tabread4~ \$0-array;
#X obj 169 349 r \$0-totsamps;
#X text 55 19 MEASURING SPECTRA USING BAND-PASS FILTERS;
#X text 213 425 <= center pitch;
#X text 212 476 <= center frequency;
#X text 200 501 <= Q (filter selectivity);
#X obj 452 20 declare -stdpath ./;
#X connect 1 0 7 0;
#X connect 1 0 15 0;
#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;
