Unit 804, 8/F, Pan Asia Centre, Ngau Tau Kok, Kwun Tong, Kowloon, Hong Kong

[ChucK]基本初階-3句出到聲的例子

SinOsc – Sine wave 模擬信號

一安裝ChucK之後,你會發現有這個畫面,按下”Start Virtual Machine”。
然後在淺藍色框內打入下面2句:
螢幕快照 2016-02-14 上午12.07.07-01-01

SinOsc s => dac;
2::second => now;

按下Shift – Command “+” 或者按下螢幕快照 2016-02-14 上午12.13.02
就已經發到聲了。
這兩句的意思是:

//開一個新的sine wave名叫 "s" 放到dac (digital-audio converter)即是傳送到sound card發聲
SinOsc s => dac;
//現在出2秒聲音
2::second => now;

如果想永久地發聲的話,只要加上一個while loop

SinOsc s => dac;
while (true) {
2 :: second => now;
} 

再按下Shift – Command “+” ,聲音就變得永久了。while loop是指當某一項條件達到的話,就會執行{}內的指令。
由於這個Shred一加的時候,這個程式已經變成了true,所以就會有一個恆常的聲音。

Frequency 頻率

加這一句:

SinOsc s => dac;
while (true) {
    1000 => s.freq; //加這一句
    2 :: second => now;
}

就會聽到聲音不同了。
s.freq 是指模擬信號S內的頻率,1000是設定頻率為1000Hz。
如果上面SinOsc的名是”b”的話,他的頻率就是 “b.freq”。

SinOsc s => dac;
while (true) {
    Std.rand2f (20.0, 1000.0) => s.freq; //改一改
    2 :: second => now;
}

每2秒聲音頻率就改變了。
Std.rand2f (20.0, 1000.0)是指從20.0 – 1000.0這兩個float digit入面隨機抽一個數字代入s.freq。
如果想再改快一點的話:

SinOsc s => dac;
while (true) {
    Std.rand2f (20.0, 1000.0) => s.freq; 
    100 :: ms => now; //改一改時間
}

ChucK可以將時間由秒變做毫秒。ms是指millisecond(毫秒)。

Gain聲頻增益

SinOsc s => dac;
while (true) {
    Std.rand2f (0.0, 1.0) => s.gain; //加這句
    Std.rand2f (20.0, 1000.0) => s.freq; 
    100 :: ms => now;
}

s.gain 是指模擬信號S內的聲頻增益。
如果上面SinOsc的名是”b”的話,他的聲頻增益就是 “b.gain”。

最後就給大家一個視頻重溫一下今日的範例。你可以改一些數字去研究一下~

Related Posts

Comments (2)

Say Somethings...

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料