你接到一个 90 秒的概念视频配乐需求。 画面描述:
镜头从云端俯瞰山峦(0-15s),穿过云层看到一位戏曲装扮的角色在空旷的现代舞台上独舞(15-45s),动作逐渐激烈,背景出现粒子特效与机械结构(45-75s),最后画面定格在角色的眼部特写,瞬间黑屏(75-90s)。
音乐关键词:
技术目标:
sleep,而是用“指挥官”模式控制段落。control 功能绘制音量与滤波器的包络曲线。在 90 秒的项目中,如果还在用 sleep 90 这种写法,调试将是噩梦。我们采用状态驱动(State-Driven)的架构。
我们将全曲划分为四个状态(State),存储在全局变量 :stage 中:
| 时间 | 状态名 (:stage) |
能量级 | 配器重点 |
|---|---|---|---|
| 00-16s | :intro |
10% | 氛围 Pad,风声,远处的铃声 |
| 16-48s | :verse |
40% | 戏腔进场,筝流动织体,无打击乐 |
| 48-80s | :climax |
90% | 低音脉冲,重型弦乐,Epic Drums |
| 80-90s | :outro |
5% | 突然抽空,只剩人声尾音与反向混响 |
这是一个不发声的 live_loop,它的唯一任务是“数拍子”并切换状态。
Rule of Thumb (工程法则): 所有的乐器 Loop 都应该“监听”
:stage变量。如果当前状态不需要它,它应该执行stop或者sleep 1(低功耗待机),而不是被注释掉。
古风的“仙气”和 Hans Zimmer 的“史诗感”都依赖于中低频的铺底(Pad)。
我们使用 D Minor 调。为了古风感,我们尽量避免三全音(Tritone)。
推荐的和声进行(以 8 小节为一个循环):
Dm -> Bb -> F -> C/E
(i -> VI -> III -> VII)
这是一个非常经典的“英雄史诗”走向,既有东方悲怆(Dm, Bb),又有西方的辉煌(F, C)。
不要直接用 :prophet 或 :saw 发一个长音就完了。我们需要它“动”起来。
:dsaw (Detuned Saw),低通滤波器 cutoff: 70,提供厚度。:hollow 或 :blade,高通滤波器 hpf: 80,加上极慢的 amp LFO(低频振荡器)。关键参数自动化: 在
:intro阶段,cutoff 设为 60(暗); 随着进入:climax,利用control将 cutoff 在 16 拍内平滑升至 100(亮)。这模拟了云层散开的光照感。
在 :verse 阶段,我们需要一种乐器来填补人声的空隙。久石让常用钢琴分解,古风常用古筝。
古风不使用半音。我们将音符限制在 scale(:d4, :minor_pentatonic) 中(D, F, G, A, C)。
choose),那样会很乱。
要使用受限随机:下一个音只能是当前音的“邻居”(+1 或 -1 索引)。
这样写出来的旋律像水流一样连贯,没有突兀的大跳。:pluck 或 :kalimba。sleep 0.25,而是 sleep [0.24, 0.26].choose。amp: rrand(0.6, 0.9)。echo 效果器,phase: 0.75(附点八分音符),这会制造出一种“大珠小珠落玉盘”的错落感。假设你有一个名为 opera_dry 的干声采样。我们需要把它处理得既有传统戏曲的“穿透力”,又有电子音乐的“融合感”。
戏曲唱腔的特点是中高频共振峰(2kHz - 4kHz)非常突出,而低频(200Hz以下)较少。
hpf: 200 切掉胸腔共鸣的低频,让声音变“薄”且“高”。
使用 :bpf (带通滤波器) 在 3000Hz 附近做一点微弱的提升,增加“金属光泽”。pan: 0(正中),amp: 1.2(突出)。with_fx 实现)。
reverb, room: 100, mix: 0.6(巨大的远景)。ping_pong, phase: 0.5(左右摆动的回声)。Gotcha: 这一层必须在
climax阶段使用侧链压缩(Sidechain)。当底鼓(Kick)响的时候,混响层要稍微压低一点,否则整个声场会变成一锅粥。
Zimmer 风格的精髓不在于“吵”,而在于持续不断的 16 分音符驱力(Ostinato)。
我们不使用 :bd_haus 这种动感的舞曲底鼓,而是使用 Taiko(太鼓) 或 Orchestral Percussion。
如果 Sonic Pi 自带采样不够,可以用 :tom_lo_hard 并调低 rate。
这是核心技巧。
:tb303 或 :tech_saws。cutoff 必须极低(例如 50),只有一点点“噗噗”声。
利用 control 随着小节推进,慢慢打开 cutoff 和 resonance(共振)。
这种“慢慢逼近”的感觉是营造紧张感的关键。让音乐“活”起来的不是音符,是参数的变化。
在 :verse 转入 :climax 的最后 4 小节(即 44s-48s):
:noise 音色,attack: 4, release: 0。slide 参数让音高上滑 1-2 个八度。在 89 秒处:
stop 所有的鼓和低音 Loop。为了让你理解架构,这里提供核心逻辑的代码骨架(不可直接运行,需填充具体音符):
# 1. 全局配置
use_bpm 84
set :stage, :intro # 初始状态
# 2. 指挥官 Loop (负责结构)
live_loop :conductor do
# 0-16s Intro
set :stage, :intro
sleep 16 * 4
# 16-48s Verse
set :stage, :verse
sleep 32 * 4
# 48-80s Climax
set :stage, :climax
sleep 32 * 4
# 80-90s Outro
set :stage, :outro
sleep 10 * 4
stop # 结束全曲
end
# 3. 乐器层:Pad (监听状态)
live_loop :strings_pad do
current_stage = get[:stage]
case current_stage
when :intro
# 薄薄的铺底
use_synth :hollow
play_chord [:d3, :f3, :a3], release: 8, amp: 0.5
sleep 8
when :verse, :climax
# 厚重的铺底
use_synth :dsaw
# Climax 时更亮,Verse 时更暗
brightness = (current_stage == :climax) ? 90 : 60
play_chord [:d2, :d3, :f3, :a3, :c4], release: 4, cutoff: brightness, amp: 0.8
sleep 4
when :outro
stop
end
end
# 4. 乐器层:脉冲 (只在 Climax 出现)
live_loop :zimmer_pulse do
sync :conductor # 与指挥官对齐
if get[:stage] == :climax
use_synth :tb303
# 16分音符推进
4.times do
play :d1, release: 0.2, cutoff: rrand(60, 80), amp: 0.7
sleep 0.25
end
else
sleep 1
end
end
:stage 状态机是管理长篇结构的最佳工具。:intro (只有鼓), :main (鼓+贝斯), :break (静音) 三个状态,每 4 小节自动切换一次。
:pluck 音色,编写一个函数,输入一个根音,就能自动演奏出该根音对应的五声音阶上行琶音(如 D, F, G, A)。
:ambi_choir(模拟人声)和 :piano 两种音色。制作一段 90 秒的配乐,要求表现出“从孤独到宏大”的过程。
:noise 或 :pink_noise 合成器,配合滤波器和声像移动(Pan),模拟出“山谷中的风声”。
:climax 阶段,声音出现噼里啪啦的杂音。live_loop 同时运行,或者 Reverb 效果器嵌套层数太多。with_fx :reverb。在最外层包裹一个主 Reverb。sleep 时间(如 sleep 0.33 而不是 sleep 1.0/3),或者没有使用 sync。sync :conductor(或者是鼓组 Loop)。确保所有人都在同一个小节的第一拍起跑。amp,微调 cutoff,甚至微调 sleep 的时间(Swing 感)。古风的韵味在于“不精确”。