Arrange
The Arrange view is the studio’s top-level timeline: a bar ruler, one row per
track, and color-coded clip previews per arrangement block. Every pixel derives
from code — it is a pure projection of song.arrange([...]) plus a dry-run of
each section (the body executed against mocked flags into a capture buffer that
feeds the UI instead of the scheduler).
What it projects
Section titled “What it projects”- Section blocks along the timeline, in the order and with the repeats from
your
song.arrange([...]). A block’s width is its bar length. - Track rows with clip previews: the dry-run events of each section, compressed into that block, drawn at their velocity. The track color is consistent across every view.
- A smooth 60fps playhead (driven by the runtime’s bar clock + a wall-clock phase), visible while playing and frozen while paused; hidden when stopped.
How it writes back
Section titled “How it writes back”The Arrange view is mostly navigation over a read-only projection — but two of its controls do reach back:
- Click a section block to select it (the Clip detail panel
follows the selection). Double-click to jump the editor to that section’s
code. The structure itself (order, repeats) is edited in code via
song.arrange([...]), not by dragging blocks. - Click the bar ruler to seek — to the next bar boundary while playing, or to a start position while stopped.
- Mute / solo per track from the row headers. Mute and solo are live performance state (like the mixer), not part of the AST — so they reset with the runtime and are never written into your code.
To change the arrangement, edit song.arrange(...); the timeline re-derives on
the next compile and the clock applies the new order at the next bar.