PanAz

object PanAz extends ProductReader[PanAz]

An azimuth-based panorama UGen. It uses vector-based-amplitude panning where the arbitrary number of speakers is supposed to be distributed in a circle with even spacing between them. It uses an equal-power-curve to transition between adjacent speakers. '''Note''' the different default value for the orient argument!

Use case: To spread an multi-channel input signal across an output bus with a different number of channels, such that the first input channel is played on the first output channel (no spread to adjacent channels) and the last input channel is played to the last output channel (no spread to adjacent channels), you would create a dedicated PanAz per input channel where the pan position is inChanIdx * 2f / (inChannels - 1) * (outChannels - 1) / outChannels .

See also
Companion
class
trait Product
trait Mirror
trait ProductReader[PanAz]
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, in: GE, pos: GE, level: GE, width: GE, orient: GE): PanAz
Value Params
in

the input signal

level

a control rate level input (linear multiplier).

numChannels

the number of output channels

orient

the offset in the output channels regarding a pan position of zero. Note that ScalaCollider uses a default of zero which means that a pan pos of zero outputs the signal exactly on the first output channel. This is different in sclang where the default is 0.5 which means that a pan position of zero will output the signal between the first and second speaker. Accordingly, an orient of 1.0 would result in a channel offset of one, where a pan position of zero would output the signal exactly on the second output channel, and so forth.

pos

the pan position. Channels are evenly spaced over a cyclic period of 2.0. the output channel position is pos / 2 * numChannels + orient . Thus, assuming an orient of 0.0 , and numChannels being for example 3 , a pos of 0*2.0/3 == 0.0 corresponds to the first output channel, a pos of 1*2.0/3 corresponds to the second output channel, a pos of 2*2.0/3=4.0/3 corresponds to the third and last output channel, and a pos of 3*2.0/3=2.0 completes the circle and wraps again to the first channel. Using a bipolar pan position, such as a sawtooth that ranges from -1 to +1, all channels will be cyclically panned through. Must be control rate.

width

the width of the panning envelope. The default of 2.0 pans between pairs of adjacent speakers. Width values greater than two will spread the pan over greater numbers of speakers. Width values less than one will leave silent gaps between speakers.

def kr(numChannels: Int, in: GE, pos: GE, level: GE, width: GE, orient: GE): PanAz
Value Params
in

the input signal

level

a control rate level input (linear multiplier).

numChannels

the number of output channels

orient

the offset in the output channels regarding a pan position of zero. Note that ScalaCollider uses a default of zero which means that a pan pos of zero outputs the signal exactly on the first output channel. This is different in sclang where the default is 0.5 which means that a pan position of zero will output the signal between the first and second speaker. Accordingly, an orient of 1.0 would result in a channel offset of one, where a pan position of zero would output the signal exactly on the second output channel, and so forth.

pos

the pan position. Channels are evenly spaced over a cyclic period of 2.0. the output channel position is pos / 2 * numChannels + orient . Thus, assuming an orient of 0.0 , and numChannels being for example 3 , a pos of 0*2.0/3 == 0.0 corresponds to the first output channel, a pos of 1*2.0/3 corresponds to the second output channel, a pos of 2*2.0/3=4.0/3 corresponds to the third and last output channel, and a pos of 3*2.0/3=2.0 completes the circle and wraps again to the first channel. Using a bipolar pan position, such as a sawtooth that ranges from -1 to +1, all channels will be cyclically panned through. Must be control rate.

width

the width of the panning envelope. The default of 2.0 pans between pairs of adjacent speakers. Width values greater than two will spread the pan over greater numbers of speakers. Width values less than one will leave silent gaps between speakers.

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