Music 171 homework 4
Practice with abstractions and counters: this assignment is to build a
four-voice polyphonic wavetable synthesizer using Pd's abstraction mechanism to
define a single voice and a parent patch that instantiates four voices and makes
them play a repeating pattern.
You've already made a repeating pitch pattern in one way (assignment 2)
that's suitable for monophonic synthesis. Here, instead, you'll use Pd's control
objects to realize a repeating pattern as Pd messages suitable for routing to a
polyphonic voice bank.
Your successful patch should sound like
this.
To make the patch:
- Make a patch that will play one voice of the synthesizer. You can call it
"voice.pd" if you want. Also make a top-level (main) patch that calls four
copies of "voice". The "voice" patch should take a pitch as input (using an
inlet). It should then have two wavetable oscillators in the style of the
fog-horn homework from week 2. Use a line~ - controlled envelope generator to
control the amplitude of the sum of the two oscillator outputs. (I squared the
output of my line~ to get a nicer-sounding envelope.) NOTE: you'll want to
put the array or arrays in the main patch, not "voice".
- Make a network of message boxes and delay objects to send messages to the
line~ object to make a simple "envelope". This one need not be a complete ADSR
envelope; you can just send the line~ object an attack message (1 10, say) and
then, after 10 milliseconds, a release message without worrying about decay and
sustain stages. There should be two segments, attack and release. The release
time should be controllable using a "receive" object, but that's the only
control (other than pitch) we'll care about in this example.
- Make a signal outlet for the voice patch. The main patch should invoke four
of the voice patches as abstractions, summing their outputs, but, since each of
them will have a peak amplitude on the order of 1, multiplying the output by 0.1
or so before sending it on to the usual output amplitude control and dac~.
- Make a sequencer as in 1.20.c.really-control.pd using a metronome and a
loop of objects (float, +, and mod), that counts from 0 to 7, and use it to
read "MIDI" pitches from a table. The table should have eight or more MIDI
pitches in it (I used the pitches 55 59 62 67 57 60 64 65, but to avoid driving
the TAs crazy you're more than welcome to use another sequence and length).
Make controls to start and stop the patch, and to adjust the metronome speed and
the decay time, so that it's easy to understand how to start the patch and make
it play the sequence.
- Put the two patches in an otherwise empty directory ("folder" in Mac-speak)
which you could name, for instance, "my-name-homework-4" so that it's unlikely
to clash with anyone else's name; then make a zip archive of the folder and
upload, so that when it's unpacked it makes the directory with the two files in
it; upload the zip file and not the individual patches.
back to music 171 main page