feat: add a bounded WAV sampler with looping, relinking and saved presets
This commit is contained in:
parent
159fa939a1
commit
35bf6a00a1
24 changed files with 213 additions and 32 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# Project format v14 (reads v1–v13)
|
||||
# Project format v15 (reads v1–v14)
|
||||
|
||||
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 v14. Unknown versions are rejected without replacing the destination; older
|
||||
Saving always writes v15. 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–14 and the writer always emits version 14.
|
||||
The current reader accepts versions 1–15 and the writer always emits version 15.
|
||||
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
|
||||
|
|
@ -407,3 +407,14 @@ 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.
|
||||
|
||||
## Version 15 sample references
|
||||
|
||||
Each instrument parameter block ends with `SAMPLE hex_path_or_dash`. Only the
|
||||
internal Sample Player (index 4) may carry a nonempty sample path. Paths within
|
||||
the project directory are relative on disk and resolve against the project
|
||||
file's directory; other paths are absolute. Metadata loading does not read WAVs.
|
||||
Missing/invalid samples remain references and become reported silence during
|
||||
preparation. Controls describe root key, whole-file loop, attack, release and
|
||||
gain. Earlier projects have empty sample paths. Rebuild public API consumers
|
||||
for the additional copied `sample_path` field in `xtc_plugin_spec`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue