Seperating the sequencer into multiple widgets.

This commit is contained in:
Johannes Findeisen 2026-11-06 21:39:38 +01:00
commit e664414796
23 changed files with 1455 additions and 914 deletions

View file

@ -148,6 +148,25 @@ Tests cover C-model/persistence boundaries, GUI move/trim gestures and zoom,
save/reopen, failed load/submission rollback, sample-derived cursor updates, and
live JACK playhead advance/pause.
### Sequencer components
The sequencer is a master `Fl_Group` containing a ruler and one group per track.
Each track contains clip widgets, a velocity lane, and a pinned header group
with its instrument selector. Local drawing and input live with those children;
the master coordinates selection, scrolling, zoom and cross-track edits.
See [widget ownership and source files](ARCHITECTURE.md#sequencer-widget-ownership)
for the implementation map and lifetime rules.
Click the small track-header arrow to expand a track downward. MIDI tracks
expose note velocity bars (1–127); drag a cap to edit a note. Audio tracks expose
the saved track-gain envelope (0–400%): click at any timeline position to add a
point, drag vertically to adjust it, or right-click a cap to remove it. Audio
positions ignore the snap grid. Escape cancels a preview; undo/redo restores
committed edits. Instrument selectors retain their own keyboard focus.
Expansion is temporary view state; audio gain points are shared with the mixer
and saved with the project. This component refactor preserves the existing
workflow and project format.
---
## Audio Workflow