Phase 5: Add project persistence and sequencer foundation
This commit is contained in:
parent
5c41d7f6da
commit
65640c4aad
28 changed files with 1307 additions and 84 deletions
|
|
@ -68,3 +68,20 @@ GraphWidget owns only selection, node positions, pointer gestures and drawing.
|
|||
Its fixed canvas is hosted by FLTK scrolling. C owns nodes, ports, edges,
|
||||
validation, ID assignment, compilation and rendering. No audio thread accesses
|
||||
GUI-owned state. Reconnect republishes the same retained editable graph.
|
||||
|
||||
|
||||
## Project ownership and persistence
|
||||
|
||||
Phase 5 introduces a C-owned project containing the graph, bounded track/clip
|
||||
arrays, stable ID allocators and constant tempo. Read APIs return copies;
|
||||
GUI canvases borrow the opaque project/graph on the control thread. A graph
|
||||
edit prepares a candidate project before submitting its graph, then commits
|
||||
ownership only after acceptance. Arrangement edits currently change silent
|
||||
metadata and require no audio publication.
|
||||
|
||||
Persistence is private C/POSIX code; loading validates an isolated candidate
|
||||
and swaps ownership only after a successful close. The GUI similarly prepares
|
||||
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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue