- merge v0.01 --> Añadido fileselector - Añadidas fuentes de Gem y Pure Data - pix2jpg incluído en Gem. Archivos de construcción de Gem modificados. - Añadido fichero ompiling.txt con instrucciones de compilación
411 lines
11 KiB
Text
411 lines
11 KiB
Text
#N canvas -6 5 609 588 12;
|
|
#N canvas 300 81 867 775 fft-analysis 0;
|
|
#X obj 85 664 *~;
|
|
#X obj 35 712 *~;
|
|
#X obj 316 148 *~;
|
|
#X obj 34 58 *~;
|
|
#X obj 34 35 inlet~;
|
|
#X obj 34 82 rfft~;
|
|
#X obj 35 688 rifft~;
|
|
#X obj 35 737 outlet~;
|
|
#X obj 277 147 *~;
|
|
#X obj 277 198 rsqrt~;
|
|
#X obj 105 421 -~;
|
|
#X obj 34 663 *~;
|
|
#X obj 68 58 tabreceive~ \$0-hann;
|
|
#X obj 644 51 loadbang;
|
|
#X obj 644 133 r window-size;
|
|
#X obj 69 711 tabreceive~ \$0-hann;
|
|
#X obj 131 327 *~;
|
|
#X msg 644 155 set \$1 4;
|
|
#X obj 644 179 block~;
|
|
#X msg 643 75 \; pd dsp 1 \; window-size 1024;
|
|
#X obj 125 616 /~ 1000;
|
|
#X obj 197 616 r window-size;
|
|
#X obj 254 229 *~;
|
|
#X obj 113 220 *~;
|
|
#X obj 277 171 +~ 1e-20;
|
|
#X obj 152 246 lrshift~ 1;
|
|
#X obj 313 254 lrshift~ 1;
|
|
#X obj 152 272 lrshift~ -1;
|
|
#X obj 314 281 lrshift~ -1;
|
|
#X obj 292 335 *~;
|
|
#X obj 105 475 clip~ 0 1;
|
|
#X obj 106 448 *~ 1e+20;
|
|
#X obj 105 392 +~;
|
|
#X obj 105 508 *~;
|
|
#X obj 144 508 lrshift~ 1;
|
|
#X obj 251 508 lrshift~ -1;
|
|
#X obj 125 540 *~;
|
|
#X obj 410 411 -~;
|
|
#X obj 410 459 clip~ 0 1;
|
|
#X obj 411 435 *~ 1e+20;
|
|
#X obj 410 488 *~;
|
|
#X obj 449 488 lrshift~ 1;
|
|
#X obj 553 487 lrshift~ -1;
|
|
#X obj 430 517 *~;
|
|
#X obj 430 540 *~ -1;
|
|
#X obj 430 563 +~ 1;
|
|
#X obj 125 582 +~;
|
|
#X obj 255 335 *~;
|
|
#X obj 98 327 *~;
|
|
#X text 195 476 0 if clean;
|
|
#X text 170 541 0 if a neighbor is clean;
|
|
#X obj 97 301 +~;
|
|
#X obj 130 300 +~;
|
|
#X obj 255 309 +~;
|
|
#X obj 292 308 +~;
|
|
#X text 169 558 1 if all neighbors dirty;
|
|
#X text 470 584 1 if a neighbor dirty;
|
|
#X text 472 568 0 if all neighbors clean;
|
|
#X obj 224 679 lrshift~ -1;
|
|
#X obj 224 655 sig~ 1;
|
|
#X obj 125 638 *~;
|
|
#X obj 220 442 expr $f1*$f1/1250;
|
|
#X obj 432 385 expr $f1*$f1/1250;
|
|
#X obj 220 417 r dirty;
|
|
#X obj 432 360 r clean;
|
|
#X text 362 148 normalize the amplitudes;
|
|
#X text 439 253 add neighboring amplitude to this one;
|
|
#X text 437 269 and take squared magnitude of result -;
|
|
#X text 437 286 do this for both the left neightbor and;
|
|
#X text 436 303 the right one;
|
|
#X text 94 82 forward real Hann-windowed FT;
|
|
#X text 284 658 I had trouble with the DC bin - this zeros it.;
|
|
#X text 594 366 adjust threshold to quadratic;
|
|
#X text 594 382 units and scale;
|
|
#X text 142 389 total incoherence;
|
|
#X text 496 414 compare incoherence with the threshold;
|
|
#X text 532 511 multiply by left and right;
|
|
#X text 531 529 neighbors \, so 0 if any of;
|
|
#X text 531 546 the 3 is "clean".;
|
|
#X text 497 429 If greater (dirty) \, the "clip" outputs;
|
|
#X text 498 444 1 \, otherwise (if clean) \, zero.;
|
|
#X text 161 583 add to let in channels;
|
|
#X text 159 597 for either criterion;
|
|
#X connect 0 0 6 1;
|
|
#X connect 1 0 7 0;
|
|
#X connect 2 0 24 0;
|
|
#X connect 3 0 5 0;
|
|
#X connect 4 0 3 0;
|
|
#X connect 5 0 11 0;
|
|
#X connect 5 0 8 0;
|
|
#X connect 5 0 8 1;
|
|
#X connect 5 0 23 0;
|
|
#X connect 5 1 0 0;
|
|
#X connect 5 1 2 0;
|
|
#X connect 5 1 2 1;
|
|
#X connect 5 1 22 0;
|
|
#X connect 6 0 1 0;
|
|
#X connect 8 0 24 0;
|
|
#X connect 9 0 23 1;
|
|
#X connect 9 0 22 1;
|
|
#X connect 10 0 31 0;
|
|
#X connect 11 0 6 0;
|
|
#X connect 12 0 3 1;
|
|
#X connect 13 0 19 0;
|
|
#X connect 14 0 17 0;
|
|
#X connect 15 0 1 1;
|
|
#X connect 16 0 32 0;
|
|
#X connect 17 0 18 0;
|
|
#X connect 20 0 60 0;
|
|
#X connect 21 0 20 1;
|
|
#X connect 22 0 26 0;
|
|
#X connect 22 0 28 0;
|
|
#X connect 22 0 53 0;
|
|
#X connect 22 0 54 0;
|
|
#X connect 23 0 25 0;
|
|
#X connect 23 0 27 0;
|
|
#X connect 23 0 51 0;
|
|
#X connect 23 0 52 0;
|
|
#X connect 24 0 9 0;
|
|
#X connect 25 0 51 1;
|
|
#X connect 26 0 53 1;
|
|
#X connect 27 0 52 1;
|
|
#X connect 28 0 54 1;
|
|
#X connect 29 0 32 1;
|
|
#X connect 30 0 33 0;
|
|
#X connect 30 0 35 0;
|
|
#X connect 30 0 34 0;
|
|
#X connect 31 0 30 0;
|
|
#X connect 32 0 10 0;
|
|
#X connect 32 0 37 0;
|
|
#X connect 33 0 36 0;
|
|
#X connect 34 0 33 1;
|
|
#X connect 35 0 36 1;
|
|
#X connect 36 0 46 0;
|
|
#X connect 37 0 39 0;
|
|
#X connect 38 0 40 0;
|
|
#X connect 38 0 42 0;
|
|
#X connect 38 0 41 0;
|
|
#X connect 39 0 38 0;
|
|
#X connect 40 0 43 0;
|
|
#X connect 41 0 40 1;
|
|
#X connect 42 0 43 1;
|
|
#X connect 43 0 44 0;
|
|
#X connect 44 0 45 0;
|
|
#X connect 45 0 46 1;
|
|
#X connect 46 0 20 0;
|
|
#X connect 47 0 32 1;
|
|
#X connect 48 0 32 0;
|
|
#X connect 51 0 48 0;
|
|
#X connect 51 0 48 1;
|
|
#X connect 52 0 16 0;
|
|
#X connect 52 0 16 1;
|
|
#X connect 53 0 47 0;
|
|
#X connect 53 0 47 1;
|
|
#X connect 54 0 29 0;
|
|
#X connect 54 0 29 1;
|
|
#X connect 58 0 60 1;
|
|
#X connect 59 0 58 0;
|
|
#X connect 60 0 11 1;
|
|
#X connect 60 0 0 1;
|
|
#X connect 61 0 10 1;
|
|
#X connect 62 0 37 1;
|
|
#X connect 63 0 61 0;
|
|
#X connect 64 0 62 0;
|
|
#X restore 49 410 pd fft-analysis;
|
|
#X floatatom 355 287 0 0 100 0 - - -;
|
|
#X text 138 10 PITCHED/UNPITCHED SEPARATION;
|
|
#X obj 48 443 output~;
|
|
#X floatatom 48 356 0 0 100 0 - - -;
|
|
#X text 105 337 noise;
|
|
#X floatatom 108 356 0 0 100 0 - - -;
|
|
#N canvas 214 193 769 642 test-signal 0;
|
|
#X obj 75 328 line~;
|
|
#X obj 75 250 f;
|
|
#X obj 517 236 *~;
|
|
#X obj 76 442 *~;
|
|
#X obj 517 127 noise~;
|
|
#X obj 371 494 +~;
|
|
#X obj 98 415 dbtorms;
|
|
#X obj 539 210 dbtorms;
|
|
#X obj 98 390 inlet;
|
|
#X obj 539 186 inlet;
|
|
#X obj 373 568 outlet~;
|
|
#X msg 75 304 0 \, \$1 \$2;
|
|
#X obj 75 276 pack 0 0;
|
|
#X obj 236 248 /;
|
|
#X obj 251 190 * 0.001;
|
|
#X obj 251 219 t b f;
|
|
#X obj 372 543 hip~ 5;
|
|
#X obj 75 136 loadbang;
|
|
#X obj 75 182 metro 1000;
|
|
#X obj 517 152 bp~ 10000 3;
|
|
#X obj 75 161 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
|
|
;
|
|
#X text 270 247 sample duration \, msec;
|
|
#X text 126 84 looped sample playback;
|
|
#X obj 75 356 tabread4~ \$0-sample;
|
|
#X text 514 100 filtered noise;
|
|
#X text 105 15 TEST SIGNAL: looped sample plus noise. The inlets control
|
|
amplitude of each in dB.;
|
|
#X obj 236 139 r \$0-samplength;
|
|
#X obj 251 164 r \$0-insamprate;
|
|
#X obj 658 244 *~;
|
|
#X obj 680 218 dbtorms;
|
|
#X obj 680 194 inlet;
|
|
#X text 655 108 osc;
|
|
#X obj 658 134 osc~ 440;
|
|
#X obj 372 519 *~ 3;
|
|
#X connect 0 0 23 0;
|
|
#X connect 1 0 12 0;
|
|
#X connect 2 0 5 1;
|
|
#X connect 3 0 5 0;
|
|
#X connect 4 0 19 0;
|
|
#X connect 5 0 33 0;
|
|
#X connect 6 0 3 1;
|
|
#X connect 7 0 2 1;
|
|
#X connect 8 0 6 0;
|
|
#X connect 9 0 7 0;
|
|
#X connect 11 0 0 0;
|
|
#X connect 12 0 11 0;
|
|
#X connect 13 0 12 1;
|
|
#X connect 13 0 18 1;
|
|
#X connect 14 0 15 0;
|
|
#X connect 15 0 13 0;
|
|
#X connect 15 1 13 1;
|
|
#X connect 16 0 10 0;
|
|
#X connect 17 0 20 0;
|
|
#X connect 18 0 1 0;
|
|
#X connect 19 0 2 0;
|
|
#X connect 20 0 18 0;
|
|
#X connect 23 0 3 0;
|
|
#X connect 26 0 1 1;
|
|
#X connect 26 0 13 0;
|
|
#X connect 27 0 14 0;
|
|
#X connect 28 0 5 1;
|
|
#X connect 29 0 28 1;
|
|
#X connect 30 0 29 0;
|
|
#X connect 32 0 28 0;
|
|
#X connect 33 0 16 0;
|
|
#X restore 48 380 pd test-signal;
|
|
#X text 32 334 sampler;
|
|
#X text 56 314 amplitudes (dB);
|
|
#N canvas 0 110 565 454 hann-window 0;
|
|
#N canvas 0 0 450 300 graph1 0;
|
|
#X array \$0-hann 1024 float 0;
|
|
#X coords 0 1 1023 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 457 458 pd hann-window;
|
|
#N canvas 52 71 774 520 tables 0;
|
|
#N canvas 0 0 450 300 graph1 0;
|
|
#X array \$0-last-real 2048 float 0;
|
|
#X coords 0 500 2048 -500 200 150 1;
|
|
#X restore 103 15 graph;
|
|
#N canvas 0 0 450 300 graph2 0;
|
|
#X array \$0-last-imag 2048 float 0;
|
|
#X coords 0 500 2048 500 200 150 1;
|
|
#X restore 497 6 graph;
|
|
#N canvas 0 0 450 300 graph1 0;
|
|
#X array \$0-precess-real 2048 float 0;
|
|
#X coords 0 500 2048 -500 200 150 1;
|
|
#X restore 105 185 graph;
|
|
#N canvas 0 0 450 300 graph2 0;
|
|
#X array \$0-precess-imag 2048 float 0;
|
|
#X coords 0 500 2048 -500 200 150 1;
|
|
#X restore 501 178 graph;
|
|
#N canvas 0 0 450 300 graph1 0;
|
|
#X array \$0-inc-real 2048 float 0;
|
|
#X coords 0 1 2048 -1 200 150 1;
|
|
#X restore 105 357 graph;
|
|
#N canvas 0 0 450 300 graph2 0;
|
|
#X array \$0-inc-imag 2048 float 0;
|
|
#X coords 0 1 2048 -1 200 150 1;
|
|
#X restore 503 342 graph;
|
|
#X restore 457 479 pd tables;
|
|
#N canvas 388 86 722 350 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 356 250 read a sample;
|
|
#X obj 276 249 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 msg 276 273 \; read-sample ../sound/bell.aiff;
|
|
#X obj 29 208 s \$0-samplength;
|
|
#X obj 116 74 s \$0-insamprate;
|
|
#X obj 19 247 /;
|
|
#X obj 19 271 * 1000;
|
|
#X obj 19 294 s \$0-samp-msec;
|
|
#X obj 57 247 r \$0-insamprate;
|
|
#X connect 1 0 11 0;
|
|
#X connect 2 0 6 0;
|
|
#X connect 2 1 14 0;
|
|
#X connect 3 0 13 0;
|
|
#X connect 3 0 15 0;
|
|
#X connect 5 0 12 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 14 0;
|
|
#X connect 11 0 2 0;
|
|
#X connect 11 1 10 0;
|
|
#X connect 15 0 16 0;
|
|
#X connect 16 0 17 0;
|
|
#X connect 18 0 15 1;
|
|
#X restore 233 501 pd insample;
|
|
#X msg 233 403 ../sound/bell.aiff;
|
|
#X msg 233 426 ../sound/voice.wav;
|
|
#X msg 233 449 ../sound/voice2.wav;
|
|
#X text 236 383 change input sound;
|
|
#X obj 233 473 s read-sample;
|
|
#X floatatom 233 523 5 0 0 0 - #0-samp-msec -;
|
|
#X text 286 522 sample length \, msec;
|
|
#X floatatom 233 285 0 0 100 0 - - -;
|
|
#X floatatom 169 356 0 0 100 0 - - -;
|
|
#X text 167 336 osc;
|
|
#X msg 471 325 512;
|
|
#X msg 471 346 1024;
|
|
#X msg 471 368 2048;
|
|
#X obj 471 413 s window-size;
|
|
#X msg 471 390 4096;
|
|
#X obj 233 308 s clean;
|
|
#X text 233 331 0=silent;
|
|
#X text 231 351 100=all;
|
|
#X obj 355 310 s dirty;
|
|
#X text 351 331 100=silent;
|
|
#X text 353 348 0=all;
|
|
#X text 354 563 updated for Pd version 0.39;
|
|
#X text 11 212 Two separate thresholds may be adjusted to listen to
|
|
the "clean" or "dirty" part of the signal. You'll hear anything less
|
|
incoherent than the clean threshold \, OR more incoherent than the
|
|
dirty one.;
|
|
#X text 13 35 This patch applies a very simple coherence test to distinguish
|
|
between sinusoids and noise in an input signal. It works very imperfectly
|
|
(since noise is random \, no matter what test we place on it it will
|
|
sometimes spoof its way in.) Here we just test that neighboring channels
|
|
are 180 degrees (pi radians) out of phase \, as they should be in the
|
|
main lobe in response to a sinusoid. If any three channels are so arranged
|
|
\, all three are considered as contributing to a sinusoid. To do this
|
|
we make an "incoherence" measure which is zero if the phase relationship
|
|
is perfect and progressively larger otherwise.;
|
|
#X connect 0 0 3 0;
|
|
#X connect 0 0 3 1;
|
|
#X connect 1 0 31 0;
|
|
#X connect 4 0 7 0;
|
|
#X connect 6 0 7 1;
|
|
#X connect 7 0 0 0;
|
|
#X connect 13 0 17 0;
|
|
#X connect 14 0 17 0;
|
|
#X connect 15 0 17 0;
|
|
#X connect 20 0 28 0;
|
|
#X connect 21 0 7 2;
|
|
#X connect 23 0 26 0;
|
|
#X connect 24 0 26 0;
|
|
#X connect 25 0 26 0;
|
|
#X connect 27 0 26 0;
|