Classes | UGens>Delays

# AllpassN : CombN : PureUGen : UGen : AbstractFunction : Object

Schroeder allpass delay line with no interpolation.
Source: Delays.sc
See also: AllpassC, AllpassL, BufAllpassN

## Description

A Schroeder allpass filter is given by the difference equations

    s(t) = x(t) + k * s(t - D)
    y(t) = -k * s(t) + s(t - D)

where `x(t)` is the input signal, `y(t)` is the output signal, `D` is the delay time, and `k` is the allpass coefficient.

In this UGen, `k` is computed as `k == 0.001 ** (delay / decay.abs) * decay.sign` (0.001 is -60 dBFS).

This UGen quantizes the delay time to the nearest sample period, and will produce aliasing artifacts if the delay time is modulated. If these are undesirable properties, the more CPU-expensive alternatives are AllpassL which uses linear interpolation, and AllpassC which uses cubic interpolation.

## Class Methods

### AllpassN.ar(in: 0, maxdelaytime: 0.2, delaytime: 0.2, decaytime: 1, mul: 1, add: 0)

From superclass: CombN

### AllpassN.kr(in: 0, maxdelaytime: 0.2, delaytime: 0.2, decaytime: 1, mul: 1, add: 0)

From superclass: CombN

#### Arguments:

in | The input signal.
maxdelaytime | The maximum delay time in seconds. Used to initialize the delay buffer size.
delaytime | Delay time in seconds.
decaytime | Time for the echoes to decay by 60 decibels. If this time is negative, then the feedback coefficient will be negative, thus emphasizing only odd harmonics at an octave lower.
mul | Output will be multiplied by this value.
add | This value will be added to the output.

### Inherited class methods

## Instance Methods

### Inherited instance methods

## Examples

    // Since the allpass delay has no audible effect as a resonator on
    // steady state sound ...

    { AllpassN.ar(WhiteNoise.ar(0.1), 0.01, XLine.kr(0.0001, 0.01, 20), 0.2) }.play;

    // ...these examples add the input to the effected sound and compare variants so that you can hear
    // the effect of the phase comb:

    (
    {
        z = WhiteNoise.ar(0.2);
        z + AllpassN.ar(z, 0.01, XLine.kr(0.0001, 0.01, 20), 0.2)
    }.play)

    (
    {
        z = WhiteNoise.ar(0.2);
        z + AllpassL.ar(z, 0.01, XLine.kr(0.0001, 0.01, 20), 0.2)
    }.play)

    (
    {
        z = WhiteNoise.ar(0.2);
        z + AllpassC.ar(z, 0.01, XLine.kr(0.0001, 0.01, 20), 0.2)
    }.play)

    // used as an echo - doesn't really sound different than Comb,
    // but it outputs the input signal immediately (inverted) and the echoes
    // are lower in amplitude.
    { AllpassN.ar(Decay.ar(Dust.ar(1,0.5), 0.2, WhiteNoise.ar), 0.2, 0.2, 3) }.play;

helpfile source: /Applications/SuperCollider.app/Contents/Resources/HelpSource/Classes/AllpassN.schelp
link::Classes/AllpassN::