Rd: [PD] spectrogram in PD

Hans-Christoph Steiner hans at eds.org
Mon Nov 13 20:23:43 CET 2006


That's a nice patch!  It should be included in Pd-extended or  
somewhere as a fully documented object.  My only suggestion is that I  
think it should use 0.00 to 1.00 to represent the temporal  
percentage.  Except for places where it doesn't make sense (e.g.  
pitch/freq), I think all parameters should be between 0 and 1.  It  
makes for much less time spent changing the range of data, and much  
less time looking up what range a given object expects.  Plus it  
allows for unusual combinations in the spirit of play.

.hc

On Nov 13, 2006, at 12:55 PM, Georg Holzmann wrote:

> Hallo!
>
> If you want to draw a logarithmic spectrum with only native pd  
> objects see the attached patch ...
>
> LG
> Georg
> #N canvas 265 153 333 190 10;
> #N canvas 88 49 872 789 FFT_Analyse 0;
> #X obj 101 102 inlet~;
> #X obj 101 332 *~;
> #X obj 132 331 *~;
> #X obj 110 356 +~;
> #X obj 111 377 powtodb~;
> #N canvas 0 0 346 535 init_input_window 0;
> #X obj 73 217 / 10;
> #X obj 55 278 line 0 0.1;
> #X msg 119 246 0;
> #X obj 54 176 t f f b;
> #X obj 54 239 pack;
> #X obj 55 301 t f f;
> #X obj 54 152 - 1;
> #X obj 74 114 t f f;
> #X obj 55 359 * 3.14159;
> #X obj 55 381 sin;
> #X msg 55 401 \$1 \$1;
> #X obj 55 423 *;
> #X text 119 334 0...0.99;
> #X text 128 359 0...pi;
> #X text 79 423 hanning;
> #X msg 55 88 4096;
> #X obj 100 88 f 4096;
> #X obj 99 60 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
> -1;
> #X obj 99 39 loadbang;
> #X obj 74 333 / 4096;
> #X obj 55 448 tabwrite \$0-window;
> #X text 86 381 half-sine;
> #X connect 0 0 4 1;
> #X connect 1 0 5 0;
> #X connect 2 0 1 0;
> #X connect 3 0 4 0;
> #X connect 3 1 0 0;
> #X connect 3 2 2 0;
> #X connect 4 0 1 0;
> #X connect 5 0 19 0;
> #X connect 5 1 20 1;
> #X connect 6 0 3 0;
> #X connect 7 0 6 0;
> #X connect 7 1 19 1;
> #X connect 8 0 9 0;
> #X connect 9 0 10 0;
> #X connect 10 0 11 0;
> #X connect 11 0 20 0;
> #X connect 15 0 7 0;
> #X connect 16 0 7 0;
> #X connect 17 0 16 0;
> #X connect 18 0 17 0;
> #X connect 19 0 8 0;
> #X restore 161 276 pd init_input_window;
> #N canvas 0 0 450 300 graph3 0;
> #X array \$0-lin_scope 2048 float 0;
> #X coords 0 100 2047 0 200 140 1;
> #X restore 110 596 graph;
> #N canvas 0 0 822 328 init_norm 0;
> #X obj 43 230 outlet;
> #X obj 43 187 - 100;
> #X floatatom 43 208 9 0 0 0 - - -;
> #X text 108 169 leistung -> techn. dB;
> #X msg 43 69 4096;
> #X obj 80 68 f 4096;
> #X obj 80 47 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
> -1;
> #X obj 80 26 loadbang;
> #X obj 43 167 rmstodb;
> #X obj 43 110 / 4;
> #X text 74 103 faktor 2 wegen hanning;
> #X text 74 114 weiterer faktor 2 \, weil wir nur die;
> #X text 73 124 erste haelfte des konjungiert komplexen spektrum sehen
> ;
> #X text 108 135 bzw. bearbeiten \, somit nur die haelfte der  
> spektralen
> energie;
> #X connect 1 0 2 0;
> #X connect 2 0 0 0;
> #X connect 4 0 9 0;
> #X connect 5 0 9 0;
> #X connect 6 0 5 0;
> #X connect 7 0 6 0;
> #X connect 8 0 1 0;
> #X connect 9 0 8 0;
> #X restore 126 401 pd init_norm;
> #X obj 100 231 *~;
> #X obj 110 425 -~ 60.206;
> #X obj 123 519 *~ 0.98;
> #X obj 110 541 +~;
> #X obj 111 475 *~ 0.02;
> #X msg 314 481 1 \$1;
> #X obj 314 502 -;
> #X obj 314 458 clip 0 1;
> #X obj 314 437 / 100;
> #X floatatom 314 413 5 0.5 100 0 - - -;
> #X obj 333 366 loadbang;
> #X obj 100 277 fft~;
> #X obj 463 557 line 0 0.1;
> #X obj 463 602 / 2;
> #X obj 463 622 mtof;
> #X msg 463 536 6 \, 273 26.7;
> #X obj 463 580 t f f;
> #X obj 494 602 - 6;
> #X obj 463 642 / 44100;
> #X obj 463 663 * 4096;
> #X msg 656 633 6;
> #X obj 656 653 / 2;
> #X obj 656 673 mtof;
> #X floatatom 656 693 9 0 0 0 - - -;
> #X text 723 694 Hz;
> #X obj 754 654 / 2;
> #X obj 754 673 mtof;
> #X floatatom 754 693 9 0 0 0 - - -;
> #X text 822 693 Hz;
> #X msg 754 634 273;
> #X obj 656 612 t b b;
> #X obj 463 516 metro 1000;
> #X obj 463 498 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
> 1;
> #X obj 463 458 loadbang;
> #X msg 463 478 1;
> #X obj 656 592 loadbang;
> #X obj 468 245 loadbang;
> #X obj 703 102 inlet;
> #X obj 130 253 table \$0-window 4096;
> #X obj 137 214 tabreceive~ \$0-window;
> #X text 353 403 temporal lowpass;
> #X text 355 415 parameter between 0 .. 100 %;
> #X text 23 23 spectrum~;
> #X text 120 23 draws the power of a spectrum in a logarithmic scale
> ;
> #X text 118 36 (by Thomas Musil);
> #X obj 123 498 tabreceive~ \$0-lin_scope;
> #X obj 110 566 tabsend~ \$0-lin_scope;
> #X obj 463 685 tabread4 \$0-lin_scope;
> #X obj 468 267 f \$0;
> #X text 553 536 transformation to log scale;
> #X msg 333 385 100;
> #X obj 314 341 max 0.5;
> #X obj 314 319 min 100;
> #X obj 440 107 inlet;
> #X text 96 81 audio sig;
> #X text 700 81 ON/OFF;
> #X text 427 86 (0 .. 100);
> #X text 408 72 temporal lowpass;
> #X obj 703 125 switch~ 4096 2;
> #X obj 533 244 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
> -1;
> #X obj 463 707 tabwrite \$0-s;
> #X msg 468 296 \; \$1-s xticks 0 12 2;
> #X msg 491 330 \; \$1-s yticks 0 5 2;
> #X connect 0 0 8 0;
> #X connect 1 0 3 0;
> #X connect 2 0 3 1;
> #X connect 3 0 4 0;
> #X connect 4 0 9 0;
> #X connect 7 0 9 1;
> #X connect 8 0 19 0;
> #X connect 9 0 12 0;
> #X connect 10 0 11 1;
> #X connect 11 0 54 0;
> #X connect 12 0 11 0;
> #X connect 13 0 14 0;
> #X connect 14 0 10 1;
> #X connect 15 0 13 0;
> #X connect 15 0 12 1;
> #X connect 16 0 15 0;
> #X connect 17 0 16 0;
> #X connect 18 0 58 0;
> #X connect 19 0 1 0;
> #X connect 19 0 1 1;
> #X connect 19 1 2 0;
> #X connect 19 1 2 1;
> #X connect 20 0 24 0;
> #X connect 21 0 22 0;
> #X connect 22 0 26 0;
> #X connect 23 0 20 0;
> #X connect 24 0 21 0;
> #X connect 24 1 25 0;
> #X connect 25 0 68 1;
> #X connect 26 0 27 0;
> #X connect 27 0 55 0;
> #X connect 28 0 29 0;
> #X connect 29 0 30 0;
> #X connect 30 0 31 0;
> #X connect 33 0 34 0;
> #X connect 34 0 35 0;
> #X connect 37 0 33 0;
> #X connect 38 0 28 0;
> #X connect 38 1 37 0;
> #X connect 39 0 23 0;
> #X connect 40 0 39 0;
> #X connect 41 0 42 0;
> #X connect 42 0 40 0;
> #X connect 43 0 38 0;
> #X connect 44 0 56 0;
> #X connect 45 0 66 0;
> #X connect 47 0 8 1;
> #X connect 53 0 10 0;
> #X connect 55 0 68 0;
> #X connect 56 0 69 0;
> #X connect 56 0 70 0;
> #X connect 58 0 17 0;
> #X connect 59 0 17 0;
> #X connect 60 0 59 0;
> #X connect 61 0 60 0;
> #X connect 67 0 56 0;
> #X restore 17 270 pd FFT_Analyse;
> #X text 15 195 spectrum~.pd;
> #X obj 63 249 inlet;
> #X obj 17 249 inlet~;
> #X obj 110 249 inlet;
> #N canvas 0 0 450 300 graph3 0;
> #X array \$0-s 268 float 0;
> #X coords 0 100 267 0 267 140 1;
> #X restore 33 17 graph;
> #X obj 307 32 cnv 15 1 1 empty empty -10 0 0 0 10 -262144 -1 0;
> #X obj 307 144 cnv 15 1 1 empty empty -90 0 0 0 10 -262144 -1 0;
> #X obj 307 88 cnv 15 1 1 empty empty -50 0 0 0 10 -262144 -1 0;
> #X obj 307 60 cnv 15 1 1 empty empty -30 0 0 0 10 -262144 -1 0;
> #X obj 307 116 cnv 15 1 1 empty empty -70 0 0 0 10 -262144 -1 0;
> #X obj 28 161 cnv 15 1 1 empty empty 10 0 5 0 10 -262144 -1 0;
> #X obj 76 161 cnv 15 1 1 empty empty 40 0 5 0 10 -262144 -1 0;
> #X obj 125 161 cnv 15 1 1 empty empty 160 0 5 0 10 -262144 -1 0;
> #X obj 172 161 cnv 15 1 1 empty empty 640 0 5 0 10 -262144 -1 0;
> #X obj 220 161 cnv 15 1 1 empty empty 2k56 0 5 0 10 -262144 -1 0;
> #X obj 268 161 cnv 15 1 1 empty empty 10k2 0 5 0 10 -262144 -1 0;
> #X obj 148 174 cnv 15 1 1 empty empty 320 0 5 0 10 -262144 -1 0;
> #X obj 292 174 cnv 15 1 1 empty empty 20k5 0 5 0 10 -262144 -1 0;
> #X obj 52 171 cnv 15 1 1 empty empty 20 0 9 0 10 -262144 -1 0;
> #X obj 100 174 cnv 15 1 1 empty empty 80 0 5 0 10 -262144 -1 0;
> #X obj 196 174 cnv 15 1 1 empty empty 1k28 0 5 0 10 -262144 -1 0;
> #X obj 244 174 cnv 15 1 1 empty empty 5k12 0 5 0 10 -262144 -1 0;
> #X obj 56 158 cnv 15 1 1 empty empty | 0 7 0 10 -262144 -1 0;
> #X obj 104 158 cnv 15 1 1 empty empty | 0 7 0 10 -262144 -1 0;
> #X obj 152 158 cnv 15 1 1 empty empty | 0 7 0 10 -262144 -1 0;
> #X obj 200 158 cnv 15 1 1 empty empty | 0 7 0 10 -262144 -1 0;
> #X obj 248 158 cnv 15 1 1 empty empty | 0 7 0 10 -262144 -1 0;
> #X obj 296 158 cnv 15 1 1 empty empty | 0 7 0 10 -262144 -1 0;
> #X text 16 220 draws the power of the spectrum (log);
> #X connect 2 0 0 1;
> #X connect 3 0 0 0;
> #X connect 4 0 0 2;
> #X coords 0 0 1 1 330 190 1;
> _______________________________________________
> PD-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/ 
> listinfo/pd-list


------------------------------------------------------------------------

Using ReBirth is like trying to play an 808 with a long stick.    - 
David Zicarelli






More information about the Pd-list mailing list