PhD Stuff
The Ashitaka Ecosystem
This page describes the 'ecosystem' that makes up Ashitaka's audio and visual synthesis engine, and how the two interact with each other. The ecosystem is made up of two primary types of object: GravityObjects and Quads.
Quads
A Quad is a purely visual element; 8 vertices joined by polygons. Quads have no control over their position or shape - instead they are entirely at the mercy of GravityObjects. Each Quad is assigned a primary GravityObject which is primarily responsible for its position and shape. Quads will be influenced by other GravityObjects whose sphere of influence they come into, but to a lesser degree. Quads' positions are also modulated by collisions with each other.
GravityObjects
GravityObjects are invisible and emit sound. There are multiple different types of GravityObject, each of which exhibits different behaviour. GravityObjects maintain a list of Quads over which they have primary control. According to defined behaviours, GravityObjects will move and re-shape their Quads over time. These behaviours are modulated by parameters obtained from their audio synthesizers, which are themselves modulated by certain parameters obtained from the Quads.
The audio for all GravityObject types is based on a physically-modelled string. Different types, however, have different fundamental frequencies and different methods of excitation. The exception to this rule is when a GravityObject's Quad collides with one from another: in this case the two GravityObjects' string models will always be plucked, with the amplitude determined by how much force was present in the collision.
GravityObjects have a sphere of influence. Any Quad which strays into the sphere of a GravityObject different to its own will have its position and shape affected to some degree by that GravityObject. When two GravityObjects' spheres of influence overlap, their string models will become connected, giving rise to particular resonances and a more complex soundscape.
Interaction
The performer's role in the ecosystem is the control of a single GravityObject. They can move this GravityObject through the (3D) space, and manipulate various parameters. This GravityObject could be considered an instrument in itself, but the performer also has the ability to split off Quads from it, and place different types of GravityObjects in the space to control them. The performer has no direct control over these other GravityObjects, though obviously by moving the main GravityObject close to them, the performer can influence their sound and their Quads' motion. All GravityObjects except the main one have a set lifespan, and once this is up, they will disappear and their Quads will be reparented to the nearest GravityObject.
The way that Quads are moved (and shaped?) follows this pattern:
- The Quad's parent GravityObject tells it where it wants it to be.
- Any other GravityObjects whose sphere the Quad is in tell it where they want it to be.
- An interpolation function is applied to move the Quad accordingly, with the parent GravityObject given a higher weighting than the other GravityObjects. The Quad will never move instantaneously to its new position - there will always be a gradual movement, determined by how far it has to move from its current position.
- Collision detection between Quads is calculated, with opposing forces applied to any colliding Quads, and those Quads being re-positioned accordingly.