Make an instrument with a wavetable oscillator controlling the pitch of another wavetable. (The controlling wavetable is traditionally called a "modulator" and the other one is the "carrier").

There should be controls to change the amount of modulation (the amplitude of the modulator), the frequency of modulation, the base frequency of the carrier (that is, the frequency when there's no modulation) and the amplitude of the output.

Make a "readme" subpatch explaining (using comments) how to turn the patch on and use it. Try to find wavetables and levels for the four controls that make interesting sounds. The wavetables and levels should be saved somehow so that they're easy to recreate.

Pd-specific issues

in Pd, you'll either need to download Pd 0.32 PATCH 5 or explicitly save your wavetables to separate files. (Getting the new Pd version is the easier way! otherwise see Pd control tutorial 11.)

In Pd there's no "preset" object (because it's basically a bad idea) and you have to use explicit sends and receives to restore values to number boxes. Then just make a "message" box to re-send the values you want.

Next week you'll see more about how to control values efficiently using "qlist" objects.

Max/MSP-specific issues

In Macintosh land, instead of getting tabosc4~ and arrays, you get cycle~ and buffer~. From Music 171 you saw buffer~ as a way to store audio samples. But you can also use buffer~ as a wavetable; the only gotcha is that you probably can't draw in them with the mouse. You probably have to use a sound editor to create them (and you should supply the soundfiles and have the patch load them.)

If anyone can figure out how you can get a regular table into a buffer~ please tell everyone else.

For extra credit:

Make it polyphonic using an abstraction for each voice...