Initial commit.
This commit is contained in:
commit
1d8f869b5b
39 changed files with 1671 additions and 0 deletions
23
docs/decisions/0001-modular-engine-first.md
Normal file
23
docs/decisions/0001-modular-engine-first.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Decision 0001: Modular engine first
|
||||
|
||||
**Status:** Accepted
|
||||
|
||||
## Context
|
||||
|
||||
The project aims to preserve energyXT's combination of a simple workflow and a
|
||||
flexible modular routing model.
|
||||
|
||||
## Decision
|
||||
|
||||
Use one unified processing graph for sources, instruments, effects, mixers,
|
||||
and outputs. The sequencer is a timeline/event source integrated with that
|
||||
graph. The default GUI is simple and sequencer-oriented, while a graph editor
|
||||
exposes routing when needed.
|
||||
|
||||
## Consequences
|
||||
|
||||
- Graph validation, scheduling, buffer allocation, and safe graph replacement
|
||||
are foundational requirements.
|
||||
- Initial audio graph rejects cycles.
|
||||
- Graph execution plans are prepared off the audio thread.
|
||||
- The UI must not create a separate routing model disconnected from the engine.
|
||||
20
docs/decisions/0002-c-core-fltk-gui.md
Normal file
20
docs/decisions/0002-c-core-fltk-gui.md
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Decision 0002: C core with FLTK/C++ GUI
|
||||
|
||||
**Status:** Accepted
|
||||
|
||||
## Context
|
||||
|
||||
The project prioritizes a readable, small C implementation while using FLTK
|
||||
for a lightweight desktop GUI.
|
||||
|
||||
## Decision
|
||||
|
||||
Keep the engine, DSP, project model, graph, and public core API in C (C99
|
||||
baseline). Use C++ only for FLTK windows and widgets. Communicate through
|
||||
documented C headers with `extern "C"` guards.
|
||||
|
||||
## Consequences
|
||||
|
||||
- No C++ classes, STL containers, exceptions, or FLTK types cross the C API.
|
||||
- GUI code cannot mutate engine internals directly.
|
||||
- Keep C++ simple and limited to the presentation layer.
|
||||
19
docs/decisions/0003-realtime-thread-rules.md
Normal file
19
docs/decisions/0003-realtime-thread-rules.md
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
# Decision 0003: Real-time thread rules
|
||||
|
||||
**Status:** Accepted
|
||||
|
||||
## Context
|
||||
|
||||
Audio glitches and unsafe graph changes can undermine the whole application.
|
||||
|
||||
## Decision
|
||||
|
||||
The audio callback performs bounded processing using preallocated resources.
|
||||
It performs no allocation/free, blocking locks, file I/O, logging, GUI calls,
|
||||
plugin loading, or waits. Graphs are prepared outside the callback and active
|
||||
graph resources are retired only after safe reclamation.
|
||||
|
||||
## Consequences
|
||||
|
||||
Thread ownership and publication mechanisms must be documented and tested.
|
||||
Any exception to these rules requires explicit evidence and review.
|
||||
Loading…
Add table
Add a link
Reference in a new issue