feat: add editable internal instruments, automation and versioned presets
This commit is contained in:
parent
e76552e8dd
commit
159fa939a1
21 changed files with 295 additions and 52 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# Project format v13 (reads v1–v12)
|
||||
# Project format v14 (reads v1–v13)
|
||||
|
||||
Phases 5–31 use a bounded text format implemented in C99 without a parser library.
|
||||
The extension is `.xtc`. File operations run exclusively on the control thread.
|
||||
|
|
@ -104,7 +104,7 @@ node types 1..4, migrating their clips to empty asset paths. Version 2 accepts
|
|||
node types 1..5 and ASSET records. Both migrate to MIDI=0 and no notes.
|
||||
Version 3 accepts instrument nodes and MIDI/NOTES records. Versions 1–3 migrate
|
||||
all tracks to unity gain, centered pan, mute/solo off and no automation.
|
||||
Saving always writes v12. Unknown versions are rejected without replacing the destination; older
|
||||
Saving always writes v14. Unknown versions are rejected without replacing the destination; older
|
||||
applications without v12 support cannot read current saves. Migration and maximum-path roundtrips are tested.
|
||||
|
||||
## Ownership and failures
|
||||
|
|
@ -274,7 +274,7 @@ must rebuild and initialize the appended `xtc_automation_point.step` field.
|
|||
|
||||
## Phase 28 compatibility and diagnostic contract
|
||||
|
||||
The current reader accepts versions 1–12 and the writer always emits version 12.
|
||||
The current reader accepts versions 1–14 and the writer always emits version 14.
|
||||
Phase 28 made no format change; Phase 31 adds plugin format identity in v11. Saving an older document upgrades it;
|
||||
retain an original backup if an older application must still open it. APP is
|
||||
informational; compatibility depends on the format version, not the producer's
|
||||
|
|
@ -396,3 +396,14 @@ Format value 4 identifies dependency-free internal devices at `/xtc/internal`.
|
|||
Indices 0/1 bind fixed Soft Keys/Sub Bass instruments; 2/3 are Delay/Reverb
|
||||
effects with three controls and existing automation records. Identity and control
|
||||
ranges are validated without loading libraries. See [BUILTIN_DEVICES.md](BUILTIN_DEVICES.md).
|
||||
|
||||
## Version 14 instrument parameters
|
||||
|
||||
Each track INSTRUMENT identity is followed by `INSTRUMENT_CONTROLS count`,
|
||||
`CONTROL port value_bits` records, `INSTRUMENT_AUTOMATION count` and
|
||||
`PARAM tick port mode value_bits` records. Bounds, duplicate points and metadata
|
||||
are validated before destination replacement, just as for graph effects.
|
||||
Earlier bindings have no controls/automation; v13 internal instruments retain
|
||||
fixed default sounds. Modern external instruments still require zero controls.
|
||||
Instrument tempo follows project tempo. Instrument preset files use this same
|
||||
schema with exactly one instrument track and no clips; they are metadata only.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue