sonic_pi_tutorial

第 7 章:合成器与音色——用频谱直觉在 Sonic Pi 里调音

1. 开篇:告别“红白机”音色

为什么别人写的 Sonic Pi 代码听起来像电影配乐,而你的代码听起来像 80 年代的 8-bit 游戏机?

根本原因不在于和弦有多高级,而在于声音的物理质感。 在声学物理中,一个迷人的声音通常包含以下特征:

  1. 复杂的谐波:不是单一的蜂鸣,而是像木头、金属或琴弦一样的复合振动。
  2. 动态的演变:音量和亮度随时间在“呼吸”,而不是死板的开关。
  3. 瑕疵与随机:真实乐器总有微妙音高偏移和噪音,这恰恰是“人味”的来源。

本章不讲复杂的信号处理数学公式,而是提供一套基于直觉的调音法则。我们将学习如何通过 use_synth 选择材质,通过 ADSR 雕刻形状,通过 cutoffres 模拟共振峰,最终为你的古风旋律或史诗配乐注入灵魂。


2. 振荡器(Oscillator):选择声音的“材质”

在 Sonic Pi 中,use_synth :name 本质上是在选择波形(Waveform)。波形决定了声音的基频泛音(Harmonics)的比例。

你可以把波形想象成雕塑的原材料

2.1 四大基础波形与风格映射

波形 (Waveform)     | 频谱特征 (Spectrum/Harmonics)      | 听感与风格应用
--------------------|-----------------------------------|---------------------------------------
正弦波 (Sine)       |  |                                | 【水、光、纯净】
:sine               |  1 (仅基频)                        | 听:无质感、圆润、甚至由于太纯而显得“假”。
                    |                                   | 用法:Sub-Bass (超低频垫底)、模拟口哨、
                    |                                   |       叠加在其他声音上增加“厚度”。
--------------------|-----------------------------------|---------------------------------------
三角波 (Triangle)   |  |     .     .     .              | 【木头、竹子、温润】
:tri                |  1     3     5     7              | 听感:比正弦波多一点“鼻音”,柔和但不刺耳。
                    | (奇数泛音,快速衰减)                | 用法:久石让式的长笛、马林巴、
                    |                                   |       柔和的类比合成器主奏 (Lead)。
--------------------|-----------------------------------|---------------------------------------
方波/脉冲 (Square)  |  |     |     |     |              | 【簧片、空心管、游戏感】
:pulse / :square    |  1     3     5     7              | 听感:中空、像单簧管/双簧管、有明显的“嗡嗡”声。
                    | (奇数泛音,衰减较慢)                | 用法:古风里的“笙/管”类音色、
                    |                                   |       调整脉宽可做 8-bit 复古音效。
--------------------|-----------------------------------|---------------------------------------
锯齿波 (Sawtooth)   |  |  |  |  |  |  |  |              | 【弦乐、铜管、电流、能量】
:saw / :dsaw        |  1  2  3  4  5  6  7  8           | 听感:极其明亮、刺耳、占据整个频谱。
                    | (包含所有整数泛音)                  | 用法:Hans Zimmer 式的史诗低音 (Braaam)、
                    |                                   |       模拟小提琴/大提琴组、Trance 舞曲。

💡 专家提示::dsaw (Detuned Saw) 的魔力 Hans Zimmer 的声音之所以厚重,是因为他很少使用单一个 :saw:dsaw 模拟了两个音高有微小差异的锯齿波叠加,产生了相位抵消与增强(Phasing),听起来自带天然的立体声宽度和合唱感。


3. 包络(ADSR):雕刻时间的“形状”

如果波形是材质,ADSR 就是你如何演奏它。 它是 play 命令中 attack, decay, sustain, release 四个参数的物理意义。

3.1 声音的生命周期图解

音量 (Amplitude)
  ^
  |     /\ (Peak Level)
  |    /  \
  |   /    \ <--- Decay (衰减): 从最大音量落到保持音量的时间
  |  /      \_______________________
  | /       |                       |
  |/        | <--- Sustain (保持):  |
  +         |      按住琴键时的音量   | \
  | Attack  |      (注意是音量级)    |  \ <--- Release (释音):
  | (起音)  |                       |   \     松手后声音消失的时间
  |_________|_______________________|____\_____> 时间

3.2 不同乐器的 ADSR 黄金法则

在 Sonic Pi 中,这四个参数决定了你是在模仿古筝还是大提琴。

A. 弹拨/敲击类(古筝、琵琶、钢琴、钟)

这类乐器的特点是:能量在瞬间爆发,然后不可逆地衰减。没有“保持”阶段。

B. 拉弦/吹管类(二胡、笛子、小提琴、Pad)

这类乐器需要物理激发时间(弓摩擦弦、气流建立驻波)。

C. Hans Zimmer 式短促打击(Spiccato)

虽然是弦乐,但作为节奏使用时,需要强的颗粒感。


4. 滤波器与共振:重塑音色与共振峰

这是从“物理波形”通向“真实乐器”的关键一步。 Filter (滤波器) = 减法(切掉不需要的频率)。 Resonance (共振/Q值) = 强调(在切断点附近产生尖峰)。

在 Sonic Pi 中,cutoff: 控制切哪里,res: 控制切口的锋利度。

4.1 cutoff 的情绪色彩

4.2 res 的魔法:制造“材质”与“元音”

res 过 0.7 时,滤波器就不再只是“变暗”,而是开始啸叫。这种特定的频率凸起,非常像人类口腔改变形状产生元音(a, o, e)的原理,即共振峰(Formant)


5. 调制与随机性:注入生命力

真实世界没有两个完全相同的音符。电脑合成之所以“假”,是因为太完美。

5.1 随机化 (Randomization)

不要写死数值,给参数一个范围

5.2 颤音与调制 (LFO)

Sonic Pi 的许多 Synth (如 :prophet, :blade) 自带 LFO 参数。


6. 进阶音色配方 (Recipes)

这里提供三个针对本书目标风格的“预制菜”。

配方 A:华语古风“空灵” Pad

目标:营造云雾缭绕的背景,不抢戏腔。

配方 B:久石让式“纯净” Lead

目标:像《千与千寻》中那种温暖、甚至带点木头味的旋律音色。

配方 C:Zimmer 式“铜管脉冲” (Braaam)

目标:电影预告片里那种震撼低音。


7. 频谱掩蔽:为人声“让路”

这是本书最重要的声学概念之一。 频谱掩蔽 (Masking):如果两个声音频率相近且音量相当,人耳只能听到较响的那个,较弱的会被“吃掉”。


8. 本章小结

  1. 材质 (Waveform):古风多用 :tri/:pulse (木/管),Zimmer 多用 :saw/:dsaw (弦/铜)。
  2. 形态 (ADSR)attack 决定是“击打”还是“拉奏”;release 决定空间感。
  3. 明暗 (Filter):低 cutoff 做背景,高 cutoff 做主角。
  4. 共振 (Resonance):高 res 可以模拟物理腔体共鸣和风声。
  5. 不完美即真实:永远使用 rrand 给音量、音色和时间微小的随机性。

9. 练习题

基础题 (50%)

练习 7.1:看图填空 (ADSR)
你想模拟一个“古寺敲钟”的声音。钟声的物理特性是:撞击极快,没有延音阶段(手不按着也响),余音极长。 请填空: `play :c3, attack: ___, decay: ___, sustain: ___, release: ___` * A. `attack: 2, sustain: 2, release: 0.1` * B. `attack: 0.01, sustain: 0, decay: 0.1, release: 4` * C. `attack: 0.1, sustain: 1, release: 1` **提示:** 钟声是“一次性激发”的能量。
参考答案 **选 B**。 * `attack: 0.01`: 撞击瞬间。 * `sustain: 0`: 钟声没有“保持平稳”的阶段,撞击后立即开始变弱。 * `release: 4`: 金属的余振非常长。


练习 7.2:为“戏腔”腾出空间
你正在写一段高潮副歌,戏腔人声已经录好。你的背景合成器 (Synth Pad) 太亮了,导致人声听不清楚。 除了调小音量 (`amp`),你应该调整哪个参数来让背景音色“变暗”、“退后”? **提示:** 哪个参数控制高频的通过量?
参考答案 降低 **`cutoff`** (截止频率)。例如从 110 降到 70-80。这会切除背景的高频泛音,把清晰度留给人声


练习 7.3:风格配对
将下列 Sonic Pi 合成器与对应的最佳用途连线: 1. `:dsaw` (Detuned Saw) 2. `:hollow` 3. `:chipbass` a. 8-bit 怀旧游戏或古风快节奏段落的底盘 b. Hans Zimmer 式的宽广弦乐/铜管墙 c. 古风/仙侠剧中的空灵背景氛围
参考答案 1 - b (Zimmer 宽广厚度) 2 - c (空灵氛围) 3 - a (8-bit 游戏/硬朗低音)

挑战题 (50%)

练习 7.4:制作“呼吸感”的 Pad (自动化参数)
**目标**:写一个持续 4 拍的长音,要求它的亮度 (`cutoff`) 在这 4 拍内先变亮再变暗,模拟人在呼吸。 **提示**: 1. `play` 命令发出声音后,会返回一个节点对象 (node)。 2. 使用 `control` 命令控制这个节点。 3. `cutoff_slide` 参数控制变化的平滑时间。
参考答案代码 ```ruby # 这是一个非常经典的合成器技巧:Filter Sweep s = play :c4, sustain: 4, release: 1, cutoff: 60, cutoff_slide: 2, amp: 0.5 control s, cutoff: 110 # 声音发出后,命令它滑向 110 sleep 2 control s, cutoff: 60 # 2秒后,命令它滑回 60 sleep 2 ```


练习 7.5:物理建模——风吹竹林
**目标**:仅使用噪音 (`:bnoise` 或 `:noise`) 和滤波器,模拟大风吹过竹林的声音。 **要求**: 1. 声音要有高低起伏(风速变化)。 2. 声音要有“管状”的啸叫感(高 Resonance)。
参考答案代码 ```ruby live_loop :bamboo_wind do # 使用 bnoise (带通噪音) 配合极高的 res (0.9以上) # rrand 用于模拟风的无常 use_synth :bnoise play :c4, attack: 2, release: 2, cutoff: rrand(70, 90), # 风的强弱改变音调 res: 0.95, # 极高共模拟竹管空腔 amp: 0.3 sleep 2 end ```

10. 常见陷阱与错误 (Gotchas)

1. 爆音与红灯 (Clipping)

2. 低频浑浊 (Muddy Mix)

3. “机关枪”效应 (Machine Gun Effect)

4. 混响滥用