Phase 22: add non-destructive audio splitting, clip gain and fades, and cached waveforms
This commit is contained in:
parent
73fc5eea8d
commit
01d8c1d661
23 changed files with 650 additions and 18 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# Project format v7 (reads v1–v6)
|
||||
# Project format v8 (reads v1–v7)
|
||||
|
||||
Phases 5–15 use a bounded text format implemented in C99 without a parser library.
|
||||
The extension is `.xtc`. File operations run exclusively on the control thread.
|
||||
|
|
@ -151,7 +151,7 @@ discrete-mode compatibility are checked on control-thread compilation. Versions
|
|||
|
||||
## Phase 18: version 7 and project folders
|
||||
|
||||
Current writer emits v7; readers migrate v1–v6. Record ordering and field bounds
|
||||
Phase 18 introduced v7; its readers migrated v1–v6. Record ordering and field bounds
|
||||
are otherwise unchanged from v6. v7 ASSET may contain a relative path, interpreted
|
||||
against the actual containing directory of the named project file (resolved on
|
||||
the control thread), never the launch working directory. Opening a symlink to a project uses the
|
||||
|
|
@ -189,3 +189,29 @@ truncation and deterministic byte mutations, malformed plugin metadata, interrup
|
|||
writers and write-limit failures. ASan/UBSan/static analysis additionally audit the
|
||||
bounded parser. This is regression/fault-injection coverage, not exhaustive fuzzing
|
||||
or a claim of power-cut qualification.
|
||||
|
||||
## Phase 22: version 8 audio clip settings
|
||||
|
||||
Current writer emits v8 and reads v1–v7 with unity clip gain and no explicit
|
||||
clip fades. After **every** clip's `MIDI` record (including silent and MIDI
|
||||
clips), v8 requires:
|
||||
|
||||
```text
|
||||
AUDIO gain_float32_hex_bits fade_in_ticks fade_out_ticks
|
||||
```
|
||||
|
||||
Gain is finite, linear and within 0..4. Fade durations are unsigned decimal,
|
||||
0..source_length_tick; zero disables that explicit fade. MIDI clips require
|
||||
gain exactly 1 and both fades zero. Invalid or missing AUDIO records reject the
|
||||
whole candidate. All v7 media-folder rules and atomic-save guarantees remain.
|
||||
Older applications reject v8 rather than silently stripping clip settings.
|
||||
Rebuild C/C++ consumers against the extended `xtc_clip_info` public struct;
|
||||
this development release does not promise an unchanged struct binary layout.
|
||||
|
||||
Fades follow the audible trimmed clip boundaries, in current-tempo ticks, with
|
||||
sample endpoints defined in AUDIO_FILES.md. Duplicating retains settings and
|
||||
source references; splitting keeps the original ID on the left, gives the right
|
||||
a fresh ID/source offset, retains outer explicit fades and clears inner ones.
|
||||
No waveform cache or source audio is serialized. Checked-in v1–v7 migrations,
|
||||
v8 exact roundtrips, malformed new metadata and byte-mutation tests cover the
|
||||
format change (`make test test-portability test-audio-editing`).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue