grani.ins is a quite complete CLM (Common Lisp Music) granular synthesis instrument designed to process (ie: mangle) input soundfiles. Almost all parameters of the granulation process can be either constant numbers or envelopes so that a note generated with grani can have very complex behavioral changes over its duration. Parameters can control grain density in grains per second, grain duration, grain envelope (with up to two envelopes and an interpolating function), sampling rate conversion factor in linear or pitch scales, spatial location of grains, number of grains to generate or duration of the note, etc. Almost all the parameters have a companion "spread" parameter that defines a random spread around the central value defined by the base parameter (both can be envelopes).
The first ``grani'' instrument was originally created as an example instrument for the 1996 Summer Workshop. In its present form it has been used to teach granular synthesis in the 1998 Summer Workshop and 220a (Introduction to Sound Synthesis Course). It has become a pretty popular instrument at CCRMA and was used by its author to compose iICEsCcRrEeAaMm, a four channel tape piece that was premiered in the 1998 CCRMA Summer Concert.
Complete details can be found at: http://ccrma.stanford.edu/~nando/clm/grani/
This brief overview describes a dynamic sound movement toolkit implemented within the context of the CLM software synthesis and signal processing package. Complete details can be found at http://ccrma.stanford.edu/~nando/clm/dlocsig/.
dlocsig.lisp is a unit generator that dynamically moves a sound source in 2d or 3d space and can be used as a replacement for the standard locsig in new or existing CLM instruments (this is a completely rewritten and much improved version of the old dlocsig that I started writing in 1992 while I was working at Keio University in Japan).
The new dlocsig can generate spatial positioning cues for any number of speakers which can be arbitrarily arranged in 2d or 3d space. The number of output channels of the current output stream (usually defined by the :channels keyword in the enclosing with-sound) will determine which speaker arrangement is used. In pieces which can be recompiled from scratch this feature allows the composer to easily create several renditions of the same piece, each one optimized for a particular number, spatial configuration of speakers and rendering technique.
dlocsig can render the output soundfile with different techniques. The default is to use amplitude panning between adyacent speakers (between two speakers in 2d space or three speaker groups in 3d space). dlocsig can also create an Ambisonics encoded four channel output soundfile suitable for feeding into an appropriate decoder for multiple speaker reproduction. Or it can decode the Ambisonics encoded information to an arbitrary number of output channels if the speaker configuration is known in advance. In the near future dlocsig will also be able to render to stereo soundfiles with hrtf generated cues for heaphone or speaker listening environments. In all cases doppler shift is also generated as well as amplitude scaling due to distance with user-defined exponents and ratio of direct to reverberated sound.
The movement of sound sources is described through paths. These are CLOS (Common Lisp Object System) objects that hold the information needed by dlocsig to move the source in space and are independent of the unit generator itself. Paths can be reused across many calls to dlocsig and can be translated, scaled and rotated in space as needed. There are several ways to describe a path in space. Bezier paths are described by a set of discrete points in 2d or 3d space that are latter joined by smoothly curved bezier segments. This description is very compact and easy to specify as a few points can describe a complex trajectory in 3d space. Paths can also be specified in geometric terms and one such implementation (spirals) is currently provided.
The dlocsig unit generator uses the same interface as all other CLM unit generators. make-dlocsig creates a structure for a given path and returns (as multiple values) the structure and the beginning and ending samples of the note. dlocsig is the macro that gets compiled inside the run loop and localizes the samples in space.
It is known that equations found in dynamic systems can be used to control musical processes ranging from sequences of notes to effects involving amplitude or frequency modulation. Furthermore techniques used for producing and constraining fluid mechanics, can also be applied to control sound in low or haptic frequencies. For instance one of such systems can be used to trace the path of a sound in a multi-channel environment or its counter part on visual systems by controlling ray tracing. Another example might be a function to control expression parameters in various physical models. Various CLM instruments have been developed for this purpose with results ranging from multi-channel intensity panning to vibrato over delay lines producing musical results. Nevertheless at this point further research is needed to see the effect of fluid mechanics as a constraining filter or as a wave-table function for controlling unit generators at a sample rate level.
© Copyright 2005 CCRMA, Stanford University. All rights reserved. |