#N canvas 309 443 478 328 10; #N canvas 0 22 522 372 sound-source 0; #X text 13 300 try a vocal sound or other sound with strong formant structure; #X obj 31 194 soundfiler; #X obj 31 160 openpanel; #N canvas 0 22 450 300 graph1 0; #X array resent-sound1 1.25363e+06 float 2; #X coords 0 1 1.25363e+06 -1 200 140 1; #X restore 237 13 graph; #X msg 31 131 bang; #X obj 227 284 outlet~; #X msg 227 244 bang; #X obj 348 228 spigot; #X obj 385 205 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X text 63 132 open the sound; #X text 133 244 then play it; #X text 304 190 loop if you like; #X obj 227 268 tabplay~ resent-sound1; #X msg 31 177 read -resize \$1 resent-sound1; #X connect 2 0 13 0; #X connect 4 0 2 0; #X connect 6 0 12 0; #X connect 7 0 6 0; #X connect 8 0 7 1; #X connect 12 0 5 0; #X connect 12 1 7 0; #X connect 13 0 1 0; #X restore 35 68 pd sound-source; #X msg 231 143 \; pd dsp \$1; #X obj 231 117 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #N canvas 0 22 474 324 resent-block 1; #X obj 164 51 inlet~; #X obj 164 143 outlet~; #X obj 271 203 outlet; #X obj 162 183 block~ 256; #X obj 264 54 inlet; #X obj 164 98 resent~ 5000 4 1; #X obj 271 175 snapshot~; #X obj 326 137 metro 50; #X msg 326 116 1; #X obj 326 80 loadbang; #X connect 0 0 5 0; #X connect 4 0 5 0; #X connect 5 0 1 0; #X connect 5 1 6 0; #X connect 6 0 2 0; #X connect 7 0 6 0; #X connect 8 0 7 0; #X connect 9 0 8 0; #X restore 35 114 pd resent-block; #X obj 35 158 dac~; #N canvas 921 180 636 397 messages 0; #X obj 171 295 outlet; #X msg 171 112 acquire_sample; #N canvas 260 436 657 449 global-control 0; #X obj 82 351 outlet; #X msg 257 259 1 0; #X msg 299 259 -1 0; #X text 254 347 set speed and phase; #X msg 82 166 setspeed \$1; #X floatatom 82 140 5 0 0 0 - a -; #X msg 337 259 0 0; #X floatatom 206 66 5 0 0 0 - b -; #X msg 206 92 setphase \$1; #X obj 439 235 vsl 15 128 -2 2 0 0 a empty empty 0 -8 0 8 -236160 -1 -1 0 1; #X obj 461 235 vsl 15 128 0 1 0 0 b empty empty 0 -8 0 8 -236160 -1 -1 0 1; #X msg 257 327 ssap \$1 \$1; #X text 421 209 speed; #X text 460 373 phase; #X connect 1 0 11 0; #X connect 2 0 11 0; #X connect 4 0 0 0; #X connect 5 0 4 0; #X connect 6 0 11 0; #X connect 7 0 8 0; #X connect 8 0 0 0; #X connect 11 0 0 0; #X restore 197 151 pd global-control; #X text 281 112 record sample to FFT buffer; #X obj 320 255 fftease-system; #N canvas 0 22 454 304 init 0; #X msg 158 101 verbose 1; #X obj 158 76 loadbang; #X msg 235 148 playthrough 1; #X obj 235 125 loadbang; #X obj 178 210 outlet; #X connect 0 0 4 0; #X connect 1 0 0 0; #X connect 2 0 4 0; #X connect 3 0 2 0; #X restore 252 245 pd init; #N canvas 786 85 508 405 separate-bin-control 0; #X obj 50 296 outlet; #X obj 50 129 pack f f; #X floatatom 50 95 5 0 0 0 - - -; #X floatatom 101 96 5 0 0 0 - - -; #X text 48 79 bin #; #X text 99 81 bin speed; #X msg 187 122 linespeed 0 -1 511 1; #X text 164 105 startbin startspeed endbin endspeed; #X text 164 222 minspeed maxspeed; #X msg 162 265 randphase 0 1; #X msg 188 163 linephase 0 0 511 1; #X msg 165 237 randspeed 0.95 1.05; #X text 47 53 phase is bounded by 0-1; #X text 47 39 bin numbers are bounded by 0-(FFT_size/2 - 1); #X msg 50 168 bin \$1 \$2; #X text 45 327 The cool thing here is that each FFT bin can be set to a different speed.; #X connect 1 0 14 0; #X connect 2 0 1 0; #X connect 3 0 1 1; #X connect 6 0 0 0; #X connect 9 0 0 0; #X connect 10 0 0 0; #X connect 11 0 0 0; #X connect 14 0 0 0; #X restore 210 176 pd separate-bin-control; #X text 334 157 then control it; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 4 0 0 0; #X connect 5 0 0 0; #X connect 6 0 0 0; #X restore 135 92 pd messages; #X text 28 212 resent~ follows the model of residency~ but allows independent control over each bin. It is recommended that you familiarize yourself with residency~ before working with the more complicated resent~.; #X floatatom 135 150 5 0 0 0 - - -; #X text 117 167 record sync; #X text 155 71 <- first load a sound; #X text 228 93 <- then see what else you can do; #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 7 0; #X connect 5 0 3 1;