Best ways to trig a time ramp

Hello,

As a newb I am wondering what is the most convenient way to trig a ramp of datas (on the server side). In Max, I used to like the Line object because it has a trig input and not matter what is the time value of your ramp, the ramp can reset each time it receives a trig, no matter what, so you can trig very fast time ramp, even if the lenght of the ramp is larger than the gap between each trigs. How to do that here ? I know there is no such thing on the Line UGens (no trig input). So far I came with that, classic Env, but I can not do what I described, what are my other options?
Thanks

ramp = EnvGen.ar(Env([ 1000, 3000, 500 ], [speed - fade, fade], [3, 7]), Impulse.ar(1/speed));

Sweep.ar(Impulse.kr(speed), speed).linlin(0, 1, 500, 1000);

?

You’ve found the most practical UGen for this purpose. Other options are Phasor and EnvGen:

{ Sweep.ar(Impulse.ar(100), SampleRate.ir) }.plot(0.05)
{ Phasor.ar(Impulse.ar(100), 1, 0, inf) }.plot(0.05)
{ EnvGen.ar(Env([0, 0, SampleRate.ir], [0, 1]), Impulse.ar(100)) }.plot(0.05)

From EnvGen help:

NOTE: The starting level for an envelope segment is always the level you are at right now. For example when the gate is released and you jump to the release segment, the level does not jump to the level at the beginning of the release segment, it changes from whatever the current level is to the goal level of the release segment over the specified duration of the release segment.
There is an extra level at the beginning of the envelope to set the initial level. After that each node is a goal level and a duration, so node zero has duration equal to times[0] and goal level equal to levels[1].
The loop jumps back to the loop node. The endpoint of that segment is the goal level for that segment and the duration of that segment will be the time over which the level changed from the current level to the goal level.

1 Like