# KMC BGM 设计 × YuE2 能力利用研究（2026-09-15，探针实证版）

## 研究问题
YuE2 全量能力（abc 条件注入 / mode=melody / SheetSage2 转录）入库 KAP 后，KMC BGM 设计层（P12b spotting session）应如何利用。

## 现状盘点（实读 bgm_spotting.py）

| 现役层 | 机制 | YuE2 参与度 |
|---|---|---|
| 器乐级联 | SA3 短 cue → m3 [Inst] → 库匹配 → drone | **零**（YuE2 只在特殊位人声歌） |
| 人声 cue 位 | `vocal_bgm{style,lyrics,lang}` 提名 → 语音窗硬守卫 → zh→yue2 with_gate | 已用（文生歌面） |
| beat 卡点 | beat_grid 拍网格分析 → 入点 ±nudge | 对 BGM 来源无感 |
| 拼段 | crossfade stitch + 首尾帧链 | 无谱面概念 |

## 探针实证（今晚双探针）

### P1 — ABC 器乐 BGM 可行性 ✅
- 方法：取 /abc 出谱 → Vocal 声部置全休止（Z|）保留 Ins 声部旋律+和弦 → `/generate` abc 注入 + style 器乐描述
- 结果：60.00s 整 cinematic underscore 出曲（不是唱段，是带结构推进的器乐 BGM）
- 结论：**ABC 条件注入对器乐 BGM 有效**——YuE2 能在给定旋律/和声骨架上铺 BGM

### P2 — ABC 谱面 BPM vs 实测拍网格 ⚠️ 部分有效
- 谱面 Q:1/4=71 → beat_grid 实测 **70.0 BPM**（误差 1.4%）
- 但 grid_reliable=False（残差 87.5ms >> 15ms 机器鼓门限）
- 判读：**YuE2 出曲是「有节奏骨架但非机器鼓点」的演奏性表演**（人味 vibrato/rubato），恰是 BGM 想要的质感；对卡点的影响=谱面 BPM 可做卡点先验（初值/半倍双倍消歧），但不能替代实测网格

## 定谳：三个可落地方向（按 ROI 排序）

### 方向 A — 跨 cue 动机一致性（谱面复用）⭐⭐⭐ 最高价值
**痛点**：现役级联每 cue 独立生成，全片 BGM 无音乐母题（motif）连贯性——场景切换就是音乐断裂。
**方案**：P12b 设计子代理生成一条「全片母题谱」（32-64 小节短 motif，/abc 出谱）→ 各 cue 的 abc 注入取母题谱的对应变奏段（换 style/seed 出不同编曲但同一旋律骨架）→ 全片 BGM 共享可辨识的音乐身份。
**依赖**：仅 /abc + /generate abc 注入（均已上线）。风险：Vocal 声部休止构造需固化成工具函数；motif 段切分需谱面小节对齐。

### 方向 B — 卡点先验注入（谱面 BPM→beat_grid 初值）⭐⭐
**痛点**：beat_grid 从零估 BPM 有半倍/双倍歧义（beat_grid.py §1 整节在治这个病）。
**方案**：vocal_bgm 提名扩展 `abc_motif` 或 cue 带 `source_bpm`（vocal 位曲来自 /generate 时 Q: 值已知）→ 传入 analyze_beat_grid 作 bpm_prior，消解 2x/0.5x 歧义 + 提高网格可信率。
**依赖**：beat_grid.py 加可选 `bpm_prior` 参数（向后兼容，缺省行为不变）。

### 方向 C — 翻唱式换风格复用（strip-chords）⭐ 待需求
**场景**：同一 motif 在不同场景要不同情绪变奏（主题曲→紧张版/温柔版）。谱面 strip-chords 后 mode=melody 换 style 重生成。
**依赖**：strip-chords 工具函数（ABC 文本处理，纯本地）+ mode=melody（已上线）。触发条件=首个有多情绪变奏需求的项目。

## 边界与红线
- R11 不动：器乐 ABC BGM 也走语音窗守卫外的常规级联位，不与对白窗抢时间轴
- YuE2 CC-BY-NC：ABC 注入产物同受非商用约束（license 透传已在响应里）
- 时长仍=词/谱结构驱动：60s cue 需谱面 ≈28+ 小节（M:4/4 Q=71 实测 60s≈35.5 小节）
- 级联顺序不变：vocal/abc 注入只在显式提名时走，默认 EDL 行为逐字节不变

## 下一步（待拍板）
方向 A 一个老司机批可落（~2h：_kap_yue2_abc 工具函数 + motif 谱 schema + cue 提名字段 + 单测）；方向 B 半小时批（bpm_prior 参数）。
