2013-07-27 58 views
0

我在學習如何使用事件模式。我輸入了以下內容,希望每一次它「跳下來」一個八度的順序:爲什麼此事件模式不會產生八度跳躍?

p = Pbind(*[ 
    instrument: \mySynth, 
    midinote: Pseq([108, 96, 84, 72, 60, 48, 36, 24, 12], inf), 
    dur: 0.2 
]); 

SynthDef(
    "mySynth", 
    { 
     |midinote, gate = 1| 
     var stereofreq = [midinote, midinote]; 
     var audio = Pulse.ar(stereofreq, 0.5, mul: 0.8); 
     var env = Linen.kr(gate, 0.01, 1, 0.1, doneAction: 2); 
     OffsetOut.ar(0, audio * env); 
    } 
).add; 

p.play; 

我肯定得到一個遞減序列,但間隔不是一個八度。我是否錯過了midinote鑰匙的一些細節?

回答

1

是你缺少的東西:在midinote關鍵數據圖案時,播放的奇蹟般地變成在freq關鍵赫茲值。所以當你編寫你的合成器時,你不應該使用midinote,而應該使用freq

這似乎是可疑的魔法,但想想這樣說:你可以寫一個SynthDef一次,使用freq,之後你可以自由在你的模式使用midinotefreqdegree,他們將全部是轉換,而不必重寫SynthDef以使用不同名稱的控件。

要更多地瞭解到底是怎麼回事,這個網頁是非常有幫助的:Pattern Guide 07: Value Conversions

+0

王牌,謝謝!這個解釋很有道理。 – David

+0

我看到你也在問關於SuperCollider的問題。這是正確的地方,還是有更積極的論壇? – David

+0

@David:我喜歡這個,但SuperCollider郵件列表是迄今爲止最活躍的:http://www.birmingham.ac.uk/facilities/BEAST/research/supercollider/mailinglist.aspx(在那個頁面上你可以註冊** sc用戶**,或在線查看檔案等) –

相關問題