# Sine Wave Slope/Symmetry

Is there a way to increase the slope of an asymmetrical sine wave in SC efficiently? The best way I know of to make an asymmetrical sine wave is with `SineOscFB`. I can increase the slope of a sine wave with `PMOsc` using a modulator of twice the frequency as the carrier and modulation index between 0 and 0.5. But how would I increase the slope of an asymmetrical wave? Would I just have to use a wavetable?

There are many ways to synthesize an asymmetrical sine wave. My first thought would be a variant of phase distortion synthesis, such as using a power function to warp the phase of a sine oscillator: `{ ((LFSaw.ar(100, 3).linlin(-1, 1, 0, 1) ** 0.5) * 2pi).cos }.plot(0.05)`. Modulate the 0.5 exponent for timbral variation.

Amplifying a signal “increases its slope” but that’s probably not what you mean by that. Could you draw a picture of the desired waveform or effect?

EDIT: I tried the PMOsc thing, do you mean something like this: `{ SinOsc.ar(100, SinOsc.ar(200) * 0.5) }.plot(0.05);`? That effect can be emulated with saturation, e.g. `(sig * 10.dbamp).tanh`.

By increasing the slope I mean something like this:
`{SinOsc.ar(100, 0, [1, SinOsc.ar(100, 0).squared]) }.plot(0.05, s);`

I want to have a sine wave generator where I can change the symmetry, slope, and saturation incidentally (though I used `.softclip` instead of `.tanh`).

maybe you want to vary the exponent:

``````{SinOsc.ar(100) ** Line.kr(1,4,0.1)}.plot(0.1, s);

``````

Perfect, the answer is basically both of those things! Something like:

``````(
SynthDef(\test, {
|out=12, freq=440, asym=0, saturation=0, slope=0|
var osc = ((LFSaw.ar(freq, 3).linlin(-1, 1, 0, 1) ** asym.linlin(0,1,1.0,0.5)) * 2pi).cos;
osc = osc ** slope.linlin(0,1,1,4);
osc = (osc * saturation.linlin(0,1,1,10)).softclip;
Out.ar(out, osc);