Screen capture (low resolution MP4, 4.6 Mb total), 6'15".
This project follows from earlier work of dynamic audiovisual interfaces, a previous desire to construct dynamic hierarchy networks of behavioural agents from minimal components, and an attempt to understand, through practical implementation, the Deleuzian concepts of differenciation, smooth-striated spaces, intensive properties and rhizome/tree structures as described in M. Delanda, "Intensive Science and Virtual Philosophy", (Continuum, New York 2005).
To begin working towards a more generalised approach that could serve well in the future for practical investigations into implementations of ideas expressed in Delanda, I built a world of data based upon node-particles, each with a number of properties expressed as floating point numbers. In keeping with Deleuze's notion of differentiation, I wanted to retain a model of state in terms of rates of change rather than absolute value, which in a discrete digital model also calls for the storage of an empirically gathered previous state, i.e. feedback.

Essentially, each element in the space is of the same type, a node as a three dimensional vector, but no notion of absolute spatial position. The node values are stored as matrices of floating point data, facilitating the rapid computation necessary for mulitplicity in action. Each node also has a unique identity (an integer), and has a reference to one other node in the system (which may be itself, and/or may be referenced by other nodes). Crucially, there is no external hierarchy to the link order: I use integer identifiers for convenience of programming, but these identifiers have no meaning within the system, they could just as well be names as numbers. This step is essential to maintain intensivity. Thus the network is complex, with one-to-many links, self-reference links, and the potential for small, large and multiple loops with terminating branches, and various degrees of tree-like or rhizomatic structure.

Each node is continuously (i.e. in time) compelled to move itself to the end point of the reference node (with the exception of self-referent nodes). Because this movement is not instantaneous but depends upon a multiplicative averaging function over time, the nodes in a network can exhibit quite complex gestalt behaviour. Furthermore, all nodes are acted upon by an attractive force towards the center of the space - this both prevents looped node structures from moving out of sight, add I suspect triggers angular momentum in the structures. In fact, describing it as an attractive force is perhaps misleading, what is really happening is that the world is continously (again as an averaging function) recentering itself by adjusting each individual node according to the total extension of all nodes. The 'attractive force' is a semantic interpretation of the behaviour that ensues.
The most notable byproduct of these interactions is that connected structure tends to separate itself in space from the other connected structures, with larger structures appearing to bear more weight, and singular self-referent nodes or small loops often cast to the edges as if they were satellites. Terminating branches appear to be mostly inert, flailing in space according to the roots behaviours, whereas looped structures dance energetically like a dog chasing its tail until some homeostatic balance is achieved.

Over time, external events (randomised triggers, user input, or network input from other projects) can the reference map to change, such that node structures re-combine in simple or complex ways. In addition, the nodes can be 'excited' (through mouse interaction or network input), exhibiting a colour and sound. An excited node will in turn trigger (with some attenuation) the nodes it has reference to, such that excitation can travel along a nodes hierarchy, revealing the structure to the observer. Circular loops may resonate for some time before attentuating (longer loops sounding as echoes), whereas terminating nodes have a shorter life. Nodes have different rates of excitation and decay also, implemented using multiplicative feedback (averaging) and additive feedback (exponential decay) respectively.

Complexity is added to the system using a scripted set of behaviour characteristics. I was interested in seeing how other features might lead to other emergent behaviour via the network maps. Each node therefore has a mirrored object in a JavaScript program running simultaneously; and at a slower but steady rate, these mirrored objects may cause changes in the direction or size of the node's vector, it's rate of attenuation of triggers, it's rate of following the reference node's endpoint, etc. While a node may have its own internal value, it only uses the respective values of its reference node. Thus a self-referring node behaves according to its own values, but a node at the end of a long tree structure behaves according to the values of the tree's root. Once again, because the structures are dynamic over time, and because values are not inherited instantaneously but rather gradually using a multiplicative averaging function, all the emergent behaviour is complex in structure over time. I believe I find the resultant sound structures more musically interesting for this reason.

I was intrigued by the similarity of this work to cellular automata: network of nodes obeying simple rules generate complex behaviour that is totally emergent. The difference is that a cellular automata exists as a static lattice structure, whilst this implementation exists as a dynamically repatching network where both the identity and number of neighbours may change over time.
The only instantanous changes are the network remapping events, all other changes are processed continuously as averaging or exponentially decaying functions, i.e. additive and multiplicative feedback. In addition, the only absolute values the nodes have are the network references, and their vector extension [and I plan to replace extension with direction of motion in a future study] - all others represent rates of multiplicative of additive change. I think this was crucial to remain in-keeping with the Deleuzian notion of differentiation, of properties as rates of change.
I also noted that using negative rates in cascading networks leads to oscillatory behaviour, however the rate of oscillation is fixed to the process rate of the system (i.e. frame rate). Though it was a pleasant side-effect, it was not scalable to other freqencies (even by inserting frame delays in the cascade, only integer delays are possible, not continuously variant behaviour). If instead the excitation values being cascaded were two or more in dimension, a continuously variant rotational excitation would be possible instead.

For future work, I would like to investigate using this algorithm with much larger quantites of nodes. The cascading of hierarchy could be applied in two directions rather than one, by allowing each node to have a list of references rather than a single reference (potentially up to the total number of nodes in the system), and in particular I'd like to know what difference it makes whether they are or are not reflexively consistent.
Besides switching motion for extension, there are many other ways in which the system could become more internally contingent; the nodes' rates of change (of movement, of excitation & decay, etc) could be derived from other environmental properties, such as the proximity of other nodes with different values (akin a morphogen), current global properties such as total excitation, and / or previous values (moving towards derivatives and rates). In sum, introducing more self-observation into the system. In addition, I'd like to investigate expressing values in circular rather than linear ranges, e.g. angles rather than quantities.
The behaviours may themselves become objects that can be exchanged, such that the multiplicative and additive feedback become emergent properties of the system rather than exterior conditions. To do so would require a kind of enumeration of the behavioural components, which may be possible through leveraging more JavaScript management of the matrix processing (unfortunately to the cost of CPU requirements).
This followed a progression of development from a simple tree/grass simulation to complex dynamic hierarchies with audiovisual representation. Click on the images below to view compressed mp4 excerpts:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Before working on the final project, I investigated several other potential directions, briefly described below:
Projective feedback & Lanceajous
I had been attempting to generate visual complexity through projective feedback by using Jitter to capture rendered 3-D scenes to 2-D textures (i.e. screen capture from the hardware to matrix data in the software), to then be re-projected as video planes in the rendered 3-D space. Though restricted by certain hardware and software limitations, the results were certainly interesting (reminiscent of the visual complexity produced by multiple facing mirrors). As part of a studio lab demonstration of Max/MSP/Jitter's audio capabilities, I reconstructed the basic pink noise-comb filter-Lissajous algorithm devised by Lance Putnam (using C, PortAudio and OpenGL/GLUT). I combined this algorithm with the projective feedback using two projected video planes and the Lissajous pattern in 3-D space.
Below are some screen captures of the patch (click any image to view at 640x480 resolution):
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Click here for a compressed MP4 video excerpt (with sound).
The sense of falling is meaningful with respect to a surface to fall towards - a land. I began working on a simulation of land, and discovered that in turn, the sense of land is lended meaning by a simulation of height with respect to sea level, and added water. With the use of a little fog and light tinting, a suprisingly realistic model of navigable mountainscapes and iceberg panoramas resulted. To permit endless navigation, the landscape itself has no edges, it wraps around as if it was a toroidal surface. To extend the illusion beyond mere simulation, without breaking it in doing so, I introduced variation of the landscape over time, by gradual displacements based upon Voronoi and Gaussian noise.
Possible future directions: The navigator's view could be captured and analysed for sonification, or themountain scapes might follow the waveforms of audio, the fog and textures could interpolate such that going too far underwater looks like coming down from the sky to another sea level (ad infinitum), there may be objects in the landscape that interact with the land and the navigator (as presented on December 7 2005), or that eat the land while the sea level drops to continuously reshape the landscape. The navigator's path might be used to generate new landscape at the horizon, or reshape the existing landscape, or change the parameters that control the landscape functions in other ways. There might be regions of different landscape behaviours, delimited by each island's coast, there might be holes in the land that open into caverns, there might be sound that ripples from objects along the surface of the land and water. The land might become completely unline ordinary land, using geometric structures, towers and spikes or spherical forms, then returning to a land-like state. Mostly I would like to consider how I could noticeably fold the landscape behaviour in time, using repetition, different rates of change, internal loops and variations.
Below are some screen captures of the patch (click any image to view at 600x400 resolution):
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |