That's quite nice, you are quite the Gem master. I was thinking of a
3D view that incorporates time. That's where the curve3d comes in.
.hc
On Mar 10, 2009, at 8:37 PM, Claude Heiland-Allen wrote:
Hans-Christoph Steiner wrote:
Anyone know of a patch that maps an FFT over time to something like
a curve3d in Gem? I remember a while back people posted something
like that, but I can't find it. .hcI just knocked the attached together, doesn't use curve3d though..
Claude
http://claudiusmaximus.goto10.org #N canvas 0 0 450 405 10; #X obj 20 14 adc~; #X obj 12 108 table $0-window 1024; #N canvas 0 0 450 300 $0-make-window 0; #X obj 31 18 loadbang; #X obj 10 19 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 31 50 f 1024; #X obj 31 80 until; #X obj 30 104 f 0; #X obj 77 101 + 1; #X obj 77 121 mod 1024; #X obj 30 156 / 512; #X obj 30 177 * 3.14159; #X obj 30 209 cos; #X obj 30 230 * -0.5; #X obj 30 256 + 0.5; #X obj 29 279 tabwrite $0-window; #X obj 31 135 t f f; #X connect 0 0 2 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 4 0 13 0; #X connect 5 0 6 0; #X connect 6 0 4 1; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 11 0 12 0; #X connect 13 0 7 0; #X connect 13 1 12 1; #X restore 13 80 pd $0-make-window; #N canvas 0 238 450 300 $0-fft-analysis 0; #X obj 18 18 inlet~; #X obj 86 121 block~ 1024 4 1; #X obj 18 67 rfft~; #X obj 18 98 *~; #X obj 18 42 *~; #X obj 45 98 *~; #X obj 18 124 +~; #X obj 17 177 sqrt~; #X obj 65 43 tabreceive~ $0-window; #X obj 17 209 tabsend~ $0-fft; #X obj 18 151 /~ 1024; #X connect 0 0 4 0; #X connect 2 0 3 0; #X connect 2 0 3 1; #X connect 2 1 5 0; #X connect 2 1 5 1; #X connect 3 0 6 0; #X connect 4 0 2 0; #X connect 5 0 6 1; #X connect 6 0 10 0; #X connect 7 0 9 0; #X connect 8 0 4 1; #X connect 10 0 7 0; #X restore 27 47 pd $0-fft-analysis; #X obj 12 128 table $0-fft 256; #X obj 26 234 gemwin; #X obj 26 189 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X msg 52 191 create; #X msg 55 211 destroy; #X obj 192 27 gemhead; #X obj 193 61 t a a a; #X obj 182 90 GEMglEnd; #X obj 238 89 GEMglBegin; #X obj 295 62 GLdefine GL_LINES; #X obj 295 32 loadbang; #X obj 274 33 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 211 230 gemlist; #X obj 212 144 f 256; #X obj 211 170 until; #X obj 210 194 t b b; #X obj 295 192 + 1; #X obj 212 118 t b b a; #X obj 278 168 f 0; #X obj 264 191 f; #X obj 212 269 GEMglVertex2f; #X obj 297 242 tabread $0-fft; #X obj 212 309 GEMglVertex2f; #X obj 297 282 * -1; #X obj 265 217 / 32; #X obj 263 242 - 4; #X connect 0 0 3 0; #X connect 0 1 3 0; #X connect 6 0 5 0; #X connect 7 0 5 0; #X connect 8 0 5 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 10 1 21 0; #X connect 10 2 12 0; #X connect 13 0 12 1; #X connect 14 0 13 0; #X connect 15 0 13 0; #X connect 16 0 24 0; #X connect 17 0 18 0; #X connect 18 0 19 0; #X connect 19 0 16 0; #X connect 19 1 23 0; #X connect 20 0 23 1; #X connect 21 0 17 0; #X connect 21 1 22 0; #X connect 21 2 16 1; #X connect 22 0 23 1; #X connect 23 0 20 0; #X connect 23 0 25 0; #X connect 23 0 28 0; #X connect 24 0 26 0; #X connect 25 0 24 2; #X connect 25 0 27 0; #X connect 27 0 26 2; #X connect 28 0 29 0; #X connect 29 0 24 1; #X connect 29 0 26 1;
Programs should be written for people to read, and only incidentally
for machines to execute.