Music 171 homework 5
This assignment is designed to give you practice with making abstractions and
also to introduce non-linear distortion as a synthesis technique, using index
of modulation and evenness/oddness to control timbre.
The assignment is to make a patch that plays a five-note chord (in my
example, I just fixed the chord as having pitches 60, 62, 65, 67, and 70. A
chord is a sound containing more than one note played together at once.)
The synthesis algorithm should consist of a sinusoidal oscillator, with an
amplitude (an "index of modulation") and an added onset between 0 and 0.25,
sent to a cosine function to distort it. The technique itself is described in
class and also demonstrated in the Pd example E07.evenodd.pd.
Your successful patch should be able to make sounds like
this. One individual note of the five (the one
playing MIDI pitch 60) sounds like this.
To make the patch:
- You'll need to make two patches, one that is an abstraction to
generate a single voice, and one as the main patch.
The main patch should use 5 copies of the abstraction. You can just pass
the five pitches (above) as arguments to the abstraction, or, if you want the
patch to be more general, you can use messages to send the pitches into the
copies.
- In the main patch, set up controls for amplitude, even/odd, and index of
modulation. Each should have the range 0-100. You can send the
control values directly into the abstraction voices using send and receive
objects. The main patch should then collect the sum of the signal outputs of
the voices and send the sum to out1~.
- The abstraction should use its pitch (obtained as an abstraction argument
or otherwise) to control the frequency of an osc~ object. This should be
multiplied by an index (calculated as described below), added to an even/odd
offset (also below), then passed through a nonlinear function (cos~ object),
then summed for output in the main patch.
- Inside the abstraction, "receive" the index, scale it to range from 0 to 1,
use either "pack" or a message box with a $1 argument connected to a "line~" to
cause it to change continuously, and use that as the index of modulation. In
the same way, use the even/odd control, scaled to range from 0 to 0.25, as an
additive offset, and the amplitude control (receiving it either inside or outside the abstraction as you prefer) to control the output. The amplitude
control should have a range of 0-100 but should control the amplitude quadratically, so that "50" results in 1/4 the amplitude that "100" gives.
Although you could just use the out1~ gain control to set the amplitude it
is a good idea to include separate amplitude controls in your patches because,
when you want to combine several different kinds of sounds, you will want to be
able to control them separately and still have a "master" level set by an out1~ object.
back to music 171 main page