Skip to content

feat: document the stems option - #14

Merged
spencer-zqian merged 2 commits into
mainfrom
feat/stems
Aug 17, 2026
Merged

feat: document the stems option#14
spencer-zqian merged 2 commits into
mainfrom
feat/stems

Conversation

@spencer-zqian

Copy link
Copy Markdown
Contributor

Documents the API's new stems option in the text-to-music and video-to-music skills.

Facts taught: free; REST requires mode=async (the MCP tools are always-async); result entries are {stream_index, drums, bass, vocals, other} looked up by stream_index, never position (the array can be shorter than audio); stems_error can accompany a partial stems and means a missing extra, never a failed generation; +2-6 min typical with a 30-min ceiling; fixed htdemucs names, so melodic instruments land in other and vocals is near-silent on instrumental tracks by design. The video-to-music skill leads with: it splits the generated music, never the video's own audio.

Surface scoping: stems is recorded in tool_surface.json's hosted block only and added to must_document — the published sonilo-mcp 0.17.0 does not accept it yet, and both skills say so. When the 0.18.0 release lands, run validate.py --refresh and drop the held-back sentences; references/api-claims.md carries that exact follow-up, and the weekly CI cron will flag the surface drift regardless. Also corrects the now-false 2026-07-28 claim that output is never stems, per that file's ⚠️ convention, and fixes task-recovery's "purely streaming" note to name the async triggers.

Validation: offline run green (17 files, 12 skills); --refresh against a fresh install of published sonilo-mcp 0.17.0 reports no drift.

stems=true on text_to_music and video_to_music splits each generated
track into four separated instrument tracks (drums/bass/vocals/other),
returned as a stems array alongside the clean audio in the task result.
Live in prod on REST and the hosted MCP server; free of charge.

- text-to-music/SKILL.md, video-to-music/SKILL.md: stems parameter row,
  a dedicated Stems section (result shape, stream_index lookup,
  stems_error semantics, +2-6 min timing with a 30 min cap, fixed
  htdemucs stem names, async-only on REST), and a workflow tip. The
  video-to-music section also spells out that it splits the GENERATED
  music, never the source audio - that is preserve_speech's job.
- references/api-claims.md: new dated stems facts section; the
  'not stems-in-DAW-sense' output claim from 2026-07-28 is now false
  and is corrected in place.
- task-recovery/SKILL.md: the 404 row's 'purely streaming' parenthetical
  now names the async triggers (wav/variants/stems) instead of implying
  text_to_music never has a task.
- tests/tool_surface.json: stems added to the hosted block for both
  tools and to must_document, so a skill covering either tool that goes
  silent about stems fails the build. The local block is deliberately
  untouched: the published sonilo-mcp (0.17.0) does not accept stems
  yet, and CI diffs that block against the installed package weekly -
  the skills scope the claim to REST + hosted MCP accordingly, with a
  _generated note saying --refresh will pick up the local side when the
  next sonilo-mcp release ships.

Validated: tests/validate.py green offline, and --refresh against a
fresh install of the published sonilo-mcp 0.17.0 reports no drift.
@sapient-app

sapient-app Bot commented Aug 17, 2026

Copy link
Copy Markdown

Lightsage docs evals

Waiting for the staging docs URL before running evals.

Lightsage will start the selected PR evals automatically when GitHub reports a successful docs deployment for this PR. This usually happens within 15 minutes.

Commit: 9b232ab
Status: waiting for staging docs URL

sonilo-mcp 0.18.0 (PyPI + registry), npm sonilo 0.16.0 / sonilo-cli
0.15.0, and PyPI sonilo 0.15.0 / sonilo-cli 0.14.0 all released today
with stems support. tool_surface.json refreshed against the published
0.18.0; the two skills drop their hosted-only caveats and now state the
minimum versions per surface; api-claims records the gap as closed.
@spencer-zqian
spencer-zqian merged commit e45ed6a into main Aug 17, 2026
1 check passed
@spencer-zqian
spencer-zqian deleted the feat/stems branch August 17, 2026 21:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant