鼓点正在循环。你想让下一段密一些,随后疏一些,再轻下来,给旋律留出进入的空间。在 Sonic Pi 里,这些音乐上的决定都可以落实为对发声代码的修改。音乐人初次接触这件开源乐器时,可以先把一段熟悉的节拍写成一套简短、便于修改的演出程序,练习边听边改。
入门已有方便的入口:截至 2026 年 10 月 29 日核查时,项目同时提供桌面应用和浏览器编辑器。[1] 下面的排练适合独奏音乐人,也适合有人协助处理代码与音频设置的小型工作坊。验收要求很具体:能否修改一个声部,让另一个声部跟上节拍,再找回预期的声音,同时始终清楚哪些部分正在运行?
先做一个最小而有用的改动
在 Sonic Pi 的空白代码缓冲区中输入:
use_bpm 100
live_loop :pulse do
sample :bd_haus, amp: 0.6
sleep 1
end
声音来自内置的底鼓采样。[5] use_bpm 设定速度,sleep 则以拍数指定等待时长:每分钟 100 拍时,这个循环每隔 0.6 秒触发一次鼓声。[4] 这里要分清两件事:你既规定了一个发声事件,也规定了它与下一个事件之间的间隔。
按下 Run。播放时,把 amp: 0.6 改成 amp: 0.3,再按一次 Run。带名称的 live_loop 可以在运行中替换循环体,新版本会在下一轮循环中发声。名称 :pulse 用来识别这个持续运行的循环,修改这一声部时要保留它。[2]
接着把 sleep 1 改成 sleep 0.5,再次运行缓冲区中的代码。鼓声的触发频率会变成原来的两倍。进入下一个练习前,先改回 sleep 1。把这两处改动分开做,耳朵才能把每一次修改与听到的结果联系起来。可以逐渐养成这样的习惯:先预想声音会怎样变化,再听变化是否出现,最后决定它是否适合这段音乐。
给第二个声部一个跟随的节拍
在第一个循环下方加入第二个循环:
live_loop :answer do
sync :pulse
play :e4, release: 0.15, amp: 0.2
end
这里的 play :e4 触发第四八度的 E 音,release 控制声音的渐弱消退。[3] 两个名称各异的循环可以同时运行。:pulse 每轮都会自动发出一个与自身同名的 cue(同步信号)。[2]
其中起同步作用的是 sync :pulse。它会等待下一个名称匹配的信号,将自身的逻辑时间设为该信号事件的逻辑时间,再继续执行。因此,带音高的声部即使启动较晚,也会在之后的某一次脉冲到来时加入。给两个独立循环设定相同的等待时长,只能确定它们重复的频率相同;起点能否对齐,还要看各自何时启动。[6]
这种依赖关系也能听出来。脉冲循环一旦停止发出信号,:answer 就会等待。先停止运行,再给脉冲循环改名,同时保留 sync :pulse 原样,然后重新运行:此时应答声部便失去了跟随的信号。遇到静音时,除了合成器或输出设备故障,还应考虑另一种情况:声部正在按指令等待。[6]
第一次准备演出程序,先保留这一组清楚的时间关系。听着鼓点加入带音高的应答声部,随后只改它的音符,让脉冲继续保持原样。以后的编排可以有更复杂的配合;当一次实验让人摸不清头绪时,这两个循环就是一组容易理解、可以回到的起点。
迁移时,把声音文件一并带上
导入的乐句是一段录音,有自己的时长。触发采样后,代码会继续执行,下一个事件何时发生仍由代码决定,采样的播放结束时间另算。[5]
设为 rate: 0.5 时,采样的播放时长变成两倍,音高降低一个八度。如果触发间隔保持原样,相邻两次播放有时会重叠。选择这种声音质地,与放慢整首作品的速度,是两件不同的事。[5]
桌面版可以按文件路径读取采样。[5] 复制代码缓冲区的内容后,还要单独带上它引用的录音。把这些文件放进项目文件夹,在演出所用的电脑上核对路径,并逐一试听。即使其余代码正常运行,只要缺少一个声音文件,这次排练就应判为未通过。
迁移之前,先选定运行环境。创始人 Sam Aaron 在浏览器版发布公告中列明,该版本尚未支持外部采样;他也指出,桌面应用对音频设备和同步功能的支持更强。[7] 项目当前的版本对照同样将低延迟音频接口访问、OSC 和 Ableton Link 列为桌面应用的功能。[1] 用内置声音在浏览器中排练,是一个合适的起点;如果整套演出依赖录音或外接设备,就要逐项核实所选环境是否具备相应能力。
也要练习怎样回到原来的声音
增加复杂度前,先保存一个能正常运行的版本。然后排练一小段流程:建立脉冲,加入应答声部,改变音高,再恢复先前的版本。试着从保存的代码重新启动,让演出能够从明确的初始状态开始,摆脱实验过程中偶然留下的状态。
这是一套排练建议,与项目基准测试有别。它要检验的是,演奏者对整套程序的理解是否足以让自己有意识地回到先前的声音。工作坊可以先在每台电脑上运行同一个小例子,等所有人都能播放、修改内置声音后,再加入各自的录音。
Aaron 的演出指导把练习与设备设置都纳入了学习这件乐器的过程,其中就包括反复连接硬件、让第一声响起来。[4] 准备公开演出时,要用计划登台使用的输出设备排练。若要把 Sonic Pi 接入一套规模更大、需要同步的设备系统,还须专门留出时间测试连接与配合;这项双循环练习能检验的范围,仅限于练习本身,舞台上其余部分仍需逐项验证。
Stack Overflow 在 2020 年的人物报道中,将 Aaron 的工作同时放在编程教育与音乐表演中考察。[8] 这两者的结合,也提示了一条采用 Sonic Pi 的实用标准:每完成一个技术步骤,演奏者都应多出一种听得见的选择。第一个里程碑,是你能预先听见即将到来的变化,让它如期响起,同时还留有余力,判断音乐接下来需要什么。
来源
- Sonic Pi 官方网站——桌面版与浏览器版的可用情况、开源属性,以及连接功能对照;核查于 2026 年 10 月 29 日。
- Sonic Pi 教程,“Live Coding”(现场编程),第 9.2–9.3 节——替换运行中的循环、循环标识、并发声部与自动发出的同步信号。
- Sonic Pi 教程,“Synths”(合成器),第 2.1 和 2.4 节——音名、八度与释音包络。
- Sam Aaron,Sonic Pi 教程附录“MagPi Articles”(MagPi 文章)——速度控制,以及有关现场编程演出与练习的章节。
- Sonic Pi 教程,“Samples”(采样),第 3.1–3.3 和 3.6 节——触发、播放速率、时长与外部文件路径。
- Sonic Pi 教程,“Programming Structures”(程序结构),第 5.7 节——cue/sync 的时间处理、等待未来事件,以及同步信号名称的匹配。
- Sam Aaron,“Sonic Pi on Web”(网页版 Sonic Pi)——创始人对桌面版与浏览器版兼容性及外部采样限制的说明;核查于 2026 年 10 月 29 日。
- Stack Overflow,“The live coding language that lets you be an actual rock star”(让你成为真正摇滚明星的现场编程语言),2020 年 1 月 29 日——独立人物报道与访谈,串联项目的教育起源与演出实践。
- Sonic Pi,“Learn”(学习)——确认 Sam Aaron 在舞台上现场编程这张照片的官方来源。