class:: PanAz
summary:: Azimuth panner
related:: Classes/Balance2, Classes/LinPan2, Classes/Pan2, Classes/Pan4
categories::  UGens>Multichannel>Panners


Description::

Multichannel equal power panner.


classmethods::

method::ar, kr

argument::numChans

Number of output channels.


argument::in

The input signal.


argument::pos

pan position. Channels are evenly spaced over a cyclic period of
2.0 in pos with 0.0 equal to channel zero and 2.0/numChans equal
to channel 1, 4.0/numChans equal to channel 2, etc.


Thus all channels will be cyclically panned through if a sawtooth
wave from -1 to +1 is used to modulate the pos.


argument::level

A control rate level input.


argument::width

The width of the panning envelope. Nominally this is 2.0 which
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.


argument::orientation

Should be zero if the front is a vertex of the polygon. The first
speaker will be directly in front. Should be 0.5 if the front
bisects a side of the polygon. Then the first speaker will be the
one left of center.

section::Comparison to Pan2

Despite a certain similarity, link::Classes/Pan2:: and link::Classes/PanAz:: with 2 channels behave differently.

code::
// one full cycle for PanAz: from 0 to 1
{ PanAz.ar(2, DC.ar(1), Line.ar(0, 1, 0.1)) }.plot(0.1)
// one full cycle for Pan2: from -1 to 1 and back to -1
{ Pan2.ar(DC.ar(1), EnvGen.kr(Env([-1, 1, -1], [0.05, 0.05]))) }.plot(0.1)

// in other words, while Pan2 makes one full transition
{ Pan2.ar(DC.ar(1), Line.ar(-1, 1, 0.1)) }.plot(0.1)
// we need only a half one in PanAz:
{ PanAz.ar(2, DC.ar(1), Line.ar(0, 1/2, 0.1)) }.plot(0.1)
::


Examples::

code::

// five channel circular panning
s.boot;
(
{
	PanAz.ar(
		5, 				// numChans
		ClipNoise.ar, 	// in
		LFSaw.kr(MouseX.kr(0.2, 8, 'exponential')), // pos
		0.5,			// level
		3			// width
	);
}.play;
s.scope;
)

::

