在 SuperCollider 中設計聲音/純資料物件等效物
以下列表基於 Christopher Ariza 編寫的 **純資料 (PD) 物件參考詞彙表**,可在以下 URL 獲取:http://www.flexatone.net/docs/pdg
SuperCollider 示例的係數已適應純資料物件的行為。
以毫秒為單位,以恆定速率傳送一系列砰的一聲。
// example: [metro 2012]
// 2012 ms = 2.012 s
// BPM: 60 / 2.012 = 29.821073558648
// BPS: BPM / 60 = 0.49701789264413 -> ~ 0.497 Hz
Impulse.kr((2012/1000).reciprocal); // equals to Impulse.kr(60/(2012/1000)/60);
帶通濾波器。引數初始化中心頻率和 Q。
// [bp~] and BPF.ar differ in their behaviour.
// This example is just an approximation to [bp~].
BPF.ar(signal, centerFrequency, Q.reciprocal)
cos~ 物件輸出其訊號輸入的 2π 倍的餘弦值。因此 -1、0、1 和 2 輸出 1,0.5 輸出 -1,依此類推。
(signal * 2pi).cos
或者,使用更常見的相位調製和查詢表
SinOsc.ar(phase: 0.5pi + (2pi * signal))
延遲訊號。提供一個訊號作為輸入,將其新增到延遲線。一個或多個 [delread~] 或 [vd~] 物件可以從由 [delwrite~] 物件建立的延遲線讀取。
第一個引數:延遲線名稱第二個引數:延遲線長度(以毫秒為單位)(= 最大延遲時間)
// at first: a buffer for the UGens to use
buffer = Buffer.alloc(s, s.sampleRate * seconds, 1); // or LocalBuf(s.sampleRate * seconds, 1) ... whatever suits best
DelTapWr.ar(buffer, signal)
一極高通濾波器。
(signal - OnePole.ar(signal, exp(-2pi * (freq * SampleDur.ir))))
一極低通濾波器。
OnePole.ar(signal, exp(-2pi * (freq * SampleDur.ir)))
返回兩個訊號中較大的一個。
signal1.max(signal2)
返回兩個訊號中較小的一個。
signal1.min(signal2)
均勻分佈的白噪聲;輸出介於 -1 和 1 之間。
WhiteNoise.ar
鋸齒波振盪器。從 0 遞增到 1;可以被認為是介於 0 和 1 之間的鋸齒波。
LFSaw.ar(0.5, 1, 0.5, 0.5)
粉紅噪聲發生器。
PinkNoise.ar
對訊號求冪。
signal.pow(exponent)
延遲訊號。一個或多個獨立的 [vd~] 物件可以從一個命名的 [delwrite~] 物件讀取延遲線。延遲線必須作為構造引數命名。訊號輸入將設定延遲時間(以毫秒為單位)。
// works in conjunction with DelTapWr and an allocated buffer
DelTapRd.ar(buffer, outputOfDelTapWr, delTime)
vline~ 物件與 line~ 相似,會生成線性斜坡,其電平和時間由您傳送給它的訊息決定。訊息包含目標值、時間間隔(如果沒有提供則為零)和初始延遲(如果沒有提供則為零)。斜坡可能在音訊樣本之間開始和停止,在這種情況下,輸出將相應地插值。
// Equivalent in SuperCollider for the following message sent to [vline~]: [1 1000 500, 0 1000 2500]
EnvGen.ar(Env.new([0, 0, 1, 1, 0], [0.5, 1, 1, 1]))
// the pure data message means:
// go to 1 in 1000ms but wait 500ms from the starting point,
// then go to 0 in 1000ms but wait 2500 ms from the starting point:
Env.new([0, 0, 1, 1, 0], [0.5, 1, 1, 1]).plot
模 1 的餘數。[wrap~] 物件給出輸入與不超過它的最大整數之間的差值(對於正數,這是小數部分)。
Wrap.ar(signal)
或使用運算子 "wrap"
signal.wrap(0, 1)