用 ADSR 波封去调整样本的 持续时间(duration) 和 振幅(amplitude) 也是同样可能的。然而,这会和运用在合成音上的 ADSR 波封有些许不同。样本波封只允许你减少样本的振幅和持续时间——而永远无法增加。这段样本将会在样本本身播放结束或波封完成的时候结束——这取决于哪种情况先发生。所以说,如果你选用一个很长的“release:”,也并不会增加样本的持续时间。
让我们回到我们信赖的伙伴Amen Break:
sample :loop_amen
不做设置,我们听到全振幅下完整的样本。如果我们想让它1秒钟内淡入,我们用“attack:”参数:
sample :loop_amen, attack: 1
至于短些的淡入,选一个短些的起音参数值:
sample :loop_amen, attack: 0.3
ADSR 波封的表现和标准合成音波封不同之处在于延持(sustain)值。在标准合成音波封里,延持默认值是0,除非你手动设置。对于样本,延持值默认为魔力自动(automagical)值——余下的演奏样本剩余部分的时间。这就是为什么当我们没有输入任何首选项我们还能听到完整样本。要是起音、衰减、延持和释音的值都是0,那永远只会是一片死寂。所以Sonic Pi计算样本长度,推断出一些起音、衰退和释音,用这个结果作延持时间。如果起音、衰退和释音的值加起来总和多于样本持续时间,延持(sustain)会被简单设为0.
探索一波这个选项,我们来细致斟酌一下我们的Amen break。如果我们问Sonic Pi这个样本有多长:
print sample_duration :loop_amen
它会输出“1.753310657596372”,也就是以秒为单位的样本长度。这里为了方便我们姑且把它约为1.75。好,如果我们把释音设置成“0.75”,惊人的事情会发生:
sample :loop_amen, release: 0.75
这行代码会以全振幅演奏样本的第一秒,而后在0.75秒内淡出。这是自动延持(auto sustain)的实践。初始状态下,释音通常从样本的结尾生效。如果我们的样本时长为10.75秒,程序会以全振幅演奏前10秒,而后在0.75秒内淡出。
记住:初始状态下,“release:”在样本结尾淡出。
我们可以同时用“attack:”和“release:”这两个参数和自动延持行为一起在样本持续演奏时淡入和淡出:
sample :loop_amen, attack: 0.75, release: 0.75
采样整个有1.75秒长,我们的起音和释音阶段加起来有1.5秒长,延持就因此自动设置为0.25秒长。这样我们就可以轻松的让采样样本淡入和淡出。
我们可以很简单的把synth的ADSR模式调回原样,只需要手动把sustain:
设置为0:
sample :loop_amen, sustain: 0, release: 0.75
现在我们的样本总共只有区区0.75秒长了。因为attack:
和decay:
的值都默认为0,这个样本会直接跳到最大响度,在那里毫不停留,然后在0.75秒内迅速释音到0响度。
我们可以好好利用前述的特性,将时间长的采样变得更短,更有打击感。可以尝试使用采样 :drum_cymbal_open
:
样本:鼓_镲片_开放
可以听到镲片会持续震动一段时间。我们可以通过波封改变声音:
sample :drum_cymbal_open, attack: 0.01, sustain: 0, release: 0.1
然后你可以模拟击打铙钹,并且通过增加sustain的时长来抑制它的效果:
样本 :drum_cymbal_open,起音:0.01, 延音:0.3,释放:0.1
那就去享受把波封用在样本上的乐趣吧。为了得到更有趣的结果,你可以试着改变速率。