Splay:
Filter:
Classes | UGens > Multichannel > Panners

Splay : UGen : AbstractFunction : Object

Splay spreads an array of channels across the stereo field
Source: Splay.sc

Description

Splay spreads an array of channels across the stereo field. Optional arguments are spread and center, and equal power levelCompensation. The formula for the stereo position is ((0 .. (n - 1)) * (2 / (n - 1)) - 1) * spread + center

Class Methods

Splay.ar(inArray, spread: 1, level: 1, center: 0, levelComp: true)

Splay.kr(inArray, spread: 1, level: 1, center: 0, levelComp: true)

Arguments:

inArray

The array of channels to be distributed over the two stereo pairs

spread

For spread = 0, all channels end up in the centre, for 1, they have maximum distribution

level

An amplitude multiplier for all channels

center

Shift the centre of the distribution.

levelComp

Splay.arFill(n, function, spread: 1, level: 1, center: 0, levelComp: true)

In analogy to Mix:arFill, this method takes a function that produces the channels. The counting index is passed to it.

Arguments:

n

Number of channels

function

Function to return each channel

spread

For spread = 0, all channels end up in the centre, for 1, they have maximum distribution

level

An amplitude multiplier for all channels

center

Shift the centre of the distribution.

levelComp

Inherited class methods

Instance Methods

Inherited instance methods

Examples

(
x = { arg spread=1, level=0.2, center=0.0;
 Splay.ar(
  SinOsc.ar( { |i| LFNoise2.kr(1).exprange(200, 4000) } ! 10),
  spread,
  level,
  center
 );
}.play;
)

x.set(\spread, 1,   \center, 0);  // full stereo
x.set(\spread, 0.5, \center, 0);  // less wide
x.set(\spread, 0,   \center, 0);  // mono center
x.set(\spread, 0.5, \center, 0.5);
// spread from center to right
x.set(\spread, 0,   \center, -1); // all left
x.set(\spread, 1,   \center, 0);  // full stereo


 // the a similar example written with arFill:
(
x = { arg spread=1, level=0.2, center=0.0;
 Splay.arFill(10,
  { |i| SinOsc.ar( LFNoise2.kr( rrand(10, 20), 200, i + 3 * 100))  },
  spread,
  level,
  center
 );
}.play;
)


 // with mouse control
(
x = { var src;
 src = SinOsc.ar( { |i| LFNoise2.kr( rrand(10, 20), 200, i + 3 * 100) } ! 10);
 Splay.ar(src, MouseY.kr(1, 0), 0.2, MouseX.kr(-1, 1));
}.play;
)