Drand with variable list size

Another way using Diwhite and Select:

(
x = {
	var freq, trig, index;
	trig = Impulse.kr(1);
	index = Demand.kr(trig, 0, Diwhite(0, \size.kr(1) - 1));
	freq = Select.kr(index.asInteger, \pattern.kr(100!20));
	0.2 * SinOsc.ar(freq) * EnvGen.kr(Env.perc(), trig);
}.play;
)

(
var pattern1 = [100, 200, 300];
x.set(\pattern, pattern1);
x.set(\size, pattern1.size);
)

Best,
Paul