# Mc Case Studies

> The corpus layer (语料层) - how real recordings are made to testify for or against the textbook rules. Covers the reverse ARR-SPEC as the unit of the corpus, the corroboration table that turns rules times corpus into hit rates and tiers them as strong rule / tendency / not a rule, the two honesty constraints that keep the table from being circular, why naturally sampled corpora beat curated ones, wh…

- **Type:** Skill
- **Install:** `agentstack add skill-jtydhr88-music-composition-skills-mc-case-studies`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [jtydhr88](https://agentstack.voostack.com/s/jtydhr88)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [jtydhr88](https://github.com/jtydhr88)
- **Source:** https://github.com/jtydhr88/music-composition-skills/tree/main/plugins/music-composition/skills/mc-case-studies

## Install

```sh
agentstack add skill-jtydhr88-music-composition-skills-mc-case-studies
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 语料层（Case Studies & Corroboration）

**这一层回答一个问题：**

> **教材说的，真实作品到底做不做？**

本库的规则不是抄来的，是**抄来之后拿 62 首真实多轨验过的**。
验过的结果分三档，**只有强规则才进 20 条自查表**。

## 按任务读哪几节

| 任务 | 读 |
|---|---|
| 想知道某条规则靠不靠谱 | §4 佐证表 ＋ 仓库规则表 |
| 要加一条新规则 | §4.3 流程 |
| 规则和数据打架了 | ★ §5 |
| 要找一个真实例子 | §6 |
| 要标注一首曲子 | §3.3 |
| 想知道这套语料能测什么 | §2.2 |

## 边界

| 不归这里 | 归哪 |
|---|---|
| 规则本身的内容 | L1／L2 各 skill |
| 生成结果的验收 | `mc-ai-tell-audit` |
| 规格写完的检查 | `mc-workflow` §3.0 |
| 某个风格的语汇 | `mc-style-*`（L3） |
| 具体曲目的逐段拆解 | [reference.md](reference.md) |

---

## 1. 语料的三条原则

### 1.1 ★ 只存结构与参数，不存作品

> **语料条目里没有音频、没有谱面、没有歌词——只有测出来的数值。**

这既是版权上的必需，也是方法上的正确：
**我们要的是"真实作品的参数分布"，不是作品本身。**

### 1.2 ★ 自然抽样胜过策展

**语料不精选，用自然抽样。**

> **策展会把语料偏向"规则成立"的那一侧**——
> 你挑的是你认为的好例子，而你认为的好例子就是符合你已有理论的例子。
>
> **自然抽样自动供给反例。**

所以最终用的是 **Cambridge-MT 的 60+ 首自然样本**，不筛选。
这也顺带取消了另找 MIDI/分轨语料的必要（它原本的唯一用途是给分轨工具做标定，
而真分轨直接消除了这个需求）。

### 1.3 语料的单元是"反向 ARR-SPEC"

**不是音频文件，是从音频反推测出来的一份 ARR-SPEC。**
选这个单元是因为它和我们的产出**用同一套字段**：结构、编制进退场、能量曲线都记在同样的位置，
所以佐证表能直接拿语料条目和规则判据对齐，不用先做一层格式转换。
字段长什么样、哪些标记是诚实留白而非漏填，见 §2.1。

---

## 2. 反向 ARR-SPEC

### 2.1 长什么样

仓库实测语料，**63 条**。每条头部就写明了性质：

```yaml
# 实测 ARR-SPEC（语料条目）—— 由 仓库的反推工具 自动生成
# ★ 只存结构与参数，不存谱面与歌词。intent / hooks 等 TODO 项需人工填。
```

★ **注意那些 `# TODO` 和 `# 估算，非实测` 的注释**——
它们是**诚实标注**，不是没做完。
`intent.one_thing` 这类东西**机器测不出来**，硬填就是造假。

### 2.2 ★ 这套语料能测什么、不能测什么

**Cambridge-MT 是未混的原始多轨，不是母带成品。** 所以：

| 能测 | 不能测 |
|---|---|
| 段落边界、小节数 | **DR / 响度**（未混） |
| 拍速 | **立体声宽度**（未混） |
| 能量曲线、减法事件 | **频谱质心的绝对值**（未混 + 无母带） |
| 编制进退场（有真分轨！） | 制作质感 |
| onset 相对网格偏移 | |
| 和弦（chroma 匹配） | |

★ **测不了的规则要标出来，不许硬跑。**
`rules.yaml` 里这类规则标 `evidence: unusable_here`，
仓库的佐证工具 **跳过而不是给一个假数字**。

**本库的语料是多轨分轨，不含成品混音，所以这类规则目前没有数字。**

---

## 3. 真值与标注

### 3.1 为什么需要人工真值

算法测出来的段落边界**本身可信度存疑**（`rules.yaml` 里标 `no_truth`）。
没有一份独立的真值，就没法判断一个异常的命中率到底是规则不成立，还是算法本身测错了——
§5.2 那次"硬编码阈值把命中率压到 16%"就是靠人工真值才翻案的实例。
所以做了一批人工标注当真值，校准结果见 §3.2。

### 3.2 ★ 一个被验证过的担心

用户担心"我不是专家，标的边界不准"。**实测结果推翻了这个担心：**

> **人工标记与算法的偏差中位数 = 0.0 秒。**

★ **结论**：**段落边界是感知判断，不是品味判断。**
非专家标出来的边界和算法一致——这说明这件事本来就不需要专家。
（**能标的和不能标的要分清**：边界能标，"这段好不好听"不能标。）

**校准结果**：7 首人工标注，算法命中 **72%**，偏差中位 **0.0 s**。

### 3.3 怎么标注

标注工具与 7 份标注文件在仓库里，不随包发布。

**已标注的 7 首**：
AMContra_HeartPeripheral、APZX_CyberMower、DigitalHumans_Electrvm、
Forkupines_Semantics、MERCMusic_Knockout、MR1103_Flags、SimonLyn_Copper

---

## 4. ★ 佐证表：规则 × 语料 → 命中率 → 分档

### 4.1 两条诚实约束

**违反了，佐证表就是自欺：**

| # | 约束 |
|---|---|
| **1** | ★ **判据不能复用生成器的定义。** 反向 ARR-SPEC 里的 `subtraction_events` 是 反推工具 按"较前段降 >1 dB"自动填的；拿它去验"真编曲有没有减法"是**循环论证**。所以涉及减法的判据一律**直接从 `energy_curve` 重算**，用一个有音乐意义的阈值（≥3 dB），**不读 `subtraction_events` 字段** |
| **2** | ★ **语料测不了的规则要标出来，不许硬跑**（见 §2.2） |

`evidence` 的三个取值：

| 值 | 含义 |
|---|---|
| `ok` | 本语料能验 |
| `unusable_here` | 本语料性质不对，需要成品混音语料 |
| `no_truth` | 缺真值（如段落边界），判据本身可信度存疑 |

### 4.2 第一轮结果

| 规则 | 命中 | 档 |
|---|---|---|
| 能量曲线必须有下降 | **62/62** | **强规则** |
| 编制必须有乐器中途进场 | **59/59** | **强规则** |
| 至少一件乐器提前退场 | **59/59** | **强规则** |
| 不该全声部严格对齐网格 | **62/62** | **强规则** |
| 开场不该把乐器一次铺满 | **54/59** | **强规则** |
| 全曲至少一处明显减法 | 36/62 = **70%** | **倾向** |
| 最高潮前应有能量回落 | 全量 22% ／ 人工真值 5/7 | ★ **矛盾，只当手法** |
| 编制在最高潮最密 | 25/59 = 42% | **挂起** |

### 4.3 分档决定什么

| 档 | 在 skill 里怎么写 | 进 lint 吗 |
|---|---|---|
| **强规则** | "必须" | ✅ 硬检查 |
| **倾向** | "通常应该" | ❌，进"写完后必过"清单 |
| **手法** | "可以这么做" | ❌，只在诊断路径里出现 |
| **挂起** | **不写进 skill** | ❌，留在实验记录里等更多数据 |

### 4.4 加一条规则的流程

1. 在 仓库规则表 里写：规则 + **可跑的判据** + `evidence`
2. 检查是否违反 §4.1 的两条约束
3. 用仓库的 corroborate 工具跨语料跑判据（维护者步骤，不随包发布）
4. 按命中率分档（§4.3）
5. ★ **把结果写进 仓库实验记录**，然后才改 skill

> **规则集是有版本的**。
> 改了规则集就要重跑，否则前后轮不可比。

---

## 5. ★ 规则和数据打架时怎么办

**这是本 skill 最重要的一节。**

### 5.1 先问：指标测的是不是那回事

**不要拿指标去推翻教科书。**

**实例**：「最高潮前应有能量回落」在全量 62 首里只有 **22%**，
但在 7 首人工标注真值里是 **5/7**。

**差距的来源**：算法用**能量峰值**定位"最高潮"，而**人耳不是**。
所以 22% 那个数**测的不是这条规则**，测的是"能量峰值前有没有回落"。

★ **结论**：这条不降级为伪规则，也不升为强规则——**列为手法**。

### 5.2 另一个实例：硬编码阈值造成的假低命中率

仓库的佐证工具 里曾**硬编码"12 dB 动态范围"**，
把规则 ARR-R-012 的命中率压到 **16%**，差点被报成"教科书是错的"。

**证伪方法**：拿 7 首人工标注真值测 → **5/7 = 71%**。
**修法**：改成在归一化的 0–10 单位上打分，**不假装能还原 dB**。

★ **通用教训**：**一个异常低的命中率，先怀疑判据，再怀疑规则。**

### 5.3 佐证表与 lint 问的不是同一个问题

| | 问什么 |
|---|---|
| **佐证表** | **人类一般会不会这么做** |
| **20 条自查** | **不这么做会不会听起来像 AI** |

★ **所以 70% 的命中率不会机械地把一条 lint 检查降级。**
一件事可能只有 70% 的人做，但**不做的那 30% 恰好都听起来像机器**。

---

## 6. 找一个真实例子

| 你要 | 去哪 |
|---|---|
| 某个技法的真实用例 | [reference.md](reference.md) 的逐段拆解 |
| 某个和弦进行用在哪首歌 | `mc-progressions` [reference.md](../mc-progressions/reference.md) §7 名曲索引 |
| 一首曲子的完整实测参数 | 仓库实测语料（63 条） |
| 段落边界的人工真值 | 仓库标注数据（7 条） |
| 配器/混合音色的谱例 | `mc-orchestration` [reference.md](../mc-orchestration/reference.md) §4 |
| 对位的谱例 | `mc-counterpoint` [reference.md](../mc-counterpoint/reference.md) |

### 6.1 逐段拆解的格式

**四者对齐**：时间码 / 段落 / 编制事件 / 和声。
格式与反向 ARR-SPEC 一致，人工补上机器测不出的部分（intent、hooks、为什么）。

---

## 7. 与其他层的接口

| 方向 | 内容 |
|---|---|
| **→ L1/L2 各 skill** | 提供"实测：62/62，强规则"这样的证据等级标注 |
| **→ 20 条自查** | 只有**强规则**才能进自查表 |
| **→ `mc-ai-tell-audit`** | 零点校准（不相关成品得 63–66）就是在这套语料上测的 |
| **← 仓库的反推工具** | 语料条目的生成器 |
| **← 成品混音语料**（★ **缺**） | §2.2 那些 `unusable_here` 的规则需要它 |

---

## 8. 用完必过

- [ ] 引用规则时**带了证据等级**（强规则/倾向/手法），不是光说"教材说"
- [ ] 新加的判据**没有复用生成器的定义**（§4.1 约束 1）
- [ ] 语料测不了的规则**标了 `unusable_here`**，没有硬跑出假数字
- [ ] 命中率异常低时，**先怀疑了判据**（§5.2）
- [ ] 没有拿佐证表的命中率**机械地**给 lint 检查降级（§5.3）
- [ ] 改了规则集就**重跑并记进 仓库实验记录**

---

## 附：现状

**已有**：
- 仓库实测语料 —— **63 条**实测 ARR-SPEC（Cambridge-MT）
- 仓库规则表（规则集带版本号）
- 仓库标注数据 —— 标注工具 + **7 条**人工真值
- `_corpus/multitracks/` —— 11 项（含 `_index.json`、`_parts.json`）
- 仓库实验记录：度量标定 / 拍速校准 / 规则佐证第一轮
- 拍速校准：**56 首真值**

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [jtydhr88](https://github.com/jtydhr88)
- **Source:** [jtydhr88/music-composition-skills](https://github.com/jtydhr88/music-composition-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-jtydhr88-music-composition-skills-mc-case-studies
- Seller: https://agentstack.voostack.com/s/jtydhr88
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
