class:: TWChoose
summary:: Randomly select one of several inputs
categories:: UGens>Triggers, UGens>Random
related:: Classes/TChoose

description::
An output is selected randomly on receiving a trigger from an array of inputs.

the code::weights:: of this choice are determined from the weights array.

If code::normalize:: is set to 1 the weights are continuously normalized (this is an extra overhead) when using fixed values the code::normalizeSum:: method can be used to normalize the values.

TWChoose is a composite of link::Classes/TWindex:: and link::Classes/Select::.

classmethods::
method:: ar, kr

argument:: trig
argument:: array
argument:: weights
argument:: normalize

examples::
code::
(
{
	var a;
	a = [
			SinOsc.ar,
			Saw.ar,
			Pulse.ar
		];
	TWChoose.ar(Dust.ar(MouseX.kr(1, 1000, 1)), a, [0.99, 0.05, 0.05].normalizeSum) * 0.2

}.play;
)
::

note:: all the ugens are continuously running. This may not be the most efficient way if each input is  cpu-expensive.::
