aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/3.audio.examples/I10.phase.bash.pd
diff options
context:
space:
mode:
Diffstat (limited to 'pd/doc/3.audio.examples/I10.phase.bash.pd')
-rw-r--r--pd/doc/3.audio.examples/I10.phase.bash.pd569
1 files changed, 569 insertions, 0 deletions
diff --git a/pd/doc/3.audio.examples/I10.phase.bash.pd b/pd/doc/3.audio.examples/I10.phase.bash.pd
new file mode 100644
index 00000000..4c66f9b7
--- /dev/null
+++ b/pd/doc/3.audio.examples/I10.phase.bash.pd
@@ -0,0 +1,569 @@
+#N canvas 165 311 718 552 12;
+#X floatatom 407 323 0 0 0 0 - - -;
+#N canvas 122 165 801 538 fft 0;
+#X obj 39 153 *~;
+#X obj 7 153 *~;
+#X obj 7 98 *~;
+#X obj 7 70 inlet~;
+#X obj 7 125 rfft~;
+#X obj 7 227 *~;
+#X obj 7 306 rifft~;
+#X obj 43 99 tabreceive~ \$0-hann;
+#X obj 7 200 q8_sqrt~;
+#X obj 337 158 samplerate~;
+#X obj 328 124 bang~;
+#X obj 337 183 t f b;
+#X obj 444 4 loadbang;
+#X obj 636 19 r window-size;
+#X obj 636 65 block~;
+#X obj 337 207 osc~;
+#X msg 381 207 0;
+#X obj 8 333 *~;
+#X obj 44 334 tabreceive~ \$0-hann;
+#X obj 9 363 outlet~;
+#X obj 77 281 r window-size;
+#X obj 7 281 /~ 1000;
+#X msg 636 41 set \$1 2;
+#X obj 387 267 r \$0-start;
+#X obj 328 320 spigot;
+#X msg 387 292 1;
+#X msg 354 292 0;
+#X obj 328 516 outlet;
+#X obj 364 372 r window-size;
+#X obj 364 441 t f b;
+#X obj 396 464 samplerate~;
+#X obj 364 464 /;
+#X obj 364 487 * 1000;
+#X obj 328 493 del;
+#X obj 364 395 / 2;
+#X obj 364 418 - 1;
+#X msg 443 28 \; pd dsp 1 \; window-size 1024 \; pitch 48 \; specshift
+0;
+#X text 96 196 magnitude of FT;
+#X text 18 249 align partials to middle of window;
+#X text 39 232 alternate every other sign to;
+#X text 383 122 control computations to do every frame;
+#X text 414 180 set sample rate of the oscillator to;
+#X text 416 195 Nyquist (here we're operating at twice;
+#X text 418 211 the global "samplerate~" because of;
+#X text 417 228 the overlap-2 blocking.) Also set phase;
+#X text 417 244 to zero at beginning of frame.;
+#X text 424 287 When analysis starts \, set a delay to;
+#X text 425 304 one frame minus a sample (i.e. \, just;
+#X text 424 321 one 64-sample block before the next;
+#X text 423 338 frame) which is synchronized with the;
+#X text 423 352 first frame emerging from outlet~ at;
+#X text 499 368 left. In the parent window;
+#X text 497 385 this is used to start;
+#X text 497 402 recording synchronously.;
+#X text 14 384 output phase-aligned frames;
+#X text 395 514 output a bang to start recording;
+#X connect 0 0 8 0;
+#X connect 1 0 8 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 4 0 1 1;
+#X connect 4 1 0 0;
+#X connect 4 1 0 1;
+#X connect 5 0 21 0;
+#X connect 6 0 17 0;
+#X connect 7 0 2 1;
+#X connect 8 0 5 0;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
+#X connect 10 0 24 0;
+#X connect 11 0 15 0;
+#X connect 11 1 16 0;
+#X connect 12 0 36 0;
+#X connect 13 0 22 0;
+#X connect 15 0 5 1;
+#X connect 16 0 15 1;
+#X connect 17 0 19 0;
+#X connect 18 0 17 1;
+#X connect 20 0 21 1;
+#X connect 21 0 6 0;
+#X connect 22 0 14 0;
+#X connect 23 0 25 0;
+#X connect 24 0 26 0;
+#X connect 24 0 33 0;
+#X connect 25 0 24 1;
+#X connect 26 0 24 1;
+#X connect 28 0 34 0;
+#X connect 29 0 31 0;
+#X connect 29 1 30 0;
+#X connect 30 0 31 1;
+#X connect 31 0 32 0;
+#X connect 32 0 33 1;
+#X connect 33 0 27 0;
+#X connect 34 0 35 0;
+#X connect 35 0 29 0;
+#X restore 22 459 pd fft;
+#X floatatom 586 377 0 0 120 0 - pitch-set -;
+#X floatatom 583 330 0 0 0 0 - specshift-set -;
+#X obj 583 353 s specshift;
+#X obj 407 443 s loco;
+#X obj 586 400 s pitch;
+#X obj 407 346 pack 0 100;
+#X obj 588 453 output~;
+#X text 214 -1 PHASE BASHING;
+#X text 455 515 updated for Pd version 0.39;
+#X floatatom 199 389 5 0 0 0 - #0-samp-msec -;
+#X text 197 403 sample length \, msec;
+#X msg 198 288 ../sound/bell.aiff;
+#X msg 198 313 ../sound/voice.wav;
+#X msg 198 338 ../sound/voice2.wav;
+#X text 201 266 change input sound;
+#X obj 198 364 s read-sample;
+#N canvas 190 43 657 626 test-signal 0;
+#X obj 88 381 line~;
+#X obj 88 306 f;
+#X obj 88 536 outlet~;
+#X msg 88 360 0 \, \$1 \$2;
+#X obj 88 334 pack 0 0;
+#X obj 190 303 /;
+#X obj 269 283 * 0.001;
+#X obj 211 260 t b b f;
+#X obj 152 225 t b f;
+#X obj 88 406 tabread4~ \$0-sample;
+#X obj 286 391 adc~ 1;
+#X obj 414 280 inlet;
+#X obj 454 339 samplerate~;
+#X obj 151 201 r \$0-samplength;
+#X obj 211 234 r \$0-insamprate;
+#X obj 87 189 inlet;
+#X obj 454 363 s \$0-insamprate;
+#X obj 285 423 *~;
+#X obj 363 380 del;
+#X obj 414 312 t b b;
+#X msg 402 379 1;
+#X msg 401 404 0;
+#X obj 87 473 hip~ 5;
+#X obj 88 444 +~;
+#X text 73 123 play sample;
+#X text 71 143 once;
+#X obj 482 420 s \$0-start;
+#X connect 0 0 9 0;
+#X connect 1 0 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 1;
+#X connect 5 0 18 1;
+#X connect 6 0 5 1;
+#X connect 7 1 5 0;
+#X connect 7 2 6 0;
+#X connect 8 1 5 0;
+#X connect 8 1 1 1;
+#X connect 9 0 23 0;
+#X connect 10 0 17 0;
+#X connect 11 0 19 0;
+#X connect 12 0 16 0;
+#X connect 13 0 8 0;
+#X connect 14 0 7 0;
+#X connect 15 0 1 0;
+#X connect 15 0 26 0;
+#X connect 17 0 23 1;
+#X connect 18 0 21 0;
+#X connect 19 0 20 0;
+#X connect 19 0 18 0;
+#X connect 19 0 26 0;
+#X connect 19 1 12 0;
+#X connect 20 0 17 1;
+#X connect 21 0 17 1;
+#X connect 22 0 2 0;
+#X connect 23 0 22 0;
+#X restore 22 436 pd test-signal;
+#X obj 143 417 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 0 110 565 454 hann-window 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array \$0-hann 2048 float 0;
+#X coords 0 1 2047 0 300 100 1;
+#X restore 82 311 graph;
+#X obj 378 165 osc~;
+#X obj 378 190 *~ -0.5;
+#X obj 378 214 +~ 0.5;
+#X obj 331 247 tabwrite~ \$0-hann;
+#X obj 37 88 r window-size;
+#X obj 38 173 /;
+#X obj 127 142 samplerate~;
+#X obj 38 251 s window-sec;
+#X obj 177 204 swap;
+#X obj 177 228 /;
+#X obj 177 252 s window-hz;
+#X obj 49 201 * 1000;
+#X obj 49 228 s window-msec;
+#X obj 38 115 t f b f;
+#X msg 173 92 resize \$1;
+#X obj 173 116 s \$0-hann;
+#X obj 330 105 r window-hz;
+#X msg 382 130 0;
+#X obj 330 131 t f b;
+#X text 15 8 calculate Hann window table (variable window size) and
+constants window-hz (fundamental frequency of analysis) \, window-sec
+and window-msec (analysis window size in seconds and msec).;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 14 0;
+#X connect 6 0 8 0;
+#X connect 6 0 12 0;
+#X connect 7 0 6 1;
+#X connect 7 0 9 1;
+#X connect 9 0 10 0;
+#X connect 9 1 10 1;
+#X connect 10 0 11 0;
+#X connect 12 0 13 0;
+#X connect 14 0 6 0;
+#X connect 14 0 9 0;
+#X connect 14 1 7 0;
+#X connect 14 2 15 0;
+#X connect 15 0 16 0;
+#X connect 17 0 19 0;
+#X connect 18 0 1 1;
+#X connect 19 0 1 0;
+#X connect 19 1 4 0;
+#X connect 19 1 18 0;
+#X restore 195 441 pd hann-window;
+#X msg 28 269 512;
+#X msg 28 290 1024;
+#X msg 28 312 2048;
+#X obj 28 357 s window-size;
+#X msg 28 334 4096;
+#N canvas 388 86 736 499 insample 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array \$0-sample 62079 float 0;
+#X coords 0 1 62078 -1 400 150 1;
+#X restore 259 24 graph;
+#X obj 19 23 r read-sample;
+#X obj 19 74 unpack s f;
+#X obj 19 184 soundfiler;
+#X text 118 379 read a sample;
+#X obj 38 378 loadbang;
+#X obj 19 100 t s b;
+#X obj 75 99 symbol \$0-sample;
+#X obj 19 135 pack s s;
+#X msg 19 160 read -resize \$1 \$2;
+#X obj 74 46 44100;
+#X obj 19 47 t a b;
+#X obj 29 208 s \$0-samplength;
+#X obj 116 74 s \$0-insamprate;
+#X obj 19 281 /;
+#X obj 19 305 * 1000;
+#X obj 19 328 s \$0-samp-msec;
+#X obj 57 281 r \$0-insamprate;
+#X msg 38 402 \; read-sample ../sound/voice.wav;
+#N canvas 0 0 450 300 graph1 0;
+#X array \$0-nophase 62079 float 0;
+#X coords 0 1 62078 -1 400 150 1;
+#X restore 256 185 graph;
+#X msg 376 403 resize \$1;
+#X obj 376 379 r \$0-samplength;
+#X obj 376 428 s \$0-nophase;
+#X connect 1 0 11 0;
+#X connect 2 0 6 0;
+#X connect 2 1 13 0;
+#X connect 3 0 12 0;
+#X connect 3 0 14 0;
+#X connect 5 0 18 0;
+#X connect 6 0 8 0;
+#X connect 6 1 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 9 0;
+#X connect 9 0 3 0;
+#X connect 10 0 13 0;
+#X connect 11 0 2 0;
+#X connect 11 1 10 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 17 0 14 1;
+#X connect 20 0 22 0;
+#X connect 21 0 20 0;
+#X restore 195 464 pd insample;
+#X obj 22 416 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 33 384 ---analyze---;
+#X text 20 399 sample;
+#X obj 94 489 tabwrite~ \$0-nophase;
+#X obj 21 492 output~;
+#X msg 415 384 0 \, 400 4000;
+#X msg 415 419 0 \, 400 10000;
+#X text 47 18 This patch takes an incoming sound \, does an overlap-2
+FFT analysis of it \, and bashes the phases of the spectra so that
+when regenerated the components will all have zero phase at the middle
+of each window. You can use the windows as waveforms and cross-fade
+them at will without getting phase modulation. This might be useful
+for making synthetic instruments that mimic the spectral variation
+of recorded sounds.;
+#X text 398 305 (hundredths of sec);
+#X text 401 289 location in sample;
+#X text 420 365 normal speed;
+#X text 422 403 slow;
+#X text 458 262 ------ playback -------;
+#N canvas 81 424 887 624 playback 0;
+#X obj 101 479 r invblk;
+#X obj 28 499 *~;
+#X obj 61 501 clip~ 1 1000;
+#X floatatom 38 89 0 0 0 0 - - -;
+#X floatatom 510 93 0 0 0 0 - - -;
+#X obj 496 392 *~;
+#X obj 626 369 samphold~;
+#X obj 733 369 samphold~;
+#X obj 538 369 samphold~;
+#X obj 481 500 clip~ -0.5 0.5;
+#X obj 481 523 cos~;
+#X obj 651 427 +~;
+#X obj 653 506 -~;
+#X obj 642 533 *~;
+#X obj 642 558 +~;
+#X obj 621 582 *~;
+#X obj 40 408 *~;
+#X obj 197 362 samphold~;
+#X obj 302 367 samphold~;
+#X obj 508 290 phasor~;
+#X obj 174 288 wrap~;
+#X obj 510 68 r pitch;
+#X obj 510 140 mtof;
+#X obj 269 199 line~;
+#X obj 268 224 -~;
+#X text 8 42 spectral stretch;
+#X obj 89 367 samphold~;
+#X obj 665 187 t b f;
+#X obj 699 210 /;
+#X obj 665 209 1;
+#X obj 29 524 clip~ -0.5 0.5;
+#X obj 29 546 cos~;
+#X obj 211 425 +~;
+#X obj 212 505 -~;
+#X obj 194 526 *~;
+#X obj 201 549 +~;
+#X text 45 426 offset into;
+#X text 50 440 sample;
+#X text 368 169 samples;
+#X text 368 154 period in;
+#X text 204 378 weight for;
+#X text 204 393 next block;
+#X obj 760 312 wrap~;
+#X obj 700 232 s invblk;
+#X obj 558 453 r invblk;
+#X obj 665 138 r window-size;
+#X obj 38 65 r specshift;
+#X obj 261 64 r loco;
+#X obj 482 473 *~;
+#X obj 518 474 clip~ 1 1000;
+#X obj 510 117 - 12;
+#X obj 38 136 + 69;
+#X obj 38 159 mtof;
+#X obj 38 182 / 440;
+#X obj 28 284 *~ 1;
+#X obj 760 287 +~ 0.5;
+#X obj 60 479 *~ 1;
+#X obj 518 453 *~ 1;
+#X obj 481 545 +~ 1;
+#X obj 29 569 +~ 1;
+#X obj 267 292 *~ 1;
+#X obj 212 453 +~ 0;
+#X obj 652 456 +~ 0;
+#X obj 28 366 -~ 0.5;
+#X obj 479 369 -~ 0.5;
+#X obj 286 603 outlet~;
+#X obj 212 479 tabread4~ \$0-nophase;
+#X obj 249 504 tabread4~ \$0-nophase;
+#X obj 652 480 tabread4~ \$0-nophase;
+#X obj 688 505 tabread4~ \$0-nophase;
+#X obj 268 247 +~ 0.5;
+#X text 60 248 grain size;
+#X text 62 264 in samples;
+#X text 97 383 grain size;
+#X text 311 389 middle;
+#X text 311 404 of block;
+#X text 165 248 fractional;
+#X text 164 265 part of loc;
+#X text 295 224 integer part of loc;
+#X text 328 247 middle of block;
+#X text 310 290 cvt to samples;
+#X text 522 265 run two copies 180 degrees out of phase;
+#X text 29 589 window shaped;
+#X text 27 604 by raised cos;
+#X text 265 522 weighted sum of;
+#X text 265 538 2 windows;
+#X obj 180 573 *~;
+#X obj 286 577 +~;
+#X obj 704 163 s blksize;
+#X obj 683 429 r blksize;
+#X obj 243 427 r blksize;
+#X obj 297 270 r blksize;
+#X obj 665 162 / 2;
+#X obj 366 132 /;
+#X obj 366 105 samplerate~;
+#X obj 365 82 t b f;
+#X obj 38 112 * 0.125;
+#X text 223 44 read location in sec/100;
+#X obj 200 120 samplerate~;
+#X obj 167 72 / 100;
+#X obj 167 96 t f b;
+#X obj 167 119 *;
+#X obj 200 144 r blksize;
+#X obj 167 144 /;
+#X text 113 162 read location \, blocks;
+#X obj 260 89 unpack;
+#X msg 630 52 set \$1;
+#X obj 771 32 r pitch;
+#X msg 771 55 set \$1;
+#X obj 630 30 r specshift;
+#X text 723 190 1/(block size);
+#X obj 630 76 s specshift-set;
+#X obj 770 78 s pitch-set;
+#X text 607 104 analysis overlap was 2 so our;
+#X text 606 120 block size is (window size)/2;
+#X text 12 -1 OVERLAPPED \, WINDOWED SAMPLE PLAYBACK;
+#X text 357 0 - with controls for pitch \, location \, and spectral
+shift;
+#X connect 0 0 56 1;
+#X connect 1 0 30 0;
+#X connect 2 0 1 1;
+#X connect 3 0 96 0;
+#X connect 4 0 50 0;
+#X connect 5 0 11 0;
+#X connect 6 0 13 0;
+#X connect 7 0 11 1;
+#X connect 8 0 5 1;
+#X connect 8 0 57 0;
+#X connect 9 0 10 0;
+#X connect 10 0 58 0;
+#X connect 11 0 62 0;
+#X connect 11 0 69 0;
+#X connect 12 0 13 1;
+#X connect 13 0 14 0;
+#X connect 14 0 15 1;
+#X connect 15 0 87 1;
+#X connect 16 0 32 0;
+#X connect 17 0 34 0;
+#X connect 18 0 32 1;
+#X connect 19 0 26 1;
+#X connect 19 0 18 1;
+#X connect 19 0 17 1;
+#X connect 19 0 55 0;
+#X connect 19 0 63 0;
+#X connect 20 0 24 1;
+#X connect 20 0 17 0;
+#X connect 20 0 6 0;
+#X connect 21 0 4 0;
+#X connect 22 0 19 0;
+#X connect 22 0 95 0;
+#X connect 23 0 20 0;
+#X connect 23 0 24 0;
+#X connect 24 0 70 0;
+#X connect 26 0 16 1;
+#X connect 26 0 56 0;
+#X connect 27 0 29 0;
+#X connect 27 1 28 1;
+#X connect 28 0 43 0;
+#X connect 29 0 28 0;
+#X connect 30 0 31 0;
+#X connect 31 0 59 0;
+#X connect 32 0 61 0;
+#X connect 32 0 67 0;
+#X connect 33 0 34 1;
+#X connect 34 0 35 0;
+#X connect 35 0 86 1;
+#X connect 42 0 8 1;
+#X connect 42 0 6 1;
+#X connect 42 0 7 1;
+#X connect 42 0 64 0;
+#X connect 44 0 57 1;
+#X connect 45 0 92 0;
+#X connect 46 0 3 0;
+#X connect 47 0 105 0;
+#X connect 48 0 9 0;
+#X connect 49 0 48 1;
+#X connect 50 0 22 0;
+#X connect 51 0 52 0;
+#X connect 52 0 53 0;
+#X connect 53 0 54 1;
+#X connect 54 0 26 0;
+#X connect 54 0 8 0;
+#X connect 55 0 42 0;
+#X connect 56 0 2 0;
+#X connect 57 0 49 0;
+#X connect 58 0 15 0;
+#X connect 59 0 86 0;
+#X connect 60 0 18 0;
+#X connect 60 0 7 0;
+#X connect 61 0 66 0;
+#X connect 62 0 68 0;
+#X connect 63 0 16 0;
+#X connect 63 0 1 0;
+#X connect 64 0 5 0;
+#X connect 64 0 48 0;
+#X connect 66 0 33 0;
+#X connect 67 0 33 1;
+#X connect 67 0 35 1;
+#X connect 68 0 12 0;
+#X connect 69 0 12 1;
+#X connect 69 0 14 1;
+#X connect 70 0 60 0;
+#X connect 86 0 87 0;
+#X connect 87 0 65 0;
+#X connect 89 0 62 1;
+#X connect 90 0 61 1;
+#X connect 91 0 60 1;
+#X connect 92 0 88 0;
+#X connect 92 0 27 0;
+#X connect 93 0 54 0;
+#X connect 94 0 93 0;
+#X connect 95 0 94 0;
+#X connect 95 1 93 1;
+#X connect 96 0 51 0;
+#X connect 98 0 101 1;
+#X connect 99 0 100 0;
+#X connect 100 0 101 0;
+#X connect 100 1 98 0;
+#X connect 101 0 103 0;
+#X connect 102 0 103 1;
+#X connect 103 0 23 0;
+#X connect 105 0 99 0;
+#X connect 105 1 23 1;
+#X connect 106 0 111 0;
+#X connect 107 0 108 0;
+#X connect 108 0 112 0;
+#X connect 109 0 106 0;
+#X restore 589 428 pd playback;
+#X text 585 290 spectral shift;
+#X text 583 306 (hundredths of;
+#X text 646 323 octave);
+#X text 126 398 live;
+#X text 45 141 You can save the analyses and needn't be running the
+FFT patch to do the resynthesis. You can read a sample \, select window
+size \, and press "sample" to analyze it \, or else analyze a "live"
+input. You'll hear the phase-bashed sample as the analysis runs. You
+can regenerate the sound with specified pitch \, sample location \,
+and spectral shift \, using the "playback" controls.;
+#X text 83 278 analysis;
+#X text 80 264 (redo;
+#X text 83 294 after;
+#X text 84 309 changing;
+#X text 84 325 window;
+#X text 85 339 size);
+#X connect 0 0 7 0;
+#X connect 1 0 30 0;
+#X connect 1 0 31 0;
+#X connect 1 0 31 1;
+#X connect 1 1 30 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 7 0 5 0;
+#X connect 13 0 17 0;
+#X connect 14 0 17 0;
+#X connect 15 0 17 0;
+#X connect 18 0 1 0;
+#X connect 19 0 18 1;
+#X connect 21 0 24 0;
+#X connect 22 0 24 0;
+#X connect 23 0 24 0;
+#X connect 25 0 24 0;
+#X connect 27 0 18 0;
+#X connect 32 0 5 0;
+#X connect 33 0 5 0;
+#X connect 40 0 8 0;
+#X connect 40 0 8 1;