POV-Ray : Newsgroups : povray.off-topic : WinAmp visualisation Server Time
5 Sep 2024 09:20:34 EDT (-0400)
  WinAmp visualisation (Message 1 to 5 of 5)  
From: Invisible
Subject: WinAmp visualisation
Date: 1 Sep 2009 09:38:59
Message: <4a9d23f3$1@news.povray.org>
In the beginning, WinAmp supported "vis" plugins. These take whatever 
waveform data WinAmp is spitting out of the sound card and visualise it 
in some way.

A typical example is Nullsoft's own "tiny fullscreen vis" DLL. It gives 
you a grainy 320x240 16-colour osciliscope trace, or a scrolling 
spectrum print, in various combinations.

This was the level that most vis plugins aspired to. Low-res, low-colour 
things that jiggle around vaguely in time to the music. But then, we are 
talking about the days when a Pentium II was considered "high-end".

To be fair, there were a few simple 3D things out there, but without 
hardware 3D acceleration, they were unusable. (They ran, but at multiple 
seconds per frame rather than the other way around.) As with everything 
WinAmp-related, a lot of them were quite buggy.



After a while, along came another Nullsoft plugin. I forget what it was 
called, but it opened up a little (dockable) window and drew a 
configurable combination of osciliscope lines and circles, in 
configurable colours. The difference was that the previous frame stayed 
in the frame buffer, and would fade to black and/or blur, according to 
configurable settings.

One neat trick was to set the osciliscope to draw in white. Set the blue 
channel to fade fastest, the green next, and your osciliscope trace 
starts brilliant white, quickly fades to yellow, slowly fades through 
orange to red, and gradually fades to pure black.

It wasn't much, but it was the least cheap-and-nasty looking plugin 
around for a long old time.



And then, a ground-breaking plugin called Geiss appeared. Geiss was a 
sophisticated system for utterly crippling your CPU and making it cry 
it's little heart out like a 4 year old girl. The visual result was 
astonishing though: jaw-dropping full-screen technicolour heaven. 
Swirling masses of cloud. If only you could find a combination of 
settings that didn't destroy your PC.

The technology is pretty simple in concept. You render one of several 
kinds of osciliscope trace into the frame buffer. You fade it, you blur 
it, and you transform it. The simplest transformation is to simply zoom 
in or zoom out; this creates a kind of infinite tunnel effect. You can 
also rotate it a little bit. But Geiss also featured stacks of 
non-linear transformations; spirals and swirls, bumps and bubbles, 
ripples, orbs, wirlpools and so on.

Geiss was strictly non-programmable; you could change the combination of 
options used to draw the image, but that is all. But it had a really 
quite large selection of hand-picked transformation maps, some of them 
quite complicated.

Another innovation was that it used 8-bit indexed colours. So instead of 
simply white fading to yellow fading to red fading to black, the colours 
could change in arbitrary ways. They could fade and then GET BRIGHTER. 
You could have a mostly green image with the central waveform in creamy 
yellow. Or a red image with the wave in deep purple. All the colour maps 
were hand-picked. There were even "solarised" ones that contained many 
alternating red/green transitions, for example.

Geiss was a simple concept, executed skillfully. Shortly after, a 
bazillion and one clones of the idea popped up. But none of them 
compared to Geiss. The colour schemes were carefully designed to look 
good, the transformation maps were varied and interesting. They included 
perspective effects, running ink effects, rippling water effects, motion 
blur effects, even one which was dithered to make the image 
simultaneously zoom in and out at the same time.

(Geiss also crashed a lot less than the cheap clones - i.e., never.)

The innar looks in Geiss were reputedly hand-coded in assembly for 
maximum speed. (Pentium II, remember?) Even so, it was cripplingly slow 
at any kind of high-res. (The cheap clones were drastically slower still 
though.)

Interestingly, Geiss *had* a 24-bit mode, but aside from being 3 times 
slower, it just wasn't as pretty. The waveform rendered in 
randomly-chosen colours, and then just blurred and faded. The result was 
a nausiating McFlurry of random colours clashing with each other. 
Incomparable to the subtly-chosen colour maps of the 8-bit mode that 
everybody actually *used*.



Over time, several updates to Geiss were released. Each one added new 
transofmation maps or new colour maps. One added the ability to "steer" 
the zoom by moving the mouse. Another used primitive beat detection to 
do the same automatically. All were worth-while updates.

And then Nullsoft came up with the Advanced Visualisation System (AVS). 
It's basically a fully programmable system for doing... exactly what 
Geiss does. You program in the shape of the waveform plot, the formulas 
for the transformation map, select how much blur you want, and off you go.

Over time, they added more and more features to it. The osciliscope 
became so programmable that it was basically an arbitrary line drawing 
system. You could load and save bitmaps from multiple buffers to 
generate live textures. You could combine bitmaps in several ways.

And then came the rise of the AVS packs. Rather than spend 6 months 
learning how to use DirectX, people would just fire up AVS and start 
hacking away. No compilers, no DLL issues, no DirectX hiccups, AVS does 
it all for you. It's the ultimate RAD solution for visualisation! Except 
that what it lets you do is still pretty limited.

Even so, people came up with AVS presents should *should* be completely 
impossible. AVS has absolutely no 3D primitives of any kind, and yet 
people continually come up with impressive real-time 3D visuals with 
complex camera motion, depth fog, reflections and so forth. But even the 
purely 2D stuff can be very intricate and impressive.

(It goes without saying that the vast *majorty* of AVS stuff utterly 
sucks. But if you dig through the trash, mixed in you'll find some 
absolute gems...)

The other problem with AVS is that it's insanely slow. It takes strings 
such as "x = x^2; y = y^3" and turns them into runnable code, used to 
process every pixel on the display. I'm sure there's probably a degree 
of precompute going on there, but even so, without a fast CPU it's 
pretty glacial. (Today it's less of a problem, but back when AVS was new...)



As an aside, some time ago I myself realised that AVS can be programmed 
to draw both quadratic Julia sets and linear 2D IFS.

The quadratic Julia sets are easy enough to realise. Simply implement a 
transformation map using the quadratic formula, and you're done.

The surprising part is that it works; AVS has two transform map types. 
The static one, and a dynamic one. The dynamic one calculates the 
transform at a handful of points only and then linearly interpolates 
between them. The result looks downright horrid. But - interestingly - 
for the quadratic Julia, the crude approximation has no visible effect 
on the set thus produced.

AVS can also draw linear IFS. This is at first a surprising result. IFS 
is usually drawn using the Chaos Game. This involves producing a random 
stream of points and producing a histogram of them; AVS cannot do 
anything like this. (It could produce a histogram of points, but you 
can't compute the points in the first place.)

However, there is another way to draw IFS: the Copy Game. AVS can do 
this easily. Take the framebuffer, transform it, stick the result into a 
seperate buffer. Repeat for all the transforms in the IFS. Merge all the 
buffers back into the framebuffer using a suitible blend mode. Instant 
IFS. And since the transforms are linear anyway, it's no problem to make 
them dynamic...



And now, I have discovered Milk Drop. Written by Ryan Geiss, the author 
of the original Geiss plugin (didn't see THAT comming!), it's so good 
that it's included with WinAmp by default, and is the default vis plugin 
on installation.

Milk Drop does exactly what Geiss does, but using the GPU instead of the 
CPU. The result is an astronomical increase in speed (and hence render 
complexity) with almost zero CPU load.

So Milk Drop draws blurry zooming swirly osciliscopes. (And I have to 
say, the average quality of a Milk Drop preset doesn't compare 
favourably to Geiss.) But it's more than that. Milk Drop sometimes draws 
things which defy explanation.

First there are the trivial "emboss" effects. These are presumably just 
a simple post-processing step. Quite effective though.

First there are the "glow" effects. Again presumably a post-blur step, 
but again very effective.

Then there are the strange "gel" effects, where it looks like a layer of 
lumpy gel is sitting on top of the picture. Presumably this is some 
simple post-processing displacement trick when blending two buffers to 
make it look like refraction. Still, the result is impressive.

Then we get to weird shapes that seem to magically "grow" in highly 
complex ways. I'm only guessing, but I think it's some kind of 
reaction-diffusion system. I recognise some of the shapes as being 
characteristic of that sort of thing.

And finally, there are the impossible paint effects. Colours are drawn 
onto the screen, and then they are squished around like wet paint on 
glass, but with appearntly richly 3D detail. To see the still images is 
impressive; to watch it move is jaw-dropping. I cannot begin to 
comprehend how in hell this effect is physically possible...

Milk Drop, then, appears to be the next step in the evolution of vis 
plugins. (Even if it is only a minority of the presets that are actually 
any good, which is a pitty.)


Post a reply to this message

From: scott
Subject: Re: WinAmp visualisation
Date: 1 Sep 2009 10:10:39
Message: <4a9d2b5f$1@news.povray.org>
> And now, I have discovered Milk Drop. Written by Ryan Geiss, the author of 
> the original Geiss plugin (didn't see THAT comming!), it's so good that 
> it's included with WinAmp by default, and is the default vis plugin on 
> installation.

Geiss did exactly what I dreamt of when I still wanted to be a full-time 
programmer.  Write something cool that people notice, then get recruited by 
someone like nVidia and spend your time writing cool things like the 
Cascades demo :-)  I wonder what he's doing now?


Post a reply to this message

From: Invisible
Subject: Re: WinAmp visualisation
Date: 1 Sep 2009 10:14:26
Message: <4a9d2c42$1@news.povray.org>
scott wrote:
>> And now, I have discovered Milk Drop. Written by Ryan Geiss, the 
>> author of the original Geiss plugin (didn't see THAT comming!), it's 
>> so good that it's included with WinAmp by default, and is the default 
>> vis plugin on installation.
> 
> Geiss did exactly what I dreamt of when I still wanted to be a full-time 
> programmer.  Write something cool that people notice, then get recruited 
> by someone like nVidia and spend your time writing cool things like the 
> Cascades demo :-)  I wonder what he's doing now?

Something absurdly cool, I think.

(Anybody heard from Rune lately?)


Post a reply to this message

From: Fredrik Eriksson
Subject: Re: WinAmp visualisation
Date: 1 Sep 2009 10:29:11
Message: <op.uzk06xv87bxctx@e6600>
On Tue, 01 Sep 2009 16:14:25 +0200, Invisible <voi### [at] devnull> wrote:
> scott wrote:
>>  Geiss did exactly what I dreamt of when I still wanted to be a  
>> full-time programmer.  Write something cool that people notice, then  
>> get recruited by someone like nVidia and spend your time writing cool  
>> things like the Cascades demo :-)  I wonder what he's doing now?
>
> Something absurdly cool, I think.

Apparently, he works for Microsoft now. You will have to decide for  
yourself if Natal is "absurdly cool".

http://www.geisswerks.com/



-- 
FE


Post a reply to this message

From: Darren New
Subject: Re: WinAmp visualisation
Date: 1 Sep 2009 12:17:02
Message: <4a9d48fe@news.povray.org>
Fredrik Eriksson wrote:
> You will have to decide for 
> yourself if Natal is "absurdly cool".

I think it's going to be very Peter Molyneux. A wonderful great concept that 
really fails to live up to everything it could have been.

Heh. And I made that analogy before I even knew Molyneux was associated with it.

-- 
   Darren New, San Diego CA, USA (PST)
   Understanding the structure of the universe
    via religion is like understanding the
     structure of computers via Tron.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.