The "Sine Explorer" application allows you to create and control nine simultaneous sine-based sound functions. Each of the three "layers" has a left and a right channel waveform, which you can add, multiply, or average to get the mix waveform in the middle. Controls are provided for coefficient (number of cycles), exponent (shaping), offset (phase), number of samples, part of waveform to play back, volume, playback rate, visualization of signals, and coloration. You can also draw your own waveforms for new sounds.
Additionally, there is automation control over playback volume and rates, a means to record a sound file of what you're doing, and an image/video background selector... just for fun!
My favorite part of this is the use of the "bpatcher" functionality of Max, whereby you run other patches in boxes within a main patch. This allows you to control the bpatches as individual objects, while retaining all the user-interface functions within them. It also allows you to have multiple layers in the same spot, as in this example, and by using transparency, you can see what's going on in everything at once. As you can see in the screen shot above, the waveform colors for each are linked to the signal scopes below.
See what kind of sounds you can get by various combinations of functions and playback rates. You'll quickly see that certain numbers will resonate much more than others, which usually indicates you are at a natural harmonic of a fundamental pitch. Also notice that playing back a wave twice as fast is the same as having two cycles instead of one, cutting the number of samples in half raises the sound by an octave, using complete waves rather than partial ones creates smoother sounds, and offsetting playback rates slightly creates tremolo or "beating". These and many other concepts are the main reasons I wanted to create this patch :: exploring the possibilities one can generate from very simple building blocks, by understanding how periodic functions behave when combined.
To get the patch, download the .zip file, extract the contents, then run periodic_main.maxpat.