James McCartney
2004-06-14 04:30:45 UTC
You can now specify a literal array as a SynthDef argument. The
argument must be a literal array.
For more complex things like defining an envelope you should still use
Control.names('name').kr(values)
I had to make a couple of changes in crucial to not break it. The
examples I tried work. felix might want to check the diff in
InstrSynthDef.sc.
example:
(
SynthDef("arrayarg", { arg amp = 0.1, freqs = #[300, 490, 587, 741],
gate = 1;
var env;
env = Linen.kr(gate, 0.1, 1, 1, 2) * amp;
Out.ar(0, SinOsc.ar(freqs +.t [0,0.5]).cubed.sum * env);
}, [0, 0.1, 0]).send(s).dumpUGens;
)
(
fork {
z = Synth("arrayarg");
2.wait;
10.do {
z.setn(\freqs, {exprand(200,800.0)} ! 4);
(2 ** (0..3).choose * 0.2).wait;
};
z.set(\amp, -40.dbamp);
10.do {
z.setn(\freqs, {exprand(200,800.0)} ! 4);
(2 ** (0..3).choose * 0.2).wait;
};
2.wait;
z.release;
};
)
argument must be a literal array.
For more complex things like defining an envelope you should still use
Control.names('name').kr(values)
I had to make a couple of changes in crucial to not break it. The
examples I tried work. felix might want to check the diff in
InstrSynthDef.sc.
example:
(
SynthDef("arrayarg", { arg amp = 0.1, freqs = #[300, 490, 587, 741],
gate = 1;
var env;
env = Linen.kr(gate, 0.1, 1, 1, 2) * amp;
Out.ar(0, SinOsc.ar(freqs +.t [0,0.5]).cubed.sum * env);
}, [0, 0.1, 0]).send(s).dumpUGens;
)
(
fork {
z = Synth("arrayarg");
2.wait;
10.do {
z.setn(\freqs, {exprand(200,800.0)} ! 4);
(2 ** (0..3).choose * 0.2).wait;
};
z.set(\amp, -40.dbamp);
10.do {
z.setn(\freqs, {exprand(200,800.0)} ! 4);
(2 ** (0..3).choose * 0.2).wait;
};
2.wait;
z.release;
};
)
--
--- james mccartney james-***@public.gmane.org <http://www.audiosynth.com>
SuperCollider - a real time audio synthesis programming language
--- james mccartney james-***@public.gmane.org <http://www.audiosynth.com>
SuperCollider - a real time audio synthesis programming language