Tutorial – granulation
At this tutorial, we’ll look in detail at some techniques for playing back samples in novel ways. In particular, we’ll explore granulation using 3rd party externals and building our own abstractions. Bring headphones and a laptop with MaxMSP installed on it if you have one.
To save you scrolling here are the grain players we built in class together
The tutorial
1 Introducing Grains
“All sound is an integration of grains, of elementary sonic particles, of sonic quanta…All sound, even continuous musical variation, is conceived as an assemblage of a large number of elementary sounds adequately disposed in time.”
Granular approach to processing sound was proposed by the physicist Dennis Gabor. His thinking was much along the same lines as Fourier’s proposition that all sound can be described in a certain way. In Fourier’s case, the proposition is that any signal can be described in terms of discrete sine waves, all added together with differing phase positions and amplitudes. This is aligned with a reading of the universe of sound as being wave-like. Gabor’s proposal is that we can regard the universe of sound as being composed of sonic quanta or particles and that any sound can be synthesised or created by organising the quanta in specific ways.
In reality both approaches have limitations, even amongst the ultrafast computers we have access to, but they both offer extremely interesting options to the sonic artist.
Today we focus on a particular granulation technique: time-based granulation of sampled sound.
To do this we’ll need a number of important tools:
- a grain window or envelope
- a buffer to store sound
- a way of playing back sound from the buffer and applying the window
- a way of moving around the playhead within the buffer
- a way of controlling multiple parameters to give variety and variation
- a way of making sure that you can do this multiple times, so you have multiple copies
Some helpful starting points are below. We’ll use these prefabricated materials to get us moving quickly, you can explore the prefabs in your own time after the tutorial.
1.1 Managing externals
Max can be augmented with a lot of externals made by 3rd parties. A great benefit of this is that you can include very bespoke pieces of code within your work that are designed to do very specific things, or to optimise how Max can be used.
I managed my 3rd part externals so that they can be found on all of my computers using the cloud. I have a folder in ~/Dropbox called ~/Dropbox/MaxCore. Inside that folder are two other folders
3rdPartyMax and tinparkAbstractions
These are folders where I place 3rd party externals and my own abstractions respectively.
As they’re on dropbox, they remain in sync across machines and I can access the files anywhere with an internet connection.
To tell max to find the files, you need to navigate to
Options>File Preferences
and then choose and name your maxCore folder from where ever it is.
1.2 Download some externals/abstractions
First download mp.grainWindow. This is supposed to be used as a bpatcher. Place it inside your MaxCore directory. digital.eca.ed.ac.uk/sonicstructures/files/2018/10/mp.grainWindow.zip
Here is the grain that we’re going to make together today. It is unannotated. If you get lost today, download this and make sure you attempt to annotate what’s there. aGrain.maxpat
To make a click-free granulation system, we need to be sure that we don’t change any parameter when the grain is playing, we need to delay these changes until the grain window is at 0 and no sound is coming through. Changing the size of grains can cause clicks, but for OsX users, there is a handy external called vb.phasor0~ which only passes changes when the phasor~ ramp is at 0. This is an advanced and very useful feature, but don’t worry about using it for now.
Get it and many other amazing externals from here: vboehm.net/downloads/