Main Index
Tutorials Index
'Groucho' Index
File Formats

CONTENTS
INTRODUCTION

1. Create a Phrase
2. Vary Grain Size
3. Long Grains
4. Dense Textures
5. A Combination

Activating a Range

CDP circles logo
Composers' Desktop Project

A GrainMill Tutorial

by Philippos Theocharidis
University of Newcastle

CDP would like to thank the University of Newcastle, Philippos Theocharidis and his tutor Agustin Fernandez for preparing this excellent tutorial and making it freely available to composers using GrainMill.

Table of Contents, Example Sounds and Project Files

  • Introduction

  • Section 1   –   Creating a phrase
    • wildphrase.mp3   TRANSPOSITION of grains   
      LOAD wildphrase.grn
    • blurphrase.mp3 blurred wildphrase    Blurring of grains with increased DENSITY   
      LOAD blurphrase.grn
    • slowphrase.mp3 slow wildphrase    Increasing GRAINSIZE
      LOAD slowphrase.grn
    • richphrase.mp3 richer wildphrase    The effect of TIMESTRETCH
      LOAD slowphrase.grn

  • Section 2   –   Varying the size of grains in time
    • mutantflies.mp3    Varied grainsizes with high density & a pitch range
      LOAD mutantflies.grn

  • Section 3   –   Long grains, wide range of transpositions
    • metalnoise.mp3    Long grains, constant pitch   
      LOAD metalnoise.grn
    • horntometnois.mp3    Long grains with a pitch range
      LOAD horntometnois.grn

  • Section 4   –   Creating dense textures
    • chaotic.mp3    Very high changing DENSITY, with a wide pitch range    LOAD chaotic.grn
    • harshchaos.mp3 A more chaotic effect    WANDER: grains selected from a range
      LOADharshchaos.grn
    • smoothchaos.mp3 Constrained chaos    Constant LOUDNESS
      LOAD smoothchaos.grn

  • Section 5   –   A combination
    • brtopieces.mp3    Many time-varying options
      LOAD brtopieces.grn

Introduction

The following tutorial is an introduction to the various transformations that can be achieved with GrainMill. A 5 second long French Horn sample is treated in various ways to illustrate possible types of output from the program, while explaining the effect specific parameter settings have on the sound.

GrainMill works by applying a process to each and every 'grain' of sound created. These grains are extracted from the source sound, processed, and reconstructed into a new sound.

IMPORTANT: Using the tutorial

In order to be able to listen to the sounds in this tutorial you first have to create them in GrainMill. This can be done by loading the equivalent .grn files provided, and running the program once for every sound.

  1. Create a folder named 'Tutorial' (or whatever) and copy to it all the files in the folder "files".
  2. After launching GrainMill select the directory named 'Tutorial' (or whatever you called it) as your working directory.
  3. Go to 'Open Soundfile' in GrainMill's FILE menu and select the source sound "horn.wav".
  4. Load one .grn file (e.g wildphrase.grn) and press the MAKE IT button at the right bottom of the window.
  5. Wait for processing to take place. You now have the first sound.
  6. SAVE AS the resulting soundfile, using the name as in the tutorial.
  7. Go to the FILE menu and select "horn.wav" from the list of most recently opened sound files.
  8. Repeat steps 3 to 5 for every .grn file in the directory.

You are now ready to use the tutorial.

Return to Table of Contents.


Section 1   –   Creating a phrase

Example 1.1   Transposition of grains – LOAD wildphrase.grn

In this example a wild phrase is played by a sax-like instrument which derives from transposing 60ms (or 0.06secs) grains of the original horn sample.

PITCH is randomly changed (using a range ) between values defined by two breakpoint files, pitchi1.brk and pitchlo1.brk. One ascends from almost no pitch shift to an octave higher while the other descends from zero transposition to an octave lower, widening the transposition range of grains with time, from zero to two octaves. Dynamic variation is also achieved using a range in the LOUDNESS value. The grains occupy the entire stereo field (SPACE range = L–R). The transpositions can be heard clearly as grains do not overlap considerably (DENSITY is 2) and the length of the sound stays the same because there is no TIMESTRETCH.

Return to Table of Contents.

Example 1.2   Effect of increasing the density of grains – LOAD blurphrase.grn

Slightly increasing DENSITY (to 5.8) will blur the sound. This is because there is some overlapping between grains.

Return to Table of Contents.

Example 1.3   Increasing the size of grains – LOAD slowphrase.grn

The tempo of the phrase can be controlled by the GRAINSIZE parameter (longer values will slow it down although this will also "play fewer notes" as there will be fewer grains). This will also have other side-effects as more of the original sound will be retained in each grain as in slow wild phrase where GRAINSIZE is 144.3ms (or 0.144 sec).

Return to Table of Contents.

Example 1.4   A bit of TIMESTRETCH – LOAD richphrase.grn

A richer, more sax-like result is achieved by increasing the TIMESTRETCH value slightly (to 1.34). Detail lost due to wide transposition is accounted for in this way.

Section 1 – Parameter Settings

Parameters wildphrase blurred wildphrase slow wildphrase richer wildphrase
TIMESTRETCH 1.00 1.00 1.00 1.34
DENSITY 2.00 5.85 2.00 2.00
GRAINSIZE 60.10 60.84 144.34 60.84
WANDER 0.00 0.00 0.00 0.00
PITCH pitchlo1 pitchi1 pitchlo1 pitchi1 pitchlo1 pitchi1 pitchlo1 pitchi1
HIFI TRANSPOSE? YES YES YES YES
LOUDNESS (dB) -46.64 -6.02 -14.30 -1.17 -14.30 -1.17 -14.30 -1.17
SPACE 0.00 1.00 0.00 1.00 0.00 1.00 0.00 1.00
SCATTER? YES YES YES YES
DURATION 5.36 5.38 5.31 7.19


Breakpoint Data
pitchlo1 pitchi1
time (sec) transposition (semitones) time (sec) transposition (semitones)
0.00 0.00 0.00 0.47
0.67 -2.75 0.64 1.25
1.31 -4.83 1.31 2.13
1.78 -6.91 1.81 3.43
2.14 -9.30 2.25 5.19
2.60 -11.9 2.60 12.0

Return to Table of Contents.


Section 2   –   Varying the size of grains in time

Example 2.1   Variable grainsizes – LOAD mutantflies.grn

Lets now see the effect of a variable GRAINSIZE on a more or less pitched sound. A high enough DENSITY to produce phasing effects is used, which in conjunction with the small (1.2 semitones) range in PITCH gives this moving swarm of mutant flies.

  • In the beginning of the sound, we can hear the individual short grains that give the impression of many objects moving.
  • These are in a way unified later on in the sound, transforming to a single "object" because the GRAINSIZE becomes bigger and as the grains are overlaping considerably because of the high DENSITY, the phasing effect becomes apparent.
  • Towards the end we start to hear the different transpositions as grains are now long enough compared to the DENSITY.

Random LOUDNESS values also play an important part by creating a tremolo effect. SPACING is controlled by a single breakpoint file which moves the sound continuously from left to right and back while narrowing the field and finally ending at the centre.

Section 2 – Parameter Settings

Parameters mutantflies
TIMESTRETCH 1.84
DENSITY 10.77
GRAINSIZE 50.00 grainsize2
WANDER 0.00
PITCH -0.6 0.6
HIFI TRANSPOSE? YES
LOUDNESS (dB) -39.69 0.00
SPACE space2
SCATTER? YES
DURATION 9.83


Breakpoint Data
grainsize2 space2
time (sec) grainsize (ms) time (sec) stereo position
0.00 20.0 0.00 0.00
0.61 25.0 0.80 0.98
1.57 48.1 1.27 0.13
2.15 130.9 1.90 0.78
3.04 500.0 2.02 0.28
2.39 0.55
2.63 0.34
3.04 0.43

Return to Table of Contents.


Section 3   –   Long grains, wide range of transpositions

Example 3.1   Constant PITCH range – LOAD metalnoise.grn

The horn sound turns to a metallic noise. PITCHSHIFT is set to a wide range so that pitch focusing is avoided. High values give this metallic edge. GRAINSIZE is long so that individual grains keep enough characteristics of the original sound but as they are "wildly" transposed, these are altered.

Return to Table of Contents.

Example 3.2   Varying the PITCH in time – LOAD horntometnois.grn

A horn-to-metalnoise sound can be achieved if transposition range increases with time so that initial grains retain their character.

An important feature in both of the above examples is the interaction of the TIMESTRETCH and DENSITY parameters. They are both controlled by breakpoint files. DENSITY becomes higher as the sound evolves (this can be clearly heard as sound "partials" are distinguishable in the begining as in Section 2). In this case however TIMESTRETCH has to be higher for as long as the DENSITY is low, due to the long GRAINSIZE (you run out of source sound length if you do not time-expand).

WANDER and LOUDNESS variation have the effect of making the sound harsher.

Section 3 – Parameter Settings

Parameters MetalNoise HornToMetnoise
TIMESTRETCH 0.5 tstretch3 0.5 tstretch3
DENSITY 76.11 density3 76.11 density3a
GRAINSIZE 352.35 352.35
WANDER 2.80 2.80
PITCH -12 34 -12 pitchi3a
HIFI TRANSPOSE? YES YES
LOUDNESS (dB) -54.61 0.00 -54.61 0.00
SPACE space3 space3
SCATTER? YES YES
DURATION 2.52 2.52


Breakpoint Data
tstretch3 density3 density3a pitchi3a space3
time (sec) timestretch time (sec) density time (sec) density time (sec) transposition (semitones) time (sec) stereo position
0.00 3.96 0.00 3.88 0.00 3.88 0.00 7.73 0.00 0.93
1.35 1.58 0.35 10.58 0.85 15.19 2.35 16.45 0.36 0.50
1.99 0.78 0.55 20.11 1.46 32.42 3.49 32.57 0.70 0.05
2.27 0.43 0.76 39.52 1.97 56.73 5.39 34.55
2.52 0.19 0.90 60.68 2.52 77.97
0.99 77.97

Return to Table of Contents.


Section 4   –  Creating dense textures

Example 4.1   A dense reverberant sound– LOAD chaotic.grn

Lets now create a dense chaotic texture. The DENSITY has to be quite high for this. In this example DENSITY is set to randomly change (using a range) between 50 and 10. GRAINSIZE is 100 ms and these grains are randomly transposed within the limits of an octave.

Phasing effects are apparent due to the high DENSITY and long GRAINSIZE. Another important element in this sound is the reverberant effects. These are due to the same reasons plus the WANDER value that is set to 0 and the SPACE range (full Left to Right).

Return to Table of Contents.

Example 4.2   Effect of WANDER – LOAD harshchaos.grn

If we now change the WANDER value (to 1.37 secs) so that consecutive grains in the output are chosen randomly from this range in the input sound file we can see that we have lost these reverberant effects and that dynamic and timbral variation is enhanced making the sound harsher.

Note

As WANDER is itself a range - the time range from which grains are randomly selected from the input sound - there is no range box to tick in GrainMill.

Return to Table of Contents.

Example 4.3   Effect of LOUDNESS – LOAD smoothchaos.grn

If we keep a constant LOUDNESS value instead of using a range in the first example in this section, then the effect will be a denser, smoother texture as each grain will have the same amplitude contribution to the phase cancellations produced by the large DENSITY.

Section 4 – Parameter Settings

Parameters Chaotic Harsh chaos Smooth chaos
TIMESTRETCH 1.83 1.83 1.83
DENSITY 10.15 50.43 10.15 50.43 10.15 50.43
GRAINSIZE 100.39 100.39 100.39
WANDER 0.00 1.37 0.00
PITCH -6.0 6.0 -6.0 6.0 -6.0 6.0
HIFI TRANSPOSE? YES YES YES
LOUDNESS (dB) -48.75 0.00 -48.75 0.00 -48.75 0.00
SPACE 0 1 0 1 0 1
SCATTER? YES YES YES
DURATION 9.88 9.88 9.88

Return to Table of Contents.


Section 5   –   A combination

Example 5.1   Extensive use of time-varying features – LOAD brtopieces.grn

In this final example a piercing sound breaks down into pieces in brtopieces. Various parameters are controlled by breakpoint files either as a range or by a single file.

In the first part, (the piercing sound) grains are transposed almost 3 octaves higher. Pitchhi5.brk and pitchlo5.brk, the breakpoint files for the higher and lower limits of PITCH respectively, have small differences up to the point where the breakdown of the sound occurs. This actually happens because of the instantaneous change from 31.17 to -12.88 semitones in the transposition value in pitchlo5.brk while pitchi5.brk "stays" at high values. After a bump to around 44.61 semitones, the higher limit starts a downward glissando to 24.35 and the lower does the same to -17.32 semitones.

LOUDNESS is controlled by a single file amp5.brk which simply dies away after the breakdown and SPACE is given a range between spacehi5.brk and spacelo5.brk. The range is wide in the beginning, quickly moving the "pieces" to full Left towards the end.

TIMESTRETCH (controlled by tstretch5.brk) is initialy constant at 1.9 and then moves to 6.7 at the end, and DENSITY (breakpoint file density5.brk) changes throughout, taking values between 3 and 16. As the GRAINSIZE is small (18.36 ms or 0.018 sec), individual grains can just be heard at points with lower density in the first part of the sound. The combination of the later two parameters and the small variations in PITCH produce this slowing down/accelerating effect.

Section 5 – Parameter Settings

Parameters brtopieces
TIMESTRETCH 1.85 tstretch5
DENSITY 8.92 density5
GRAINSIZE 18.36
WANDER 0.00
PITCH pitchlo5 pitchi5
HIFI TRANSPOSE? YES
LOUDNESS (dB) 0.0 amp5
SPACE spacelo5 spacehi5
SCATTER? YES
DURATION 9.92


Breakpoint Data
tstretch5 density5 pitchlo5 pitchi5 amp5 spacelo5 spacehi5
time (sec) timestretch time (sec) density time (sec) transposition (semitones) time (sec) transposition (semitones) time (sec) amplitude (0-1) time (sec) stereo position time (sec) stereo position
0.00 1.85 0.00 8.27 0.00 31.41 0.00 34.09 0.00 0.99 0.00 0.26 0.00 1.00
3.61 1.85 0.62 14.77 0.39 28.95 0.59 34.87 0.56 0.90 0.93 0.28 1.53 1.00
5.94 1.86 0.97 3.09 0.73 30.89 1.17 33.70 1.08 0.99 1.54 0.27 2.41 1.00
8.10 6.72 1.36 5.45 1.20 28.40 1.65 36.04 1.78 0.99 2.11 0.26 3.03 0.32
9.92 6.72 1.46 16.71 1.70 30.34 2.18 33.70 2.53 0.93 2.87 0.22 4.11 0.14
1.99 11.33 2.18 31.17 2.82 34.09 2.98 0.41 3.57 0.17 5.39 0.03
2.77 7.67 2.18 -12.88 4.52 44.61 3.64 0.13 4.35 0.10
3.47 10.14 3.37 -12.91 5.80 44.61 4.17 0.03 5.39 0.00
4.01 10.42 4.74 -12.88 6.54 37.40 4.65 0.02
4.84 16.56 5.39 -17.32 7.53 24.35 5.00 0.00
5.41 8.86 5.39 0.00
6.40 5.89

Return to Table of Contents.


Activating a Range

In general, a range is activated by:

  • Clicking on the range box below the parameter name (e.g PITCH). This puts two data entry boxes on the screen, for upper and lower limits.
  • The boxes on the left are for single value upper and lower limits.
  • The boxes on the right of the screen are for time-varying breakpoint files. Activate them by clicking on the box to the left of the upper or lower data entry box.
  • Fill in a file name or click on Br.. to browse through your files if you have already created a breakpoint file.
  • If you have not, click on E to create one with the graphic breakpoint editor. Save your new file and select it as above.

The relevant parameter then changes randomly between the upper and lower limits defined in this way.

You can return from this note with your Back Button.

Return to Table of Contents.
Return to Main CDP Documentation Index

Last updated 30 Oct 2021 -- HTML5 version
Content last updated: 19 November 1998
Author: Philippos Theocharidis
Minor proofing & layout edits, Archer Endrich: 8, 15 & 16 January 1999; 21 July 1999
Revisions: Robert Fraser
Institution: Music Department, University of Newcastle Upon Tyne
mp3 format changes: 21 February 2010 (sources or near sources are kept as .wav)
Composers Desktop Project.
Email: composersdesktop@gmail.com
© Copyright 1998-2021 CDP