3.4 波封设置后样本(Enveloped samples)

# 波封设置后的样本(Enveloped Samples)

用 ADSR 波封去调整样本的 *持续时间(duration)* 和 *振幅(amplitude)* 也是同样可能的。然而，这会和运用在合成音上的 ADSR 波封有些许不同。样本波封只允许你减少样本的振幅和持续时间——而永远无法增加。这段样本将会在样本本身播放结束或波封完成的时候结束——这取决于哪种情况先发生。所以说，如果你选用一个很长的“release:”，也并不会增加样本的持续时间。

## Amen 波封

让我们回到我们信赖的伙伴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秒长。这样我们就可以轻松的让采样样本淡入和淡出。

## 明确的sustain

我们可以很简单的把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
```

那就去享受把波封用在样本上的乐趣吧。为了得到更有趣的结果，你可以试着改变速率。
