Hi Paris, all,
I've been experimenting with audio->video in Gridflow, see attached example patches, they're not brilliant but might give you some ideas. [#import~] is currently a (slow!!) abstraction I made, but maybe one day I'll learn enough C, C++, Ruby, and Gridflow internals to be able to make it a zillion times faster...
Here's some I made earlier: </BluePeter>
http://claudiusmaximus.goto10.org/index.php?page=gallery/digital/CM-v-CM
(Stills from a DVD I'm working on, from time to time, it may even get finished one day...) The corresponding audio is here:
http://www.archive.org/details/ClaudiusMaximus_-_Soft_Rock_EP
Working from pre-recorded audio meant I couldn't do anything easy to "sync" the frames and stop the "rolling", but I happen to like temporal aliasing a great deal - flickery trippiness is go!
The right inlet of an [osc~] or [phasor~] sets the phase between 0 and 1, but only once (as you have found). Here's a bonus tip:
|
[mtof]
|
[phasor~]
|
| [*~ 1.5] <<< vary this >= 1, maybe using an envelope
| |
| [wrap~]
| |
[dac~]
...for that classic osc sync sound ;-)
Paris Treantafeles wrote:
haha... i can't be the only one who has hit "send" then figured out the problem.
basically i wasn't really resetting the oscillators since sending a
number to the right inlet of the oscillator wasn't enough. once i added a metro and "banged" the input, the sync worked.still... if there's anything that comes to mind regarding best block~
to use, please feel free to share.best, p
On May 4, 2006, at 11:48 AM, Paris Treantafeles wrote:
Hello List,
I've created a few patches with PD/GEM to emulate early video synths such as the Sandin, etc. which I'm quite happy with. At the heart of these patches is pix_sig2pix~ One thing I can't figure out though has to do with preventing the
image from "rolling" - i.e. to stand still. The early video synths did this by having a "sync" input to oscillators. So if you fed one oscillator a vertical sync (~60 Hz) you would get
stationary vertical bars whose width would depend on the main
frequency of the oscillator. Doing this with another oscillator
receiving a horizontal sync (~1500 Hz) results in horizontal bars. By mixing these and perhaps another (and adjusting the attenuation of these), various shapes appear. I can get all of this and more (e.g. add some filters for subtractive synthesis) but what I'm missing is how to do the sync correctly. Trying various values as reset inputs to say "phasor~" doesn't do it. I'm wondering if this is in fact related to blocksize~ instead. e.g. should the reset values of the oscillators be related in someway to the value set in blocksize~Does anyone have any ideas about this?
Thanks for any suggestions!
Best, p
#N canvas 599 365 451 375 10; #X obj 152 169 metro 1000; #X obj 154 150 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X floatatom 179 151 5 0 0 0 - - -; #X obj 12 316 #greyscale_to_rgb; #X obj 14 201 *~ 128; #X obj 13 222 +~ 128; #X obj 12 343 #out window; #X obj 14 172 osc~; #X floatatom 25 83 5 0 0 0 - - -; #X obj 127 43 bang~; #X msg 116 121 0; #X obj 12 296 #redim ( 256 256 1 ); #X obj 116 67 f 0; #X obj 195 55 + 1; #X obj 116 95 select 0; #X obj 117 25 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 14 148 lop~ 1; #X obj 129 150 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 7 27 metro 1000; #X obj 5 6 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X obj 152 192 t b b; #X obj 14 61 random 36; #X floatatom 75 4 5 0 0 0 - - -; #X text 139 24 <<< nudge this to adjust sync; #X text 225 149 <<< ms per frame; #X text 126 3 <<< automation; #X text 94 231 <<< scale and grab; #X text 165 291 <<< make an image out of one vectors; #X obj 195 79 mod 1024; #X obj 28 126 sig~; #X obj 13 245 clip~ 0 255; #X obj 13 266 #import~ 65536; #X obj 29 103 / 5; #X text 260 79 <<< import value/blocksize; #X connect 0 0 20 0; #X connect 1 0 0 0; #X connect 2 0 0 1; #X connect 3 0 6 0; #X connect 4 0 5 0; #X connect 5 0 30 0; #X connect 7 0 4 0; #X connect 8 0 32 0; #X connect 9 0 12 0; #X connect 10 0 7 1; #X connect 11 0 3 0; #X connect 12 0 13 0; #X connect 12 0 14 0; #X connect 13 0 28 0; #X connect 14 0 10 0; #X connect 15 0 12 0; #X connect 16 0 7 0; #X connect 17 0 20 0; #X connect 18 0 21 0; #X connect 19 0 18 0; #X connect 20 0 31 1; #X connect 21 0 8 0; #X connect 22 0 18 1; #X connect 28 0 12 1; #X connect 29 0 16 0; #X connect 30 0 31 0; #X connect 31 0 11 0; #X connect 32 0 29 0;
#N canvas 428 155 463 521 10; #X obj 231 169 metro 1000; #X obj 233 150 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X floatatom 258 151 5 0 0 0 - - -; #X obj 12 316 #greyscale_to_rgb; #X obj 14 201 *~ 128; #X obj 13 222 +~ 128; #X obj 118 202 *~ 128; #X obj 117 221 +~ 128; #X obj 13 468 #out window; #X msg 30 370 256 256 256; #X obj 30 391 # rand; #X obj 50 346 loadbang; #X obj 14 172 osc~; #X obj 117 174 osc~; #X floatatom 22 106 5 0 0 0 - - -; #X floatatom 128 107 5 0 0 0 - - -; #X obj 206 43 bang~; #X msg 195 121 0; #X obj 12 296 #redim ( 256 256 1 ); #X obj 14 243 #import~ 256; #X obj 115 242 #import~ 256; #X obj 195 67 f 0; #X obj 274 55 + 1; #X obj 274 79 mod 4; #X obj 195 95 select 0; #X obj 196 25 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 13 128 mtof~; #X obj 13 419 # ^; #X obj 12 276 #outer *>>8; #X obj 115 127 mtof~; #X obj 114 150 lop~ 1; #X obj 208 150 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 13 83 + 60; #X obj 114 86 + 60; #X obj 7 27 metro 1000; #X obj 5 6 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X obj 231 192 t b b; #X obj 14 61 random 36; #X obj 114 61 random 36; #X floatatom 75 4 5 0 0 0 - - -; #X text 218 24 <<< nudge this to adjust sync; #X text 304 149 <<< ms per frame; #X text 126 3 <<< automation; #X text 60 106 <<< f >>>; #X text 121 373 <<< false colour; #X text 228 225 <<< scale and grab; #X text 168 296 <<< make an image out of two vectors; #X obj 14 148 lop~ 25; #X connect 0 0 36 0; #X connect 1 0 0 0; #X connect 2 0 0 1; #X connect 3 0 27 0; #X connect 4 0 5 0; #X connect 5 0 19 0; #X connect 6 0 7 0; #X connect 7 0 20 0; #X connect 9 0 10 0; #X connect 10 0 27 1; #X connect 11 0 9 0; #X connect 12 0 4 0; #X connect 13 0 6 0; #X connect 14 0 26 0; #X connect 15 0 29 0; #X connect 16 0 21 0; #X connect 17 0 12 1; #X connect 17 0 13 1; #X connect 18 0 3 0; #X connect 19 0 28 0; #X connect 20 0 28 1; #X connect 21 0 22 0; #X connect 21 0 24 0; #X connect 22 0 23 0; #X connect 23 0 21 1; #X connect 24 0 17 0; #X connect 25 0 21 0; #X connect 26 0 47 0; #X connect 27 0 8 0; #X connect 28 0 18 0; #X connect 29 0 30 0; #X connect 30 0 13 0; #X connect 31 0 36 0; #X connect 32 0 14 0; #X connect 33 0 15 0; #X connect 34 0 9 0; #X connect 34 0 37 0; #X connect 34 0 38 0; #X connect 35 0 34 0; #X connect 36 0 19 1; #X connect 36 1 20 1; #X connect 37 0 32 0; #X connect 38 0 33 0; #X connect 39 0 34 1; #X connect 47 0 12 0;
#N canvas 845 80 226 411 10; #X obj 127 49 metro 1000; #X obj 13 176 #outer *>>8; #X obj 129 30 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 ; #X floatatom 192 27 5 0 0 0 - - -; #X obj 11 225 #greyscale_to_rgb; #X obj 13 101 *~ 128; #X obj 12 120 +~ 128; #X obj 106 100 *~ 128; #X obj 105 119 +~ 128; #X obj 12 374 #out window; #X obj 45 60 adc~; #X obj 127 75 t b b; #X msg 29 277 256 256 256; #X obj 29 298 # rand; #X obj 13 325 # ^; #X obj 12 202 #redim ( 256 256 1 ); #X obj 13 141 #import~ 256; #X obj 103 141 #import~ 256; #X obj 92 33 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 49 253 loadbang; #X connect 0 0 11 0; #X connect 1 0 15 0; #X connect 2 0 0 0; #X connect 3 0 0 1; #X connect 4 0 14 0; #X connect 5 0 6 0; #X connect 6 0 16 0; #X connect 7 0 8 0; #X connect 8 0 17 0; #X connect 10 0 5 0; #X connect 10 1 7 0; #X connect 11 0 16 1; #X connect 11 1 17 1; #X connect 12 0 13 0; #X connect 13 0 14 1; #X connect 14 0 9 0; #X connect 15 0 4 0; #X connect 16 0 1 0; #X connect 17 0 1 1; #X connect 18 0 12 0; #X connect 19 0 12 0;
#N canvas 12 35 295 168 10; #X obj 153 122 outlet grid; #X obj 17 22 inlet~ signal; #X obj 17 42 tabsend~ $0-block; #X obj 153 22 inlet; #X obj 153 42 t b; #X obj 153 82 tabread $0-block; #X obj 17 62 table $0-block $1; #X obj 153 62 for 0 $1 1; #X obj 153 102 #import ( $1 ); #X obj 17 122 block~ $1 $2 $3; #X connect 1 0 2 0; #X connect 3 0 4 0; #X connect 4 0 7 0; #X connect 5 0 8 0; #X connect 7 0 5 0; #X connect 8 0 0 0;