SuperCollider CLASSES

CombC

Comb delay line with cubic interpolation.
Inherits from: CombN : PureUGen : UGen : AbstractFunction : Object

Description

Comb delay line with cubic interpolation. See also CombNwhich uses no interpolation, and CombL which uses linear interpolation. Cubic interpolation is more computationally expensive than linear, but more accurate.

The feedback coefficient is given by the equation fb == 0.001 ** (delay / decay.abs) * decay.sign where 0.001 is -60 dBFS.

A very good tip for anyone who is interested in delay lines, and is willing to get a simple way of processing a live source in a pretty effective way, is setting up a larger memory pool in the server, and basically setting up pretty large delay lines, randomizing all their parameters

Class Methods

*ar (in: 0, maxdelaytime: 0.2, delaytime: 0.2, decaytime: 1, mul: 1, add: 0)

From superclass: CombN

*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

// These examples compare the variants, so that you can hear the difference in interpolation

// Comb used as a resonator. The resonant fundamental is equal to
// reciprocal of the delay time.
{ CombN.ar(WhiteNoise.ar(0.01), 0.01, XLine.kr(0.0001, 0.01, 20), 0.2) }.play;

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

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

// with negative feedback:
{ CombN.ar(WhiteNoise.ar(0.01), 0.01, XLine.kr(0.0001, 0.01, 20), -0.2) }.play;

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

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

// used as an echo.
{ CombN.ar(Decay.ar(Dust.ar(1,0.5), 0.2, WhiteNoise.ar), 0.2, 0.2, 3) }.play;

// large delay lines
(
s.options.memSize= 8192*2;
s.reboot;
)
({
    var in, del1, del2, del3, del4;
    in = SoundIn.ar(0);
    del1 = CombC.ar(in, 8, LFNoise2.kr(0.01).range(1, 8), 1);
    del2 = CombC.ar(del1, 8, LFNoise2.kr(0.01).range(1, 8), 1);
    del3 = CombC.ar(del2, 8, LFNoise2.kr(0.01).range(1, 8), 1);
    del4 = CombC.ar(del3, 8, LFNoise2.kr(0.01).range(1, 8), 1);
    (del1 + del2 + del3 + del4)!2;
}.play;
);