PLN's "merge of stems": the best vocal isolation cascaded into the best 4-way split. There is no 4-stem Roformer, so MultiModelBackend orchestrates a cascade — 1. Roformer (audio-separator, py3.12 venv) isolates vocals + instrumental; 2. demucs runs on the INSTRUMENTAL (vocals already gone → cleaner) for drums/bass/other; 3. merge = Roformer vocals ⊕ demucs drums/bass/other in the standard 4-stem contract. Refactored separate.py for composite backends: a backend declares what it `produces` and (for composites) a `run_composite` hook; the subprocess runner is factored into _run_cmd so the cascade can drive several sub-separations. RoformerBackend is now wired (was a stub): audio-separator CLI, 2-stem (vocals/instrumental), normalize() globs the "(Vocals)"/"(Instrumental)" output names. The default normalizer maps by produces[]. Verified end to end on the Loituma source: merge → vocals (Roformer) + drums/bass/other (demucs-on-instrumental), 4 clean PCM_16/44.1k stems. All three backends report available on this box. GUI renders whatever stems a backend emits (demucs/merge 4, roformer 2 incl. instrumental), canonical roles first. 53 tests (added: registry has the three engines, roformer produces 2 + builds its cmd, merge is composite/4-stem). Keeps the 2-stem Roformer door open as its own backend (vocal isolation), and the merge as the flagship. Foundry's engine registry now showcases the pluggable design PLN wants to grow into a product/API/service.
| Name |
Last commit
|
Last update |
|---|---|---|
| armada | Loading commit data... | |
| blocks | Loading commit data... | |
| blog | Loading commit data... | |
| copycat | Loading commit data... | |
| gifts | Loading commit data... | |
| lib-parvagues | Loading commit data... | |
| live | Loading commit data... | |
| output | Loading commit data... | |
| releases | Loading commit data... | |
| sandbox | Loading commit data... | |
| study | Loading commit data... | |
| test | Loading commit data... | |
| tools | Loading commit data... | |
| utils | Loading commit data... | |
| viz | Loading commit data... | |
| .gitignore | Loading commit data... | |
| BootTidal.hs | Loading commit data... | |
| BootTidal.hs.broken | Loading commit data... | |
| BootTidal.visuals.broken.hs | Loading commit data... | |
| CLAUDE.md | Loading commit data... | |
| LICENSE | Loading commit data... | |
| PatchBay_MultiChannel.xml | Loading commit data... | |
| PatchBay_Perf.xml | Loading commit data... | |
| PatchBay_Perf5.1.xml | Loading commit data... | |
| README.md | Loading commit data... | |
| backlog.md | Loading commit data... | |
| bullet_train.tidal | Loading commit data... | |
| collide.sh | Loading commit data... | |
| debug.tidal | Loading commit data... | |
| didacticpatternvisualizer.pde | Loading commit data... | |
| hello.sc | Loading commit data... | |
| init_midi.sh | Loading commit data... | |
| intro.md | Loading commit data... | |
| library.txt | Loading commit data... | |
| link_jack.sh | Loading commit data... | |
| link_samples.sh | Loading commit data... | |
| link_samples_all.txt | Loading commit data... | |
| main_fairbanks.scd | Loading commit data... | |
| notes.md | Loading commit data... | |
| perf-tray.py | Loading commit data... | |
| perf.sh | Loading commit data... | |
| samples.txt | Loading commit data... | |
| start_and_midi.scd | Loading commit data... | |
| test.tidal | Loading commit data... |