# 拉伸示例

现在我们可以演奏各种合成器和示例来创建音乐，现在该学习如何修改合成器和示例以使音乐更加独特和有趣。首先，让我们探索“拉伸”和“挤压”示例的能力。

## 示例表示

样本是预先录制的声音，存储为数字，代表如何移动扬声器音频以再现声音。扬声器音频可以移入和移出，因此数字只需要表示每个时间锥入和移出圆锥的距离。为了能够忠实地再现录制的声音，样本通常需要每秒存储数千个数字！ Sonic Pi会获取此数字列表，并以正确的速度馈送它们，从而以正确的方式移入和移出计算机扬声器，以再现声音。但是，改变将数字馈送到扬声器以改变声音的速度也很有趣。

## 变化率

让我们播放一种环境声音：`：ambi_choir`。要使用默认速率播放，您可以将“ rate：”选项传递给“ sample”：

    sample :ambi_choir, rate: 1

它以正常速率（1）播放，因此没有什么特别的。但是我们可以自由地将该数字更改为其他数字，例如 0.5呢：

    sample :ambi_choir, rate: 0.5

哇！这里发生了什么？好吧，两件事。首先，示例的播放时间是其两倍，其次声音降低了八度。让我们更详细地探讨这些事情。

## 让我们伸展一下

一个可以愉快的拉伸和压缩的样本是Amen Break。以正常的速度，我们可能会想象将其放入一个* drum’n’bass *音轨中：

    sample :loop_amen

但是，通过更改速率，我们可以切换流派。为旧式嘻哈音乐尝试一半速度：

    sample :loop_amen, rate: 0.5

如果加快速度，则输入* jungle *：

    sample :loop_amen, rate: 1.5

现在是我们最后的最后的花招-让我们看看如果使用负速率会发生什么：

    sample :loop_amen, rate: -1

哇！它使用backwards播放！现在尝试以不同的速率处理许多不同的示例。尝试非常快的速率。尝试疯狂的低速率。看看可以产生什么有趣的声音。

## 采样率的简单解释

想到示例的一种有用方法是弹簧。播放速度就像挤压和拉伸弹簧一样。如果以速率2播放示例，则将弹簧压缩为正常长度的一半。因此，采样时间越短，其播放时间就减少一半。如果您以一半的速率播放示例，那么您将“拉伸弹簧”以使其长度加倍。因此，采样时间越长，其播放时间就增加一倍。压榨越多（速率越高），它越短，拉伸越多（速率越低），它就越长。

压缩弹簧会增加其密度（每厘米的线圈数量） - 这与示例高音的声响[高音]类似。拉伸弹簧会降低其密度，类似于具有 [低音] 的声音。

## 采样率背后的数学

（本节是为那些对细节感兴趣的人提供的。请随时跳过…）

正如我们在上面看到的，示例由一长串长长的数字表示，这些数字代表播放器随时间推移，应该在的位置。我们可以使用这串数字来绘制一个像这样的图：

您可能以前看过这样的图。它叫做样本的波形。它实际上是由一堆数字组成的。通常，这样的波形每秒将有44100个数据点（这是由于Nyquist-Shannon采样定理所致）。因此，如果采样持续2秒钟，则波形将由88200个数字表示，我们将以每秒44100点的速度将其馈送到扬声器。当然，我们可以以每秒88200点的双倍速率馈送。这样的话就只需要1秒钟即可播放完同样一段采样。我们也可以让播放的速率降低一半，即每秒22050点，需要4秒钟才能播放完毕。

示例的持续时间受播放速率的影响：

- 播放速率加倍可将播放时间减半，
- 将播放速率减半会使播放时间加倍，
- 使用四分之一的播放速度是播放时间的四倍，
- 使用1/10的播放速率可使播放时间延长10倍。

我们可以用以下公式表示：

    new_sample_duration = (1 / rate) * sample_duration

更改播放速率也会影响采样的音高。波形的频率或基音由其上下移动的速度决定。我们的大脑不知怎么地把说话人的快速移动变成高音，把说话人的慢速移动变成低音。这就是为什么有时你甚至可以看到一个大低音扬声器，因为它泵出超低音-它实际上移动慢得多，进出比一个扬声器产生更高的音符。

如果您将一个波形压缩，它在每秒会上下移动更多地次数。这使得它听起来音调更高。让波形上下振动的总数加速一倍可以让频率翻倍。所以，使用双倍的速率播放您的示例，您将听到双倍的频率。同样，使用一半的速率将会降低一半的频率。其它速率也会相应地影响频率。