#N canvas 6 22 954 653 10; #X obj 12 32 cnv 15 420 18 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 459 10 cnv 15 480 18 empty empty empty 4 8 0 14 -195568 -1 0 ; #X obj 445 10 cnv 2 2 600 empty empty empty 20 12 0 14 -166441 -66577 0; #X obj 12 10 cnv 15 420 18 empty empty the_info 4 8 0 14 -195568 -1 0; #X obj 13 139 cnv 15 420 300 empty empty empty 20 12 0 14 -261681 -66577 0; #X obj 13 464 cnv 15 420 160 empty empty empty 20 12 0 14 -261681 -66577 0; #X obj 483 76 cnv 15 420 350 empty empty empty 20 12 0 14 -261681 -66577 0; #N canvas 0 22 454 304 graph1 0; #X array sample-07 264444 float 0; #X coords 0 2 264443 -2 200 140 1; #X restore 101 474 graph; #X obj 484 434 cnv 15 180 200 empty empty empty 20 12 0 14 -261681 -66577 0; #X obj 686 434 cnv 15 180 200 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 698 443 vsl 15 80 0 1 0 0 empty volume-set empty 0 -8 0 8 -262144 -1 -1 7900 1; #X floatatom 698 531 5 0 0 1 volume - -; #X obj 698 609 dac~; #X obj 762 453 loadbang; #X obj 505 438 tgl 15 0 empty play-set play 18 8 0 12 -262144 -1 -1 0 1; #X obj 505 530 phasor~; #X obj 508 457 hsl 128 15 -2 2 0 0 empty empty empty -2 -6 0 8 -262144 -1 -1 6350 1; #X floatatom 505 476 5 0 0 0 - - -; #X obj 698 569 line~; #X obj 698 548 pack 0 10; #X obj 698 589 *~; #X msg 762 472 \; pd dsp 1 \; play-set 0 \; volume-set 1; #X text 18 33 Sampling 2: getting samples into PD; #X text 18 58 PD allows you to load pre-recorded sounds into an array or record your own.; #X obj 31 148 bng 15 250 50 0 empty empty load 18 8 0 12 -262144 -1 -1; #X obj 31 171 openpanel; #X text 103 171 the familiar "open" window; #X msg 31 197 read -resize \$1 sample-07; #X text 221 190 read the selected file into; #X text 221 202 sample-07 \; resize the array; #X obj 31 221 soundfiler; #X floatatom 31 243 10 0 0 1 length_in_samples - -; #X obj 31 365 /; #X obj 31 327 t b f; #X floatatom 31 384 10 0 0 1 base_frequency - -; #X obj 31 346 1; #X obj 31 291 / 44100; #X floatatom 31 311 10 0 0 1 length_in_seconds - -; #X obj 505 586 tabread4~ sample-07; #X obj 45 265 s len_samples; #X obj 31 408 s base_freq; #X obj 522 491 r base_freq; #X obj 521 548 r len_samples; #X obj 742 569 catch~ out-07; #X obj 505 606 throw~ out-07; #X obj 505 567 *~; #X obj 505 510 *; #X obj 519 238 tabwrite~ sample-07; #X text 465 32 To record incoming audio \, use tabwrite~. To get the length of the sample \, use timer to count the time elapsed between bang and stop.; #X msg 490 83 \; sample-07 resize 441000; #X text 660 95 resize the array to 10 seconds; #X msg 555 207 bang; #X msg 601 208 stop; #X obj 555 120 tgl 15 0 empty empty record 18 8 0 12 -262144 -1 -1 0 1; #X obj 555 142 sel 1 0; #X obj 669 199 timer; #X obj 555 168 t b b; #X floatatom 669 238 10 0 0 1 length_in_seconds - -; #X obj 600 168 t b b; #X obj 497 162 adc~; #X floatatom 695 277 10 0 0 1 length_in_samples - -; #X obj 695 294 s len_samples; #X obj 669 356 /; #X obj 669 318 t b f; #X floatatom 669 375 10 0 0 1 base_frequency - -; #X obj 669 337 1; #X obj 669 399 s base_freq; #X obj 669 219 / 1000; #X obj 695 257 * 44100; #X text 18 94 The soundfiler object loads an array \, and outputs the file's length in samples. We can use this information to calculate the right numbers to use for playback speed:; #X connect 10 0 11 0; #X connect 11 0 19 0; #X connect 13 0 21 0; #X connect 14 0 16 0; #X connect 15 0 45 0; #X connect 16 0 17 0; #X connect 17 0 46 0; #X connect 18 0 20 0; #X connect 19 0 18 0; #X connect 20 0 12 0; #X connect 20 0 12 1; #X connect 24 0 25 0; #X connect 25 0 27 0; #X connect 27 0 30 0; #X connect 30 0 31 0; #X connect 31 0 36 0; #X connect 31 0 39 0; #X connect 32 0 34 0; #X connect 33 0 35 0; #X connect 33 1 32 1; #X connect 34 0 40 0; #X connect 35 0 32 0; #X connect 36 0 37 0; #X connect 37 0 33 0; #X connect 38 0 44 0; #X connect 41 0 46 1; #X connect 42 0 45 1; #X connect 43 0 20 1; #X connect 45 0 38 0; #X connect 46 0 15 0; #X connect 51 0 47 0; #X connect 52 0 47 0; #X connect 53 0 54 0; #X connect 54 0 56 0; #X connect 54 1 58 0; #X connect 55 0 67 0; #X connect 56 0 51 0; #X connect 56 1 55 0; #X connect 57 0 63 0; #X connect 57 0 68 0; #X connect 58 0 52 0; #X connect 58 1 55 1; #X connect 59 0 47 0; #X connect 59 1 47 0; #X connect 60 0 61 0; #X connect 62 0 64 0; #X connect 63 0 65 0; #X connect 63 1 62 1; #X connect 64 0 66 0; #X connect 65 0 62 0; #X connect 67 0 57 0; #X connect 68 0 60 0;