Phase 6: Add WAV clips, graph playback and bounded recording
This commit is contained in:
parent
65640c4aad
commit
8a37090b81
40 changed files with 1450 additions and 69 deletions
|
|
@ -85,3 +85,24 @@ a loaded document before stopping/submitting audio. File operations never run
|
|||
in the callback. See PROJECT_FORMAT.md for schema, bounds and durability.
|
||||
SequencerWidget owns selection, zoom and gestures only; musical range checks,
|
||||
source-preserving trims and ID allocation remain C responsibilities.
|
||||
|
||||
|
||||
## Phase 6 assets and recording
|
||||
|
||||
Audio paths are C clip metadata. A stopped preparation copies range/offset
|
||||
information, deduplicates paths, validates and preloads bounded WAV assets into
|
||||
an independent C audio plan. The backend owns that plan and a preallocated
|
||||
timeline buffer until callback quiescence. A graph audio-source node consumes
|
||||
the buffer, so effects/output routing remain graph operations. All tracks share
|
||||
the mono source in this phase; no audio summation bypasses the graph.
|
||||
|
||||
Arrangement edits stop transport; subsequent Play prepares the new snapshot.
|
||||
Graph-only edits retain live plan publication. Missing assets preserve metadata
|
||||
and render silence, with repair through a C path setter and GUI relinking.
|
||||
Version 2 persistence stores references and explicitly migrates version 1 loads.
|
||||
|
||||
Recording has one callback producer and one control-thread consumer. A bounded
|
||||
SPSC ring publishes complete payload blocks through lock-free indices. Only
|
||||
the consumer writes WAV bytes; finalization follows successful callback stop.
|
||||
No editable project pointer, GUI object or FILE is accessed by the producer.
|
||||
See decision 0005 and AUDIO_FILES.md for format, limits and recovery contracts.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue