1.1 即时代码

# 即时代码

Sonic Pi的一大特性是使你能够即时编写和*修改代码*来演奏音乐，就像在你可以现场演奏一把吉他一样。 换句话说，经过一定的练习，你可以把Sonic Pi 带上舞台并且拿它来演出。

## 放轻松

在我们探索Sonic Pi的详细使用方法之前，我想先让你体验一下即时代码的感受。如果你没有明白代码的绝大（或者全部）部分，别担心，先坐下来静静享受吧...

## 一个简单的循环

让我们开始吧。 把下面的代码复制到一个空的编辑器里：

```
live_loop :flibble do
  sample :bd_haus, rate: 1
  sleep 0.5
end
```

现在，按`运行`按钮，你会听到一个好听的快速击打的低音鼓。你可以在任何时候按`停止`按钮来停止。但现在先别急停止，先试试这些步骤:

1. 确认低音鼓仍然在运行
2. 将`sleep`的值从`0.5`改成一个更大的，比如`1`。
3. 再次点击“运行”按钮
4. 注意鼓速度的变化。
5. 最后，记住这个时刻。这是你第一次用Sonic Pi 编写音乐，我相信这也绝不是你最后一次。

OK，这真的是太简单啦！让我们在混响中添加一些其他东西。在‘sample :bd_haus’上面添加一行：`sample :ambi_choir, rate: 0.3`。你的代码就变成这样：

```
live_loop :flibble do
  sample :ambi_choir, rate: 0.3
  sample :bd_haus, rate: 1
  sleep 1
end
```

现在，开始播放吧。改变rates(音调)，看看rate设为很高或者很低甚至为负数时会发生什么？看看我们把`:ambi_choir`的`rate:`调小一点(调成‘0.29’？)会发生什么？把`sleep`的值调得很小又如何呢？如果你把`sleep` 设置的很低，你的电脑可能会崩溃（如果真的崩溃了，只要设高一点儿，然后重新运行就可以啦)。

试着把一个`sample`代码行注释掉（在这一行前加一个`#`）：

```
live_loop :flibble do
  sample :ambi_choir, rate: 0.3
#  sample :bd_haus, rate: 1
  sleep 1
end
```

注意：这是告诉电脑忽略这条语句，所以我们这条语句我们是听不到的。我们称之为注释。在Sonic Pi中我们可以用注释来疏略一条语句。

最后，然我给你留点好玩的。复制下面的代码到空白区域。现在，不要想太多，只要知道这是两个循环就行了——这两个循环同时运行。现在，拿这两个循环做实验吧！下面是一些建议：

* 试着更改蓝色的 `rate:`的值听听有什么改变。
* 试着改变‘sleep’的时间让两个循环以不同的速度旋转。
* 试着取消注释（删除‘#’符号）享受吉他倒着弹的效果吧。
* 试着改变任何蓝色的 ‘mix` 的值为0（不在mix中）到1（完全在mix中）之间的任何值。

记住点击‘run’按钮后改动才会生效。如果你听糊涂了，你可以点击‘stop'按钮停止，删除原来的代码，复制一份新的代码，然后继续听的一塌糊涂。犯错是最快的学习方式。


```
live_loop :guit do
  with_fx :echo, mix: 0.3, phase: 0.25 do
    sample :guit_em9, rate: 0.5
  end
#  sample :guit_em9, rate: -0.5
  sleep 8
end
live_loop :boom do
  with_fx :reverb, room: 1 do
    sample :bd_boom, amp: 10, rate: 1
  end
  sleep 8
end
```

现在，继续听和做实验直到你的好奇心完全被它所吸引并且急切的想知道我还能用它做什么。至此你已经准备好阅读下面的教程了。

所以还等什么呢……
