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