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