#N canvas 657 431 678 298 10; #N canvas 449 458 721 323 processing 0; #N canvas 0 110 466 295 hann-window 0; #X obj 288 130 osc~; #X obj 288 155 *~ -0.5; #X obj 288 179 +~ 0.5; #X obj 26 118 samplerate~; #X obj 26 142 /; #X msg 161 71 resize \$1; #X msg 292 95 0; #X obj 240 96 t f b; #X obj 26 94 t b f f; #X text 22 8 calculate Hann window table (variable window size) and constants window-hz (fundamental frequency of analysis).; #X obj 241 212 tabwrite~ \$0.hann; #X obj 26 67 r \$0.window.size; #X obj 26 166 s \$0.window.hz; #X obj 161 95 s \$0.hann; #X obj 240 70 r \$0.window.hz; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 10 0; #X connect 3 0 4 0; #X connect 4 0 12 0; #X connect 5 0 13 0; #X connect 6 0 0 1; #X connect 7 0 0 0; #X connect 7 1 6 0; #X connect 7 1 10 0; #X connect 8 0 3 0; #X connect 8 1 4 1; #X connect 8 2 5 0; #X connect 11 0 8 0; #X connect 14 0 7 0; #X restore 307 277 pd hann-window; #X obj 16 15 inlet~; #X obj 19 238 outlet~; #X obj 309 27 inlet; #X obj 306 160 table \$0.prev.imag.l 4096; #X obj 306 179 table \$0.prev.real.l 4096; #X obj 306 198 table \$0.prev.imag.r 4096; #X obj 306 217 table \$0.prev.real.r 4096; #X obj 306 236 table \$0.hann; #X msg 511 64 2048; #X obj 511 42 loadbang; #N canvas 41 57 750 770 fft.analysis.l 0; #X obj 51 477 *~; #X obj 18 477 *~; #X obj 18 499 -~; #X obj 167 475 *~; #X obj 136 475 *~; #X obj 136 497 +~; #X obj 109 193 *~; #X obj 78 193 *~; #X obj 50 193 *~; #X obj 19 193 *~; #X obj 19 218 +~; #X obj 127 379 *~; #X obj 20 622 *~; #X obj 236 175 rfft~; #X obj 108 161 rfft~; #X obj 19 564 rifft~; #X obj 21 646 outlet~; #X obj 97 379 *~; #X obj 97 401 +~; #X obj 124 218 -~; #X obj 18 431 *~; #X obj 51 432 *~; #X obj 21 728 block~; #X obj 19 349 +~ 1e-15; #X obj 19 598 *~; #X obj 127 643 expr 2/(3*$f1); #X msg 21 703 set \$1 4; #X obj 97 425 q8_rsqrt~; #X obj 121 69 *~; #X obj 89 69 *~; #X obj 89 91 +~; #X obj 159 94 q8_rsqrt~; #X obj 159 71 +~ 1e-20; #X obj 73 119 *~; #X obj 19 118 *~; #X obj 29 245 lrshift~ 1; #X obj 24 269 lrshift~ -1; #X obj 141 245 lrshift~ 1; #X obj 133 269 lrshift~ -1; #X obj 19 325 +~; #X obj 125 331 +~; #N canvas 0 0 554 671 read-windows 0; #X obj 18 358 line~; #X obj 16 523 outlet~; #X obj 125 531 outlet~; #X text 220 313 "back" window 1/4 cycle behind "front" one; #X obj 18 266 pack f f; #X obj 31 143 t b f; #X obj 31 184 -; #X obj 90 145 *; #X obj 90 114 - 1; #X obj 90 57 mtof; #X obj 90 77 / 440; #X obj 90 38 + 69; #X obj 353 123 samplerate~; #X obj 328 102 t f b; #X obj 328 141 /; #X obj 328 163 * 1000; #X text 376 163 window size (ms); #X obj 18 207 f; #X obj 16 492 *~; #X obj 124 503 *~; #X obj 18 75 bang~; #X obj 31 164 100; #X obj 197 286 *; #X obj 206 263 t b f; #X text 235 288 stretched window size (ms); #X obj 220 210 / 4; #X text 252 207 computation time for an overlap of 4; #X obj 18 230 / 4; #X obj 71 229 / 4; #X obj 17 393 +~; #X obj 193 310 / 4; #X obj 135 369 / 4; #X text 47 395 '+' since a bigger value in vd~ means 'earlier'.; #X text 114 110 subtract speed of read-out \, when; #X text 114 122 delay-time is static; #X text 134 37 convert cents of halftones to read-out speed; #X text 41 229 *); #X text 93 229 *); #X text 162 367 *); #X text 67 336 *); #X obj 18 287 t l b; #X obj 43 309 100; #X obj 43 333 / 4; #X text 57 165 initial delay (ms); #X text 71 307 initial delay (ms); #X text 21 556 *); #X text 24 572 it seems that if a time is specified in ms instead of samples \, the value has to be divided by the overlap factor (4 in this case) in order for the vd~ to read out the desired amount of samples. i'm still unsure what the reason for this might be.; #X obj 90 -6 r \$0.transpo; #X obj 328 81 r \$0.window.size; #X obj 164 468 tabreceive~ \$0.hann; #X obj 16 441 vd~ \$0.input.l; #X obj 123 443 vd~ \$0.input.l; #X obj 88 195 r \$0.latency; #X obj 102 274 r \$0.latency; #X connect 0 0 29 0; #X connect 0 0 51 0; #X connect 4 0 40 0; #X connect 5 0 21 0; #X connect 5 1 6 1; #X connect 6 0 17 1; #X connect 7 0 5 0; #X connect 8 0 7 0; #X connect 9 0 10 0; #X connect 10 0 8 0; #X connect 10 0 22 0; #X connect 11 0 9 0; #X connect 12 0 14 1; #X connect 13 0 14 0; #X connect 13 1 12 0; #X connect 14 0 15 0; #X connect 15 0 7 1; #X connect 15 0 23 0; #X connect 15 0 25 0; #X connect 17 0 27 0; #X connect 18 0 1 0; #X connect 19 0 2 0; #X connect 20 0 17 0; #X connect 21 0 6 0; #X connect 22 0 30 0; #X connect 23 0 22 0; #X connect 23 1 22 1; #X connect 25 0 28 0; #X connect 27 0 4 0; #X connect 28 0 4 1; #X connect 29 0 50 0; #X connect 30 0 31 0; #X connect 31 0 29 1; #X connect 40 0 0 0; #X connect 40 1 41 0; #X connect 41 0 42 0; #X connect 42 0 0 0; #X connect 47 0 11 0; #X connect 48 0 13 0; #X connect 49 0 19 1; #X connect 49 0 18 1; #X connect 50 0 18 0; #X connect 51 0 19 0; #X connect 52 0 21 1; #X connect 53 0 41 1; #X restore 442 106 pd read-windows; #X text 318 304 the left part is taken from miller puckette's audio example I07.phase.vocoder.pd from the doc.; #X obj 52 598 tabreceive~ \$0.hann; #X obj 127 622 r \$0.window.size; #X obj 35 300 *~ 1; #X obj 159 312 *~ 1; #X obj 21 679 r \$0.window.size; #X obj 20 8 tabreceive~ \$0.prev.real.l; #X obj 73 29 tabreceive~ \$0.prev.imag.l; #X obj 137 543 tabsend~ \$0.prev.imag.l; #X obj 136 567 tabsend~ \$0.prev.real.l; #X connect 0 0 2 1; #X connect 1 0 2 0; #X connect 2 0 15 0; #X connect 2 0 51 0; #X connect 3 0 5 1; #X connect 4 0 5 0; #X connect 5 0 15 1; #X connect 5 0 50 0; #X connect 6 0 19 1; #X connect 7 0 19 0; #X connect 8 0 10 1; #X connect 9 0 10 0; #X connect 10 0 36 0; #X connect 10 0 35 0; #X connect 10 0 39 0; #X connect 11 0 18 1; #X connect 12 0 16 0; #X connect 13 0 1 1; #X connect 13 0 3 1; #X connect 13 1 0 1; #X connect 13 1 4 1; #X connect 14 0 9 1; #X connect 14 0 7 1; #X connect 14 1 6 1; #X connect 14 1 8 1; #X connect 15 0 24 0; #X connect 17 0 18 0; #X connect 18 0 27 0; #X connect 19 0 37 0; #X connect 19 0 38 0; #X connect 19 0 40 0; #X connect 20 0 1 0; #X connect 20 0 4 0; #X connect 21 0 0 0; #X connect 21 0 3 0; #X connect 23 0 17 1; #X connect 23 0 17 0; #X connect 23 0 20 0; #X connect 24 0 12 0; #X connect 25 0 12 1; #X connect 26 0 22 0; #X connect 27 0 20 1; #X connect 27 0 21 1; #X connect 28 0 30 1; #X connect 29 0 30 0; #X connect 30 0 32 0; #X connect 31 0 33 1; #X connect 31 0 34 1; #X connect 32 0 31 0; #X connect 33 0 8 0; #X connect 33 0 7 0; #X connect 34 0 9 0; #X connect 34 0 6 0; #X connect 35 0 45 0; #X connect 36 0 45 0; #X connect 37 0 46 0; #X connect 38 0 46 0; #X connect 39 0 23 0; #X connect 40 0 11 0; #X connect 40 0 11 1; #X connect 40 0 21 0; #X connect 41 0 14 0; #X connect 41 1 13 0; #X connect 43 0 24 1; #X connect 44 0 25 0; #X connect 45 0 39 1; #X connect 46 0 40 1; #X connect 47 0 26 0; #X connect 48 0 29 1; #X connect 48 0 29 0; #X connect 48 0 34 0; #X connect 49 0 28 1; #X connect 49 0 28 0; #X connect 49 0 33 0; #X restore 18 142 pd fft.analysis.l; #X obj 309 122 s \$0.transpo; #X obj 511 87 s \$0.window.size; #X obj 77 17 inlet~; #X obj 98 239 outlet~; #X obj 16 96 delwrite~ \$0.input.l 1000; #X obj 76 67 delwrite~ \$0.input.r 1000; #N canvas 40 20 750 770 fft.analysis.r 0; #X obj 51 477 *~; #X obj 18 477 *~; #X obj 18 499 -~; #X obj 167 475 *~; #X obj 136 475 *~; #X obj 136 497 +~; #X obj 109 193 *~; #X obj 78 193 *~; #X obj 50 193 *~; #X obj 19 193 *~; #X obj 19 218 +~; #X obj 127 379 *~; #X obj 20 622 *~; #X obj 236 175 rfft~; #X obj 108 161 rfft~; #X obj 19 564 rifft~; #X obj 21 646 outlet~; #X obj 97 379 *~; #X obj 97 401 +~; #X obj 124 218 -~; #X obj 18 431 *~; #X obj 51 432 *~; #X obj 21 728 block~; #X obj 19 349 +~ 1e-15; #X obj 19 598 *~; #X obj 127 643 expr 2/(3*$f1); #X msg 21 703 set \$1 4; #X obj 97 425 q8_rsqrt~; #X obj 121 69 *~; #X obj 89 69 *~; #X obj 89 91 +~; #X obj 159 94 q8_rsqrt~; #X obj 159 71 +~ 1e-20; #X obj 73 119 *~; #X obj 19 118 *~; #X obj 29 245 lrshift~ 1; #X obj 24 269 lrshift~ -1; #X obj 141 245 lrshift~ 1; #X obj 133 269 lrshift~ -1; #X obj 19 325 +~; #X obj 125 331 +~; #N canvas 139 105 510 684 read-windows 0; #X obj 18 358 line~; #X obj 16 523 outlet~; #X obj 125 531 outlet~; #X text 220 313 "back" window 1/4 cycle behind "front" one; #X obj 18 266 pack f f; #X obj 31 143 t b f; #X obj 31 184 -; #X obj 90 145 *; #X obj 90 114 - 1; #X obj 90 57 mtof; #X obj 90 77 / 440; #X obj 90 38 + 69; #X obj 353 123 samplerate~; #X obj 328 102 t f b; #X obj 328 141 /; #X obj 328 163 * 1000; #X text 376 163 window size (ms); #X obj 18 207 f; #X obj 16 492 *~; #X obj 124 503 *~; #X obj 18 75 bang~; #X obj 31 164 100; #X obj 197 286 *; #X obj 206 263 t b f; #X text 235 288 stretched window size (ms); #X obj 220 210 / 4; #X text 252 207 computation time for an overlap of 4; #X obj 18 230 / 4; #X obj 71 229 / 4; #X obj 17 393 +~; #X obj 193 310 / 4; #X obj 135 369 / 4; #X text 47 395 '+' since a bigger value in vd~ means 'earlier'.; #X text 114 110 subtract speed of read-out \, when; #X text 114 122 delay-time is static; #X text 134 37 convert cents of halftones to read-out speed; #X text 41 229 *); #X text 93 229 *); #X text 162 367 *); #X text 67 336 *); #X obj 18 287 t l b; #X obj 43 309 100; #X obj 43 333 / 4; #X text 57 165 initial delay (ms); #X text 71 307 initial delay (ms); #X text 21 556 *); #X text 24 572 it seems that if a time is specified in ms instead of samples \, the value has to be divided by the overlap factor (4 in this case) in order for the vd~ to read out the desired amount of samples. i'm still unsure what the reason for this might be.; #X obj 90 -6 r \$0.transpo; #X obj 328 81 r \$0.window.size; #X obj 164 468 tabreceive~ \$0.hann; #X obj 16 441 vd~ \$0.input.r; #X obj 123 443 vd~ \$0.input.r; #X obj 88 195 r \$0.latency; #X obj 102 274 r \$0.latency; #X connect 0 0 29 0; #X connect 0 0 51 0; #X connect 4 0 40 0; #X connect 5 0 21 0; #X connect 5 1 6 1; #X connect 6 0 17 1; #X connect 7 0 5 0; #X connect 8 0 7 0; #X connect 9 0 10 0; #X connect 10 0 8 0; #X connect 10 0 22 0; #X connect 11 0 9 0; #X connect 12 0 14 1; #X connect 13 0 14 0; #X connect 13 1 12 0; #X connect 14 0 15 0; #X connect 15 0 7 1; #X connect 15 0 23 0; #X connect 15 0 25 0; #X connect 17 0 27 0; #X connect 18 0 1 0; #X connect 19 0 2 0; #X connect 20 0 17 0; #X connect 21 0 6 0; #X connect 22 0 30 0; #X connect 23 0 22 0; #X connect 23 1 22 1; #X connect 25 0 28 0; #X connect 27 0 4 0; #X connect 28 0 4 1; #X connect 29 0 50 0; #X connect 30 0 31 0; #X connect 31 0 29 1; #X connect 40 0 0 0; #X connect 40 1 41 0; #X connect 41 0 42 0; #X connect 42 0 0 0; #X connect 47 0 11 0; #X connect 48 0 13 0; #X connect 49 0 19 1; #X connect 49 0 18 1; #X connect 50 0 18 0; #X connect 51 0 19 0; #X connect 52 0 21 1; #X connect 53 0 41 1; #X restore 442 106 pd read-windows; #X text 318 304 the left part is taken from miller puckette's audio example I07.phase.vocoder.pd from the doc.; #X obj 52 598 tabreceive~ \$0.hann; #X obj 127 622 r \$0.window.size; #X obj 35 300 *~ 1; #X obj 159 312 *~ 1; #X obj 21 679 r \$0.window.size; #X obj 20 8 tabreceive~ \$0.prev.real.r; #X obj 73 29 tabreceive~ \$0.prev.imag.r; #X obj 137 543 tabsend~ \$0.prev.imag.r; #X obj 136 567 tabsend~ \$0.prev.real.r; #X connect 0 0 2 1; #X connect 1 0 2 0; #X connect 2 0 15 0; #X connect 2 0 51 0; #X connect 3 0 5 1; #X connect 4 0 5 0; #X connect 5 0 15 1; #X connect 5 0 50 0; #X connect 6 0 19 1; #X connect 7 0 19 0; #X connect 8 0 10 1; #X connect 9 0 10 0; #X connect 10 0 36 0; #X connect 10 0 35 0; #X connect 10 0 39 0; #X connect 11 0 18 1; #X connect 12 0 16 0; #X connect 13 0 1 1; #X connect 13 0 3 1; #X connect 13 1 0 1; #X connect 13 1 4 1; #X connect 14 0 9 1; #X connect 14 0 7 1; #X connect 14 1 6 1; #X connect 14 1 8 1; #X connect 15 0 24 0; #X connect 17 0 18 0; #X connect 18 0 27 0; #X connect 19 0 37 0; #X connect 19 0 38 0; #X connect 19 0 40 0; #X connect 20 0 1 0; #X connect 20 0 4 0; #X connect 21 0 0 0; #X connect 21 0 3 0; #X connect 23 0 17 1; #X connect 23 0 17 0; #X connect 23 0 20 0; #X connect 24 0 12 0; #X connect 25 0 12 1; #X connect 26 0 22 0; #X connect 27 0 20 1; #X connect 27 0 21 1; #X connect 28 0 30 1; #X connect 29 0 30 0; #X connect 30 0 32 0; #X connect 31 0 33 1; #X connect 31 0 34 1; #X connect 32 0 31 0; #X connect 33 0 8 0; #X connect 33 0 7 0; #X connect 34 0 9 0; #X connect 34 0 6 0; #X connect 35 0 45 0; #X connect 36 0 45 0; #X connect 37 0 46 0; #X connect 38 0 46 0; #X connect 39 0 23 0; #X connect 40 0 11 0; #X connect 40 0 11 1; #X connect 40 0 21 0; #X connect 41 0 14 0; #X connect 41 1 13 0; #X connect 43 0 24 1; #X connect 44 0 25 0; #X connect 45 0 39 1; #X connect 46 0 40 1; #X connect 47 0 26 0; #X connect 48 0 29 1; #X connect 48 0 29 0; #X connect 48 0 34 0; #X connect 49 0 28 1; #X connect 49 0 28 0; #X connect 49 0 33 0; #X restore 97 169 pd fft.analysis.r; #X obj 339 99 s \$0.latency; #X obj 309 56 t a a; #N canvas 998 307 217 230 latency 0; #X obj 19 22 inlet; #X obj 19 194 outlet; #X obj 19 48 / 12; #X obj 19 95 pow; #X msg 19 72 2 \$1; #X obj 19 117 max 1; #X obj 119 73 samplerate~; #X obj 119 93 * 0.001; #X obj 89 29 r \$0.window.size; #X obj 89 53 t a b; #X obj 89 115 /; #X obj 19 161 *; #X connect 0 0 2 0; #X connect 2 0 4 0; #X connect 3 0 5 0; #X connect 4 0 3 0; #X connect 5 0 11 0; #X connect 6 0 7 0; #X connect 7 0 10 1; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 9 1 6 0; #X connect 10 0 11 1; #X connect 11 0 1 0; #X restore 339 77 pd latency; #X obj 626 31 inlet; #X obj 634 63 switch~; #X connect 1 0 16 0; #X connect 3 0 20 0; #X connect 9 0 13 0; #X connect 10 0 9 0; #X connect 11 0 2 0; #X connect 14 0 17 0; #X connect 18 0 15 0; #X connect 20 0 12 0; #X connect 20 1 21 0; #X connect 21 0 19 0; #X connect 22 0 23 0; #X restore 139 141 pd processing; #X obj 71 25 inlet~; #X obj 153 31 inlet~; #X obj 70 277 outlet~; #X obj 128 278 outlet~; #X text 268 226 based on pd doc: I07.phase.vocoder.pd; #X text 267 244 adapted by: Roman Haefeli; #X text 267 266 version: 2008-03-05; #X obj 71 233 tof/crossfade~ 2; #X obj 548 43 inlet params; #X obj 548 89 print PARAM_NOTFOUND; #X obj 214 30 tof/param /transpose 0 /g nbx; #X obj 221 192 tof/param /switch 0 /g tgl; #X obj 221 213 != 0; #X msg 221 237 \$1 200; #X obj 221 259 line~; #N canvas 80 84 906 756 pitchshift 0; #X obj 94 420 *~; #X obj 202 351 line~; #X obj 202 325 pack 0 200; #X obj 29 204 exp; #X floatatom 29 230 0 0 0 0 - - -; #X obj 29 320 /; #X obj 156 250 * 0.001; #X obj 29 471 cos~; #X obj 29 498 *~; #X obj 29 527 +~; #X obj 116 378 wrap~; #X obj 261 421 *~; #X obj 198 481 cos~; #X obj 198 508 *~; #X obj 156 277 t b f; #X floatatom 29 346 0 0 0 0 - - -; #X obj 29 373 phasor~ 0; #X obj 116 351 +~ 0.5; #X obj 29 419 -~ 0.5; #X obj 29 445 *~ 0.5; #X obj 198 420 -~ 0.5; #X obj 198 453 *~ 0.5; #X obj 29 257 - 1; #X obj 29 178 * 0.05776; #X obj 29 283 * -1; #X text 78 123 <-- transposition; #X text 116 138 (halpn_lftones); #X text 96 238 speed; #X text 95 252 change; #X text 64 313 tape head; #X text 65 326 rotation speed; #X obj -131 115 inlet~; #X obj 28 607 outlet~; #X obj 29 122 inlet; #X obj 94 472 vd~ \$0delay1; #X obj 260 483 vd~ \$0delay1; #X obj 267 147 loadbang; #X obj 271 176 f 10; #X obj 271 204 clip 1 1e+07; #X msg 373 157 128; #X obj -131 147 delwrite~ \$0delay1 10; #X obj 646 51 inlet; #X obj 654 83 switch~; #X connect 0 0 34 0; #X connect 1 0 0 1; #X connect 1 0 11 1; #X connect 2 0 1 0; #X connect 3 0 4 0; #X connect 4 0 22 0; #X connect 5 0 15 0; #X connect 6 0 14 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 32 0; #X connect 10 0 11 0; #X connect 10 0 20 0; #X connect 11 0 35 0; #X connect 12 0 13 0; #X connect 13 0 9 1; #X connect 14 0 5 0; #X connect 14 1 5 1; #X connect 15 0 16 0; #X connect 16 0 0 0; #X connect 16 0 18 0; #X connect 16 0 17 0; #X connect 17 0 10 0; #X connect 18 0 19 0; #X connect 19 0 7 0; #X connect 20 0 21 0; #X connect 21 0 12 0; #X connect 22 0 24 0; #X connect 23 0 3 0; #X connect 24 0 5 0; #X connect 31 0 40 0; #X connect 33 0 23 0; #X connect 34 0 8 1; #X connect 35 0 13 1; #X connect 36 0 37 0; #X connect 37 0 38 0; #X connect 38 0 2 0; #X connect 38 0 6 0; #X connect 39 0 38 0; #X connect 41 0 42 0; #X restore 238 140 pd pitchshift; #N canvas 313 84 906 756 pitchshift 0; #X obj 94 420 *~; #X obj 202 351 line~; #X obj 202 325 pack 0 200; #X obj 29 204 exp; #X floatatom 29 230 0 0 0 0 - - -; #X obj 29 320 /; #X obj 156 250 * 0.001; #X obj 29 471 cos~; #X obj 29 498 *~; #X obj 29 527 +~; #X obj 116 378 wrap~; #X obj 261 421 *~; #X obj 198 481 cos~; #X obj 198 508 *~; #X obj 156 277 t b f; #X floatatom 29 346 0 0 0 0 - - -; #X obj 29 373 phasor~ 0; #X obj 116 351 +~ 0.5; #X obj 29 419 -~ 0.5; #X obj 29 445 *~ 0.5; #X obj 198 420 -~ 0.5; #X obj 198 453 *~ 0.5; #X obj 29 257 - 1; #X obj 29 178 * 0.05776; #X obj 29 283 * -1; #X text 78 123 <-- transposition; #X text 116 138 (halpn_lftones); #X text 96 238 speed; #X text 95 252 change; #X text 64 313 tape head; #X text 65 326 rotation speed; #X obj -131 115 inlet~; #X obj 28 607 outlet~; #X obj 29 122 inlet; #X obj 267 147 loadbang; #X obj 271 176 f 10; #X obj 271 204 clip 1 1e+07; #X msg 373 157 128; #X obj 260 483 vd~ \$0delay2; #X obj 93 471 vd~ \$0delay2; #X obj -129 147 delwrite~ \$0delay2 10; #X obj 636 41 inlet; #X obj 644 73 switch~; #X connect 0 0 39 0; #X connect 1 0 0 1; #X connect 1 0 11 1; #X connect 2 0 1 0; #X connect 3 0 4 0; #X connect 4 0 22 0; #X connect 5 0 15 0; #X connect 6 0 14 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 32 0; #X connect 10 0 11 0; #X connect 10 0 20 0; #X connect 11 0 38 0; #X connect 12 0 13 0; #X connect 13 0 9 1; #X connect 14 0 5 0; #X connect 14 1 5 1; #X connect 15 0 16 0; #X connect 16 0 0 0; #X connect 16 0 18 0; #X connect 16 0 17 0; #X connect 17 0 10 0; #X connect 18 0 19 0; #X connect 19 0 7 0; #X connect 20 0 21 0; #X connect 21 0 12 0; #X connect 22 0 24 0; #X connect 23 0 3 0; #X connect 24 0 5 0; #X connect 31 0 40 0; #X connect 33 0 23 0; #X connect 34 0 35 0; #X connect 35 0 36 0; #X connect 36 0 2 0; #X connect 36 0 6 0; #X connect 37 0 36 0; #X connect 38 0 13 1; #X connect 39 0 8 1; #X connect 41 0 42 0; #X restore 328 140 pd pitchshift; #X obj 313 64 tof/param /method 0 /g tgl; #X obj 313 85 == 0; #X obj 548 65 tof/param route; #X obj 537 134 iemguts/propertybang; #X obj 538 163 tof/param gui; #X connect 0 0 8 2; #X connect 0 1 8 3; #X connect 1 0 0 0; #X connect 1 0 8 0; #X connect 1 0 16 0; #X connect 2 0 0 1; #X connect 2 0 8 1; #X connect 2 0 17 0; #X connect 8 0 3 0; #X connect 8 1 4 0; #X connect 9 0 20 0; #X connect 11 0 0 2; #X connect 11 0 16 1; #X connect 11 0 17 1; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 15 0 8 4; #X connect 16 0 8 2; #X connect 17 0 8 3; #X connect 18 0 19 0; #X connect 18 0 0 3; #X connect 19 0 16 2; #X connect 19 0 17 2; #X connect 20 0 10 0; #X connect 21 0 22 0;