2013-07-27 29 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用户**,或在线查看档案等) –

相关问题