class:: VarLag summary:: Variable shaped lag related:: Classes/Lag, Classes/Ramp, Classes/Slew categories:: UGens>Filters>Linear Description:: Similar to link::Classes/Lag:: but with other curve shapes than exponential. A change on the input will take the specified time to reach the new value. Useful for smoothing out control signals. classmethods:: method::ar, kr argument::in The input signal. argument::time Lag time in seconds. argument::curvature Control curvature if strong::warp:: input is 5 (default). 0 means linear, positive and negative numbers curve the segment up and down. argument::warp Determines the shape. The possible values are: table:: ## code::\step:: || || flat segment ## code::\linear:: || code::\lin:: || linear segment, the default ## code::\exponential:: || code::\exp:: || natural exponential growth and decay. In this case, the levels must all be nonzero and the have the same sign. ## code::\sine:: || code::\sin:: || sinusoidal S shaped segment. ## code::\welch:: || code::\wel:: || sinusoidal segment shaped like the sides of a Welch window. ## code::\squared:: || code::\sqr:: || squared segment ## code::\cubed:: || code::\cub:: || cubed segment :: All values above will ignore strong::curvature:: input. note:: When controlling this from the outside, use code::Env.shapeNumber(symbol):: to get the numeric value for each shape. :: argument::start Initial value. If not specified, same as the input signal. argument::mul Output will be multiplied by this value. argument::add This value will be added to the output. Examples:: code:: ( // used to lag pitch { SinOsc.ar( // sine wave VarLag.kr( // lag the modulator LFPulse.kr(1).range(100,400), // frequency modulator 0.2, // lag time Line.kr(-8, 8, 15, doneAction: Done.freeSelf) // modulate shape ), 0, // sine phase 0.3 // sine amplitude ) }.play ) :: code:: ( x = play { |amp=0, time=0, curve=0, warp=5| PinkNoise.ar(VarLag.kr(amp, time, curve, warp) ! 2) } ) x.set(\amp, 1, \time, 5, \warp, Env.shapeNumber(\sin)) // s-shaped curve up x.set(\amp, 0, \time, 1, \warp, Env.shapeNumber(\lin)) // linear down x.set(\amp, 1, \time, 2, \warp, 5, \curve, 7); // slow curvature x.set(\amp, 0, \time, 0); x.set(\amp, 1, \time, 2, \warp, 5, \curve, -7); // fast curvature x.set(\amp, 0, \time, 0); x.free; ::