Phase 33: add a flat modern DAW workspace and track creation workflow

This commit is contained in:
Johannes Findeisen 2026-10-27 18:04:39 +01:00
commit d800a6392e
19 changed files with 711 additions and 115 deletions

View file

@ -279,3 +279,8 @@ VST2 compatibility uses original ABI declarations. `make test-modern-plugins`
runs original shared-library fixtures without a server; `make test-gui-modern-plugins`
adds GUI/browser/undo/reopen tests under Xvfb. The fixtures also run in `make test`
and therefore in sanitizer/release builds. Notices are installed with LICENSE.
Phase 33 uses a header-only FLTK theme and existing drawing primitives; no new
GUI dependency or generated asset is required. `make test-gui-instruments` also
exercises sidebar track creation, rollback, undo/reopen and minimum/large layouts.
See WORKSPACE.md for the default size and manual visual verification.

View file

@ -61,3 +61,10 @@ layouts remain unsupported. No third-party modern plugin has been qualified.
Phase 32 adds CLAP/VST2/VST3 mono instruments bound to MIDI tracks, sample-offset
notes, a saved live target, track mixing, GUI assignment/undo and v12 persistence.
See PLUGIN_HOSTING.md for compatibility and controller/state limits.
Phase 33 adds a flat DAW workspace, shared dark theme, track-creation sidebar,
read-only musical transport/track inspector, colored track clips and real MIDI
previews. New MIDI/audio track commands are undoable and prepare candidates
before adoption. The default window is 1280 × 800, minimum 1220 × 720.
No dependency or project-format change. See WORKSPACE.md and the new
`modern-session.xtc` example; existing engine/plugin limitations still apply.

View file

@ -931,6 +931,35 @@ installation, reproducible source releases and relocatable binary packages pass.
---
## Phase 33 — Flat Modern DAW Workspace
### Goal
Give xtc a clear, modern DAW presentation for creating tracks and arranging
music, with simple flat controls and no 3D styling or proprietary assets.
### Tasks and acceptance criteria
- [x] Introduce one shared dark palette, typography, flat controls and focus/selection accents.
- [x] Make track creation, import, instrument loading and MIDI editing visible in a persistent sidebar.
- [x] Create/select MIDI tracks with clips and audio tracks transactionally, with undo and failure rollback.
- [x] Organize transport, musical position/BPM, main editors, inspector and status in a resizable workspace.
- [x] Draw colored track headers, clear clip selection, bar/beat grids and actual MIDI note previews.
- [x] Preserve existing editing, mixer/automation, graph, plugin, recording and keyboard behavior.
- [x] Add an original multi-track example and document the workflow and retained limitations.
- [x] Verify GUI actions, minimum/large layouts, core regressions and release packaging.
### Implementation status
Implemented in the FLTK GUI without new dependencies, engine changes or a project
format change. Default workspace 1280 × 800; supported minimum 1220 × 720.
Track creation is a single undoable prepared-model edit. The transport and
sidebar inspector are read-only displays; existing editors retain their controls.
Original four-track example visually checked; GUI tests cover creation,
selection, rollback, undo/reopen and minimum/large window sizes. This phase
modernizes presentation and workflow; it does not claim commercial-DAW feature
parity or add docking, scanning or mixer channel-strip functionality.
See WORKSPACE.md for the workflow, tests and limits.
---
## Recommended Execution Order
Reorder the phases when the audit reveals a blocking dependency. Do not mark a phase complete merely because code exists: its acceptance criteria must be demonstrated by builds, tests, or documented manual verification.

View file

@ -199,3 +199,10 @@ Do not unload/replace modules during playback; candidate plans are prepared off
the callback and old instances are reclaimed on the control thread. Missing
references remain inspectable without loading; failed GUI preparation retains
the current project. Save a backup for applications limited to v11 or earlier.
## Phase 33 workspace
The flat workspace puts New MIDI/audio track, WAV import and instrument loading
in a persistent sidebar, with a musical transport display and selected-track
overview. See [WORKSPACE.md](WORKSPACE.md) for shortcuts and workflow. Open
`modern-session.xtc` in the installed examples for an original four-track arrangement.

57
docs/WORKSPACE.md Normal file
View file

@ -0,0 +1,57 @@
# Flat DAW workspace
Phase 33 presents the existing xtc editors in a consistent flat workspace. It uses
FLTK vector drawing and system fonts: no images, shadows, bevels, 3D rendering,
external theme packages or new runtime dependencies.
The default window is 1280 × 800; the supported minimum is 1220 × 720. The main
editor grows with the window. Use the scrollbars for longer arrangements and
larger track counts. The sidebar stays available across Sequencer, Mixer and
Modular Graph views. Ctrl+1/2/3 switches those views; Ctrl+4 opens the piano roll.
## Create and arrange
- **New MIDI track** (Ctrl+Shift+M) creates a named track and a one-bar MIDI clip
at the cursor. The new clip and mixer track are selected together. **Edit MIDI
notes** opens its piano roll. Creation is one undo step.
- **New audio track** (Ctrl+Shift+A) creates an empty named track. **Import WAV**
imports into the selected track, or creates one when none is selected.
- **Load instrument plugin** opens the instrument browser for the selected
sequencer track. Unassigned MIDI tracks retain the built-in sine instrument.
- Existing Add track/region/MIDI clip, duplication, trimming, split, rename and
delete commands remain available. F2 renames the selection. Drag clips to move
them and their edges to trim them; click the ruler to seek while stopped.
Creating a track uses candidate preparation, so module, capacity or allocation
failures retain the current project. As with other project replacements, the
engine stops and the transport returns to the beginning. Track creation is
unavailable while recording. No track type restriction is added to the model:
ordinary tracks still accept the existing audio and MIDI workflows.
Track headers show a stable color, name, order and mute/solo state. Clip colors
follow track identity through reordering. MIDI previews show real note starts,
durations and relative pitches; waveforms continue to show loaded audio data.
The selected clip has a light outline. A teal playhead and bar grid make musical
time visible. The transport display reads **bar : beat : tick** (4/4, 960 ticks
per beat); BPM follows the project tempo. These displays are read-only.
The sidebar inspector follows the sequencer selection, showing track name,
gain/pan, mute/solo and assigned instrument. Use the Mixer for controls, routing,
meters and automation; the sidebar is an overview, not another mixer. Status and
errors remain visible below the editor. Existing engine connection, transport,
recording and keyboard safety behavior is retained.
## Example and verification
Open `examples/projects/modern-session.xtc` for an original four-track, four-bar
MIDI arrangement with 16 clips and 128 notes. It needs no media or plugins. It is
also installed with the project examples. Connect JACK playback ports before
listening. Work on a copy if the installed examples are read-only.
GUI tests exercise sidebar creation, selected clip/editor access, undo/redo,
failed preparation, save/reopen and layout at 1220 × 720 and 1600 × 1000. The
running example was also inspected at 1280 × 800. Existing GUI plugin, live JACK
and workflow tests cover the retained commands. A modern presentation does not
add commercial-DAW features: detachable/resizable docks, mixer channel strips,
automatic plugin scanning, custom plugin editors and new audio/MIDI features
remain outside this phase. Existing plugin and engine limits still apply.