Hypercube
In December 2008, I participated in a “Live Coding using Vision Factory” workshop, animated by Julien V3GA, a French digital artist, designer and programmer.

The main objective of the workshop was to become familiar with this tool. I was able to explore this code in depth using Object Oriented Programming, allowing me to produce repetitive shapes with their own “personalities”.

Some images of our testing :
 /  (1 of 10)


As personal exercise, I developed Hypercube, a shape inspired by hypercubes (equivalent to the cube in a 4 or more dimensions space). The overall shape is a large cube composed of subsets of 7 small cubes. These numbers are found in the geometrical construction process of a hypercube : 8 cubes are required, but in a 3D space only 7 are visible. In the script, the groups of 7 small cubes organise the shape of the 8th cube, normally invisible.
The shapes’ movements are inspired by chaos theory. At first, they appear to have a high level of randomness. Over time, this apparent randomness gains coherence and becomes radically logical. This duality of randomness and logicality are strongly present in mathematical chaos theory.
These two concepts are intrinsic to computer programs. The code itself can be seen as a chaotic sea of characters. Codes have visible parts and logical behaviours, but also obscure areas with undesired reactions (usually bugs).

Some images of Hypercube:
 /  (1 of 10)


Technical :

LiveCoding is an extension of Vision Factory, a framework used by Julien V3GA in his studio but also for his VJing activities. LiveCoding is currently in an early beta-version, and there are two ways to run it :

● On a single computer;
● On up to 5 computers : one main server where the framework is actually running, plus up to 4 computers using Processing and a plain text editor.

We use JavaScript files as a code support for Vision Factory. When Julien V3GA programmed his framework, he included libraries such as OpenGL and Open Sound Control. In order to gain access to the libraries’ features, he created key-word functions (similar to Processing). Each time the script is saved, SpiderMonkey interprets the code and looks for bugs. If there are no bugs, the script is run, but if a bug is detected, an error message is sent to Vision Factory and the most recent valid version of the script is run.

When a JavaScript is loaded for the first time into Vision Factory, the init() function is called. This function is analogous to Processing’s setup(). The init() function may be recalled at any time by sending a command to Vision Factory. There are two functions that keep looping : update() and render(). They are similar to the update() and draw() functions in OpenFrameworks. First the update is called. Then Vision Factory executes the render.
 Finally, Vision Factory is built in a 4 layer structure. We can gain access to each layer anytime. When using the server configuration, each client is assigned to a layer. The clients and the server communicate using Open Sound Control.

Ecole Supérieure d'Art d'Aix-en-Provence - 2008