using multiple controls
( a = { arg values=#[0, 1, 1, 0, 1, 0, 1, 1, 0]; var amp; amp = 0.1 * Select.kr(Stepper.kr(Impulse.kr(5), 0, 0, 7, 1), values); PinkNoise.ar(amp) }.play; ) a.setn(\values, [1, 0, 0, 0, 0, 1, 0, 1]); a.setn(\values, [1, 0.5, 0.3, 0, 0, 0.1, 1, 1]);
using a buffer
b = Buffer.alloc(s, 8, 1, bufnum:156); b.setn(0, [1, 0, 0, 0, 0, 1, 0, 1]); ( a = { var amp; amp = 0.1 * BufRd.kr(1, 156, Stepper.kr(Impulse.kr(5), 0, 0, BufFrames.kr(156), 1)); PinkNoise.ar(amp) }.play; ) b.setn(0, [1, 0.5, 0.3, 0, 0, 0.1, 1, 1]);
using single control and a client side task
a = { |amp| PinkNoise.ar(amp * 0.1) }.play; b = [1, 0.5, 0.3, 0, 0, 0.1, 1, 1]; fork { loop { b.do {|val| a.set(\amp, val); 0.2.wait; } } }
loop_values.rtf