SuperCollider/Sirens 中的声音设计
外观
我们将使用内部服务器以确保我们可以使用示波器等。
Server.default = s = Server.internal;
s.boot;
在 SuperCollider 中,我们可以提供一个几乎直接的物理模型:LFPulse 代表电容器平滑前的“原始”开/关信号,“lagud” 提供指数平滑,并具有允许“开”和“关”收敛具有不同时间段的便捷功能。这个只有一行代码的示例将为您绘制曲线
{LFPulse.ar(1, 0.99, 0.4).lagud(0.3, 0.7)}.plot(2)
现在让我们将这种技术用于音高曲线和波形合成。
(
SynthDef(\dsaf_horn1, { |rate=0.1|
var freq = LFPulse.kr(rate, 0.99, 0.4).lagud(0.4 / rate, 0.6 / rate) * 800 + 300;
var son = LFPulse.ar(freq, 0.99, 0.2).lagud(0.4 / freq, 0.6 / freq) * 2 - 1;
// This filtering is a simple approximation of the plastic horn acoustics:
son = BPF.ar(son.clip2(0.2), 1500, 1/4) * 4;
// delay and reverb, to simulate the environment in which we hear the siren
son = son + DelayC.ar(son, 0.1, 0.1, 0.3);
son = son + FreeVerb.ar(son);
Out.ar(0, Pan2.ar(son * 0.4));
}).add;
)
x = Synth(\dsaf_horn1);
s.scope
// Choose a rate
x.set(\rate, 3);
x.set(\rate, 0.1);
练习:与其使用波形的滞后脉冲实现,不如按照书中的说明尝试使用简单的三角波振荡器(LFTri) - 这会失去真实电路的物理建模“真实感”,但效率更高,并且相当相似。您会对音调质量产生多少影响?