2026-10-26 22:51:25 +01:00
|
|
|
# Roadmap
|
|
|
|
|
|
|
|
|
|
## Phase 0 — Baseline
|
|
|
|
|
Inspect repository/toolchain, verify Makefile and minimal executable, document
|
|
|
|
|
dependencies. No system changes without permission.
|
|
|
|
|
|
2026-10-26 23:03:17 +01:00
|
|
|
Baseline implementation: headless startup/shutdown executable, core tests,
|
|
|
|
|
separate debug build, optional FLTK shell build, and header dependencies.
|
|
|
|
|
See [BUILD.md](BUILD.md) for toolchain, commands, licensing and limitations.
|
|
|
|
|
|
2026-10-26 22:51:25 +01:00
|
|
|
## Phase 1 — C core and offline processing
|
|
|
|
|
Graph data structures, validation, cycle detection, topological ordering,
|
|
|
|
|
preallocated buffers, test oscillator, gain and offline render tests.
|
|
|
|
|
|
2026-10-26 23:20:00 +01:00
|
|
|
Implemented: mono ports, transactional cycle rejection, independent compiled
|
|
|
|
|
plans, precomputed input routing, oscillator/gain/meter/output, deterministic
|
|
|
|
|
variable-block tests and lifecycle/error coverage. See AUDIO_ENGINE.md for API
|
2026-10-26 23:32:04 +01:00
|
|
|
limits and compatibility behavior.
|
2026-10-26 23:20:00 +01:00
|
|
|
|
2026-10-26 22:51:25 +01:00
|
|
|
## Phase 2 — Real-time backend
|
|
|
|
|
Choose and implement a Linux backend. Document callback semantics, start/stop,
|
|
|
|
|
device errors, shutdown, and safe graph publication.
|
|
|
|
|
|
2026-10-26 23:32:04 +01:00
|
|
|
Implemented: optional JACK-compatible mono backend, explicit audio port routing,
|
|
|
|
|
format/xrun/loss status, start/stop/reopen, and bounded pending/retired plan
|
|
|
|
|
handoff using lock-free atomics. Hardware-independent failure/concurrency tests
|
|
|
|
|
and a 30-second software-loopback run pass. See decision 0004 and AUDIO_ENGINE.md.
|
|
|
|
|
Physical hardware playback/endurance and live server-loss recovery remain
|
2026-10-26 23:40:28 +01:00
|
|
|
unverified; GUI engine controls are implemented in Phase 3.
|
2026-10-26 23:32:04 +01:00
|
|
|
|
2026-10-26 22:51:25 +01:00
|
|
|
## Phase 3 — FLTK shell
|
|
|
|
|
Main window, transport controls, view switching, backend status, clean startup
|
|
|
|
|
and shutdown through the C API.
|
|
|
|
|
|
2026-10-26 23:40:28 +01:00
|
|
|
Implemented: dark FLTK shell, Play/Stop/Reconnect, view/menu shortcuts, backend
|
|
|
|
|
state/format/xrun/process status, persistent command errors, timer-based refresh
|
|
|
|
|
and retirement collection, and callback-safe close/retry. Mock-backend GUI tests
|
|
|
|
|
and live GUI/JACK start/stop/reconnect/close tests pass under Xvfb. Editors and
|
|
|
|
|
project-file actions remain placeholders; engine runs in silence. See GUI.md.
|
|
|
|
|
|
2026-10-26 22:51:25 +01:00
|
|
|
## Phase 4 — Modular editor
|
|
|
|
|
Draw nodes/ports/edges; create, move and connect nodes; reject invalid edges;
|
|
|
|
|
safely submit edits to the C core.
|
|
|
|
|
|
|
|
|
|
## Phase 5 — Project and sequencer
|
|
|
|
|
Versioned persistence, stable IDs, tracks, clips, timeline, selection, zoom,
|
|
|
|
|
scrolling, and transport synchronization.
|
|
|
|
|
|
|
|
|
|
## Phase 6 — Audio clips and recording
|
|
|
|
|
Audio import/playback, recording through bounded buffers, missing-asset
|
|
|
|
|
handling, no file I/O in callbacks.
|
|
|
|
|
|
|
|
|
|
## Phase 7 — MIDI and instrument
|
|
|
|
|
MIDI input/events/clips, simple internal instrument, note-off/panic handling,
|
|
|
|
|
then a basic piano roll.
|
|
|
|
|
|
|
|
|
|
## Phase 8 — Mixer and editing
|
|
|
|
|
Gain/pan, meters, mute/solo, automation, undo/redo, keyboard workflow.
|
|
|
|
|
|
|
|
|
|
## Phase 9 — Extensibility and release
|
|
|
|
|
Native node API, evaluate plugin hosting, licensing review, packaging,
|
|
|
|
|
installation tests, performance and recovery tests.
|
|
|
|
|
|
|
|
|
|
Do not skip phases without documenting why and preserving acceptance criteria.
|