What does a typical party have in terms of visuals? Blacklights? Maybe a strobe light if it’s a good party. Most are barely sufficient.

Visuals are a large part of the experience, and someone should be in charge. Introducing the Visualization DJ, the DJ who is responsible for producing stunning visuals for your party.

CodeDJ Live! is a tool for the Visual DJ. It is entirely cloud-based, so it can be at any party, anywhere, as long as you have a computer, an internet connection, and a nice screen. No extra DJ-ing equipment needed.

So, at your next party, set up that projector in your living room, hook it up to your laptop, and fire up CodeDJ Live!


Technical Details

The language used is OpenGL ES Shading Language, more commonly known as GLSL ES. The version supported is 2.0.
The reference can be found here, and the useful quick reference card can be found here.

CodeDJ Live! is a project made by Nop Jiarathanakul for PennApps Fall 2012, a 48-hour hackathaon.
Inspired by Iņigo Quilez and his live code demos at SIGGRAPH 2012 Real-time Live event. Examples can be seen here and here.


User Interface

The user interface is designed to be very minimal, as this is something that would be shown on a large screen. The only visible elements are the FPS counter and the mini visualizer. This visualzer shows the levels of the 8 different channels available. The first red bar shows the overall volume of the track.

The code editor is hidden, and can be toggled using Ctrl+E. There is a colored bar at the top of the editor. This indicates the status of code compilation. Green means the code successfully compiled and is running. Red means the code failed to compile. When the code does not compile, it is not loaded, and the last compiled code continues to run.

All actions are done through keyboard commands, which are listed below here.

Keys Command
Space Play / pause music
Ctrl+E Show / hide code editor
Ctrl+S Compile code
Esc Hide code editor

Shader Uniforms

Name Type Description
uTime float Incrementing time since started
uAspect float Screen aspect ratio
uAudLevels float array Array of frequency levels. Fixed 8 channels.
uAudAveLevel float Volume level. Average level of all frequency channels.
uAudAccumLevel float Accumulated volume level. Increments by volume level every update.

Shader Functions

Name Params Return Description
getAudLevel float n float Returns one of the audio freq levels given normalized n.
rand vec2 n float Returns pseudo-random float, given a seed vec2 n.
EQUALS float A, float B bool Returns if two floats are equal with an EPS error.
EQUALSZERO float A bool Returns if A is equal to zero with an EPS error.

Shader Constants

Name Type Value Description
EPS float 0.0001 Epsilon. Arbitrary small value.
PI float 3.14159265 Mathemathical constant pi
TWOPI float 6.28318530 Pi multiplied by two
HALFPI float 1.57079633 Pi divided by two
OVRTHREE float 0.57735027 One over root three
HUGEVAL float 1e20 Arbitrary large value