Skip to content

Add X-LANCE multi-stem splitting - #1

Merged
Gabriel-Kahen merged 2 commits into
mainfrom
codex/xlance-stem-splitter
Aug 28, 2026
Merged

Add X-LANCE multi-stem splitting#1
Gabriel-Kahen merged 2 commits into
mainfrom
codex/xlance-stem-splitter

Conversation

@Gabriel-Kahen

@Gabriel-Kahen Gabriel-Kahen commented Aug 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • add an X-LANCE Stem Splitter action to audio-asset context menus and the asset inspector
  • expose all eight X-LANCE targets plus denoise and vocal-dereverb quality options
  • show per-stem progress and support cancellation of the complete inference process tree
  • import completed stems as one undoable group under SPLIT - <original file name>, with children named <INSTRUMENT> - <original file name>
  • persist asset folders in the canonical project format and render them as virtualized, collapsible groups in the asset sidebar
  • support the bundled adapter on Linux with an NVIDIA CUDA GPU using a pinned, app-managed X-LANCE checkout and Linux dependency lock

Review fixes and quality safeguards

  • make project completion delivery lossless and prevent queued GUI edits from overwriting an imported stem group
  • reject project races, changed source bytes, stale revisions, wrong duration/sample rate/layout, non-finite output, and incomplete output before canonical registration
  • split the imported asset's actual base media even when it also has a derived current revision
  • keep unrelated empty asset folders intact across deletion and undo/redo
  • use project-local temporary storage, perform a free-space preflight, and reap the entire subprocess tree on cancellation or timeout
  • serialize and clean the app-managed X-LANCE checkout so concurrent jobs cannot race or execute leftover untracked code
  • reduce long-recording memory use with float32 decoding and incremental overlap-add while preserving song boundaries
  • use explicit high-quality SoXR resampling and restore exact source length and mono/stereo layout; mono results use a real stereo downmix
  • version the asset index independently so older builds reject folder-bearing documents instead of silently discarding organization

Testing

  • cargo test --workspace
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo fmt --all -- --check
  • uv run --isolated --no-project --with numpy==2.2.6 --with soundfile==0.13.1 python -m unittest scripts/test_gaw_xlance.py
  • adapter CLI syntax/help check and git diff --check

A real checkpoint inference run was not possible in this environment because it has no NVIDIA CUDA device. The subprocess contract, cancellation, project/storage flow, race handling, overlap-add behavior, and output normalization are covered without the model weights.

@Gabriel-Kahen
Gabriel-Kahen merged commit fd5af5e into main Aug 28, 2026
1 check passed
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