Each parameter has an oscillator (modulator) associated with it. The oscillator generates a repeating waveform (e.g. a sine wave), which is then used to modulate (change) the corresponding parameter's value. Oscillator waveforms are normalized, such that they always range from −1 to 1. An oscillator has the following properties:
|Waveform||The type of waveform the oscillator generates: Triangle, Sine, Ramp Up, Ramp Down, Square, Pulse, or Random.|
|Amplitude||The width of the modulation. The oscillator's waveform, which ranges from −1 to 1, is scaled (multiplied) by Amplitude before being added to its parameter.|
|Frequency||The rate at which the oscillator's waveform is repeated, in Hertz (cycles per second). The frequency must be greater than zero, otherwise the oscillator has no effect.|
|Pulse Width||When the oscillator's waveform is "Pulse", this value sets the pulse wave's duty cycle (ratio of low to high), ranging from 0 to 1. At .5, the result is identical to a square wave. For other waveforms, Pulse Width has no effect.|
In algebraic terms, an oscillator's behavior is:
Result = Parameter + (Waveform × Amplitude).
Note that when the amplitude is zero, the parameter is unchanged.
Since oscillators always swing both positive and negative, in some cases it may be necessary to offset a parameter to achieve the desired effect. For example, to make Ring Sides vary between 3 and 7, you would need to set Ring Sides to 5, and its oscillator's amplitude to 2:
5 + (−1 × 2) = 3
5 + (1 × 2) = 7
While programming oscillators, it may be helpful to view the numbers dialog, because it displays the modulated values of the parameters.