我想通过随机抖动音符播放的时间来为一些音符模式添加一个非常简单的“人性化”。这段代码反复播放一个和弦:
p = Pbind(\legato, 0.1, \dur, 0.2, \midinote, [66, 69, 74]).play
但我希望和弦中的三个音符中的每一个在确切的时间上随机有一些独立的“错误”。我不希望节奏变化。
我想通过随机抖动音符播放的时间来为一些音符模式添加一个非常简单的“人性化”。这段代码反复播放一个和弦:
p = Pbind(\legato, 0.1, \dur, 0.2, \midinote, [66, 69, 74]).play
但我希望和弦中的三个音符中的每一个在确切的时间上随机有一些独立的“错误”。我不希望节奏变化。
您可以使用一个名为 \timingOffset 的键 - 在模式指南的第 8 节中进行了描述。
简单的例子是:
p = Pbind(\legato, 0.1, \dur, 0.4, \midinote, [66, 69, 74],
\timingOffset, Pwhite(-0.1, 0.1)
).play;
所以这是 +-0.1 节拍的随机偏移。不幸的是,它将一个偏差应用于整个和弦,这不是您想要的。所以你需要将一个数组输入到 Pwhite 中:
p = Pbind(\legato, 0.1, \dur, 0.4, \midinote, [66, 69, 74],
\timingOffset, Pwhite([-0.1, -0.1, -0.1], [0.1, 0.1, 0.1])
).play;
当然,您可以从某个值派生这些数组:
~jitter = 0.1;
p = Pbind(\legato, 0.1, \dur, 0.4, \midinote, [66, 69, 74],
\timingOffset, Pwhite({0-~jitter}.dup(3), {~jitter}.dup(3))
).play;
这是一种稍微不同的方法,可以生成正确数量的值,以防“midinote”的数组大小是可变的:
~jitter = 0.1;
p = Pbind(\legato, 0.1, \dur, 0.4, \midinote, [66, 69, 74],
\timingOffset, Pcollect({|val| {~jitter.bilinrand}.dup(val.size)}, Pkey(\midinote))
).play;