VIDEO: Demonstration of 2D version with stereo sound. As this is multichannel spatial tool, sound heard in this video is for demonstration purposes only.
Cyclical Flow is a sound toy and tool for spatial composition. Sound is generated using phase vocoders, granular engines, and simple sample players, and spatialized in a multichannel studio/performance space. The animated user interface controls both spatial and synthesis parameters.
The software was originally designed to be used with larger scale multichannel audio systems. There is a 2D version which is currently configured for 8 channels (in a four pairs configuration), and 3D version which is configured for 24 channels, (three rings of eight speakers at different heights). The software can be adapted for other speaker configurations though (4+), and is available on request.
The Cyclical Flow software currently exists in three versions. These are:
Version 1.24 (3D) – 24 channel
Version 1.8(2D) – 8 channel
Version 1.2b (2D) – binaural (for demonstration purposes only)
In Cyclical Flow, dynamic movement of sound through space is the central theme. Symbolic kinetic approaches in the visual domain represent and control spatial motion in the sound domain. The movement of symbolic objects within a virtual representation of a multichannel performance space directly control patterns of spatial motion of sound. The visual component of the work attempts to provide a playful interface for spatial composition.
The player may take a monophonic single line approach if they choose, but the system is designed to allow the creation of layered cyclical patterns of motion, where the relationships of each line/part shifts over time due to the use of different cyclical motion rates. This results in a form of spatial counterpoint and spatial interactions between multiple spatialized sound materials.
Overview of Spatial and Sound Engine Structure
The developed game engine application is a tool for creating real-time coordinate and control data, which is used to control an external spatial sound and synthesis engine constructed in Max/MSP/Jitter. The sound engine uses three primary sound sources for each Spatial Object. These may be used independently, or combined to create richer textures. All three primary sound sources for each Spatial Object follow identical spatial trajectories. The three sound sources are a phase vocoder, granular engine and simple sample player.
Coordinate data is mapped to a number of parameters. These include:
•Read position and interpolation of spectral data re-synthesised by phase vocoder.
•Read position of the granular engine, creating a granular time stretch effect.
•Spatialization of sound sources.
•Spatialization of a two channel reverb, using delayed coordinate data to create a spatially moving reverberant trail effect.
•Speed of spatial motion determines pitch modulation, simulating doppler effect.
The simultaneous mapping of coordinate data to both spatial and sound generation parameters creates a direct link between the sonic characteristics of the output, and its spatial behaviour, as timbral development and spatial motion are interlinked when using the granular engine and phase vocoder sources. This technique, when combined with the simulated doppler effect, provides a range of creative possibilities for spatial composition.
8 Channel Version
The functionality and features of the 8 channel version (1.8) are outlined first.
The user is presented with a top down perspective of a 2D virtual space that represents the physical performance space. The player selects a sound type, then a cyclical spatialization sound object is selected and introduced into the virtual space, this is known as a Spatial Object. The player adjusts the positions of Path Maker Nodes that determine the pathway, or trajectory of the sound generating object, which is termed the Sound Projectile. The coordinates of the Sound Projectile directly control spatial motion and two key parameters of sound generation. These are: spectral frame and grain read position (playhead) in the phase vocoder and granular synthesis engines. Coordinates of the Sound Projectile thereby control timbre, sound evolution and spatial motion. The x and y axis both control spatial parameters, whilst only the x axis is used to control spectral frame and grain read position. A simulated doppler effect is also integrated to create more dramatic and quasi-realistic spatial motion effects. The doppler effect becomes a more prominent feature when using faster spatial trajectory motion speeds. As a result, spatial motion can be perceptually exaggerated.
Each Path Maker Node has an associated Projectile Rate Node which is used to control the speed of the Sound Projectile as it travels towards the respective Path Maker Node. When Path Maker Nodes are positioned a greater distance apart, with a high Sound Projectile rate, fast moving spatial effects occur, with quicker transitions in timbre and more exaggerated pitch modulation effects. When the nodes are positioned closer to each other with a slower projectile rate, gradual timbral shifts occur within a more limited spatial area. As the y axis is not mapped to control spectral frame or grain read position, it is possible to create more gradual timbral shifts, with greater spatial motion by placing the Path Maker Nodes in roughly the same position along the x axis, but at very different positions along the y axis.
The diagram above represents two Spatial Objects and their associated nodes. Each cluster of Path Maker Nodes corresponds with a player selected sound type, with motion of each Sound Projectile limited to the inter-connected nodes within its cluster. Each of the Path Maker Nodes can be moved freely around the virtual space, changing the trajectory, or pathway of the Sound Projectile as it travels between the different nodes. The smaller sphere attached to each of the Path Maker Nodes is the Projectile Rate Node, this allows the player to control the speed of the projectile as it travels towards its corresponding Path Maker Node. The time contour of the Sound Projectile can be determined by the user through the selection of the available easing curves, which further shape the spatial modulations. As the Sound Projectile moves between the nodes, spatial and spectral parameters of sound develop. These modulations are directly related to the position, range, and rate of motion of the projectile. The dotted lines in Figure 23 show the range of motion as dictated by the positions of the Path Maker Nodes.
The player selects from the ten available Spatial Objects, each containing a different number of Path Maker Nodes. These consist of between two to eight nodes. Two nodes provide a simple two stage repeating cyclical motion. Eight nodes offer scope for more complex spatial and spectral modulations, but are a little more time consuming to work with. The number of nodes in each Spatial Object affects the degree of complexity of the modulations, and has an effect on the cyclical features of the sound output.
The next diagram introduces the Bezier Nodes. These allow the player to vary the curve of the path of the Sound Projectile as it travels between each of the Path Maker Nodes. Placing the Bezier Node directly in line between its related Path Maker Nodes results in linear trajectories. The further the Bezier Node is moved out of alignment with its related Path Maker Nodes, then the more dramatic the curve.
Automatic Trajectory Modulations
A generative feature is implemented which enables the user to activate automated motion of all nodes within a Spatial Object, altering spatial targets and trajectories, resulting in dynamic shifting spatial, spectral, and timbral effects. Further user input is possible when the generative rotation modes are active, as the Path Maker Nodes and Bezier Nodes in a Spatial Object may still be freely moved and repositioned as normal.
A central rotation point is calculated for each Spatial Object. The rotation point is averaged from the positions of all Path Maker Nodes within the cluster. If activated by the player, these nodes rotate around the central rotation point in either a clockwise or anti-clockwise direction, according to the selection of the player. The Bezier Nodes may also be rotated, and these rotate independently to the Path Maker Nodes. If the Path Maker Nodes are kept static and the Bezier Nodes are rotated, then dynamic shifting trajectories occur which move between the same static points in space. The rate of rotation can also be adjusted for both node types.
The rotation modes result in dynamically changing trajectories of the Sound Projectile, creating a form of generative effect that is dependent upon the position of each node relative to each other node. The player can continue to adjust node position relationships whilst the rotation mode is active.
There are a number of different ways Cyclical Flow can be explored, resulting in different spatial effects. Gradual textural shifts can be achieved using slow projectile rates and minimal relative node position range along the x axis. Rapid dynamic spatial trajectories are achieved using larger distances between Path Maker Nodes and faster projectile rates. Sounds may be attributed their own specific area within the performance space, or by using overlapped pathways, the user may create counter trajectories where different Sound Projectiles cross paths. Multilayered spatial interactions can be created using multiple Spatial Objects, with varied numbers of nodes and different motion rate settings creating shifting cyclical patterns.
User Interface Layout
The layout of the interface in the 8 channel version (1.8) is outlined first.
The user is presented with two work areas and several groups of button controls. Spatial Objects are instantiated using the icons in the centre of the interface, (labelled O1, O2, O3 etc. in Figure 26). The inactive Spatial Objects appear in the Spatial Trajectory Prep Area where they can be freely positioned and speed settings adjusted. No sound is generated by the Spatial Objects when in the Prep Area. To move the Spatial Objects to the Performance Area where they become active and output sound, the corresponding Spatial Object icon is again selected. Once in the Performance Area, the Spatial Object is activated and animated, generating dynamic coordinate data for the spatial sound engine. When the Spatial Object is removed, or moved back to the Prep Area, sound output for the object ceases.
When in the Performance Area, all nodes, modes and speed settings of the Spatial Object may still be modified by the user, allowing real-time modification of spatial and spectral trajectories during sound generation/spatialization.
The Easing Palette contains 27 different easing options, or interpolation curves that determine changes in speed, and sometimes direction of the Sound Projectile as it travels between each of the Path Maker Nodes. These expand the range of potential spatial and spectral effects, and allow time contours to be varied.
To apply the different easing types, the user selects the chosen curve from the Easing Palette before an object is placed in the Performance Area. Once a selection has been made, any Spatial Objects subsequently loaded into the Performance Area will adopt this easing type until a different curve is selected. When the easing type is changed, only new Spatial Objects introduced into the Performance Area will use this newly selected curve.
Speed Display & Master Speed
The Speed Display section updates dynamically whenever a node speed parameter is changed, providing visual feedback of the speed settings for each node when adjusted by the user. The values represent the time it takes for the Sound Projectile to move from the previous node to the destination Path Maker Node. The overall speed of motion can be scaled for all Spatial Objects in the Performance Area, allowing all Sound Projectile object speeds to be increased or decreased, whilst still retaining relative rate relationships.
Snapshots & Recall
Once the user has created an active cyclical pattern, using any number or combinations of Spatial Objects, the position of every Spatial Object and its associated nodes can be stored as a Performance Area Snapshot. Speed settings and automated rotation mode states are also stored. These snapshots can then be later recalled, allowing dramatic structural shifts in sonic and spatial features. The Performance Area Snapshots allow for thematic repetition, as previously created patterns can be reinstated. Cyclical patterns may also then be developed with further adjustments of the Spatial Object nodes from the stored snapshot positions. The snapshot feature enhances the performative potential of the project, as complex spatial patterns can be interchanged quickly and efficiently.
24 Channel Version
The primary features are identical to the 8 channel version, but in the 24 channel version sound is spatialized in three dimensions. Additional player editable windows are included, facilitating the control of height. The new lower windows represent the same performance space, but provide a front facing perspective to accompany the top down view (upper windows). These allow the player to adjust the elevation of each Path Maker Node and Bezier Node, allowing spatial movement of sound throughout a three dimensional performance space.
The 24 channel version includes identical groups of button controls as are found in the 8 channel version, however these are presented in a slightly different layout. The two additional lower windows represent height and width, the upper windows width and depth. Combined these windows represent all three dimensions (x, y, z) of the performance space. The upper and lower left windows represent the Spatial Trajectory Prep Areas, with the upper and lower right windows showing the active Performance Areas.
All features of the 8 channel system are available in the 24 channel system. Spatial Object behaviours, trajectory modulation modes, time contours, and snapshot storage and recall systems are fundamentally identical, except that in this version these systems function using coordinates in three dimensions.