- abyss:game.js 242 断言全绿(剧本A-F六路径/氧气门三形态/sonarGate仲裁/结算死窗/双轨看门狗/radio 8项修复继承);资产 148句+11key变体(电台滤波带内能量47-62%→69-80%) - detective:game.js 265 断言真资产下全绿(矩阵不变式独立重算/指证全路径/评级12组注入/VERDICT死窗/二周目变体);真资产复跑回炉3处实现修复(无进展轨墙钟化/菜单暂停记账/停止播报真停声——mock时长掩盖的正确性bug) - 资产:TTS 539条×2格式、Mureka 7首 $0.21(累计$1.08/$2.00)、SYN12+SA3 19件(QC抓出1例AAC过冲并修复)、封面×2、check_all_assets 10游戏全绿(abyss 298/298、detective 279/279) - 平台接线:大厅双卡片、BUCKETS 增 abyss/detective 桶(H4 断言更新 10 游戏)、voice_text.json 10游戏991句 - 回归:14 套件全绿(10 playtest+guide+engine-voice+engine-input+api-smoke 12/12) - 设计偏差登记:abyss 7条/detective 9条(全为设计内部冲突按承诺清单/归因真话律取优)
38 lines
2.1 KiB
Bash
38 lines
2.1 KiB
Bash
#!/bin/bash
|
||
# 《深海回音》BGM 后处理(批次 2):Mureka flac 候选 -> 90s 无缝循环 ogg+m4a。
|
||
# 用法: bash web/abyss/gen/gen_bgm.sh (flac 原件在 tools/mureka_out/,不入库)
|
||
#
|
||
# 工艺(tools/mureka_log.md 批次 1 同款):
|
||
# 首个强 onset 起点(silenceremove,-35dB 门限)→ 93s 裁剪 → 首尾 3s acrossfade(tri)
|
||
# 无缝循环 → loudnorm I=-20/TP=-2/LRA=11 → aresample 44.1kHz
|
||
# → ogg libvorbis q3 + m4a aac 128k,落 web/abyss/audio/bgm/。
|
||
# 响度:4 首全部 I=-20(17-abyss.md §5.1 未给 menu 独立项——MENU 复用 deck 低响度
|
||
# 淡入 500ms 由游戏层 gain 控制,§2.1;radio menu -24 是独立 menu pad 曲的先例,不适用)。
|
||
# Mureka 任务 id / 选用 choice / 成本见 tools/mureka_log.md「批次 2」节;无节奏关键曲目,
|
||
# 不需要 bpm_precise(dive 的 sonar-like pulse 仅为 prompt 特征词)。
|
||
set -euo pipefail
|
||
cd /home/xsl/SoundGame
|
||
|
||
TMP=tools/bgm_post_wav/abyss # 中间 wav(不入库,可由本脚本复现)
|
||
DST=web/abyss/audio/bgm
|
||
mkdir -p "$TMP" "$DST"
|
||
|
||
post() { # post <flac> <track> <LUFS>
|
||
local src="$1" track="$2" lufs="$3"
|
||
local tmp="$TMP/$track.wav"
|
||
ffmpeg -y -v error -i "$src" -af \
|
||
"silenceremove=start_periods=1:start_threshold=-35dB:start_silence=0.02,atrim=end=93,asetpts=PTS-STARTPTS,asplit[a][b];[b]atrim=start=90,asetpts=PTS-STARTPTS[t];[a][t]acrossfade=d=3:c1=tri:c2=tri,loudnorm=I=${lufs}:TP=-2:LRA=11,aresample=44100" \
|
||
"$tmp"
|
||
ffmpeg -y -v error -i "$tmp" -c:a libvorbis -q:a 3 "$DST/$track.ogg"
|
||
ffmpeg -y -v error -i "$tmp" -c:a aac -b:a 128k "$DST/$track.m4a"
|
||
echo "$track <- $src (I=${lufs})"
|
||
}
|
||
|
||
# 选用候选 = 更接近 90s 的那支(拿不准原则),详见 mureka_log.md 批次 2 节
|
||
post tools/mureka_out/abyss-deck/160001236664321_0.flac deck -20 # 192.1s
|
||
post tools/mureka_out/abyss-dive/160001429798913_0.flac dive -20 # 179.8s
|
||
post tools/mureka_out/abyss-comms/160001576402945_1.flac comms -20 # 168.7s
|
||
post tools/mureka_out/abyss-ending/160001717043203_0.flac ending -20 # 191.4s
|
||
|
||
echo "== abyss bgm done: $(ls "$DST" | wc -l) files =="
|