Neal Wade


Introduction

My name is Neal Wade and I have been studying Electronics with Music at Glasgow University for the past four years. I was trained to play the cello from the age of nine and have since picked up the guitar and bass guitar. At Glasgow I was introduced to the notion of using a computer to synthesise sounds, rather than creating sounds in the manner to which I was accustomed. Csound has provided the greatest opportunity for realising all manner of synthesis techniques, a number of which are demonstrated in the composition included here.


The composition

My composition was created to explore a number of the possibilities which Csound makes available to me. Six instruments were created, ranging in complexity from a sinusoidal oscillator to a dynamically filtered physical model. Some instruments are explained in more detail below.


Instrument and sound design

Here I will discuss three of the instruments used in my composition and my use of Csound to combine numerous soundfiles to produce the final piece.

Instrument 1: curly.orc / curly.sco

This is a Frequency Modulation instrument with envelope control of parameters. When I wanted to create a voice with an overtly synthesised and sweeping nature, FM synthesis was my first choice. By setting up a frequency modulation architecture with a large degree of control over vital parameters in the score file I was able to experiment until the kind of sound I wanted was produced.

The main section of code is shown below:

kdenv linseg 0, p3/2, 1, p3/2, 0kfmenv expon 1, p3, 5kmod oscili id*kdenv, kfmenv*ifm, 1kfreq line 1, p3, 10a1 oscili p4, kfreq*(p5+kmod), 1

kdenv and kfmenv are envelopes which control the frequency deviation and frequency modulation of the FM envelope, kmod. kdenv increases from 0 to 1 and back to 0 and kfmenv increases exponentially from 1 to 5. The final line of code shown specifies that a1 be an oscillator with amplitude set by pfield 4 and that the frequency is determined by kfreq*(p5+kmod). This produces a frequency p5, summed with kmod and then multiplied by the kfreq envelope which multiplies the result by a factor uniformly increasing from 1 at the start to 10 at the end.

Instrument 2: block.orc / block.sco

Here I wished to create a sound with a great deal of movement but without any overall temporal development. Again I chose an FM architecture, but instead of using a series of envelope parameters, I used a number of oscillators so that the voice would have a high and active spectral content yet would be periodic and so "not develop" with time.

Further to synthesising the timbre, I produced a delay effect using Csound's comb unit. This generates a series of diminishing echoes of whatever score is fed into it, the duration and density of which being specified by the user:

a1 comb garev, p4, p5

In the above line p4 = duration and p5 = density.

I designed a duplicate of the FM instrument, specifically to feed the comb filter. This meant that I could have a sustained voice from the original instrument which then broke down into several short pulses initialised by the duplicate instrument and delayed by the filter.

Instrument 3: rands.orc / rands.sco

This is a type of Granular Synthesis instrument. The production of a cloud of short sonic evetns using Granular Synthesis relies on the use of a simple program written in the C language to automatically generate the score file (e.g., rands.sco) for an instrument. My score generator provided the partials for the waveform, plus the amplitude and frequency of each tone. The frequency range can be designated as either low medium or high and the C program scales the score appropriately:

freq =calc_freq()+(range*range*250)

where calc_freq is a randomly generated number and range is an integer value between 1 and 3.

An orchestra file is created which is compatible with the score file and then the orchestra and score files can be compiled in the normal fashion.

Instrument 4: mixing soundfiles with control over amplitude envelope and left/right panning

My composition was constructed from different soundfiles and it was necessary to adjust the level, envelope and panning of each individual track. The soundin facility made this a very straight forward operation since a file can be imported and then acted upon in the same way as any other source. By creating an envelope function and a stereo placement capability my needs were fulfilled. Here is an example of an instrument:

kenv line p4, p3, p5a1 soundin "~/Library/Sounds/Electro_Snds/block_0s.snd"a2 = kenv*a1outs a2*(1-p6), a2*p6

The score then gives appropriate values for the pfields:

;p4 starting amplitude;p5 final amplitude;p6 panning (0=left, 1=right);i1 0 12 0.3 0.3 0

Together the above will import the specified sound, set the start and end amplitude as 0.3 (flat envelope, just attenuation) and place the output entirely in the left channel.