Oscillator negative freq

hi all-

i have been experimenting with cross-modulating oscillators recently and i’m finding it a little challenging to do what i want.
it seems that a large percentage of the deterministic oscillators in supercollider cannot take negative frequency as a control. (not just the band-limited LF oscillators)… i know it’s possible to restrict the input with a .range(0, 2000) or something along those lines - but that’s decidedly different modulation quality than an oscillator that reverses phase at the zero point.

i’m curious as to why this is the standard and hoping folks here might have some good alternative ugens to suggest.

i know there are a few workarounds here:

but it would be nice to avoid wavetable stuff, if possible…and arguably, varsaw doesn’t seem to have a convenient alternative…

Here is a bad answer. You could use SinOsc and take the arcsine:

{
	a = SinOsc.ar().asin
}.plot;

({
	
	l = LocalIn.ar(1);
	a = SinOsc.ar(MouseX.kr(20, 1000)+(l*500)).asin;
	b = SinOsc.ar(MouseY.kr(20, 1000)+(a*500)).asin;
	
	LocalOut.ar(b);
	
	a*0.1
}.play;)

I haven’t played around with this and I don’t know what the repercussions might be.

Not sure what the logic is behind the LF plugins is. In one my cross-feedback synths I see that I was using a LeakDC after the Triangle wave carrier. I assume this is why! I guess this is another approach.

Sam

Thanks for the workaround for triangles, @Sam_Pluta.

My understanding is that in the analog world, people use variable-width pulse oscillators and a integrator of some sort to produce these oscillators…

There’s a handful of options in SC - Lag, VarLag, Slew, Integrator uGens - but these all seem to produce unpredictable (to me, at least) results - where frequency and amplitude respond non-linearly.