Skip to content

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).

  • 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.

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.