12 · 音效設計與混音
業主指示(第一輪):「有動作的地方就加一點音效,每一處都加。」音效設計遵循 earshot 記錄的動作設計實務(github.com/Leonxlnx/earshot,MIT;docs/motion-sfx-techniques.md,docs/SFX.md);我們在 recipe/tools/sound.py 中的程式碼為自有,不使用任何樣本。
分層
| 分層 | 電平 | 備註 |
|---|---|---|
| 人聲 | −16 LUFS(語音參考 ≈ −19 dBFS,400 ms RMS) | 佔據 93–98% 的播放時間 |
| 音樂背景 | 低於人聲 18 LU,無閃避(ducking) | 原創,C大調(C–Am–F–G,100 BPM):馬林巴、撥弦貝斯、合成墊、大鼓、沙鈴。在再現副歌時降至僅合成墊(musicDrop: [start, end]) |
| 擬音 | 約低於人聲 15 dB(滴答約 21 dB,鳥鳴約 22 dB) | 每個可見動作都有一個聲音 |
| 強調音效 | 約低於人聲 9 dB | 僅限故事節拍,最多每分鐘約 20 個,並在最大打擊前 0.35 秒加入 7 dB 的音樂衰減(stop: true) |
| 母帶 | −14 LUFS 集成,真實峰值 −1.5 dBTP | 兩次通過線性 loudnorm |
效果(共 24 種,位於 sound.py)
| 類型 | 分級 | 使用於 | 設計 |
|---|---|---|---|
whoosh(大動作使用 long: true) | 擬音 | 進入新場景、大鏡頭移動 | 粉紅噪聲通過三個移動頻帶(1 : 1.6 : 2.5)跟隨速度;聲像掃掠;峰值落在提示點 |
swish | 擬音 | 手臂、書本、手勢、投擲 | 細亮輕拂,0.2 秒 |
pop | 擬音 | 標題出現、物體上的臉部交換、小物件抵達 | 音調上升至關鍵音的短暫鳴響,滴答,尾音 |
tick | 擬音 | 計數器的每一步 | 細微明亮敲擊,帶有變化的音高(輪播) |
tap | 擬音 | 小物體著陸、計數器穩定 | 阻尼木塊聲 |
flip | 擬音 | 日曆頁面 | 紙張輕拂與穩定聲 |
slap | 擬音 | 通知或紙張拍打 | 寬頻拍擊與顫動 |
creak(dur) | 擬音 | 門與鉸鏈 | 透過木頭共振的黏滑脈衝 |
click | 擬音 | 開關、指示燈開啟 | 按壓與鎖定,間隔 35 毫秒 |
light | 擬音 | 指示燈亮起 | 柔和嗡鳴與關鍵音的小鈴聲 |
chirp | 擬音 | 戶外生物(節制使用) | 兩個小鳥鳴叫 |
rattle | 擬音 | 樹葉、顫抖 | 以搖晃速率變化的濾波噪聲爆發 |
slide | 擬音 | 滑動或側移 | 輕微吱嘎滑行 |
stretch(dur) | 擬音 | 橡膠、繩索繃緊、表面彎曲 | 上升的粗糙吱嘎聲 |
whir(dur) | 擬音 | 磁帶用盡、機械轉動 | 棘輪聲疊加顫動 |
chalk(dur) | 擬音 | 在黑板書寫或劃掉 | 被筆劃切割的粗糙頻帶 |
roll(dur) | 擬音 | 滾動的物體 | 滾動速率的低沈轟鳴加上表面滴答聲 |
thunk | 強調音效 | 軟物體著陸(草地上的蘋果) | 沈悶落體加上低通瞬態 |
thud | 強調音效 | 重物穩定 | 低頻從 90 降至 42 Hz,帶有身軀與瞬態 |
slam | 強調音效 | 關門 | 木質身軀、破裂、鎖定加上石拱房間的尾音 |
snip | 強調音效 | 剪裁 | 兩個刀片夾擊加上金屬噌聲 |
boing | 強調音效 | 彈簧、彈跳床 | 顫動下降音調 |
twang | 強調音效 | 拉緊的弦撥彈 | 和聲泛音帶有音高顫動 |
ding | 強調音效 | 數字落下、回報 | C6 鐘聲帶有非和聲泛音 |
要添加效果:編寫 fx_<name>(rng, …) 返回單位峰值的單聲道或立體聲陣列(一起達到峰值的分層,經過分頻避免互相干擾;對任何移動物件使用移動濾波器;音調部分使用 C 大調;無前置靜音;結尾有短淡出),將其加入 FX、REL 以及 ACCENT 或擬音集合中,如果需要 dur 參數則加入 SUSTAINED。
線索(位於 film.mjs)
{ t: W(17) - LEAD, type: 'slam', gain: 1, stop: true } // 強調音效,前面有音樂衰減
{ t: W(53) - 0.05, type: 'whir', gain: 0.8, dur: 1.4 } // 持續擬音
...changes(a, b, value, 0.06).map(t => ({ t, type: 'tick', gain: 0.7 })) // 計數器每一步的滴答
t是聲音攻擊點落下的時間(whoosh:峰值落下的時間);混音器會提前 10 毫秒觸發,絕不晚於畫面。gain在該類型的電平內調整(0.5 ≈ −6 dB)。每個線索會獲得 ±1.2 dB 的隨機變化及其獨立的噪聲種子,因此重複時聽起來絕不相同。- 根據分鏡表的聲音欄逐鏡頭編寫線索。每個可見動作都有一個聲音;每個強調音效都位於故事節拍上。
電平是測量出來的,不是猜的
sound.py 將人聲調平至 −16 LUFS,測量語音參考(說話時的中位數 400 ms RMS),並將每個效果的最響亮 400 ms 設定為距離該參考 REL[type] dB。在第一輪 v3 中,這使強調音效的中位數為 −9 dB,擬音為 −15 dB(相對於人聲)。使用以下指令檢查任何混音:
python -I recipe/tools/sfx-levels.py <outDir> <outDir>/cue-sheet.txt
輸出
stem-voice.wav、stem-music.wav、stem-sfx.wav、mix.wav(已母帶處理)、cue-sheet.txt(每個放置的效果及其分級和電平),以及最終的 MP4(H.264 從靜音渲染複製,AAC 192 kb/s)。
授權
此處所有內容均為合成生成。如果業主提供音樂曲目,則必須持有其授權;將其設定為 −34 LUFS 的背景音樂,無閃避,並保留效果。