Skip to content

Lead/backing vocal split, stems relocation fixes, eager model pre-download - #406

Merged
thcp merged 3 commits into
mainfrom
feat/lead-backing-vocal-split
Aug 21, 2026
Merged

Lead/backing vocal split, stems relocation fixes, eager model pre-download#406
thcp merged 3 commits into
mainfrom
feat/lead-backing-vocal-split

Conversation

@thcp

@thcp thcp commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • On-demand lead/backing vocal split (Phase 4 — Separation SOTA: RoFormer + lead/backing vocal split #275). New POST /api/jobs/{id}/vocal-split endpoint runs UVR-MDX-NET Karaoke 2 (via audio-separator) as a second pass over Demucs's vocals.wav, producing lead_vocals.wav/backing_vocals.wav. Desktop and mobile both get an opt-in toggle that auto-triggers the split once the base separation finishes (foreground and background jobs both covered); the mixer shows the two new lanes in place of Vocals once a job has them.
  • Stems relocation fixes ([Bug]: #403). user-data.json (library metadata: favorites, folder layout, per-job mixer state) now lives inside the jobs folder instead of its parent, so relocating stems via Settings carries it along automatically. Separately, the relocation endpoint's settings-persist step was silently swallowing write failures and reporting false success; it now reports persisted: false and the Settings UI shows a clear warning instead of a false "done."
  • Desktop setup wizard: eager model pre-download. Demucs, beat-this, and the karaoke model now download during first-boot setup instead of lazily on first use. Desktop only; Docker keeps its existing lazy-download behavior.
  • Credited audio-separator / Ultimate Vocal Remover in the README per its license's attribution requirement, with the full license audit in docs/models.md.

Test plan

  • Full pytest suite: 584 passing, same 14 pre-existing unrelated failures as main (beatgrid numerics, packaging exec-bit, parent-watchdog timing, one zip test - all environment-specific on this Windows dev box, confirmed present on main too before this branch)
  • cargo check on the Tauri desktop app: compiles clean
  • Manually verified end to end against real tracks: base separation, on-demand vocal split (model downloads and runs correctly, real separated audio confirmed via ffmpeg volumedetect), stems relocation with a simulated persist failure, and a full local Windows NVIDIA portable build
  • Reporter of [Bug]: #403 to confirm the relocation fix holds across a restart on their original setup

…d eager model pre-download (#275, #403)

Lead/backing vocal split:
- New on-demand POST /api/jobs/{id}/vocal-split endpoint, running UVR-MDX-NET
  Karaoke 2 (audio-separator) as a second pass over Demucs's vocals.wav
- Desktop and mobile UI toggle to request the split, auto-chained once the
  base separation finishes, for both foreground and background jobs
- Mixer shows Lead Vocals / Backing Vocals lanes in place of Vocals once split

Stems relocation fixes (#403):
- user-data.json (library metadata) now lives inside the jobs folder so it
  follows a Settings relocation instead of staying behind in Documents
- The relocation endpoint's settings persist step was silently swallowing
  write failures and reporting false success; it now reports persisted:
  false and the Settings UI shows a clear warning instead

Desktop setup wizard:
- Demucs, beat-this, and the karaoke model now download eagerly during
  first-boot setup instead of lazily on first use

Also:
- Credit audio-separator / Ultimate Vocal Remover in the README per its
  license's attribution requirement, plus a license audit in docs/models.md
- Add models/ to .gitignore
Comment thread app/pipeline/vocal_split.py Dismissed
Comment thread app/pipeline/vocal_split.py Dismissed
Thales added 2 commits August 21, 2026 17:30
…an compile

diffq has no prebuilt wheel for Python 3.11+ on Linux, its last release only
ever shipped cp310 wheels, so uv sync must compile it from source, which
needs gcc. Docker and the Linux desktop release build already install
build-essential for the same reason; the plain lint/test CI container never
needed it before audio-separator (#275) pulled diffq in.
This PR ships as v0.12.0, per the user's decision given it introduces the
new lead/backing vocal split feature.
@thcp
thcp merged commit bf561a6 into main Aug 21, 2026
10 checks passed
@thcp
thcp deleted the feat/lead-backing-vocal-split branch August 21, 2026 16:43
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