Music 171 homework 4
This homework assignment is designed to give you practice making a voice
bank using abstractions. The assignment is to make a 4-voice polyphonic
synthesizer. To keep things simple, the "voices" can just be sinusoids with
amplitudes controlled with line~ objects. The synthesizer should play "notes"
passed as messages; in this case, the patch should generate notes from a
probability distribution (another technique we haven't used yet).
Your successful patch should be able to make sounds like
this.
To make the patch (each of the following steps is worth 2 points for a total
of 10):
- Make two patches, a main patch and an abstraction that you could call, for
instance, "voice.pd". Put these in a new folder with a unique name (name it for
yourself for instance). To upload the assignment, you'll make a zip archive of
the folder with the two files in it; this is the way you should upload
assignments from now on.
- Inside the "voice" abstraction, make a patch that multiplies an oscillator
(with a controllable pitch in MIDI units) by a line~. There should be an input
for messages to play a note (which should contain at least the pitch to play).
There should be an output for the
audio signal. These can both be managed via inlets and outlets. The most
sophisticated way to manage the audio output is to have both a signal inlet and
outlet, so that you can daisy-chain the copies, each adding itself to the
sum of all the previous ones.
- Inside your main patch, using "metro" and "array random" objects, create a
random stream of pitches, preferably somewhere between 60 and 120 (so that the
sinusoidal sounds made by "voice" sound reasonably good.) You can use "+" to
add an offset such as 60 to the output of "array random". You can invent your
own collection of pitches to put in the array or just use mine
(0 5 7 10 12 15 16 19 22 26). NOTE: don't just put those values in the array;
put "1" at those locations and leave the rest at "0".)
- Place 4 or more copies of the abstraction inside your main patch, and make
a counter (ranging from 0 to 3, for instance) to choose which copy of the
abstraction to send the message to. You'll have to pack the counter output with
the pitch you computed earlier, and "route" to then route the messages to one of
the 4 (or more) abstraction copies.
- After summing the signal outputs from the abstractions, make an overall
amplitude control to turn the patch output on and off. There should also be
controls to turn the "metro" object on and off, and a control for its speed
(controlled by changing the "metro" time in milliseconds). When you load the
patch, it should start making sound once the amplitude control and the "metro"
are turned on.
back to music 171 main page