跳轉到內容

在 SuperCollider/Fire 中設計聲音

來自華夏公益教科書

圖 34.3:最簡單的隨機嘶嘶聲

[編輯 | 編輯原始碼]
{WhiteNoise.ar(LFNoise2.kr(1))}.play

圖 34.4:平方它

[編輯 | 編輯原始碼]

對噪聲進行平方運算可以使其具有更有用的動態範圍,偶爾會有響亮的爆發

{WhiteNoise.ar(LFNoise2.kr(1).squared)}.play

圖 34.5:更多

[編輯 | 編輯原始碼]

新增另一個 .squared 以對動態範圍產生更強的效果,並使用高通濾波器使嘶嘶聲更加嘶嘶

{HPF.ar(WhiteNoise.ar, 1000) * LFNoise2.kr(1).squared.squared}.play

圖 34.6:一個簡單的爆裂聲

[編輯 | 編輯原始碼]
{WhiteNoise.ar * Line.ar(1, 0, 0.02, doneAction: 2)}.play

圖 34.7:多個爆裂聲

[編輯 | 編輯原始碼]

如果我們使用適當的包絡發生器而不是簡單的直線,我們可以使用 Dust 隨機重新觸發它,從而產生可控密度的隨機爆裂聲

{WhiteNoise.ar * EnvGen.ar(Env.perc(0, 0.02, curve: 0), Dust.kr(1))}.play

圖 34.8:更多變化

[編輯 | 編輯原始碼]

透過調製每個事件的持續時間和濾波器頻率來新增更多變化

(
{
	var trigs, durscale, son, resfreq;
	trigs = Dust.kr(1);
	durscale = TRand.kr(1, 1.5, trigs); // vary duration between default 20ms and 30ms
	resfreq = TExpRand.kr(100, 1000, trigs); // different resonant frequency for each one
	son = WhiteNoise.ar * EnvGen.ar(Env.perc(0, 0.02, curve: 0), trigs, timeScale: durscale);
	son = son + BPF.ar(son, resfreq, 20);
}.play
)

圖 34.9:嗚嗚聲

[編輯 | 編輯原始碼]

簡單嘗試火焰本身發出的低沉“嗚嗚”聲

{LPF.ar(WhiteNoise.ar, 30) * 100}.play

圖 34.10:呼嘯聲

[編輯 | 編輯原始碼]

// 我們可以用來構建火焰聲音的另一個元件

{BPF.ar(WhiteNoise.ar, 30, 0.2) * 20}.play

圖 34.11:形狀

[編輯 | 編輯原始碼]

塑造動態範圍並丟棄一些低頻,允許少量削波以產生不那麼靜態的聲音。

{LeakDC.ar(LeakDC.ar(BPF.ar(WhiteNoise.ar, 30, 0.2) * 50).clip2(0.9)) * 0.5}.play

圖 34.12:將所有內容整合在一起

[編輯 | 編輯原始碼]
(
~firegen = {
	var trigs, durscale, resfreq;
	var noise, hissing, crackles, lapping;
	// A common noise source
	noise = WhiteNoise.ar;
	// Hissing
	hissing = HPF.ar(noise, 1000) * LFNoise2.kr(1).squared.squared;
	// Crackle
	trigs = Dust.kr(1);
	durscale = TRand.kr(1, 1.5, trigs); // vary duration between default 20ms and 30ms
	resfreq = TExpRand.kr(100, 1000, trigs); // different resonant frequency for each one
	crackles = noise * EnvGen.ar(Env.perc(0, 0.02, curve: 0), trigs, timeScale: durscale);
	crackles = crackles + BPF.ar(crackles, resfreq, 20);
	// Flame
	lapping = LeakDC.ar(LeakDC.ar(BPF.ar(noise, 30, 0.2) * 50).clip2(0.9)) * 0.5;
	// Combine them:
	([crackles, hissing, lapping] * [0.1, 0.3, 0.6]).sum * 3
};
~firegen.play
)

圖 34.13:多音

[編輯 | 編輯原始碼]

讓我們有四個以上,每個都經過不同的濾波,以產生複合效果

(
{
	BPF.ar(~firegen,  600, 1/0.2) +
	BPF.ar(~firegen, 1200, 1/0.6) +
	BPF.ar(~firegen, 2600, 1/0.4) +
	HPF.ar(~firegen, 1000)
}.play
)
華夏公益教科書