A UGen which reads the content of a buffer, using an index pointer.
Warning: if the supplied buf
refers to a buffer whose number of channels
differs from numChannels
, the UGen will fail silently.
An alternative to BufRd
is PlayBuf
. While PlayBuf
plays through the
buffer by itself, BufRd
only moves its read point by the index input and
therefore has no pitch input. PlayBuf
uses cubic interpolation, while BufRd
has variable interpolation. PlayBuf
can determine the end of the buffer and
issue a done-action.
===Examples===
// Write and read
val b = Buffer.alloc(s, numFrames = 32768, numChannels = 1)
// write into the buffer with a BufWr
val y = play {
val in = SinOsc.ar(LFNoise1.kr(2).mulAdd(300, 400)) * 0.1
val rate = "rate" kr 1
BufWr.ar(in, b.id, Phasor.ar(0, BufRateScale.kr(b.id) * rate, 0, BufFrames.kr(b.id)))
0.0 // quiet
}
// read it with a BufRd
val x = play {
val rate = "rate" kr 1
BufRd.ar(1, b.id, Phasor.ar(0, BufRateScale.kr(b.id) * rate, 0, BufFrames.kr(b.id)))
}
y.set("rate" -> 0.5) // notice the clicks when the play head overtakes the write head!
x.set("rate" -> 0.5)
y.set("rate" -> 1.0)
- See also
- Companion
- class
Type members
Value members
Concrete methods
- Value Params
- buf
the identifier of the buffer to use
- index
audio rate frame-index into the buffer. Can be fractional.
- interp
1 for no interpolation, 2 for linear, and 4 for cubic interpolation. ''(init-time only)''
- loop
1 to enable looping, 0 to disable looping. this can be modulated.
- numChannels
number of channels that the buffer will be. Since this is an integer constant, a change in the number of channels must be reflected by creating different SynthDefs.
- Value Params
- buf
the identifier of the buffer to use
- index
audio rate frame-index into the buffer. Can be fractional.
- interp
1 for no interpolation, 2 for linear, and 4 for cubic interpolation. ''(init-time only)''
- loop
1 to enable looping, 0 to disable looping. this can be modulated.
- numChannels
number of channels that the buffer will be. Since this is an integer constant, a change in the number of channels must be reflected by creating different SynthDefs.
- Value Params
- buf
the identifier of the buffer to use
- index
audio rate frame-index into the buffer. Can be fractional.
- interp
1 for no interpolation, 2 for linear, and 4 for cubic interpolation. ''(init-time only)''
- loop
1 to enable looping, 0 to disable looping. this can be modulated.
- numChannels
number of channels that the buffer will be. Since this is an integer constant, a change in the number of channels must be reflected by creating different SynthDefs.