Plan, check and analyze a song
songPlans and analyzes a song (render checks too); returns a share link that plays it in the browser (90 days, no render). Stages: plan, write, light analysis loop, one deep analysis, fix; then the share link to listen, or one render to embed. analyze:true: light; deep:true: measured. Schema eb59845f.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "song"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| len | No | Target seconds | |
| mtl | No | Song in MTL text (describe topic=mtl). Kept 2 hours as a working copy: later calls can send ref (the songId) instead. | |
| ref | No | Instead of mtl: a songId from an earlier reply (kept 2 hours), a render asset id, or a share link | |
| alts | No | Other MTL versions to rank by score | |
| deep | No | With analyze: deep analysis, a measured analysis-only render. Suited to once or twice when the song is nearly done | |
| loop | No | Should loop | |
| plan | No | Alone: {bpm, meter, key, peak, sections:[{id, bars, energy 1-5, role}], mix?} gives a skeleton, timing, checks | |
| check | No | Same as analyze | |
| genre | No | Genre or alias, see describe(topic="genres") | |
| range | No | With analyze: one section, e.g. "2" or "2-3" (order entries) | |
| style | No | Voice palette; default chip | |
| energy | No | Planned 1-5 per order entry, for check:true | |
| intent | No | Deliberate choices, not scored | |
| layers | No | With mtl: batch edits {add:["A: 3 i3 v40: C4 . . ."], replace, remove:["A:3"], instruments, mix, notes}; returns the edited song | |
| return | No | mtl echoes the song back | |
| voices | No | List these instruments' settings | |
| analyze | No | Light analysis: no audio, instant, free. Suited to every edit | |
| compare | No | With analyze: A/B against an earlier songId, asset id or share link | |
| compose | No | Instead of mtl: {bpm, form, chords, parts:[{id,gen}]}. describe(topic="generators") |