在开始本课之前,请确保你已载入了上一课的\bleep SynthDef。
目前为止,调度一直由为一个特定的时间调度一个函数来达到。为了遍历一个程序不同的阶段,一个具备一定量执行阶段的函数是很有帮助的。通过.value,它并非一次性被全部评估,但能够在每个多阶段中“产出(yield)”它的当前值。
在开始本课之前,请确保你已载入了上一课的\bleep SynthDef。
目前为止,调度一直由为一个特定的时间调度一个函数来达到。为了遍历一个程序不同的阶段,一个具备一定量执行阶段的函数是很有帮助的。通过.value,它并非一次性被全部评估,但能够在每个多阶段中“产出(yield)”它的当前值。
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将停止调度)
SC3的图形化用户界面类
Server.default=s=Server.local;
SC3的GUI类包括量程(Range)和2D滑杆,拖放工具,下拉列表,多滑杆和其它很多很多,,
继续阅读SuperCollider:图形化用户界面
通过鼠标、键盘、MIDI、音频输入等进行互动
让我们现在先打开localhost服务器:
( Server.default=s=Server.local; s.boot; )
SynthDef
{}.play 标志法并非SuperCollider 3的首选标记法,但他却允许我们对合成快速上手。从现在起,你常看到的都将是使用SynthDef结构定义的UGen网络。然后很多合成都是由一个单独的SynthDef来创建,这对于制造一堆类似的声音和其它颗粒以及整体进程是尤其重要的。
继续阅读SuperCollider:合成器定义
SuperCollider有很多收集(collection)类,但对于一些简单的任务来说,你往往可以通过在方括号内定义数据的数组(Array)来实现:
a= [5,6,7,8,9,10];
有时我们需要更清晰的建构数据列,并且我们可以书写我们自己的函数来生成数据:
a= Array.fill(6, {arg i; i+5});