Click here to open the tutorial patch: [[03fAnalogStyleSynthesis.maxpat]]

+

Click here to open the tutorial patch: [[Media:03fAnalogStyleSynthesis.maxpat]]

−

Now that we are familiar with some basic types of filters, we can think about

+

Now that we are familiar with some basic types of filters, we can think about different sounds to use with them. Most of the synthesis work we've looked at thus far has involved working with sinusoidal oscillators (the {{maxword|name=cycle~}}) object, creating complex spectra through different types of modulation synthesis (e.g. FM) or waveshaping. MSP has a number of oscillators that create more complex sounds on their own, and they are quite useful for creating richer sounds that can be shaped by filters. We'll introduce these oscillators here. briefly looking at a couple of objects that allow you to plot signal data along the way.

−

different sounds to use with them. Most of the synthesis work we've looked at thus

+

−

far has involved working with sinusoidal oscillators (the {{maxword|name=cycle~}}) object,

or waveshaping. MSP has a number of oscillators that create more complex sounds

+

−

on their own, and they are quite useful for creating richer sounds that can be shaped

+

−

by filters. We'll introduce these oscillators here. briefly looking at a couple of

+

−

objects that allow you to plot signal data along the way.

+

===Waveforms===

===Waveforms===

−

Look at the tutorial patcher. It consists of a {{maxword|name=kslider}} object

+

Look at the tutorial patcher. It consists of a {{maxword|name=kslider}} object controlling the frequencies of four different MSP objects: {{maxword|name=cycle~}}, {{maxword|name=tri~}}, {{maxword|name=saw~}}, and {{maxword|name=rect~}}. These oscillators each have their own volume control (a {{maxword|name=*~}} object) that feeds them through a {{maxword|name=lores~}} object to the {{maxword|name=dac~}} and to a pair of graphical objects at the bottom. Some additional logic in the patcher exposes some other features of these oscillators.

−

controlling the frequencies of four different MSP objects: {{maxword|name=cycle~}},

+

−

{{maxword|name=tri~}}, {{maxword|name=saw~}}, and {{maxword|name=rect~}}. These oscillators each have their

+

−

own volume control (a {{maxword|name=*~}} object) that feeds them through a

+

−

{{maxword|name=lores~}} object to the {{maxword|name=dac~}} and to a pair of graphical objects at the

+

−

bottom. Some additional logic in the patcher exposes some other features of these

+

−

oscillators.

+

−

* Turn on the audio in the patcher by clicking on the {{maxword|name=ezdac~}} object and pick a note on the

+

* Turn on the audio in the patcher by clicking on the {{maxword|name=ezdac~}} object and pick a note on the {{maxword|name=kslider}}. One-by-one, turn up and listen to the different oscillators by adjusting the <link type="refpage" name="number">number box</link> objects below each one. Listen to the sound, and look at the images that appear in the objects at the bottom of the patcher.

−

{{maxword|name=kslider}}. One-by-one, turn up and listen to the different oscillators by

+

−

adjusting the <link type="refpage" name="number">number box</link> objects below each one. Listen to the sound, and look

+

−

at the images that appear in the objects at the bottom of the patcher.

+

−

Our tutorial features four oscillators that are commonly used in analog

+

Our tutorial features four oscillators that are commonly used in analog sound generation and, as a result, are very common in digital synthesizers that are modeled on analog-style synthesizers from the 1960s and 1970s.

−

sound generation and, as a result, are very common in digital synthesizers that are

+

−

modeled on analog-style synthesizers from the 1960s and 1970s.

+

−

The {{maxword|name=cycle~}} object, as we already know, generates a cosine wave

+

The {{maxword|name=cycle~}} object, as we already know, generates a cosine wave which, when discussed in the context of a basic synthesizer setup, is indistinguishable from a '''sine''' wave. It generates a roller-coaster shaped waveform that is generated by solving a sine (or cosine) function on the angle of a line tracing a circle. The property of a sine wave that is of sonic interest is it's ''spectrum''; it contains only one frequency, and is the purest tone we can generate:

−

which, when discussed in the context of a basic synthesizer setup, is

+

−

indistinguishable from a '''sine''' wave. It generates a roller-coaster shaped

+

−

waveform that is generated by solving a sine (or cosine) function on the angle of a

+

−

line tracing a circle. The property of a sine wave that is of sonic interest is it's

+

−

''spectrum''; it contains only one frequency, and is the purest tone we can

+

−

generate:

+

[[Image:Filterchapter03a.png|border]]

[[Image:Filterchapter03a.png|border]]

+

''How to make a sine wave, the Max way.''

''How to make a sine wave, the Max way.''

−

The {{maxword|name=tri~}} object generates a triangular waveform. This triangle can

+

The {{maxword|name=tri~}} object generates a triangular waveform. This triangle can be equilateral (i.e. the rising part of the ramp is the same percentage of the entire wave as the falling part), or it can be unequal. This proportion of rising versus falling is called the ''duty cycle'' of the waveform. In an equal triangle wave, the spectrum contains only ''odd'' harmonics, at a power of 1/n<sup>2</sup>, where ''n'' is the harmonic number. In other words, for a triangle wave at 100 Hz, we hear, in addition to the fundamental, a 300 Hz tone at 1/9th the volume of the fundamental, a 500 Hz tone at 1/25 the volume, a 700 Hz tone at 1/49th the volume, and so on:

−

be equilateral (i.e. the rising part of the ramp is the same percentage of the entire

+

−

wave as the falling part), or it can be unequal. This proportion of rising versus

+

−

falling is called the ''duty cycle'' of the waveform. In an equal triangle wave,

+

−

the spectrum contains only ''odd'' harmonics, at a power of 1/n<sup>2</sup>,

+

−

where ''n'' is the harmonic number. In other words, for a triangle wave at 100

+

−

Hz, we hear, in addition to the fundamental, a 300 Hz tone at 1/9th the volume of

+

−

the fundamental, a 500 Hz tone at 1/25 the volume, a 700 Hz tone at 1/49th the

+

−

volume, and so on:

+

[[Image:Filterchapter03b.png|border]]

[[Image:Filterchapter03b.png|border]]

+

''Generating a triangle wave in Max.''

''Generating a triangle wave in Max.''

−

The {{maxword|name=saw~}} object generates a sawtooth waveform. This waveform is

+

The {{maxword|name=saw~}} object generates a sawtooth waveform. This waveform is simply a rising ramp from <code>-1</code> to <code>1</code> that repeats at a set frequency. It contains all the harmonics of the fundamental at a power equal to 1/n. Thus a 100 Hz sawtooth wave contains a 200 Hz tone at 1/2 volume, a 300 Hz tone at 1/3 volume, continuing on upwards:

−

simply a rising ramp from <code>-1</code> to <code>1</code> that repeats at a set

+

−

frequency. It contains all the harmonics of the fundamental at a power equal to 1/n.

Lastly, the {{maxword|name=rect~}} object generates a square wave. This waveform is

+

Lastly, the {{maxword|name=rect~}} object generates a square wave. This waveform is ''binary'', consisting only of values <code>-1</code> or <code>1</code>. The duty cycle of a square wave controls the proportion of the wave that is negative versus positive. Like triangle waves, square waves only contain odd harmonics, but at a power of 1/n, resulting in stronger harmonic content than a triangle. A 100 Hz square wave contains a 300 Hz tone at 1/3 volume, a 500 Hz tone at 1/5 volume, etc.:

−

''binary'', consisting only of values <code>-1</code> or <code>1</code>. The duty cycle

+

−

of a square wave controls the proportion of the wave that is negative versus

+

−

positive. Like triangle waves, square waves only contain odd harmonics, but at a

+

−

power of 1/n, resulting in stronger harmonic content than a triangle. A 100 Hz

These waveforms are popular in synthesis design because they contain well-

+

These waveforms are popular in synthesis design because they contain well- understood timbral properties that are easy to predict and, as a result, to manipulate through filtering. Mixing and matching these waveforms (often with slight detuning) allows us to create fairly rich synthesizer sounds reminiscent of classic analog synthesizers.

−

understood timbral properties that are easy to predict and, as a result, to

+

−

manipulate through filtering. Mixing and matching these waveforms (often with

* Turn up one or more of our oscillators. At the right of the patcher, adjust

+

* Turn up one or more of our oscillators. At the right of the patcher, adjust the controls for the {{maxword|name=lores~}} object, adjusting the {{maxword|name=dial}} and {{maxword|name=number}} box controlling the cutoff frequency and resonance of the filter. Listen to the result, and also look at its effect on the visuals at the bottom of the patcher.

−

the controls for the {{maxword|name=lores~}} object, adjusting the {{maxword|name=dial}} and

+

−

{{maxword|name=number}} box controlling the cutoff frequency and resonance of the filter.

+

−

Listen to the result, and also look at its effect on the visuals at the bottom of the

+

−

patcher.

+

−

==={{maxword|name=scope~}}ing things out===

+

===scope~ing things out===

−

At the bottom of the tutorial patcher are two MSP user-interface objects that

+

At the bottom of the tutorial patcher are two MSP user-interface objects that allow us to plot and view a signal. The top one is called the {{maxword|name=scope~}} object, and it functions much like an analog oscilloscope, tracing the incoming signal across the ''X'' at a regular speed, with the amplitude of the waveform corresponding to the height (''Y'' axis) of the line. Two <link type="refpage" name="number">number box</link> objects attached to the {{maxword|name=scope~}} control how many samples of audio it chunks into small buffers which it draws as pixels in the object. Adjusting those numbers allows us to get a more or less detailed view of the signal entering the object.

−

allow us to plot and view a signal. The top one is called the {{maxword|name=scope~}} object,

+

−

and it functions much like an analog oscilloscope, tracing the incoming signal across

+

−

the ''X'' at a regular speed, with the amplitude of the waveform corresponding

+

−

to the height (''Y'' axis) of the line. Two <link type="refpage" name="number">number box</link> objects attached to the

+

−

{{maxword|name=scope~}} control how many samples of audio it chunks into small buffers

+

−

which it draws as pixels in the object. Adjusting those numbers allows us to get a

+

−

more or less detailed view of the signal entering the object.

+

−

The second (lower) user interface object is called a {{maxword|name=spectroscope~}}:

+

The second (lower) user interface object is called a {{maxword|name=spectroscope~}}: it provides a different view of our signal: that of a spectrogram (or spectrum plot). The ''X'' axis of the graph corresponds not to time, but to ''frequency'', with the ''Y'' axis showing the amplitude of the signal at that corresponding frequency.

−

it provides a different view of our signal: that of a spectrogram (or spectrum plot).

+

−

The ''X'' axis of the graph corresponds not to time, but to ''frequency'',

+

−

with the ''Y'' axis showing the amplitude of the signal at that corresponding

+

−

frequency.

+

−

* One by one, turn up our waveforms and see how they 'look' in the

+

* One by one, turn up our waveforms and see how they 'look' in the {{maxword|name=scope~}} and {{maxword|name=spectroscope~}} objects. If the waveform in the {{maxword|name=scope~}} seems to go by too quickly or slowly, adjust the {{maxword|name=number}} boxes attached to the object to see if you can 'tune in' a good setting for the waveform.

−

{{maxword|name=scope~}} and {{maxword|name=spectroscope~}} objects. If the waveform in the

+

−

{{maxword|name=scope~}} seems to go by too quickly or slowly, adjust the {{maxword|name=number}}

+

−

boxes attached to the object to see if you can 'tune in' a good setting for the

+

−

waveform.

+

−

* Using the controls for the {{maxword|name=lores~}} object, change the amount of high

+

* Using the controls for the {{maxword|name=lores~}} object, change the amount of high frequencies filtered out in the sound, and see how that impacts on the waveform. Notice that the {{maxword|name=cycle~}} object is largely immune to the effects of the {{maxword|name=lores~}} object unless the cutoff frequency falls below its fundamental; this is because the sine wave only generates one frequency to begin with.

−

frequencies filtered out in the sound, and see how that impacts on the waveform.

+

−

Notice that the {{maxword|name=cycle~}} object is largely immune to the effects of the

+

−

{{maxword|name=lores~}} object unless the cutoff frequency falls below its fundamental; this is

+

−

because the sine wave only generates one frequency to begin with.

+

−

* When listening to the {{maxword|name=tri~}} and {{maxword|name=rect~}} objects, adjust the

+

* When listening to the {{maxword|name=tri~}} and {{maxword|name=rect~}} objects, adjust the {{maxword|name=number}} box labeled 'Duty cycle'. Lowering it towards <code>0</code> or raising it towards <code>1</code> changes the balance of the harmonics in those two waveforms.

raising it towards <code>1</code> changes the balance of the harmonics in those two

+

−

waveforms.

+

===The many aliases of digital oscillators===

===The many aliases of digital oscillators===

−

The waveforms described above are discussed as optimal shapes: when

+

The waveforms described above are discussed as optimal shapes: when viewed, a triangle wave should look like a triangle, a sawtooth should resemble its namesake, and a square should look, well, square. Because of the implementation of these oscillators in a ''digital'' system, however, some changes are made to their shapes or, more accurately, the algorithms that generate their shapes. This is to avoid the higher harmonics of the mathematically accurate waveforms exceeding the Nyquist frequency of your audio hardware and ''folding over'' creating unpleasant artifacts. The upshot of this is that {{maxword|name=tri~}}, {{maxword|name=saw~}}, and {{maxword|name=rect~}} are all ''anti-aliased'' (or ''band-limited'') oscillators, and have slightly different shapes than the ideal, even though their generated spectra look (and sound) correct:

−

viewed, a triangle wave should look like a triangle, a sawtooth should resemble its

+

−

namesake, and a square should look, well, square. Because of the implementation of

+

[[Image:Filterchapter03e.png|border]]

−

these oscillators in a ''digital'' system, however, some changes are made to

+

−

their shapes or, more accurately, the algorithms that generate their shapes. This is

+

''The waveforms and spectra of sine antialiased oscillators'

−

to avoid the higher harmonics of the mathematically accurate waveforms exceeding

* In the upper-right of the tutorial patcher, open the {{maxword|name=gate~}} object by

+

* In the upper-right of the tutorial patcher, open the {{maxword|name=gate~}} object by checking the {{maxword|name=toggle}} box. Set the frequency of the {{maxword|name=phasor~}} to <code>1</code> by typing into the {{maxword|name=number}} box connected to its inlet. Turn up the {{maxword|name=tri~}} object, and turn down everything else. You should hear a 'jump' in the waveform once per second. Raise the frequency of the {{maxword|name=phasor~}} by dragging in the {{maxword|name=number}} box. Once you get into the audible frequency range (around <code>20</code> Hz) you should notice the frequency of the {{maxword|name=phasor~}} dominate over the frequency of the {{maxword|name=tri~}} object. Try turning down the {{maxword|name=tri~}} wave and turning up the {{maxword|name=saw~}} and {{maxword|name=rect~}}. Notice that audible-range settings for the {{maxword|name=phasor~}} seem to eliminate the audio from the square wave generator.

−

checking the {{maxword|name=toggle}} box. Set the frequency of the {{maxword|name=phasor~}} to

+

−

<code>1</code> by typing into the {{maxword|name=number}} box connected to its inlet. Turn up

+

−

the {{maxword|name=tri~}} object, and turn down everything else. You should hear a 'jump' in

+

−

the waveform once per second. Raise the frequency of the {{maxword|name=phasor~}} by

+

−

dragging in the {{maxword|name=number}} box. Once you get into the audible frequency range

+

−

(around <code>20</code> Hz) you should notice the frequency of the {{maxword|name=phasor~}}

+

−

dominate over the frequency of the {{maxword|name=tri~}} object. Try turning down the

+

−

{{maxword|name=tri~}} wave and turning up the {{maxword|name=saw~}} and {{maxword|name=rect~}}. Notice

+

−

that audible-range settings for the {{maxword|name=phasor~}} seem to eliminate the audio

+

−

from the square wave generator.

+

−

The three complex oscillators have an additional inlet that allows them to be

+

The three complex oscillators have an additional inlet that allows them to be ''synchronized'' by another oscillator. Every time the {{maxword|name=phasor~}} object resets its phase (i.e. repeats its waveform), the oscillator receiving the 'sync' resets itself, i.e. starts drawing its shape over again. This technique of ''oscillator sync'' is useful for using one oscillator as a source of timbre ringing at the frequency of a second (master) oscillator. In this way, we could have a 200 Hz {{maxword|name=phasor~}} signal controlling triangle, sawtooth, and square waves at different frequencies of their own, applying richness to the sound from the interaction of the two waveforms.

−

''synchronized'' by another oscillator. Every time the {{maxword|name=phasor~}} object

+

−

resets its phase (i.e. repeats its waveform), the oscillator receiving the 'sync' resets

+

−

itself, i.e. starts drawing its shape over again. This technique of ''oscillator

+

−

sync'' is useful for using one oscillator as a source of timbre ringing at the

+

−

frequency of a second (master) oscillator. In this way, we could have a 200 Hz

different frequencies of their own, applying richness to the sound from the

+

−

interaction of the two waveforms.

+

===Summary===

===Summary===

−

In addition to the {{maxword|name=cycle~}} object, which produces a cosine wave, MSP

+

In addition to the {{maxword|name=cycle~}} object, which produces a cosine wave, MSP has three other 'analog-style' antialiased oscillators: {{maxword|name=tri~}}, which produces a triangle wave, {{maxword|name=saw~}}, which generates a sawtooth wave, and {{maxword|name=rect~}}, which creates a square wave. Both {{maxword|name=tri~}} and {{maxword|name=rect~}} can have their duty cycles modified, and all three can receive 'sync' from another oscillator. The {{maxword|name=scope~}} and {{maxword|name=spectroscope~}} objects are very useful for viewing signal data, either unfolding in the time domain ({{maxword|name=scope~}}) or in the frequency domain ({{maxword|name=spectroscope~}}).

−

has three other 'analog-style' antialiased oscillators: {{maxword|name=tri~}}, which produces a

+

−

triangle wave, {{maxword|name=saw~}}, which generates a sawtooth wave, and {{maxword|name=rect~}},

+

−

which creates a square wave. Both {{maxword|name=tri~}} and {{maxword|name=rect~}} can have their

+

−

duty cycles modified, and all three can receive 'sync' from another oscillator. The

+

−

{{maxword|name=scope~}} and {{maxword|name=spectroscope~}} objects are very useful for viewing

+

−

signal data, either unfolding in the time domain ({{maxword|name=scope~}}) or in the

+

−

frequency domain ({{maxword|name=spectroscope~}}).

+

===See Also===

===See Also===

Latest revision as of 15:31, 28 June 2012

Now that we are familiar with some basic types of filters, we can think about different sounds to use with them. Most of the synthesis work we've looked at thus far has involved working with sinusoidal oscillators (the cycle~) object, creating complex spectra through different types of modulation synthesis (e.g. FM) or waveshaping. MSP has a number of oscillators that create more complex sounds on their own, and they are quite useful for creating richer sounds that can be shaped by filters. We'll introduce these oscillators here. briefly looking at a couple of objects that allow you to plot signal data along the way.

Contents

Look at the tutorial patcher. It consists of a kslider object controlling the frequencies of four different MSP objects: cycle~, tri~, saw~, and rect~. These oscillators each have their own volume control (a *~ object) that feeds them through a lores~ object to the dac~ and to a pair of graphical objects at the bottom. Some additional logic in the patcher exposes some other features of these oscillators.

Turn on the audio in the patcher by clicking on the ezdac~ object and pick a note on the kslider. One-by-one, turn up and listen to the different oscillators by adjusting the <link type="refpage" name="number">number box</link> objects below each one. Listen to the sound, and look at the images that appear in the objects at the bottom of the patcher.

Our tutorial features four oscillators that are commonly used in analog sound generation and, as a result, are very common in digital synthesizers that are modeled on analog-style synthesizers from the 1960s and 1970s.

The cycle~ object, as we already know, generates a cosine wave which, when discussed in the context of a basic synthesizer setup, is indistinguishable from a sine wave. It generates a roller-coaster shaped waveform that is generated by solving a sine (or cosine) function on the angle of a line tracing a circle. The property of a sine wave that is of sonic interest is it's spectrum; it contains only one frequency, and is the purest tone we can generate:

How to make a sine wave, the Max way.

The tri~ object generates a triangular waveform. This triangle can be equilateral (i.e. the rising part of the ramp is the same percentage of the entire wave as the falling part), or it can be unequal. This proportion of rising versus falling is called the duty cycle of the waveform. In an equal triangle wave, the spectrum contains only odd harmonics, at a power of 1/n2, where n is the harmonic number. In other words, for a triangle wave at 100 Hz, we hear, in addition to the fundamental, a 300 Hz tone at 1/9th the volume of the fundamental, a 500 Hz tone at 1/25 the volume, a 700 Hz tone at 1/49th the volume, and so on:

Generating a triangle wave in Max.

The saw~ object generates a sawtooth waveform. This waveform is simply a rising ramp from -1 to 1 that repeats at a set frequency. It contains all the harmonics of the fundamental at a power equal to 1/n. Thus a 100 Hz sawtooth wave contains a 200 Hz tone at 1/2 volume, a 300 Hz tone at 1/3 volume, continuing on upwards:

A sawtooth (rising ramp) generator in Max.

Lastly, the rect~ object generates a square wave. This waveform is binary, consisting only of values -1 or 1. The duty cycle of a square wave controls the proportion of the wave that is negative versus positive. Like triangle waves, square waves only contain odd harmonics, but at a power of 1/n, resulting in stronger harmonic content than a triangle. A 100 Hz square wave contains a 300 Hz tone at 1/3 volume, a 500 Hz tone at 1/5 volume, etc.:

A square wave in Max with an even (0.5) duty cycle.

These waveforms are popular in synthesis design because they contain well- understood timbral properties that are easy to predict and, as a result, to manipulate through filtering. Mixing and matching these waveforms (often with slight detuning) allows us to create fairly rich synthesizer sounds reminiscent of classic analog synthesizers.

Turn up one or more of our oscillators. At the right of the patcher, adjust the controls for the lores~ object, adjusting the dial and number box controlling the cutoff frequency and resonance of the filter. Listen to the result, and also look at its effect on the visuals at the bottom of the patcher.

At the bottom of the tutorial patcher are two MSP user-interface objects that allow us to plot and view a signal. The top one is called the scope~ object, and it functions much like an analog oscilloscope, tracing the incoming signal across the X at a regular speed, with the amplitude of the waveform corresponding to the height (Y axis) of the line. Two <link type="refpage" name="number">number box</link> objects attached to the scope~ control how many samples of audio it chunks into small buffers which it draws as pixels in the object. Adjusting those numbers allows us to get a more or less detailed view of the signal entering the object.

The second (lower) user interface object is called a spectroscope~: it provides a different view of our signal: that of a spectrogram (or spectrum plot). The X axis of the graph corresponds not to time, but to frequency, with the Y axis showing the amplitude of the signal at that corresponding frequency.

One by one, turn up our waveforms and see how they 'look' in the scope~ and spectroscope~ objects. If the waveform in the scope~ seems to go by too quickly or slowly, adjust the number boxes attached to the object to see if you can 'tune in' a good setting for the waveform.

Using the controls for the lores~ object, change the amount of high frequencies filtered out in the sound, and see how that impacts on the waveform. Notice that the cycle~ object is largely immune to the effects of the lores~ object unless the cutoff frequency falls below its fundamental; this is because the sine wave only generates one frequency to begin with.

When listening to the tri~ and rect~ objects, adjust the number box labeled 'Duty cycle'. Lowering it towards 0 or raising it towards 1 changes the balance of the harmonics in those two waveforms.

The waveforms described above are discussed as optimal shapes: when viewed, a triangle wave should look like a triangle, a sawtooth should resemble its namesake, and a square should look, well, square. Because of the implementation of these oscillators in a digital system, however, some changes are made to their shapes or, more accurately, the algorithms that generate their shapes. This is to avoid the higher harmonics of the mathematically accurate waveforms exceeding the Nyquist frequency of your audio hardware and folding over creating unpleasant artifacts. The upshot of this is that tri~, saw~, and rect~ are all anti-aliased (or band-limited) oscillators, and have slightly different shapes than the ideal, even though their generated spectra look (and sound) correct:

In the upper-right of the tutorial patcher, open the gate~ object by checking the toggle box. Set the frequency of the phasor~ to 1 by typing into the number box connected to its inlet. Turn up the tri~ object, and turn down everything else. You should hear a 'jump' in the waveform once per second. Raise the frequency of the phasor~ by dragging in the number box. Once you get into the audible frequency range (around 20 Hz) you should notice the frequency of the phasor~ dominate over the frequency of the tri~ object. Try turning down the tri~ wave and turning up the saw~ and rect~. Notice that audible-range settings for the phasor~ seem to eliminate the audio from the square wave generator.

The three complex oscillators have an additional inlet that allows them to be synchronized by another oscillator. Every time the phasor~ object resets its phase (i.e. repeats its waveform), the oscillator receiving the 'sync' resets itself, i.e. starts drawing its shape over again. This technique of oscillator sync is useful for using one oscillator as a source of timbre ringing at the frequency of a second (master) oscillator. In this way, we could have a 200 Hz phasor~ signal controlling triangle, sawtooth, and square waves at different frequencies of their own, applying richness to the sound from the interaction of the two waveforms.

In addition to the cycle~ object, which produces a cosine wave, MSP has three other 'analog-style' antialiased oscillators: tri~, which produces a triangle wave, saw~, which generates a sawtooth wave, and rect~, which creates a square wave. Both tri~ and rect~ can have their duty cycles modified, and all three can receive 'sync' from another oscillator. The scope~ and spectroscope~ objects are very useful for viewing signal data, either unfolding in the time domain (scope~) or in the frequency domain (spectroscope~).