A UGen that writes a signal to a buffer, using an index pointer.
Warning: if the supplied buf
refers to a buffer whose number of channels
differs from those of the input signal, the UGen will fail silently.
An alternative to BufWr
is RecordBuf
. While RecordBuf
advances the index
into the buffer by itself, BufWr
only moves its write point by the index
input, making it possible to adjust the writing speed or to access the buffer in
a non-linear way. RecordBuf
can determine the end of the buffer and issue a
done-action.
===Examples===
// record and playback
// a two second mono buffer
val b = Buffer.alloc(s, numFrames = s.sampleRate.toInt * 2)
val y = play {
val sig = SinOsc.ar(LFNoise1.kr(2).mulAdd(300, 400)) * 0.1
val rate = "rate" kr 1
BufWr.ar(in = sig, buf = b.id, index =
Phasor.ar(speed = BufRateScale.kr(b.id) * rate, lo = 0, hi = BufFrames.kr(b.id)))
0.0 // quiet
}
// read it with a BufRd
val x = play {
val rate = "rate" kr 1
BufRd.ar(1, buf = b.id, index =
Phasor.ar(speed = BufRateScale.kr(b.id) * rate, lo = 0, hi = BufFrames.kr(b.id)))
}
x.set("rate" -> 5)
y.set("rate" -> 3)
x.set("rate" -> 2)
- See also
- Companion
- class
Type members
Value members
Concrete methods
- Value Params
- buf
the identifier of the buffer to use
- in
input signal to record
- index
audio rate frame-index into the buffer.
- loop
1 to enable looping, 0 to disable looping. this can be modulated.
- Value Params
- buf
the identifier of the buffer to use
- in
input signal to record
- index
audio rate frame-index into the buffer.
- loop
1 to enable looping, 0 to disable looping. this can be modulated.