Next post: SDL Text and Dialogs

Psychedelic Tennis

A few months ago I was struck with an idea. What would it look like if traditional audio effects were applied to videos?

I could treat every pixel as a separate signal in time, with its brightness being the value. These become sequences of values, just like streams of audio data. I could put these signals through various audio filters, like high-pass, low-pass, and so on. (I solely apply effects in time, not space.)

I wrote code in C that worked on individual frame images at the pixel level in order to have complete control.

Applying a low pass filter to all pixels created a motion-blur like effect, because it was essentially blurring together consecutive frames. A high pass filter looked more interesting - the video became all dark except for the areas with the fastest motion. Things really started to get interesting, though, when I thought of how to use the visual equivalent of a flange effect. Watch this:

A flange effect can be created with is the sum of two signals: one is the input signal, unchanged, and the other is the input signal alternating between being played slightly faster, and slightly slower. Because of the alternation, they stay in sync, but the effect is heard as a moving, shimmering sound. (Used in guitars in psychedelic rock).

I applied an exaggerated version of this effect. I combine the video signal with an altered version of itself that speeds up and slows down, just like a flange effect. This means that sometimes the altered signal is a ghostly signal sometimes ahead in the future, and sometimes lagging behind.

I then thought it would be interesting if I used a high pass filter to accentuate which pixels are changing the most. And then, to make it look even better, I allowed the values that overflow beyond 255, instead of being truncated, to just be used modulo 256, resulting in vivid colors.

In audio, there are methods of looping a non-periodic sound. One way is to play many copies of the sound offset in time, but giving each a envelope, so that each piece on its own fades in and out, and isn't very noticeable. I used this in the last effect of the video, creating a loop.