#N canvas 36 232 566 392 10; #N canvas 0 22 462 312 pvwarp-block 0; #X obj 185 146 pvwarp~ 0 4000 4 2; #X obj 185 187 outlet~; #X obj 158 250 block~ 256; #X obj 185 88 inlet~; #X obj 339 83 inlet; #X obj 265 47 inlet; #X obj 283 70 inlet; #X obj 321 52 inlet; #X connect 0 0 1 0; #X connect 3 0 0 0; #X connect 4 0 0 0; #X connect 5 0 0 7; #X connect 6 0 0 8; #X connect 7 0 0 9; #X restore 121 125 pd pvwarp-block; #N canvas 595 467 629 326 messages 0; #X obj 182 294 outlet; #X msg 99 77 bottomfreq \$1; #X floatatom 99 54 5 0 0 0 - - -; #X floatatom 253 68 5 0 0 0 - - -; #X msg 253 87 topfreq \$1; #X msg 301 178 autofunc 0.1 2; #X obj 301 158 loadbang; #X text 254 50 highest freq to synthesize; #X text 98 38 lowest freq; #N canvas 430 531 673 333 init 0; #X msg 66 47 automate 1; #X obj 66 17 loadbang; #X text 159 28 this tells Pd to ignore its control inlets and take the warp function exclusively from its internally generated states. This is because otherwise we'd have to deal with sending lots of data to the inlets.; #X text 78 125 FYI - the inlets are as follows: signal in \, CF1 \, BW1 \, warpfac1 \, CF2 \, BW2 \, warpfac2 \, transposition \, synthesis threshold.; #X obj 22 268 outlet; #X obj 196 265 s warp-offset; #X obj 305 262 s warp-transpose; #X obj 429 262 s warp-threshold; #X obj 207 221 unpack f f f; #X msg 207 197 0 1 1e-05; #X obj 207 174 loadbang; #X connect 0 0 4 0; #X connect 1 0 0 0; #X connect 8 0 5 0; #X connect 8 1 6 0; #X connect 8 2 7 0; #X connect 9 0 8 0; #X connect 10 0 9 0; #X restore 290 231 pd init; #X obj 256 26 hsl 128 15 500 5000 0 0 empty empty empty -2 -6 0 8 -260204 -1 -1 8700 1; #X obj 102 17 hsl 128 15 0 1000 0 0 empty empty empty -2 -6 0 8 -260204 -1 -1 0 1; #X text 407 177 punch for a new warp function.; #X text 295 201 parameters are minimum warp and maximum warp.; #X obj 370 259 fftease-system; #X connect 1 0 0 0; #X connect 2 0 1 0; #X connect 3 0 4 0; #X connect 4 0 0 0; #X connect 5 0 0 0; #X connect 6 0 5 0; #X connect 9 0 0 0; #X connect 10 0 3 0; #X connect 11 0 2 0; #X connect 14 0 0 0; #X restore 258 109 pd messages; #X msg 44 193 \; pd dsp \$1; #X obj 44 174 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 ; #X obj 121 160 dac~; #X floatatom 171 89 5 0 0 0 - transpose -; #X floatatom 146 72 5 0 0 0 - offset -; #X obj 201 196 hsl 128 15 0 1 0 0 offset empty offset -2 -6 0 8 -260204 -1 -1 4200 1; #X obj 202 231 hsl 128 15 0.25 1.5 0 0 transpose empty transpose -2 -6 0 8 -260204 -1 -1 7720 1; #X obj 201 264 hsl 128 15 0 0.05 0 0 threshold empty threshold -2 -6 0 8 -260204 -1 -1 0 1; #X floatatom 196 106 5 0 0 0 - threshold -; #X text 231 41 load a sound \, then warp away; #X text 339 262 synthesis threshold; #X text 334 196 offset for warping function; #X text 343 107 <- more info here; #N canvas 639 439 647 498 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 pvwarp-sound1 4e+06 float 2; #X coords 0 1 4e+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 1 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~ pvwarp-sound1; #X msg 31 177 read -resize \$1 pvwarp-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 121 41 pd sound-source; #X text 80 304 Experimental spectrum warper. An internal frequency warping function is created either according to specification or with the autofunc message. Try it on vocal sounds.; #N canvas 0 22 454 304 rinit 0; #X obj 26 83 r warp-offset; #X obj 135 80 r warp-transpose; #X obj 256 79 r warp-threshold; #X obj 48 160 outlet; #X obj 109 171 outlet; #X obj 244 174 outlet; #X connect 0 0 3 0; #X connect 1 0 4 0; #X connect 2 0 5 0; #X restore 131 231 pd rinit; #X connect 0 0 4 0; #X connect 0 0 4 1; #X connect 1 0 0 4; #X connect 3 0 2 0; #X connect 5 0 0 2; #X connect 6 0 0 1; #X connect 10 0 0 3; #X connect 15 0 0 0; #X connect 17 0 7 0; #X connect 17 1 8 0; #X connect 17 2 9 0;