SuperCollider CLASSES

DelTapWr

Write to a buffer for a DelTapRd UGen
Inherits from: UGen : AbstractFunction : Object

Description

Write to a buffer for a DelTapRd UGen.

NOTE: If you run a DelTapRd.ar and a DelTapWr.ar in tandem, keep in mind that they read and write in blocks equal to the server's block size. If the delay time is greater than the buffer size minus a block, the write and read heads might interfere in unintended ways. Use a slightly larger buffer if this happens.

Class Methods

*ar (buffer, in)

*kr (buffer, in)

Arguments:

buffer

the buffer to write signal into. Max delay time is based on buffer size.

in

the signal to write to the buffer.

Returns:

phase - DelTapWr outputs its current sample value for use in the phase argument in DelTapRd

Inherited class methods

Instance Methods

Inherited instance methods

Examples

// a Buffer for the UGens to use, one second at the current sample rate
b = Buffer.alloc(s, s.sampleRate * 1, 1);

// write a signal into a delay, tap it at multiple times
SynthDef(\test, {arg buffer;
    var src, tapPhase, tap1, tap2, tap3;
    src = WhiteNoise.ar(0.2) * Decay.kr(Dust.kr(3), 0.2);
    tapPhase = DelTapWr.ar(buffer, src);
    #tap1, tap2, tap3 = DelTapRd.ar(buffer, tapPhase,
        [0.2, 0.27, 0.303],      // tap times
        1,                      // no interp
        [1.0, 0.4, 0.2]         // muls for each tap
        );
    Out.ar(0, [src + tap2, tap1 + tap3])
    }).add;

x = Synth(\test, [\buffer, b]);
x.free;
b.free;
// a Buffer for the UGens to use
b = Buffer.alloc(s, 44100, 1);

// write a signal into a delay, tap it at multiple times
SynthDef(\write, {arg buffer, cout;
    var src, tapPhase, tap1, tap2, tap3;
    src = WhiteNoise.ar(0.2) * Decay.kr(Dust.kr(3), 0.7);
    tapPhase = DelTapWr.ar(buffer, src);
    Out.kr(cout, tapPhase);
    }).add;

SynthDef(\readFilt, {arg buffer, cin;
    var phase, src, filt;
    phase = In.kr(cin);
    src = DelTapRd.ar(buffer, phase, [0.01, 0.2]);
    filt = BPF.ar(src, 880, 0.01) * 10;
    Out.ar(0, filt);
    }).add;

c = Bus.control;

x = Synth(\write, [\buffer, b, \cout, c]);
y = Synth(\readFilt, [\buffer, b, \cin, c]);

x.free;
b.free;