BufRd

object BufRd extends ProductReader[BufRd]

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
trait Product
trait Mirror
trait ProductReader[BufRd]
class Object
trait Matchable
class Any

Type members

Inherited types

type MirroredElemLabels <: Tuple

The names of the product elements

The names of the product elements

Inherited from
Mirror
type MirroredLabel <: String

The name of the type

The name of the type

Inherited from
Mirror

Value members

Concrete methods

def ar(numChannels: Int, buf: GE, index: GE, loop: GE, interp: GE): BufRd
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.

def ir(numChannels: Int, buf: GE, index: GE, loop: GE, interp: GE): BufRd
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.

def kr(numChannels: Int, buf: GE, index: GE, loop: GE, interp: GE): BufRd
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.

def read(in: RefMapIn, key: String, arity: Int): BufRd