feat(presets): save and adopt reusable effect chains (phase 87)

This commit is contained in:
Johannes Findeisen 2026-11-06 01:40:13 +01:00
commit b6d0771b4f
8 changed files with 67 additions and 5 deletions

View file

@ -1985,12 +1985,12 @@ Implemented: selected insert Inspect/edit verifies identity and shows generic co
Save and load portable chain metadata with bounded validation, transactional replacement and explicit missing-plugin errors at preparation.
### Tasks and acceptance criteria
- [ ] Implement the described workflow with validated errors and safe ownership.
- [ ] Pass relevant core and/or GUI tests.
- [ ] Document behavior and limitations; commit this phase separately.
- [x] Implement the described workflow with validated errors and safe ownership.
- [x] Pass relevant core and/or GUI tests.
- [x] Document behavior and limitations; commit this phase separately.
### Implementation status
Planned.
Implemented: atomic chain preset save/load reuses the versioned project container with exactly one non-bus track and no clips/instrument. Metadata load never opens modules and preserves output on failure; GUI adoption prepares all effects before replacement. Core roundtrip/malformed tests, full core suite and GUI replacement/missing-file/reload checks passed. Presets reference installed binaries; opaque plugin states are not captured.
---

View file

@ -50,3 +50,11 @@ controls. Reset defaults clears parameter automation on Apply. Cancel leaves the
project unchanged. Internal effects and LADSPA expose controls; modern adapters
currently expose none and run default configurations. Native plugin editor
windows and opaque plugin-state chunks are not implemented.
**Preset → Save chain / Load chain** reuses the atomic versioned project file
container with one track. Order, bypass, wet amounts, output gain and exposed
controls/automation are retained. Loading metadata executes no plugin code;
applying it verifies all enabled plugins before replacing the current chain.
Preset files reference absolute installed binary paths, so another machine must
provide compatible binaries at those paths. No plugin binaries or opaque state
chunks are embedded.