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).

hmmm your plot is SinOsc.ar(100).cubed

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);
}).add;
)

(
Synth(\test, [\slope, 1, \asym, 1, \saturation, 1]);
s.scope(1, 12);
)