Repository navigation
Reading the grid
The grid is scenes down, tracks across — the same shape as Live's Session View, with room to actually read it. Everything else in the app opens from it and closes again.
┌─ logo · BPM · metro · quantize · scale · bar.beat.16th · playback · views ─┐
├─ track headers, each in its own Live color, groups banded on top ──────────┤
│ Songs · workflow icons │ │ ← one heading
│ ▾ NIGHTFALL · SUN & STEEL │ │ ← song header
│ 128 Bm COVER 2/2 │ │
│ 12 128 Bm │ ▶ CHORUS │ ■ ■ ■ │ ← scene row
│ 13 128 Bm │ ▶ VERSE │ ■ ■ │
├─ the rail opens on the right when you pick something ──────────────────────┤
└─ readiness · counts · debug console along the bottom edge ─────────────────┘
The bar.beat.sixteenth readout left of the playback buttons is Live's Arrangement
position, live while the song rolls and –.–.– when Live isn't reporting one.
The playback buttons are Live's transport, in Live's order: play, stop and record. Record is Live's Arrangement Record button — it arms, and turns red when Live says it's armed, exactly as it does in Live's own Control Bar. Arm it before you start the song and the next start records into the Arrangement; arm it while the song is already rolling and the take begins there. Nothing in this app arms it for you.
The controls beside the logo mirror Live's Control Bar:
- BPM displays the Live Set tempo. Type a value from 20–999 and press Enter or leave the field to commit it.
- The metronome icon toggles Live's metronome.
- The first dropdown is Live's global clip-launch quantization.
- The scale icon, root-note dropdown and scale-name dropdown are Live's complete Current Scale controls.
Header values use one neutral text color. Amber is reserved for controls that are on, such as the metronome and Scale Mode, so state stands out without every value competing for attention. The transport is the exception, and takes its colors from Live: green while the song is rolling, red while Arrangement Record is armed.
Live's Current Scale is not a command that rewrites every clip in the Set. It reflects the currently or most recently selected clips, and changing it applies to the selected clips; with no clip selected it becomes the setting for subsequently created clips. This matches Live's own Control Bar behavior.
The first button group after the logo opens the song index and folds or unfolds every song. Both controls change only this app's display. The left edge of the grid is the Master section, and one heading spans the whole of it: the larger Songs label, and at its right an action group holding running order, coloring all songs from a rule and Add, in that order. Hover an icon to see its action in words. That heading is filled with Master's color from Live, exactly as every track header is filled with its own track's.
The section is two columns, and they read as one region running the full height of the grid.
The metadata column holds the app's own facts about a scene and nothing else: its number, its BPM and its key. There is nothing in it to fire, and it keeps its width whatever the column-width setting says.
The Master column beside it is Live's Master track, and a track column like any other: the same width as a track, and it moves with the width setting the way one does. Each scene's cell in it is built like a clip cell — the ▶ scene launcher at the left end, and the scene's role painting the rest of the cell the way a clip's color paints its slot. The launcher is here rather than beside the number because Live puts the scene launchers in the Master track, and firing a scene is Live's business rather than the app's. Stop All Clips and Master's mixer strip sit at the foot of the same column. Nothing spells the word Master out anywhere: the launchers down the column and the strip at its foot are what tell you it's there.
None is what you came for, so none is in the way until you want it.
-
The song index (left) opens from the list icon beside the logo. It shows each mapped song once with its artist, key, BPM and type; clicking a column heading sorts it in either direction without changing the set's running order. A consistently colored song uses that color for its name; mixed and uncolored songs stay neutral. Click a song name to jump to its first block in the grid and select its first scene in Live, centering that scene in Live's Session View.
The columns icon in its header turns each column off, and the pane narrows by exactly that column — which is how you get the left edge back without losing the contents list. The song name can't be turned off, and hiding the column you sorted by drops the sort, since an order nothing on screen explains is worse than no order. Search still matches every field, including the ones you've hidden. What you choose is remembered in this browser rather than in the set: it's about the screen you're on, not about the
.als. -
The rail (right) opens the moment you pick something to work on — a clip, a scene name, or a song title. Its
×closes it and gives the grid back its width. You can't get stranded: clicking any of those three opens it again. -
The device chain (bottom) opens when you click a track header, and shows that track's devices and the controls of the ones you have open — see below. Its
×closes it; clicking any track header opens it again. -
The log (bottom) starts closed after every refresh and opens only from the bug icon in the bottom status strip. Its open state is never remembered, and errors do not open it automatically. Every write still reports into it rather than throwing, so if a write didn't take, toggle it open to see what happened.
The counts along the bottom edge don't open or close. They're one line high, and they're for glancing at after a snapshot or before an apply.
Two kinds of selection, deliberately separate:
- Clips — click a cell. ⇧-click extends a block.
- Scenes — click a scene, in either of its two left-hand cells. ⇧ extends over scenes. Selected scene rows get an amber left edge.
Clicking a scene also selects every clip in that row, which is the fast path the app exists for: click a scene, pick a swatch recolors the whole scene.
Scene selection is its own thing because a scene with no clips still needs to be taggable with a role. So "which scenes am I about to tag" is never a guess.
⌘A selects every scene in the set, unfolding any folded songs first — so the selection and what's on screen always agree. Selecting rows hidden behind a folded header would arm a bulk write against scenes you can't see.
Blocks only pick up cells that actually hold a clip — sweeping over 4,000 empty slots would make the selected count a lie.
Every cell holding a clip carries Live's ▶ launcher at its left edge. Pressing it fires that clip and does nothing else: it doesn't select the clip, move the active cell or open the rail. Click anywhere else in the cell and it selects and opens the editor exactly as it always has.
The launcher is also where a clip reports itself: it goes green while the clip is sounding and amber while it's queued and waiting for the next launch point, the same colors the scene and group launchers use.
Empty slots have a button in that same place, the way they do in Live, so one column of buttons runs down a track whether its slots hold clips or not:
- ■ stops that track's clips.
- ● records into that slot — and it only appears once the track is armed in Live.
Which one you see is Live's answer, not the app's: arm a track and its whole column of squares turns into red circles. That's the fastest way to see what's armed without opening the mixer. See Playing things for what pressing one does.
Exactly one cell is active — the one the arrow keys move, and the one the name field
will edit. It's separate from the selection. The scene counts as a cell, so the active
cell can sit there; ← from the first track lands on the scene, and → takes you back.
The outline is drawn on that scene's cell in the Master column.
Arrow keys walk what's on screen. A collapsed track group or a folded song is
invisible to the arrows as well as to your eye, which is what stops ⌘↓ descending into
scenes you can't see and firing them.
The app reads your scene names and works out which song each scene belongs to. It does this on every snapshot — nothing is stored on the side. See Naming scenes for the convention it reads.
Each run of scenes belonging to one song gets a header row above it, split where every other row is split: the song's identity across the metadata and Master columns, and the track region beside it. Open, that track region is one empty band separating the song from the one above. The identity stays pinned to the left edge as you scroll right — so track 30 still says which song those clips belong to.
- Click a header to fold that song down to just the header row.
- Click the song title in a header to select every scene of that song — across all its runs — and unfold it first.
- Drag a header to move that whole run of scenes, or drag a scene by its number to move that one scene. See The running order.
- The hamburger in the header folds or unfolds every song at once. A hundred songs fold to a hundred rows, which turns the set into a table of contents.
Folding is a view state. It never writes to Live, and it survives a re-snapshot.
Each open scene row shows its number, then the BPM and key its name states,
and then the launcher and role in the Master column. The facts use fixed-width slots shared
with the song header, so BPM and key each form one vertical column. --- means the name
doesn't say. A scene whose name states no bpm but which carries its own Scene.tempo shows
that instead, until a rename moves it into the name.
The BPM here is a label. It doesn't say the set will play at that tempo — see bpm is a label, not a setting.
The song tag is on the header only. Every scene of a song carries the same one, so a column of identical pills down the rows would say nothing the header hasn't.
The song header's collapse icon sits on the same vertical guide as the draggable scene numbers beneath it, and the BPM column stays fixed.
▸ GLASS TUNNEL · SUN & STEEL │ ▍▍▍ │ │ ▍▍▍▍▍│ ▍▍
124 F#m COVER │ ▍▍▍ │ │ ▍▍▍▍▍│ ▍▍
└── metadata and Master columns ──┘ └ one slice per scene, per track ┘
A header is laid out the same open or folded, so a song doesn't change shape when you fold it. The identity takes the metadata and Master columns together, on two lines:
- The name leads, with the artist beside it when the set names one. When both are long the artist gives way first, because the name is what you're reading down the set for.
- Under them the bpm and the key, in the same fixed slots the scene rows use — so a
song's bpm sits directly above its scenes'. Then the song tag, and
2/2if the song appears in more than one run.
Every slot keeps its width whether or not the song fills it, so the next song's facts are
where your eye already is. A song that states neither shows --- and -- rather than a
gap: a dash means the set never named one, which is a thing to go and fix.
Both lines fit inside the height a header already has, so every song header is the same height — which keeps a fully collapsed set, a page of nothing but headers, as short as it can be and straight down the left edge. Naming an artist doesn't make one taller. And because the name has both columns to run across, a folded song's name is readable rather than a strip left over after the facts.
The bpm shown here is what the scene names say. Where they say nothing, the song's
first scene supplies it from its own Scene.tempo — that's the one scene the app puts
a tempo on, and it's what the song is entered at. A tempo further into the song is a change
partway through rather than a fact about the song, so it never becomes the header's answer.
Where the names disagree, both values show in amber rather than one of them being picked.
Out in the track columns, a folded header gives each track one slice per scene of the song, in order — so a folded song is a miniature of its own shape, and you can see that the sparkle pad enters at the second chorus rather than merely that it's in the choruses. A slice takes its scene's role color; an empty slot stays blank. Clips on scenes with no role get a neutral grey slice, so a track used only in untagged scenes still reads as used. Hover a cell for the section names and counts.
A few things you'll see on a header:
an outlined pill, e.g. COVER
|
the song's tag, drawn in the song's own color |
2/2 |
this song appears in more than one run — a reprise, or two songs sharing a name. Hover it for the same thing in words |
mixed color, out in the track region |
some scenes of this song are colored and some aren't. A song is meant to be one color |
| amber values | the scenes of this song disagree about a fact. Both values are shown rather than one being picked |
None of those are errors. They're the grid telling you something to go and decide.
Every track header is filled with that track's own color from Live, so the grid reads the way your set does. A group track is a column like it is in Live — a real track, sitting at the head of the tracks it contains — and a colored bar runs along the top of the group and everything in it, showing how far it reaches.
┌────────────────────────────────────┐ ← the group's bar, unbroken
│ PADS ⊙ │ SPARKLE │ BEATING │ … ← the group, then its tracks
├───────────┼─────────┼─────────┤
│ ▶ 3 │ ■ │ │ ← the group's slot: fire it, and a count
The ⊙ badge on the right of a header marks a group — a circled chevron, the way Live draws it, and the fastest way to tell a group column from an ordinary track. Click the chevron to fold the group: its tracks hide behind it and the chevron turns. Click it again to unfold.
Folding writes to Live. Fold a group here and it folds in Live's Session View too, which means it survives your next snapshot.
Clicking any track header — group or not — opens its device chain along the bottom of the window, and underlines that header along its bottom edge. It also selects the track in Live, so Live's own device view is showing you the same thing.
A group is a real track in Live, with its own devices on it, so its header opens a chain like every other one. That's why folding lives on the chevron rather than on the whole header: one click can only mean one thing, and Live puts the fold on the chevron too.
A group track has real clip slots, and firing one fires every clip the group holds in that scene — exactly what the same slot does in Live. Its color is the first of those clips, again like Live.
- ▶ fires the group. Plain click, no ⌘ — see Playing things for why this is one of the two exceptions to that rule.
- The number is how many of the group's tracks have a clip in that scene. That's the thing a folded group hides and nothing else on screen answers.
- ⌘-click a group's header stops the whole group.
A group slot holds no clip of its own, so it can't be selected, named or colored, and the arrow keys step over it.
Selection is left alone when a group folds, which does mean the selected count can exceed what's on screen.
A stop-clips row starts pinned beneath the visible tracks. Use the filled-square toggle in the header to show or hide the whole row. Press the button under one track to stop its clips; the button under a folded group stops the group and its members. The pinned Stop All Clips button in the Master column stops clips on every track while leaving Live's transport running—the same action as Esc. The metadata column holds nothing down here: everything in the footer belongs to a Live output, and it isn't one. A pending stop lights its button from Live's own state. When the mixer is open, this row moves directly above it. With the mixer closed, it sits flush against the bottom status strip. Its track separators continue the grid gutters straight through the stop row and mixer.
The meter icon in the header opens a mixer below the grid. Every visible track column gets a full-height output meter with 6 dB tick marks, a draggable volume indicator beside it, peak and volume readouts at the upper left, a compact pan field, Track Activator button, Solo and record Arm. The meter uses green below 0 dB, amber above it and red near the top of the +6 dB range; the tick marks stay inside the narrow meter rail, with a brighter, heavier line at 0 dB. A track at unity puts its volume indicator exactly on that 0 dB line — the rail is scaled around where Live itself puts unity, so the pointer and the marking are the same height. Click the peak readout to reset its held value. Master's strip sits in its own column and is the same size as every other strip in the row, with the same rail and numerical-field sizing. Its unavailable track switches are invisible but still retain their space, keeping Master's pan aligned with every track. The empty switch area is left unlabelled so nothing crosses the meter. A light vertical line separates neighboring track strips from top to bottom. The output rail stays compact in narrow columns and widens when a roomier track column has the space. Activator, Solo, Arm and the numeric fields are slightly wider at every track width, with proportionally taller shapes rather than stretched controls.
The sends icon beside the meter icon adds a Live-style sends section above every track fader. Its rows are labelled A, B, C and so on in the same order as Live's return tracks. Master has no sends. Opening sends also opens the mixer if it was closed. The sends section grows the whole footer, so it never shortens the meters below.
The volume, pan and send fields use the same values Live displays. Drag vertically anywhere along the meter to change volume; drag the pan field horizontally to move left or right. Drag a send field horizontally to change its level. Double-click any of those controls to restore Live's default value.
They behave the way Live's own controls do. A click grabs the control where it already is rather than jumping to where you clicked, so a small field is still usable and a stray click can't throw a fader across its range. Hold ⌘ (Ctrl on Windows) while dragging for fine adjustment — press or release it mid-drag and the control slows or speeds from wherever it has got to, without moving. Click a field to focus it and the arrow keys nudge it one step at a time; see Keyboard reference. The numbered activator button lights when the track is enabled and is twice the height of the compact Solo and Arm rows; Arm is disabled on tracks Live says cannot be armed. Group tracks hide Arm entirely while retaining its space, so every strip stays aligned. Master's pinned column shows its meter, volume readout and pan. Selected Solo buttons are blue, matching Live.
These are Live's controls, not a local preview: clicking a button or dragging volume, pan or a send writes to Live, and changes made in Live follow back into the panel. A parameter controlled by automation or another mapping is disabled when Live says it cannot be edited directly. Folded-away tracks do not render mixer strips.
The Live observers are installed only while the mixer is open, and the additional send observers exist only while the sends button is on. Every footer section uses the same 2px border. Drag the border directly above the meters up or down to resize every strip together; only the meter section changes height. When the divider has keyboard focus, the arrow keys resize it in smaller steps and Page Up / Page Down use larger steps.
Click a track header and its devices appear along the bottom, in the order Live has them. Each one shows its name and whether it's switched on; a rack additionally shows its chain list, and picking a chain shows the devices inside it — racks within racks included.
Open a device and you get its controls. The triangle in a device's title bar folds it open and shut, exactly as it does in Live, and an open one shows its knobs, switches and menus. They work: turn one and it turns in Live, and a knob you move in Live moves here. So does the on/off button in the title bar.
The EQ Eight is drawn the way Ableton draws it — eight bands, the analyzer plate on the left, output on the right. Every other device gets a plain plate: all of its controls, in Live's order, with Live's own names on them. That is less pretty and just as connected.
A few controls on the EQ Eight are greyed out on purpose: Analyze, Block, Refresh and Avg, which Live keeps to itself and doesn't publish at all, and Mode and Edit, which it publishes in a way this app doesn't read yet. Hover one and it says which. Nothing here moves without moving Live too, so a control that can't is a control that doesn't pretend.
Folding a device isn't just tidying. The app only follows the controls of devices you have open, so folding one shut is how you stop it costing anything. A long chain with everything open is more work for Live than a long chain with one device open.
Selecting a track here selects it in Live. Live's device view follows along, so the device you're looking at in the app is the one under your hands in Live.
The chain follows Live as you change it. Add, remove, rename or switch off a device in Live while the strip is open and it updates on its own — the refresh icon that used to be in the strip's header is gone, because there's nothing left for it to do.
What it follows is what's on screen, which is the point: an open rack's selected chain is watched, and a rack you've folded shut, or the seven chains you haven't picked, are not. Open one and it starts following that instead. It's the difference between the app keeping an eye on a few devices and it keeping an eye on every device in the set, which would make Live itself slower.
The width dropdown in the header offers Narrow / Wide / Auto / 8 tracks / 16 tracks:
| track column | fits in ~1100px | |
|---|---|---|
| Narrow | 74px | ~11 tracks |
| Wide | 116px | ~7 tracks |
auto |
at least 74px | shares the available width across all visible tracks |
8 |
adapts to the window | one 8-track clip-launcher bank |
16 |
adapts to the window | two 8-track clip-launcher banks |
Auto adjusts whenever the browser changes size, the rail opens or closes, or a group folds. If all tracks cannot fit at the Narrow width, the grid scrolls instead of squeezing them further.
8 and 16 always size the columns so exactly that many tracks fit beside the metadata and Master columns — Master takes a track's worth of width without being one of the eight. Additional tracks continue off the right edge and scroll into view. These layouts mirror one or two common 8-track clip-launcher hardware banks, which makes the grid useful for previewing what those devices can address at once.
The setting sizes the track columns only — Master included, since it is one. The metadata column stays put, because the question the setting answers is how many tracks fit on screen, and a scene's number, BPM and key are the same width whatever the answer is.
The metadata and Master columns both stay pinned to the left while you scroll across the tracks, including Master's meter when meters are open.
Live tells us nothing here — the Live object model has no Session View column width, so these are ours to pick. Your choice is remembered on this machine.
Three different things keep the grid honest, and they cover different ground.
Moving a clip in Live shows up here. The app watches Live's Session cursor — the selected track and scene — and re-reads a track whenever the cursor touches it. You have to select a clip to drag it, so both ends of a move get re-read: where it went, and where it came from. Nothing tries to detect the drag itself, which is what makes it hard to fool.
This is new, and it's the part of the app that talks to Live most directly. If you ever see the same clip drawn in two places, that's this getting it wrong — press sync and it'll come back clean. Worth reporting if it happens.
Coming back to this window re-reads the whole set. Deleting, renaming or recoloring a clip in place doesn't move the cursor, so nothing above catches it. Switching back from Live is the moment that costs nothing to spend a walk on, and the moment you're about to look at the grid and trust it — so that's when it happens. Not while a write is in flight.
A write no longer re-reads the set. Tagging four scenes with a role used to mean re-walking every clip in the set to be told what you'd just written; now the app updates what it's holding. That's the difference between a cell that changes instantly and one that changes after a pause — but it does mean a write is no longer a free re-read of changes you made in Live. The two above cover that, and sync is the answer whenever the grid and Live disagree.
The set loads by itself when you connect. The sync icon in the header re-walks it by hand, which is what you want after doing something substantial in Live directly.
Every snapshot prints a timing breakdown to the browser console, and the counts along the bottom show the walk and slot-scan times. On a big set this is worth a look — see Troubleshooting.