The sound we hear is built up of sound waves that can be described physically in terms of frequencies. A single frequency tone is called a sine tone, because it has the shape of a sinusoidal function. Such tones are not produced by traditional instruments and can only be made artificially. All natural sounds have a much more complex physical waveform, built up by a set of sinusoidal frequencies. Each sinusoidal component that is part of such a tone is called a partial frequency. A tone where all the partials are multiples of the fundamental frequency is said to have a harmonic spectrum. A partial of a harmonic spectrum is often called a harmonic. The fundamental frequency (often referred to as F0) is what we usually perceive as the pitch of the tone, while the other frequencies making up the waveform contribute to the timbre.
The program Harmonics is a MAX/MSP patch that allows the user to “construct” a tone 12. As can be seen in the screenshot of the patch there are various buttons, sliders and number dials. Together they allow for adjusting the pitch of the tone and the separate amplitudes of up to 60 of its harmonics. The tone is played with a simple ADSR-envelope by clicking on the button. The program can be found on the CD-ROM, and I encourage the reader to test its features! In the rest of this section I will briefly go through some technical aspects of the patch.

Screenshot from Harmonics, a MAX/MSP patch where the user can play tones with different number of harmonics.
In the top part of the patch window is a multislider object with 60 independent sliders. These sliders will change the amplitude of each of the 60 harmonics of the sound14. The user is free to adjust all the sliders manually. Changing only the first slider, leaving the others at 0, will result in a sine tone. The pitch of the tone can be adjusted by changing the value of the fundamental frequency.
Since this patch creates harmonic tones, each of the harmonic frequencies can be found by simple multiplying the value of the fundamental frequency. This is done in a subpatch taking the fundamental frequency as input. The output of the subpatch is a list of the 60 harmonic frequencies of the tone.

Screenshot from the packing of 60 harmonics.
The additive synthesis, the creation of a complex sound wave from its sinusoidal components, is easily done with the sinusoids~ object15. This object takes a list of up to 256 consecutive pairs of frequency and amplitude as input. Doing additive synthesis the “old” way, would require building up a set of for example cycle~ objects. Not only would this require a lot of work, but would also be computationally demanding for 60 harmonics. So the sinusoids~ object saves a lot of hassle.
The problem is how to get the two separate lists of harmonic frequencies and the loudness values merged together, before sending it to the sinusoids~ object. This was solved with the interleave object16, that simply merges two input lists to a single output list. The result is sent to sinusoids~ and the sound is “created”.
Playing this would result in a very “static” and unnatural sound since the volume is constant and the harmonics are not changing. As can be seen in the figure below, this was solved by adding a simple ADSR-envelope, controlling the volume of the output sound through a line~ object. The duration of the tone can be adjusted accordingly. Simply by adding such an envelope to the sound, makes it much more realistic.

A detail of the patch Harmonics in edit mode. Notice the use of the sinusoids~ object for additive synthesis.
To make the sound even more interesting, I also added the option to use a “real” tone. This is just an attempt to model slight movements in the harmonic frequencies. When this mode is enabled, each of the harmonic frequencies will change randomly within a small interval of the set frequency. This is achieved for all 60 harmonics with the subpatch shown in the figure. Each of the harmonics is run through an external object that does the actual calculation of the “random” frequency.
As this little demonstration patch shows, a complex tone can be created simply by adding sine tones. From such a tone we usually perceive the fundamental frequency as the pitch, and the other frequencies as the timbre of the tone. The timbral quality of the sound can, as has been shown, be controlled by for example loudness envelopes and movement in the harmonics.

Random generators for each of the 60 harmonics. One of these subpatches is shown in the front.
This text is part of my master’s thesis.