#lang scribble/manual @(require (for-label racket)) @title{DelayN} Simple delay line with no interpolation.@section{related} Classes/Delay1, Classes/Delay2, Classes/DelayC, Classes/DelayL, Classes/BufDelayN @section{categories} UGens>Delays @section{description} Simple delay line with no interpolation. See also link::Classes/DelayL:: which uses linear interpolation, and link::Classes/DelayC:: which uses cubic interpolation. This UGen will create aliasing artifacts if you modulate the delay time, which is also quantized to the nearest sample period. If these are undesirable properties, use DelayL or DelayC. But if your delay time is fixed and sub-sample accuracy is not needed, this is the most CPU-efficient choice with no loss in quality. The term "delay" is often used in electronic music to refer to a delay line with feedback. If you are looking for that, try CombN. @section{classmethods} @section{method} ar, kr @section{argument} in The input signal. @section{argument} maxdelaytime The maximum delay time in seconds, used to initialize the delay buffer size. @section{argument} delaytime Delay time in seconds. @section{argument} mul Output will be multiplied by this value. @section{argument} add This value will be added to the output. @section{Examples} @racketblock[ ( // Dust randomly triggers Decay to create an exponential // decay envelope for the WhiteNoise input source { z = Decay.ar(Dust.ar(1,0.5), 0.3, WhiteNoise.ar); DelayN.ar(z, 0.2, 0.2, 1, z); // input is mixed with delay via the add input }.play ) ( // recursive application of delay. { z = Decay2.ar(Dust.ar(1, 0.5), 0.01, 0.1, Saw.ar(100 + [0, 1])); 5.do { |i| z = DelayN.ar(RLPF.ar(z, Rand(100, 3000), 0.03), 1, 1 / (2**i), 1, z * 0.5) }; z }.play ) :: ]