Process


This is the AVS editor window. Below the image, I will attempt to explain some of what is going on.

The list on the left is the stack, which consists of filters and code blocks which are executed in order. Effects Lists are similar to groups in Photoshop, in that they can apply a blending mode to everything inside the list. However, there are two sets of blending modes: one for things above the list in the stack, and one for things below it.


The window to the right is the settings area for whatever effect that is selected on the left. In this case, it’s a Texer, which is basically a particle system, using images as the particles. Each text box allows you to insert code into various parts of the effect.


The frame block is run once every frame. In this preset, the getosc() function is used, which grabs a value from the waveform of the audio at the current time.


The last block is the Point block, which is executed for every point in the particle system. As specified in the Init block, we’re using 50 points here. The first odd thing is the use of the reg01 variable. The reg variables are a global registry, which provide 99 global variables which can be used by other effects in the stack.


Following that is an example of the if-statement syntax, which is always inline. Since normal operators boolean operators don’t exist in this language, functions are used instead: equals() replaces ==, above() replaces >, and bnot(), bor(), and band() are the normal boolean NOT, OR, and AND operators, respectively.


One final interesting aspect of AVS is the ability to code per-pixel deformations, using the Dynamic Movement effect.

The code is structured quite similarly to the Texer effect, except instead of the last block being run on every point, it’s run on every pixel.


In this preset, a number of overlapping sine and cosine waves are modulating the pixel position, which transforms a set of straight lines into curved ones.


While this is a simple use of the Dynamic Movement, those more skilled at math than me have managed to create rudimentary 3D ray tracers with reflective surfaces, fractals, metaballs, and any number of amazing effects.

A set of audio visualizations, created using Winamp’s Advanced Visualization Studio, a stack-based semi-visual programming language.

Each one took a few days to program, involving a large amount of trial-and-error. When making a visualization, I tend not to set out with any sort of aesthetic goal in mind, and instead prefer to just experiment until I get to a direction I like, and then advance it from there.

Visit visbot.net for more!