Scheduling
一些相关的帮助文档
[SystemClock]
[TempoClock]
[AppClock]
// 载入我先——这个声音将被用于记下来的调度小样
// 我们现在运用SynthDef和Synth,这很重要
// 注意doneAction!
(
SynthDef(\bleep,{ arg out=0, note=60, amp=0.5, pan=0.0;
var freq, env;
freq = note.midicps;
env = EnvGen.ar(
Env([0,1,1,0],[0.01, 0.1, 0.2]),
levelScale:amp,
doneAction:2
);
Out.ar(out,
Pan2.ar(Blip.ar(freq) * env, pan)
)
}).load(s);
)
这个SynthDef使用了一个doneAction为2的包络,这使得一个合成器由定义制造,并且在包络结束后释放(deallocate)自身。这至关重要,否则在我们载入它后它会永远挂在那!
你可以非常方便的建立一个重复机制。全局的SystemClock以秒进行调度。SystemClock是最值得信赖的时钟。
// 从距现在0秒开始一个进程,之后每1秒重复一次
(
SystemClock.sched(0.0,//从距现在0秒开始一个进程,即,立马
{//一个表明你希望调度什么的函数
Synth(\bleep);
1 //每10秒重复一次
}
)
)
(最后从函数返回的东西是函数被调用的间隔时间;你可以返回一个数字,或nil;nil将停止调度)
继续阅读SuperCollider:调度