跳轉到內容

SuperCollider/雨中聲音設計

來自華夏公益教科書,開放的書籍,為開放的世界

圖 38.1: 流體球體撞擊

[編輯 | 編輯原始碼]

流體球體撞擊堅硬表面的波形 - 我們將在這裡將其建立為一個函式,以便我們可以重複使用它

~dropletonhard = {|dur=0.0005| Env.perc(dur/2, dur/2, 1, [-4, 4])};
~dropletonhard.value.plot

圖 38.3: 獲取高斯噪聲分佈。

[編輯 | 編輯原始碼]

中心極限定理告訴我們,將獨立噪聲源加在一起最終會得到高斯噪聲。十二個對於聽覺目的來說已經足夠了。

x = { {WhiteNoise.ar}.dup(12).mean.dup * 0.5}.play;
x.free;

在書中,Andy 說使用兩個白噪聲源並使用 Box-Muller 變換建立高斯形狀更有效率。但是,這涉及一些相對繁重的數學運算(log、cos、sqrt),因此在給定系統上哪種方法更有效率並不明顯。將上述方法的 CPU 使用率(以及音訊結果)與以下方法進行比較

(
x = {
	var amount=MouseX.kr(0,1); // move mouse left/right to change amount
	var n1 = WhiteNoise.ar.abs * amount + (1-amount);
	var n2 = WhiteNoise.ar(2pi);
	var gaussian = sqrt(-2 * log(n1)) * cos(n2);
	gaussian.dup * 0.5
}.play;
)
x.free;


圖 38.4: 雨滴對堅實地面的壓力

[編輯 | 編輯原始碼]
(
x = {
	var gaus, osc;
	gaus = {WhiteNoise.ar}.dup(12).sum;
	gaus = LPF.ar(BPF.ar(gaus, 50, 1/0.4), 500);
	
	osc = SinOsc.ar(gaus.linlin(-1, 1, 40, 80)) * gaus.squared * 10;
	osc = (osc - 0.35).max(0);

	2.do {
		osc = HPF.ar(osc, 500);
	};

	osc.dup
}.play
)
華夏公益教科書