I am trying to understand phasor behavior when setting starting values bigger than the endpoint. Like this:
Here the linear ramp is as expected bottom to top
`{Phasor.ar(0, SampleRate.ir.reciprocal*100, -1, 1)}.plot(0.1);`
Here I will expect the other way, a linear ramp from top to bottom:
`{Phasor.ar(0, SampleRate.ir.reciprocal*100, 1, -1)}.plot(0.1);`
Like this:
`{Phasor.ar(0, SampleRate.ir.reciprocal*100, -1, 1).neg}.plot(0.1);`
I can see a fast drop to the end point then a linear ramp back to top.
Of course, I am interested in arbitrary starts and endpoints and I found my way with linear interpolations
`Phasor.ar(0, SampleRate.ir.reciprocal*100).linlin(0, 1, pos, pos.neg);`
where `pos` is a target value set from outside the synth.
I know, I can do it with EnvGen.ar but I like to understand Phasor behavior.
Thanks

Here I will expect the other way, a linear ramp from top to bottom:
{Phasor.ar(0, SampleRate.ir.reciprocal*100, 1, -1)}.plot(0.1);

If you want the ramp to go downward, then “rate” must be negative. But you’ve supplied a positive rate – so the ramp can only go upward over time.

I can see a fast drop to the end point then a linear ramp back to top.

That’s expected in this case: It’s going upward, starting at the top, which requires an immediate wraparound back to the bottom.

Of course, I am interested in arbitrary starts and endpoints

A helper function could determine the sign of the rate automatically:

``````f = { |trig, absRate, start, end, resetPos|
Phasor.ar(trig, rate * sign(end - start), start, end, resetPos)
};
``````

hjh

Thank you James, negative rate of course! as in `Sweep`.