四泳道并行全流水线(资产→开发→测试→玩家迭代闭环),双双 R1-R2 连续达标裁定可交付: - cipher《暗码》223 断言:摩尔斯解码嵌叙事/四结局矩阵/暴露度逐NIGHT验算/三层兜底;R2 三修(链首标记音/预警震/结局计数句+4句补录)4/4 全满分档 - teahouse《深夜茶馆》205 断言:泡茶时机窗/经济逐晚对账/多晚弧线;连续 2 轮 4/4 愿意玩 P0=0 - keeper《守塔人》257 断言:时空签名教学-兑现/插叙触发回返/trust×truth 档位/4结局;R2 F1/F2 坐实(震型豁免/首播跳句锁)4/4 - bridge《星环舰长》336 断言:巡检节奏逐毫秒/危机×系统态矩阵/仲裁7场景/忠诚差分/评级验算;R1 当场修F1-F4、R2 F5 菜单顺延保护 4/4 上行 公共:index.html 四卡片+profiles.js 四桶+check_all_assets 登记(预接线)、00-program 八款进度账收账、 gen_voice_dual 四游戏段、README/HANDOVER 阵容更新(11 款)、voice_text.json 四游戏键、mureka 台账(累计$1.26/$2.00) 验证:四游戏 playtest 223/205/257/336 全绿 + guide 122/122 + 全项目 15 游戏资产终检绿 遗留:keeper 三代人声滤波人耳试听(最高优先,ASR 对滤波句失明)、bridge 音频 32MB 超软指引 2MB(压缩候选)
36 lines
1.9 KiB
Bash
36 lines
1.9 KiB
Bash
#!/bin/bash
|
||
# 《守塔人》BGM 后处理(批次 4):Mureka flac 候选 -> 90s 无缝循环 ogg+m4a。
|
||
# 用法: bash web/keeper/gen/gen_bgm.sh (flac 原件在 tools/mureka_out/keeper-*/,不入库)
|
||
#
|
||
# 工艺(tools/mureka_log.md 批次 1/2 同款):
|
||
# 首个强 onset 起点(silenceremove,-35dB 门限)→ 93s 裁剪 → 首尾 3s acrossfade(tri)
|
||
# 无缝循环 → loudnorm I=-20/TP=-2/LRA=11(21-keeper.md §5.1 三首主题曲同档)
|
||
# → aresample 44.1kHz → ogg libvorbis q3 + m4a aac 128k,落 web/keeper/audio/bgm/。
|
||
# 任务 id / 选用 choice / 成本见 tools/mureka_log.md「2026-09-14 批次 4」节;
|
||
# 无节奏关键曲目(氛围叙事曲),不需要 bpm_precise(radio/abyss/detective 先例)。
|
||
set -euo pipefail
|
||
cd /home/xsl/SoundGame
|
||
|
||
TMP=tools/bgm_post_wav/keeper # 中间 wav(不入库,可由本脚本复现)
|
||
DST=web/keeper/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 者(拿不准原则):storm=候选0(177.4s) memory=候选0(166.5s)
|
||
# dawn=候选1(185.7s vs 212.2s),详见 tools/mureka_log.md
|
||
post tools/mureka_out/keeper-storm/160725024833537_0.flac storm -20
|
||
post tools/mureka_out/keeper-memory/160725167505410_0.flac memory -20
|
||
post tools/mureka_out/keeper-dawn/160725310046209_1.flac dawn -20
|
||
|
||
echo "== keeper bgm done: $(ls "$DST" | wc -l) files =="
|