Judging by the number of hits you get when you Google it — several hundred thousand — granular synthesis would appear to be a very hot topic. You can also measure its popularity by looking at the large number of programs that either are dedicated to granular synthesis or include it as a feature. Though it's not the best way to produce cutting lead lines or thumping bass parts, granular synthesis has a vast range of musical uses, including slowing down sounds without changing their pitch, adding reverb or other ambient qualities to a sound, and, of course, producing all manner of amorphous sonic textures.
Granular synthesis is a technique intended to create clouds or clusters of small sonic events called grains (see “A World in a Grain of Sound” in the November 1999 issue, available at emusician.com, for an introduction to granular synthesis). Grains are typically in the realm of 5 to 100 ms long and are created from either synthetic waveforms or samples. When clumped into massive groups, individual grains are virtually indistinguishable, but the overall impression can be like rain or falling rocks, or more rhythmic, even pitched sounds, perhaps with recognizable bits of a source sample popping through.
In this article, I'll cover representative programs from the world of granular synthesis. Many dozens of programs support the technique, and the ten chosen for this roundup are just examples of what you'll find if you go looking. I'll focus only on software, acknowledging that hardware-based systems such as the Symbolic Sound Kyma System are extremely capable in this area. There are also hundreds of Native Instruments Reaktor patches that employ granular synthesis, not to mention patches designed for Csound, James McCartney's Super Collider, Cycling '74 Max/MSP, and other programming environments, so be sure to check out their users forums if you own any of those programs.
The programs I'll look at are Sinan Bökesoy's Stochos V6, CDP GrainMill 1.1, Karlheinz Essl's REplay PLAYer 3.2, Nicolas Fournel's Granulator 1.1, Tom Gersic's Atomic Cloud 1.0, Nikola Jeremic's Organik 1.2, Christopher Keyes's Granular Cloud Generator 2003, LowNorth RTGS-X 2.4, Stefan Smulovitz's Kenaxis 2.2, and Jörg Stelkens's crusherX-Live 3.51. (See the sidebar “Manufacturer Contacts” for contact info on each program and the sidebar “Other Options” for a list of some granular apps that are not included in this article.) I won't go into detail on the sonic results each can produce, so be sure to check out the Web Clips and, where available, the demos for each program to get a sense of the sounds it can make.
The granular-synthesis programs covered here share a number of features, though as you might expect, each also has its own take on the technique. All of the programs except GrainMill produce audio in real time in response to user input, and all except Stochos can record output to disk. All run as standalone applications, but Organik also includes a VST plug-in version. (CrusherX-Live includes a VST Bridge component that you load in a host if you want to use the program as a plug-in.) All but Organik let you load samples for granulation, and crusherX, Granular Cloud Generator, Organik, RTGS-X, and Stochos include one or more synthetic waveforms for use as grain sources. CrusherX, Kenaxis, and RTGS-X allow you to granulate real-time audio input.
Flexible granular synthesis involves controlling aspects of both individual grains and overall granular textures (often called grain clouds), and all of the programs have capabilities of those types. For example, you can modify both the pitch (frequency) and duration of individual grains in all the programs. Most of the programs use common and intuitive increments for these two parameters — hertz or MIDI Note Number for pitch and millisecond for grain duration — but Granulator only provides a range of 0 to 127 for both of these controls, with no indication of what precise values that span represents, and Atomic Cloud's controls read simply “0 - 100.”
The range of available grain durations varies quite a bit, with some of the programs providing a more limited range than others. Organik, for instance, tops out at 80 ms for maximum grain duration, while Kenaxis and Stochos have no limit on the length of grains. GrainMill's maximum duration is 3.2 seconds, but the actual size you get depends on the size of the source file (see Web Clip 1). Its minimum size is fixed at 12.5 ms. As for all its parameters, GrainMill lets you apply a simple linear envelope to vary the value over time or build complex multisegment envelopes for that purpose (see Fig. 1). Note that grains of 1 second or more tend to retain the characteristics (pitch and timbre, for example) of their source. That could be an appealing creative option if, say, you're working with speech and want to retain some semblance of the original text.
You can choose what type of synthetic waveform you want for grains in several of the programs. Cloud Generator, for instance, includes only a sine wave (by far the most common), while Organik lets you choose from sine, saw, ramp, square, or pulse waves and, even more useful, create your own using a different 31-harmonic, user-defined additive-synthesis waveform for each of its four Generators. Stochos also supports additive synthesis as well as pulse-width, ring, and frequency modulation, and crusherX-Live offers sin, cos, triangle, rectangle, and random waveshapes, and a window for drawing and saving your own.
Picking the region or range from which grains will be extracted from a sample is an important feature, and most of these programs offer flexible options in this area. Atomic Cloud, for example, has a Scan Rate slider that lets you determine how quickly the program will move through a sample and generate new grains. CrusherX has sliders for setting the region from which each of its four separate samplers will pick grains, and REplay PLAYer provides several modes (Walk, Jump, Regions, and so on) with adjustable parameters for the same purpose. GrainMill offers a Wander parameter to determine how random the process of picking grains will be: a value of 0 specifies that grains should be chosen in strict order, while a value of 100 specifies that grains should be chosen randomly from anywhere in the file.
RTGS-X provides a Buffer Position slider that can be automated to scan through a file at any speed, forward or backward, or to pick from random points, and Stochos can play back all or only a set range of a file in a variety of directions. Kenaxis has numerous flexible options for determining the portion of a sample that will be used, including a two-dimensional graph on which you can draw the playback trajectory (see Fig. 2). You can easily build a path that moves forward through the file quickly, then slows down, then reverses direction. (Graphs can be saved for reuse.)
Grain density, or the time between successive grains, is the parameter that most affects how quickly a massive grain cloud will build up. RTGS-X will produce grains from every 10 to every 5,000 ms, and REplay PLAYer lets you control density manually by using a two-dimensional grid or by applying a preset (Granular_lo and Granular_high, among others; see Web Clip 2). GrainMill's Density feature lets you set the number of new grains relative to the base grain size you've chosen (a value greater than 1 produces overlapping grains and a value less than 1 produces separation), and crusherX has a Birth parameter for setting grain density (from 10 to 1,000 ms) and can display a window that updates the actual number of grains produced in real time.
Windowing is the process of applying a smoothing envelope onto individual grains to avoid the clicks that such short-duration sonic events would typically produce — most common is a Gaussian (bell-shaped) curve, and linear fade-ins and -outs are also useful. All of the programs support this feature, and some offer several window types (or, in the case of REplay PLAYer, a Smoothing parameter) to choose from. CrusherX and RTGS-X even let you draw your own envelope shapes.
That's So Random
Because randomness and nonrepetition are such common qualities of grain clouds, you'll find random functions (called “variation,” “jitter,” “range,” “random,” or “drunken walk”) to be part of many of the offerings. At the very least, most of the programs provide a base setting for their individual parameters, then let you add some amount of jitter or randomness that offsets above or below the base value.
The distribution or probability curves that several of the programs provide are even more powerful than simply adding a touch of random jitter. In addition to Gaussian, you'll find Weibull, Cauchy, Poisson, and drunken walk curves in Stochos and elsewhere, each of which defines different probabilities of events occurring. (Distribution curves typically establish a mean and some variance or standard deviation from that mean. See en.wikipedia.org/wiki/Probability_distribution for more information.) Cloud Generator has various options for randomizing grain frequency and offers controls to transpose grains using both hertz and cents increments.
All of the programs except Atomic Cloud and Organik allow you to automate changes in parameters via MIDI controller messages, internal envelopes, or other means. Several let you use distribution curves to determine parameter values (in addition to using them for added randomness). More typical are internal functions that sweep through a sample file to locate grains or the ability to apply a ramp function to the amount of pitch transposition (in Stochos, for instance). Granulator has a MIDI Controls window where you can map any MIDI controller number to any of the program's parameters, and both crusherX and Kenaxis have dedicated MIDI setup screens where you can assign MIDI data to various parameters and also scale or otherwise process the data before it reaches its target. REplay PLAYer has a hardwired mapping of controllers to program function.
RTGS-X provides a variety of ways to modify parameters over time, including an Envelope Follower, which will track the amplitude of incoming audio and map the values to parameters of your choosing. It also offers a Morph function that gradually moves values between two groups of settings, as well as four multisegment envelopes that you can use to modify parameter values over time. CrusherX also has a very nifty Morph feature that alters the time it takes (up to 3,600 seconds) to apply a change in a parameter once you click on a button or move a slider (see Web Clip 3), and GrainMill can extract an amplitude envelope from a preexisting audio file and apply it to any parameter you want.
Organik has a two-dimensional grid where you can morph between the settings of the program's four grain Generators in real time, and crusherX has several grids on which you can control parameters in real time. RTGS-X has what is no doubt the most unusual real-time control source in this group. Its Video Controller window is where you pick an input such as a Webcam or an iSight camera and track an object or a light source in the camera's field of view, then specify what program parameter the x and y coordinates of the object will control.
Though the main purpose of most of these programs is granulating samples or synthetic waveforms, you'll find a few bonus features in some of them. Kenaxis, REplay PLAYer, and RTGS-X, for example, let you insert VST effects into their output, and Kenaxis also has an extensive sample-looping engine and a synth section with two oscillators and a noise generator. Organik includes its own reverb and delay, Cloud Generator offers reverb, and Stochos includes several filtering options. CrusherX has a limiter/expander as well as a reverb and stereo delay line, and RTGS-X also has a limiter and 5-band EQ that allows frequency, amplitude, and Q control via MIDI.
Be aware that many of the programs were created by small, independent developers. Though they are free or relatively inexpensive, they may be lacking in support or thorough documentation. Moreover, there's no guarantee that any of them will continue to be developed by their creators — some have dates that are several years old. But all told, this collection includes a vast array of features for creating colorful and unique sounds, so be sure to give one or more of them a try.
Sinan Bökesoy's Stochos V6 (Mac, free)
Stochos is one of several programs Bökesoy has developed that use granular methods to produce sound. Its control system is based on the interaction of a variety of elements, including a routing matrix where different parameters are matched to one of several different control sources (see Fig. 3). The control sources themselves can be configured to produce a fixed range of values or to use random distribution curves. You can also alter all parameter values in real time using sliders for that purpose (see Web Clip 4).
Stochos has three options for its basic sound sources: samples (Sampleobj), synths (Synthobj), and an oscillator bank (OscBank). To use a sample, you specify the folder that contains the file you want, pick the specific file, then set the sample's base frequency using a number box. There's a loop switch to enable looping and a range selector to specify how much of the sample will be looped. The synth options include FM, RM, additive, and noise, and you can morph between the various methods over a user-specified amount of time. The oscillator bank has somewhat fewer options than the others and uses Max/MSP's oscbank Object as its source. (You'll need the full version of Max/MSP or a runtime version, available at cycling74.com, to use Stochos.)
Stochos cannot record its output to disk, but you can use Cycling '74's free audio router, Soundflower, for the same purpose. Though that's not as easy as having a record feature, it's well worth the effort to explore this versatile program. You might also have a look at Bökesoy's latest project, a new granular tool called Cosmos, which according to its developer has even more “self-evolutionary” capabilities. If you're interested in the topic, Bökesoy's research in granular synthesis is definitely worth following.
CDP GrainMill 1.1 (Win, about $75)
The CDP toolkit (Mac/Win) is one of the most powerful yet underrecognized sound-processing libraries on the market. It offers several hundred functions, many of which work directly on a sound file and others that perform transformations on phase vocoder analysis data prior to resynthesis. Among these functions are a number that use granular techniques, but unlike those, GrainMill, which is Windows only, runs as a standalone application and is the only sound-processing tool sold separately.
GrainMill's strength lies in the powerful time-varying functions you can impose on all of its parameters. The main screen provides access to a simple Range feature that lets you specify start and end values for any parameter; the program will then randomly generate a value between those limits each time it creates a grain. But far more powerful is the Time Contours area, where you can create very complex multisegment envelopes to control any function. The envelopes can be saved to disk in GrainMill's BRK format, then reused on other parameters in the same session or in any future session. GrainMill also lets you assign extreme values for its parameters. Timestretch (and compress), for instance, supports a range from 4/1,000 to 256 times the original.
If you're interested in some serious sound-altering resources, the CDP library is unique in the range and quality of its offerings. Though you can buy GrainMill by itself, you might consider purchasing the entire tool set for not a whole lot more money (site licenses and student discounts are available).
Karlheinz Essl's REplay PLAYer 3.2 (Mac, $25)
Karlheinz Essl has been quietly producing creative music tools for years, and REplay PLAYer is just one of his many offerings. The program's interface is divided into four main areas: Mode, Grains, Pitch, and Scratch, with additional functions provided via pull-down menus (see Fig. 4). After you load a sample and turn on the audio engine, REplay will begin to generate grains from the source based on its default settings. You can use the Mode menu to choose how the sample will be scanned; options include scrubbing manually, Jump, which skips around in the file using distances you specify, and Loop, which has an adjustable speed setting (from 10 to 100 percent of the original speed).
Move to the Grains menu, and you'll find a 2-D grid for adjusting granularity (grain size) on the x axis and density on the y. Mouse movements that you make update parameters quickly and feel fluid with nary a glitch, but you can select from one of several presets if you prefer to leave control to the program. Pick the Random preset, for example, and you'll get a constantly changing grain cloud.
The Pitch area provides four ways to control grain pitch, which also include using presets and using sliders for adjusting pitch manually. There's also a virtual keyboard for specifying a transposition up or down two octaves and the ability to set a minimum and maximum range from which the program will pick randomly.
REplay has a feature that lets you crossfade between the original sound and the granulated version (with a random crossing amount, of course), the ability to host up to three VST plug-ins, EQ (also with a random option), and a random panning feature. All in all, it's a hefty toolkit for producing a wide variety of granular sounds.
Nicolas Fournel's Granulator 1.1 (Win, free)
Granulator offers just enough parameters to get your grain clouds flowing and could be a good entry point for exploring granulation of sample files. The ability to control every parameter via MIDI CC messages makes it suitable for a live environment and also allows a lot of spontaneity in a studio setting (though a plug-in version would be a huge enhancement in that environment; see Web Clip 5).
Among the different options are controls for grain density and duration, each of which offers a knob for setting a base value and another for random offset from the base. The same pair of controls is available to adjust the grain's pitch and the start point within the sample from which grains will be extracted. A filter with cutoff and resonance settings and an AR envelope with random offsets add to your sound-design options, and a delay with length and feedback controls and a final output stage with gain and pan settings round out the interface. You can also save presets of your settings and adjust the program's color scheme to suit your liking.
Tom Gersic's Atomic Cloud 1.0 (Win, $9.99)
Atomic Cloud's simple and intuitive interface places all the program's parameters onto a single screen (see Fig. 5). The software provides sliders for grain rate, grain size, scan rate, buffer rate, jitter, and amp level. There are also controls for setting the start and end points in the sample where grains will be generated. It's easy to produce effects with a high degree of randomness — a high Jitter value will serve nicely for that purpose — and you can produce backward-sounding grain clouds by setting the End parameter to a value lower than the Start value (see Web Clip 6).
Grain pitch is controlled by the Buffer Rate parameter, which offers a range of 0 to 100 (50 represents the original pitch). Scan Rate, in conjunction with Jitter, controls the rate at which the sample is scanned. Set it to 0 if you want to freeze the sound on a minute portion of your source file.
Atomic Cloud supports both 16- and 24-bit WAV output and offers a buffer-size setting that you can use to configure it for best performance on your system. The program comes with a small number of presets that illustrate several nice effects, and you can create and save your own.
Nikola Jeremic's Organik 1.2 (Win, free)
Organik is the only program in this roundup that can't granulate samples, but it offers plenty of sound-generating options nonetheless. Its single screen includes tabs to access parameters for its four synthetic-grain Generators, each of which can use one of the included waveform presets or employ an additive waveform that you design (see Web Clip 7). To start a project, you set a base grain size and grain rate for one or more of the Generators, then dial in some amount of random variation to those rates. (Note that you can enter values manually that exceed the values you can enter using the sliders.) You then trigger a note using either the onscreen keyboard or an external MIDI controller. You can modify the amount of randomness that will be added to the base pitch you play, or transpose the base pitch using the Octaves, Note, and Fine settings. All changes you make take effect in real time.
Each Generator has its own volume and pan settings and a mute option, and you can morph between the Generators using a two-dimensional Cube interface. Movements on the Cube can't be recorded, however. Organik includes very serviceable reverb and delay effects, and there's also an LFO with adjustable shape, speed, and amount controls, and a single ADSR global envelope. You can also sprinkle a bit of noise into Organik's output using the Noise generator, which offers Range, Sparse, and Gain settings for that purpose.
Organik is not the most advanced program in this group, but its simple yet elegant approach is a good place to start if you're just entering the granular universe. At this price, there's no reason not to give it a try.
Christopher Keyes's Granular Cloud Generator 2003 (Mac/Win, free)
Cloud Generator is a straightforward program with some interesting variations on the standard grain-generation practice. It supports four audio output channels and can record its output to WAV, SND, or AIFF format, regardless of which platform you're running on. In addition to loading a sample, the program provides a sine wave with variable frequency for synthetic grains. It will generate grains up to 500 ms in length and can produce up to 16 simultaneous grain streams.
The Automation Controls window is the engine for grain generation. At the top of this area is a single row of grain-generating parameters that you can configure and then use for the task. But just below that is another area where you can assign beginning, middle, and end values to all or only some of the same parameters, then determine how long the program takes to move from one set to another. (It would be nice if the values you set above could automatically be assigned to the start row below.)
The Transpositions/Frequencies window gives you a lot of options for controlling grain pitch (see Fig. 6). If you set the Pitch mode to Hertz, you can then type in or move the sliders to enter the exact frequencies you want for each pair of grain streams (each slider controls two grain streams; see Web Clip 8). Choose Cents, on the other hand, and you can transpose the original pitch of the sample in increments as small as 1 cent (1/100 of a semitone). Buttons above the main sliders force the sliders to move in increments of 1s, 10s, or 100s of whichever value you are adjusting. A separate control toggles between synchronous (pitched or semipitched) or asynchronous (nonpitched) grain generation.
The values in the Transpositions/Frequencies area can also interact with the “Rand. minimum” and “Rand. maximum” values you'll find elsewhere. These last two parameters output a new value based on the “Grains per sec.” control, which supports grain generation from 1 to 1,000 times per second. You can also set a high and low range for amplitude and for pan position (left and right channels only). Ten different window (smoothing) shapes provide additional subtle but noticeable timbral variations.
LowNorth RTGS-X 2.4 (Mac, $49)
RTGS-X is a robust program for creating granular textures and is well suited for live or studio use. Its Controllers Setup window (see Fig. 7) offers options for routing up to eight different control signals, which could be MIDI controllers or one of two different internal random generators, or two different Triggers (MIDI or a computer keystroke) to a variety of parameters (Grain Size, Grain Rate, and so on). You can record an entire session of slider moves and button presses using the Capture Stream option, then play back all movements at the original or any new speed you want. Pop-up help for every program component keeps your work session flowing, and a thorough HTML manual fills in any missing info you might need.
At the top of the RTGS-X interface are windows to control Grain Delay, Grain Length, and Buffer Position. The first two of these have sliders to adjust the percentage of a base value that you set in the Grains window and are especially handy in real-time performance. The Buffer Position also has a slider that represents where within a loaded sample file grains will be extracted. If you want to automate these parameters, you can create multisegment envelopes lasting up to 999 seconds and use them to control these or other program parameters. You can also map x and y mouse movements independently to three different parameters.
The Transposition slider controls grain pitch, and, as with the other parameters, you set a base value (in percent) and then apply some amount of random offset (in semitone increments; see Web Clip 9). There are also controls for panning and amplitude, with their associated random components.
RTGS-X limits its input to only the first 10 seconds of the source file (AIFF, WAV, AU, or NeXT format), and loads only the left channel of a stereo file. Other than that, there's nothing really missing from the program except a Windows version! (Granular-synthesis guru Barry Truax has noted that granulation typically destroys all sense of stereo separation in the original file.)
Stefan Smulovitz's Kenaxis 2.2 (Mac/Win, $145)
Tucked inside a very powerful looping and sampling interface are Kenaxis's two granulators, each of which uses the same sample but has the ability to process it in separate ways. For example, one might generate a high density of grains while moving backward through the source file at half speed, whereas the second plays back a version of the file stretched to several times its length but with the pitch intact (see Web Clip 10). You can use the Random File Impulse command to instruct Kenaxis to pick sample files randomly from a folder you designate, or drag-and-drop a new file manually onto the Granulator file window even while the program is playing back. Kenaxis supports only mono files (or the left channel of a stereo file) for granulation but outputs audio in stereo.
Kenaxis controls randomness in a variety of ways. You can set a range within which grain duration, delay, pitch, and loudness will be chosen randomly, and you can quantize the pitch range to limit values to fixed increments (only multiples of 0.33 times the original, for instance). Or you can use the GranRnd window to control grain parameters with a high degree of specificity. Like the KlangRnd window, which controls the playback of sample files, GranRnd uses a drunken walk model to set the probability of events occurring. Both windows include a tempo control that you can use to determine how often different parameter values are updated. You can also create interesting rhythmic patterns by using the Amplitude Envelope window to impose “amplitude sequences” on grains at specific tempos.
Kenaxis includes a delay with delay times up to 75 seconds and a filter that you can apply to any of its sound sources. It has an extensive manual and is easily the most configurable of this group — there's even a dedicated window for setting up the response of a joystick or Wacom tablet. In addition to the stereo version, a second version, called Kenaxis VBAP, allows surround output and up to eight channels, and includes a mixer for panning each of the program's sound generators independently.
Jörg Stelkens's crusherX-Live 3.51 (Win, about $222)
What do you get when you combine four samplers and four multiwave oscillators with real-time audio, granular processing, unique effects, and a flexible routing system? That would equal only a portion of crusherX's sonic-mangling resources. The program offers a screenful of sliders and graphical controllers that would keep even the most hyperactive tweaker happy (see Fig. 8). Nearly every parameter has a randomize control, and every program parameter can be put under MIDI control.
Each of crusherX's sound sources can be routed directly (Dry) out to the mixer; to the Vapor modulators, which are the program's primary granulators; or to the Effects section. The Vapor modulators share several parameters that you control in various ways. You can use sliders to control things like a grain's base pitch or amount of modulation or assign those and other parameters to the unique Physical Model X/Y Display controller. This controller is a pseudo-3-D display on which you move a small blue light to change the values that the controller outputs. You can modify the shape of the display and the speed at which the light updates when you move it. You can also modify Vapor values by assigning a sine, square, or various other functions (random, for example). All in all, the modulation matrix is massive, to say the least.
CrusherX supports up to 199 simultaneous grain streams, and you can offset the streams to start in succession, from 0 to 1,000 ms apart. Moreover, each grain stream can be routed to up to ten different multichannel outputs of an ASIO audio interface. You can define the morph time for changes you make in the interface to take effect and also determine how much time it takes to change from the current to new parameter settings when you load a preset. You can also configure the interface to show only the parameters that you want to work with, or use the Newbie mode, which strips out a large portion of the program's features but still gives you plenty. Having a fast computer and a lot of time to experiment is the best preparation to master this very deep program.
Associate Editor Dennis Miller composes with music and images. Check out his work at www.dennismiller.neu.edu.
Curtis Roads (granular pioneer) home page
Barry Truax (granular pioneer) Home page
Dennis Gabor (granular theoretician) and the Gaboret
Granular Synthesis Basics
Granular Synthesis links
Granular Synthesis Resource Site
Introduction to Granular Synthesis