Published: 2018-09-29
Renoise & Renoise Redux recently implemented Rubber Band in an update. The Basics of Granular Synthesis. Retrieved December 6, 2019, from. Part 10 – Granular Synthesis & Sample Processing; For a lot more sound design and processing tips, check out the Ultimate Guides series, a definitive collection of tips and techniques for enhancing your music and bringing it to a professional level.
I am Hydlide of Reasonexperts.com. In this article, I want to demystify most of the features that are existing inside of the Grain sample manipulator. While I haven't really focussed on this device that much, because of issues that were in Grain and Europa since Reason 10 was released. While they were fixed in Reason 10.1 (thanx to yours truly) I decided to wait to write down an in-depth article about this device. Since I wanted to analyze a lot of different segments on what this device can do, unscrew the screws on the Grain engine itself just to see what lies under the hood, and program it in many different ways so I can call myself a Grain Expert too.. This is where I usually distinct myself from others, I prefer to analyze things first before just writing down my next clickbait title and post it everywhere (which contains knowledge everyone knows). Trust me on this, once you have read this article, you know everything about Grain, how it works, how it may help you (or not) to make a sound work, and what pitfalls you may encounter when trying to make use of Grain (because there are some of them out there!).
Ok, the long intro is out of the way.. Let's go granular mode!
What is Granular synthesis?
Greek composer Iannis Xenakis is known as the inventor of the technique called granular synthesis. He was one of the first to define a theory for grains of sound. He stated that thousands of pure sounds appear in a more less short interval of time. Barry Truax, a Canadian composer, used the theory of the Greek composer, to make the first real-time version of a granular synthesizer. It is based on a technique where a sample is split up in small pieces of around 1 to 50 milliseconds. These small pieces are called grains. Multiple grains may be layered on top of each other and may play at different speeds, phases, volume, and frequency, among other parameters. At low speeds, this would result in a soundscape. Which can then, later on, be manipulated in a matter unlike any natural sound sampling technique could. At high speeds, the result is heard as a note or notes of a novel timbre. By varying the waveform, envelope, duration, spatial position, and density of the grains, many different sounds can be produced.
Granular synthesis is often a technique which is later combined with other techniques. For instance additive, subtractive synthesis just to name a few.
Grains, what are they?
Let's start with the basics. What are grains and how do they work? When it comes down to playing a sample you can play it in a linear method (such as the NN-XT or NN-19 sampler does). You can also use time stretching since Reason 6 (for audio tracks that is). But when it comes to granular synthesis it is a whole different story. Granular synthesis is defined by a sample that gets chopped up in smaller sections called grains.
When you think about it for a second, you will realize that Dr. Rex and Rex Files, in general, do something similar. They chop up a sample based on transients. In some way of thinking, it is quite similar, yet differently at the same time. Rex loops usually play in a linear direction where granular synthesis does not. This is also where granular synthesis gets more complicated. Normal samples have a linear playback mode (Forward, forward-backward etc) where Granular synthesis just breaks all rules and does whatever the heck it wants to do. And this is often a segment that is left out in many articles I have read. Photoshop cc 2015 free download for windows 10. Because most people will define granular synthesis as such:
Granular synthesis is a method where you make small sections of a sample (based on 1ms to 64ms) and you define the playback using a synthesizer in an unconventional method
And this explains everything right? No.. Not really. And even the wiki that has this as the first hit when you google granular synthesis basically explains it as such. The issue that most people have is understanding the behavior of a grain, and playing it back in an unconventional way. Others may see it is as 'cool' (yes it is!) but there is some logic to all of this on how a granular engine works.
So my personal explanation on what a grain is would be:
A grain is a small portion of a sample (that can vary in length)
While granular synthesis would be defined as such:
Granular synthesis is a method where you tie up different grains. You define the playback on the different grains in an order you see fit
This would be a much better definition rather than saying 'unconventional'. If playing a sample backward is unconventional, then every sampler is unconventional.. But let's not go there. Otherwise, I would sound like Trump.
Another thing that defines granular synthesis:
A grain is a small portion of a sample, yet it can vary in length in real time while the sound progresses over time. A granular synthesizer can manpulate the playback of the grains
And this last part is where a lot of people will go 'what the hell yo! I am going to play with lego instead' mode and call it quits. Because granular synthesis just defines so much more than just playing a sample in an unconventional way. It is defined by the following parameters (and here goes another break down):
- playback size may vary (grain length)
- the number of grains playing at the same time (this will have an impact on the character of the sound)
- the start offset of the grain may vary per grain (not included in Grain, just saying but it is often a part in granular synthesis)
- using different fade methods (some people call it Skew)
- the rate that the grains are played back (grain overlap)
- the pitch may vary per grain
And if you think about the techniques about how granular synthesis works, you can basically fake the same idea while using a traditional sampler. Ow, wait.. I have done such a thing.
When you define everything mentioned above the following picture might explain a lot of things while covering this topic (yet not all of it).
While this picture is originally taken from the Propellerhead Reason manual itself, it missed the idea that grains can vary in length per grain when using granular synthesis. But ok, I will give it this is that by default the grains in Grain (reason 10) are normally fixed by design. But when you look at an engine like Fritz (or its counterpart Torsion Texture Lab) the length can be variable pretty easy. I am not saying that Grain (from Propellerhead) can't pull this off, I am just saying the way it works is different, and this is me being politically correct right now.
The Grain engines
While grain has a feature called grain engine, it basically defines in a linear way on how grains are played back. You have 4 different methods:
- Tape
- Long grains
- Grain Oscillator
- Spectral Grain
When you think about granular synthesis and existence in Reason itself then you might want to know that the Malstrom Graintable Synthesizer is an existing granular synthesizer. The only issue with the Malstrom is that the wavetables are fixed (and can not be loaded using custom samples). Grain, on the other hand, can load up any sample. And the closes you will get to mimic the idea of the Malstrom play style is using the Long Grain engine or the Grain Oscillator. The other two have a whole different meaning on how this granular synthesizer works.
So let me break these engines down one by one, so you know what is different from one to another.
Tape playback mode
In theory, the tape playback mode is similar (yet not the same, just to be politically correct again) as playing a traditional sampler like the NN-XT and NN-19 sampler. Meaning that pitch, speed and playing a note have a direct relationship with one and other. Traditional samplers usually use this method to playback a sample. The lower key on the keyboard (or the lower notes on the sequencer) usually will make the sample play slower just to mimic the idea that we are triggering a lower key. This usually results in a longer playback sample. While within the realm of granular synthesis the length is not really going to be a factor because internally the length of each grain can be shortened when a lower key is triggered. This behavior can be altered by using a setting such as motion.
While Tape is what defines a playable standard sampler, it can also be used to make scratch effects or tape stop effects. This is where it makes use of granular synthesis to make this a playable artifact (where traditional samplers such as the NN-XT or the NN-19 cannot really do this perfect without the aid of some creative delay effects). While using the Tape mode the different motion modes act like the following:
Freeze | Will be handy for making tape stop effects or scratch effects |
One-shot | To play a sample (like the NN-XT / NN-19) in a linear direction. LFO's or envelopes can be used to alter the playstyle. |
FW Loop | Plays like a traditional sampler yet play it always in a loop. |
FW BW | Plays forward and then backward (similar to the NN-XT FW/BW mode) |
End Freeze | Will play the sample as forward, but ends at the end position and stays there (until a key is released) |
Envelope 1 | Will use the Envelope 1 to determine the motion inside the waveform. This can be handy when playing a sample in a creative way or turning the sound in an effect. |
Grain examples
Renoise Granular Synthesis Definition
To make this guide a bit more complete I will be including some audio examples (Mp3 format) combined with Reason 10 patches for Grain / Combinators. When needed I will also include some Reason 10 song files. Make note, these files are created using Reason 10.2. You will require that version at a minimum to make use of these examples.
Grain Tape Freeze
Let's start with the more interesting one. The Tape Freeze will mean that there is an option to mimic scratch effects or tape stop effects to do our bidding. To make this happen you can make use of a few options to make it do all the work for you. First would be the Envelope to connect to the position (which is similar to using the motion method 'Envelope 1'). Another candidate would be connecting LFO1 to the position. Last you can also make use of edit automation to change the start position of the Grain engine. This option is however only accessible using the sequencer of Reason.
The following Reason 10.2 example file will demonstrate the use of the start position setting. The song files are in ZIP format.
Grain tape forward loop
The grain tape forward loop is similar to using an NN-XT sampler or NN-19. Since the sample gets played back in a linear direction (forward). While it may seem like this would be the most boring mode (since it plays back as any traditional sampler would do). You will get most of the interesting side effects while messing around with settings like 'source' to 'position' (where the source can be an envelope, an LFO, control-voltage or any other acceptable parameter). It is therefore by default linear as a playback style, yet we can manipulate the way the sound is played back in all kind of different ways. The benefit from the grain tape, vs the other granular engines is that the grain tape mode usually does not 'alter' the sound in its character. Thus this mode becomes quite effective as a tool to do some form of voice manipulation where the voice starts to stutter (by repeating the same segment for instance).
In the following Reason 10.2 song file I will be using my own voice to manipulate the sound in 2 different ways. One using an envelope and the second using an LFO
Grain tape forward-backward
What has been said about the forward loop mode can also be said about the forward-backward mode. Traditionally, this mode is ideal to capture a fragment of a segment from a sample and then basically loop that part (thus creating a constant tone). While traditional samplers (such as the NN-XT advanced sampler) can basically pull off the exact same technique. The difference here is that we can again manipulate the sound in different ways. Thus creating additional textures to reshape the sound.
Grain tape and envelope
If you read most of the segments above then you will probably realize that using the mode envelope 1 really doesn't add much. Since in theory using an envelope as a source basically does the exact same thing. You could use envelope 1 as a motion once you do not need any other parameter as mentioned above. For instance, you only want to use an envelope to make the motion work. Then sure, this setting is ideal for that (hence why it probably there in the first place).
In the first example, I will present a method where the envelope is used to manipulate the start position of the sound. In this context, the 'speed' will not have any impact using this motion mode. Since speed is now taken care off by using the Envelope itself.
While an envelope is usually fixed by default. There are methods you can apply to make changes in the way the envelope moves. In the following example I am setting up a modulation bus matrix as the following:
In this context, the envelope is changing the position of the grain engine (while the grain motion is set to Freeze, meaning speed will also have an influence). Thus by using the Envelope like this, we have 2 different options to play the speed (thus the motion) of the sound. To add a third parameter, I have also used Key to scale the amount of the envelope. This means the higher the note is (octave up for instance) will also have a larger impact on the position itself. Next, I have added an additional influence. Key to Envelope Rate. Which means that the higher the note is on the sequencer, the faster the motion will be. The result in this is a motion that gets unpredictable in most case. It gets defined by the key we press in the sequencer.
Grain Long Grains
Long grain is somewhat different than using the Grain Tape engine. The major difference is that the tape engine does not include an option to alter the length of the grain itself (this is done internally). While long grain this option to adjust the grain length, playback speed and fade. Grain length is a global option (since it modifies the length of all grains simultaneously). While a grain is playing a setting like the X-Fade will determine how different grains are blended together (others may know this as 'Skew'). The rate knob will determine how fast the same grain is played back. So, in theory, you have 3 different to control the behavior on how the long grain plays back a grain: length, rate, and x-fade.
The side note on rate, however, would be that this setting can also have an impact on the pitch of the sound. It would be similar to playing the bass drum really fast, the faster (more often in time) you play the bass drum the higher the pitch becomes.
The following Reason 10.2 song file will be an example of playing the bass drum in various speeds
In the following Reason 10.2 song file I will demonstrate a similar artifact using the long grain option
Grain Oscillator
The Grain Oscillator plays back a mix of two very short grains of the original sample. The grain playback rate corresponds to the oscillator pitch. This means the original pitch (Root Key/Formant) of the sample doesn't affect the pitch of the sound, but the timbre. The biggest influence on the playback is the gain space setting. This sets the spacing in the original sample between the two played back grains. High Spacing values render more even sound character throughout the played notes - almost like a traditional wavetable synth - since a lot of audio data in the original sample is skipped. Less spacing normally creates more varying sound character between each played note. Additional, the Grain oscillator comes with a setting known as 'formant'. When it comes to looking at the Graintable synthesizer, this engine, in particular, is the closest you may get when comparing it to the Malstrom. The speed of the sample inside Grain can be seen as 'motion' in the Malstrom. While formant in the Sample Manipulator can be compared what Shift would do in the Graintable synthesizer.
Grain spacing, however, is an odd beast from time to time. And it tends to get 'weird' once you set the grain spacing pretty low. While traditional grains would sound more natural when having the grain space halfway (50%) and everything above. Because from this point the grains sound more like a wavetable behavior. So if you want to be more on the creative route you will know that setting the grain spacing below the 50% is most obviously the way to go.
Using grain oscillator as a traditional wavetable oscillator
When you want to use the grain oscillator to play like a traditional wavetable oscillator you may want to use the following settings:
- grain length 57% and above
- grain spacing +50%
- use motion Freeze
In this context, you have something similar to what Europa would do.
If you want, you can also use the samples from Europa (which are under the factory sound bank > other samples > wavetable. In this case, you can make grain sound similar to the custom wavetables that came with Europa
Just to make your life a bit easier I have made a single patch that plays like a wavetable oscillator.
The patch I have created uses a few settings to manipulate the starting position of this synthesizer in particular:
- modulation wheel controls the position of the wavetable
- velocity controls the start position of the sound (in freeze this is similar to the position of the sample)
- expression pedal to modulate the position with an LFO
So in case you are up to the challenge, you can eventually record every sound coming from the Malstrom or thor wavetable oscillator. Export those sounds and load those back up inside of grain. And you will end up with a thousand new sounds to play with eventually.
Spectral grains
The spectral grains engine inside Propellerhead Reason Grain Sample Manipulator is a combination of using a Granular engine yet touches the realm of additive synthesis at the same time. The granular engine is defined by using the motion of the sample (Freeze, One Shot, Loop, Loop FW/BW, End Freeze or Envelope 1). While settings such as Snap, Filter, FFT size will touch the realm of additive synthesis.
Additive synthesis in a nutshell
In a nutshell, additive synthesis is a technique where you define which partials (frequencies) can be heard by the synthesizer. By reducing the number of partials, the sound usually gets a thin type of character. By increasing the number of partials it will thicken the sound. Additive synthesis works pretty well when applying techniques such as distortion because you have the possibility to focus on a specific frequency while distorting that specific frequency.
When using additive synthesis you can create sounds that could sound similar to synthesizers like parsec, vocoders or any additive synthesizer (since it is based on harmonics).
While this article will not really justify how awesome a spectral grain is, I will just drop one single patch as an example of what spectral grain can do.
When to choose the proper granular engine?
When it comes to sound design, you will probably have faced this questions more than once. In theory, I use the granular engines as followed. This is my method of choosing these engines, others may have a whole different look at this (since it is a preference thing):
The granular mode tape is ideal when wanting to play it like a traditional sampler yet do something creative with the sample itself (such as scratch effects, tape stop effects and so on). This mode is mostly ideal for vocals.
The mode long grains is ideal when using grain as a synthesizer. Loading up sounds that have an instrumental recording (such as a Bell or Vibraphone) yet take a whole new angle while using the sample. This mode is ideal when using a lot of modulation (modulation bus matrix) to make use of most of the core functions such as motion, speed, jitter and so on.
The grain oscillator is ideal for making wavetables (but then with a granular take on it). This is ideal when trying to mimic the behavior like the Malstrom, thor wavetable oscillator or Europa yet with a granular touch.
The spectral grains is there in case you want to have an additive synth. Normally when I would use an additive synthesizer I would use synthesizers like Expanse, Parsec or Zero for this. But while the others are mostly subtractive/additive it doesn't touch the granular method (where grain does).
In conclusion
While this article is more meant as an introduction to what Grain can do, I would like to point out that this is just one part of the stories about Grain that I have in mind to do. Since this article mainly looks at the major differences between what the different type of motions are and what defines the different granular synth engines in Grain in Propellerhead Reason 10.2. I meanly made this article due to a reason refill project I am working on. Since I am still in the exploring mode on what Grain can do I would like to share my knowledge on what I know so far about this sample manipulator. Grain can do a lot, yet as a stand-alone, I feel like it is still missing a few options here and there (unison, like it is done with Europa, for instance, would be rather nice to have). But as far as building fat synthesizers using Grain, I would take this sample manipulator in a whole different direction (combinators!). But more on that in a later article.
For now, I wish you all an awesome weekend! And guess who is back at writing down large chunks of texts ;)
More later this week!
Written by hydlide
Published: 2018-09-29
Renoise Granular Synthesis Structure
This morning I started to work on a granular machine in SuperCollider. This is what I got so far:
Renoise Granular Synthesis Pathway
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 | p='/home/random/SAMPLES/ironmaiden/RENAMED/gentleandbass.wav'; // SynthDef granulator SynthDef(Granny,{ arg bufnum, dur=0.1,durvar=0 varsignal; signal=GrainBuf.ar( trigger:Impulse.kr(freq+(freq*(fvar*LFNoise2.kr(freq)))),// a UGen? sndbuf:bufnum, pos:SinOsc.kr(0.1).range(0.1,0.9),// position 0-1 pan:LFNoise1.kr(10).range(-0.2,0.2),// if numChannels=2, similar to Pan2, -1 left, +1 right // envbunum: -1, // the buffer number cont. grain envelope mul:0.5, ); Out.ar(0,signal); }).send(s) x=Synth(Granny,[bufnum,b]); x.set(fvar,0); x.set(durvar,0.2); |