We delve into the mysteries of granular synthesis with Max For Live’s Granulator II instrument.
This month and next we’ll take an in-depth look at different approaches to granular synthesis. I’ll start with Robert Henke’s Max For Live instrument, Granulator II, for a detailed look at how granular synthesis really works. Next month we’ll explore several other ways to approach granular synthesis in Live.
Granulator II is a free Live Pack that you can download from the Packs section of the Live web site (www.ableton.com/en/packs/granulator-ii). The Live Pack also contains two auxiliary devices: GranulatorSlave II and GranulatorInput II, along with a number of helpful Granulator II presets. (Hereafter, I’ll refer to ‘Granulator,’ ‘GranulatorSlave’ and ‘GranulatorInput’ with version II implied.) You’ll find brief documentation, numerous audio examples and a free update to Granulator version 2.2.2 on Henke’s web site (www.monolake.de/technology/granulator.html). The update does not install inside the original Pack, so just place it somewhere in your User Library. It does work with the Pack’s presets and auxiliary devices.
Granular synthesis amounts to sequencing small slices (called grains) of an audio file while manipulating and processing them in various ways. Grains can be taken from anywhere within the audio file, and in Granulator their position and size can be modulated by various sources. The grain size is calibrated in Hertz (lower = longer), and you set it with the Grain knob in Granulator’s Grain view. The Grain knob’s range is 0.25 to 150 Hz, and just as a 100Hz analogue waveform means 100 cycles of the waveform per second, a 100Hz Grain setting means that 100 grains span one second. If you want the grain size in milliseconds, divide the Grain knob setting into 1000 — the knob’s range is 4 seconds to 6.67ms. One last mind bender is that Granulator actually emits grains at twice the Grain knob’s rate so that every grain overlaps each of its neighbours by 50 percent. That maintains a steady flow because each grain fades in and out, although you can override that with Granulator’s Window settings.
A good way to get a handle on granular synthesis is to start with a short speech clip, as shown in Screen 1 above. Speech clips make it easier to hear where the grains are located and how they are being manipulated. You can drag audio clips into Granulator’s sample window from Live’s Browser, from Arrange view tracks, from Session view clip slots and from your computer’s file system. The brown shading in Granulator’s sample window shows the size and location of the grain. You use the Grain knob to resize it and the FilePos knob or click-dragging to relocate it. MIDI note C3 plays the grain at its original pitch. The effect of playing other MIDI notes depends on the Key modulation values for the Grain knob and the Pitch setting (in the Filter view). By default both are set to 100 so that both pitch and grain-size track your keyboard. Try setting one of them to zero to hear the effect of the other.
Granulator’s Spray and Scan panels modulate the position from which grains are emitted while notes are held. You have the most control using the Scan panel — click its label to turn it on. With Time and Distance set to 100 percent and Key modulation set to 100, the grain playback position will scan the sample at the same rate that grains are triggered — a speech clip will be intelligible even when it is pitch-shifted, and it will play only once because the playback position will have then reached the end of the sample. Things get more interesting when you alter the Scan settings. The Spray module randomises the playback position, and the Spray knob sets the maximum deviation from the FilePos setting. You can choose to spray right, left or in both directions, and higher Slope settings make larger deviations less likely. Finally, you can apply Granulator’s LFO to the file position and the grain size using the LFO-modulation settings underneath their controls. You get five LFO waveforms and three chance modes: random, sample-and-hold and binary. Be sure to check out the LR-Phase control; it offsets the modulation for the right and left channels.
The Window and AM modules to the right of the Scan module control grain volume-contour. The Window menu (the drop-down labelled ‘Std.’) offers attack-decay (Std.), decay-only (Fall), attack-only (Rise) and random (Noiz) envelopes. Its Shape and Spike controls then reshape the chosen envelope. The AM module randomly assigns a playback level to each grain. In Void mode the Residual control sets the lower of two levels. In Flux mode the levels as well as the timing are random. When you start to get dizzy, use a generous amount of AM in Void mode.
Evolving ambient sounds are excellent fodder for granular synthesis and the ‘Ambient Swells’ sample from the Ambient & Evolving folder of the Samples section of Live’s Core Library Pack provides a good example. Start with fairly long grains (rates below 5Hz) near the middle of the sample and set the amp envelope for no Sustain, a two-second Decay and a 500ms Release. Each note will trigger a handful of grains but the transitions will be smooth and the sound quite playable. Add a few hundred milliseconds of Left Spray for a little variation in onset, and set both Scan Time and Distance to 100 percent to generate a tail for held notes.
Wavetables are another good source of grains — try ‘Wavetable Like’ from the Synth folder of the Core Pack. Because wavetables are made for scanning, grain movement will be smooth and more synth-like. Instead of Spray or Scan, try a bit of LFO applied to the FilePos knob. Set the LFO Cycle to one second or less and the LR-Phase to 180 degrees and then crank up the Amp Envelope’s Sustain in the Filter view.
Tuned percussion hits like ‘Tabla SP 2’ from the Drums/Misc Percussion folder also work well. For the Amp Envelope turn Sustain all the way down, set the Decay and Release to around 500ms and 1s, respectively. The FilePos should be close to the start of the sample. Turn on Scan and set its Distance to 100 percent. Higher settings for Scan Time add a reverb-like effect. FM works well here, and the Freq(uency) setting can radically alter the sound. Also try a little random pitch modulation (Rnd numerical) and some velocity modulation of the FM amount (Vel numerical).
GranulatorSlave is a separate instrument that derives its sound from the most recently installed or moved Granulator instrument in your Live Set. You’ll avoid confusion by using GranulatorSlaves in Sets that contain only one Granulator. GranulatorSlave’s settings represent offsets to the Granulator settings for Pitch, FM amount, Grain size, FilePos, Spray amount, LFO rate and offset, Scan Time and output Volume. Red LEDs for the FM, LFO and Scan panels remain dark if the modulation has no effect. On the FM module you’ll need a Granulator FM amount greater than zero, and on the LFO module you’ll need an LFO-modulation amount greater than zero for either Grain or FilePos. You can place GranulatorSlaves on separate Live tracks or in separate chains of a Live Instrument Rack. Tracks work best when you want different clips playing the GranulatorSlaves. Racks are more convenient when you simply want to layer voices.
Granulator’s sample window doubles as a live-input buffer fed by the GranulatorInput audio-effect device. Clicking Granulator’s Live In tab activates this mode, the caption ‘LIVE-INPUT’ appears at the top of the window and the window displays the latest grabbed audio (if any). Clicking either the Live In panel’s or GranulatorInput’s Grab button transfers the audio currently in GranulatorInput’s buffer to Granulator. The Live In tab then toggles between the original content and the latest grab. Grabs are stored in RAM, but the Live In panel’s Write button both saves the latest grab and embeds it as Granulator’s resident audio. You can place GranulatorInput on any audio or instrument track or on a Return track fed by one or more audio and instrument tracks. Note that clicking any device’s Grab button loads a mix of all GranulatorInput buffers into all Granulators, so you might as well keep things simple and use one GranularInput and one Granulator along with GranulatorSlaves as needed.