Skip to content

docs: document the full-mix-vs-stems auto-switch in the Stem Mixer - #8

Open
topkoa wants to merge 2 commits into
mainfrom
docs/stems-mixer-full-mix
Open

docs: document the full-mix-vs-stems auto-switch in the Stem Mixer#8
topkoa wants to merge 2 commits into
mainfrom
docs/stems-mixer-full-mix

Conversation

@topkoa

@topkoa topkoa commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Follow-up to the Stem Splitter page. Two changes, both verified against the code.

The behavior (confirmed in plugins/stems/src/mix-gains.js)

computeMixGains plays the song's pristine full mix — the original audio, not a recombination of the separated stems — whenever a full mix exists and every stem is on at 100% ("unity"). The instant any stem is muted or lowered, it crosses to the separated stems, and stays there until every stem is back at 100%.

The point is quality: separation is lossy, so summing stems back isn't identical to the original. Playing the real full mix by default means you only pay that cost when you actually want a custom balance.

Docs

  • Stem Mixer page — new "Full Mix vs. Separated Stems" section stating the rule and why it exists, plus the note that a song with no full mix simply always plays the stems.
  • Stem Splitter page — the "use it when you need the untouched audio" note now links to the mixer and explains it's automatic (you hear the untouched audio until you change the balance).
  • Added the Stem Splitter cross-link to the mixer's Related Pages.

Builds clean under mkdocs build --strict.

Summary by CodeRabbit

  • Documentation
    • Clarified that the original full mix is always retained alongside separated stems.
    • Explained that playback uses the untouched mix until stem levels are adjusted.
    • Expanded guidance on when playback switches between full mix and separated stems, including related quality caveats.
    • Added a related link to the Stem Splitter documentation.

Verified against plugins/stems (computeMixGains in src/mix-gains.js): when a song carries its
pristine full mix, the mixer plays THAT — the original untouched audio, not a lossy recombination
of the separated stems — as long as every stem is on at 100% ("unity"). The moment any stem is
muted or lowered, it crosses to the separated stems so the change is audible, and stays there until
every stem is back at 100%.

Added a "Full Mix vs. Separated Stems" section to the mixer page explaining the switch and why it
exists (separation is lossy, so you only pay that quality cost when you actually want a custom
balance), and linked the Stem Splitter page's "untouched audio" note to it. Also added the Stem
Splitter cross-link to the mixer's Related Pages.

Signed-off-by: topkoa <topkoa@gmail.com>
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b2e9a9a-2ead-4232-aa4f-935ea22bf47d

📥 Commits

Reviewing files that changed from the base of the PR and between f0dcec3 and 956f6de.

📒 Files selected for processing (1)
  • docs/plugins/stems.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/plugins/stems.md

📝 Walkthrough

Walkthrough

Updated Stem Mixer documentation to explain full-mix and separated-stem playback behavior, clarified the Stem Splitter losslessness caveat, and added a related-page link.

Changes

Stem Mixer documentation

Layer / File(s) Summary
Playback behavior and cross-links
docs/plugins/stems.md, docs/plugins/stem-splitter.md
Documents automatic full-mix playback at unchanged stem levels, switching to separated stems when levels change, lossiness considerations, full-mix fallback behavior, and the Stem Splitter related-page link.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main docs change: documenting the Stem Mixer’s automatic switch between full mix and separated stems.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/stems-mixer-full-mix

Comment @coderabbitai help to get the list of available commands.

Explain WHY the full mix is there to play: the feedpak format reserves the `full` stem for the
complete mixdown and recommends retaining it when a song is separated, and any in-app split keeps
it. Links to the published spec section.

Signed-off-by: topkoa <topkoa@gmail.com>
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