Skill 详情
music-lab
自我改进的音乐创作收敛循环,根据歌词和钢琴卷帘规格生成音频,使用 MIR 工具分析并迭代直至收敛。
使用前先检查
自动化审核只检查相关性,不代表安全审查或推荐。使用前请阅读来源中的说明。
SKILL.md
这段内容是审核时保存的快照。外部来源才是完整且最新的版本。
---
name: music-lab
description: >
Self-improving music creation convergence loop for Horus persona. Generates audio
from annotated lyrics + piano roll spec, analyzes with MIR tools, scores the delta
between spec and output, re-quantizes prompts, and iterates until convergence.
Thin orchestrator — ONE Python file of subprocess calls to existing skills.
allowed-tools: [Bash, Read, Write, Edit, Task, Glob, Grep]
triggers:
- music lab
- improve song
- music convergence
- iterate on music
- nightly music loop
- converge music
- music quality loop
- improve track
- song convergence
- iterate on song
- music self improvement
metadata:
short-description: Self-improving music with convergence + delta scoring
author: "Embry Lawson (The Aerospace Corporation)"
version: "1.0.0"
provides:
- music-lab
composes:
- create-music
- review-music
- create-stems
- prompt-lab
- memory
- task-monitor
- create-design-board
- test-interactions
- scillm
- scheduler
- agentic-evals
disciplines:
- content-creation
- voice-audio
- ml-training
---
> STOP. READ THIS ENTIRE SKILL.MD BEFORE CALLING ANY ENDPOINT.
# /music-lab
Self-improving music creation convergence loop for the Horus persona.
## Architecture
`/music-lab` is a **thin orchestrator**. It contains ONE Python file (`converge.py`)
that is pure orchestration glue — subprocess calls to existing skill `run.sh` entry
points. No bespoke audio processing, no bespoke MIR, no bespoke LLM calls.
```
annotated_lyrics.json + piano_roll_spec.json
│
▼
┌─────────────────────────────────────────┐
│ /music-lab converge.py (loop) │
│ │
│ 1. /create-music yue|sonauto → audio │
│ 2. /review-music analyze → feats │
│ 3. _score_delta(spec, feats) → delta │
│ 4. /prompt-lab → fix │
│ 5. converge check → done? │
└─────────────────────────────────────────┘
```
The ONLY new code is `_score_delta()` (~50 lines) which compares `/review-music`
JSON output against `piano-roll-spec.json` fields.
## Usage
```bash
# Run convergence loop
./run.sh converge --spec fixtures/whisperheads/piano-roll-spec.json \
--lyrics fixtures/whisperheads/annotated-lyrics.json \
--out /mnt/storage12tb/media/agents/shared/music-lab/whisperheads/ \
--backend yue \
--max-rounds 5
# Dry run (no generation, uses mock features)
./run.sh converge --spec SPEC --lyrics LYRICS --out DIR --dry-run
# Check status of running convergence
./run.sh status
# Nightly wrapper
./run.sh nightly
```
## Commands
| Command | Description |
|---------|-------------|
| `converge` | Run the convergence loop |
| `status` | Check convergence status |
| `nightly` | Nightly wrapper for scheduler |
## Convergence Loop
Each round:
1. **Generate**: `create-music/run.sh yue` (or `sonauto`) with current spec
2. **Analyze**: `review-music/run.sh analyze` extracts features (BPM, key, chords, dynamics)
3. **Score**: `_score_delta(spec, features)` computes weighted aggregate delta
4. **Re-quantize**: `prompt-lab` iteratively refines generator prompts based on delta
5. **Check**: If aggregate delta < threshold (0.3) or max rounds hit, stop
## Delta Scoring
Returns: `{tempo_delta, key_match, chord_accuracy, dynamics_rmse, timing_drift_ms, aggregate}`
Weights: tempo (0.2), key (0.2), chords (0.25), dynamics (0.2), timing (0.15)
## Output
Each round writes to `{out_dir}/round_{N}/`:
- `audio.wav` — generated audio
- `features.json` — MIR analysis output
- `delta.json` — scored delta against spec
- `diagnosis.md` — agent assessment
Final: `loop_results.json` with all rounds' deltas for convergence trajectory.
## Integration with /memory
After each convergence run, lessons are stored via `/memory learn`:
- What worked (prompt adjustments that reduced delta)
- What failed (adjustments that increased delta)
- Convergence trajectory f在 GitHub 阅读完整来源 (打开外部页面)