Skip to content
MusicStation – Home

Panels

MusicStation organises its views as panels (see Workspace for the arrangement itself). This chapter describes the panels of this build and what they show. A panel is a framed area with a translated title, a minimum size of 120 px, a Region menu and a Hide control in its header - and inside it its content. The five panels are:

  • Session - the 16 tracks by 16 scenes clip grid, the scene launches, the launch quantisation and the drop target for audio files (see Session).
  • Settings - language, theme, accent colour, UI scale, the two preferences, the resets and the shortcut editor (see Settings).
  • Browser - the clips the session holds, grouped by track.
  • Inspector - the details of the selected slot of the grid.
  • History - the version history of the current project: the stored snapshots with their names, notes and dates, the way back to one of them and the comparison of two of them (see Version history).

Three further panel ids are reserved for later epics and are not available in this build: Mixer, Editor and Arrangement. They have no content, no menu entry and no control that opens them, so nothing on this page describes them (see Workspace for the reservation).

Session

The Session panel is the clip grid: the 16 tracks by 16 scenes of slots, the scene launch buttons on the left, the launch quantisation above them and the drop target for audio files. It is docked in the centre of the window in the shipped workspace and it is the panel whose content is complete. Everything it does is documented in the Session chapter; this section covers what a panel is: the frame, its title and the arrangement it sits in.

Settings

The Settings panel is the panel the menu entry Settings… reveals. It carries the language, theme, accent colour and UI scale, the two preferences, the resets and the shortcut editor. In the shipped workspace it is docked on the right; its Region menu moves it wherever you want it, and its contents are documented in the Settings chapter.

Browser

The Browser panel lists the clips the session holds, grouped by track. It reads the session state domain (which clips exist) and the project domain (how many distinct files are behind them and which colour each track has), so it follows the engine without a refresh of its own: load a file onto a slot and the list gains a row.

The panel's own section is Browser: the clip list. Like every panel it can be opened, docked, resized and closed; a search, an audio preview and a list of files on disk are not part of this build - the panel shows the loaded clips and nothing else.

Inspector

The Inspector panel shows the details of the slot that is selected in the session grid: the grid address, the clip's name, its length, its sample rate, its loop flag, its play state and the colour of its track. Select another slot - with a click or with the arrow keys - and every row follows. The panel's own section is Inspector: the selected slot; the one gesture it carries is the colour control of the selected track, everything else is read-only data.

History

The History panel carries the version timeline of the current project: the stored snapshots with their names, notes and dates, the markers automatic and current, and the gestures that create, rename, delete, compare and restore a version. It is the counterpart of the Snapshot on save preference. Everything it does is documented in the Version history chapter, together with the three dialogs it opens; this section covers its frame: the title History in the header, the Region menu and the Hide control, which every panel has.

Version History reveals the panel: if the workspace you are on shows it, it is scrolled into view and focused; if that workspace keeps it closed, it is shown again; if it does not hold the panel at all, a workspace of your own that holds it is applied first - a shipped placement (the Recording and Mix workspaces dock the panel in their right column) is never used as a reason to rearrange the window.

Browser: the clip list

The Browser shows one header line and, under it, one group per track that holds at least one clip. The header line counts what is loaded:

  • the number of clips comes from the session snapshot - one clip per occupied slot, in the singular and plural form of the current language;
  • the number of files comes from the project domain, which deduplicates the sources behind those clips by identity, so it is the number of distinct files, not the number of slots.

3 clips from 2 files therefore means: three slots carry clips, and two of them were loaded from the same file. Clips that share their file are marked in the list, see below.

Every group is headed by the track name - Track 1, Track 2, … - and lists its clips in ascending scene order; empty tracks are left out. One row shows:

  • the colour swatch of the clip's track (the colour of the track, see Track colour),
  • the scene label of the slot - Scene 1, Scene 2, …,
  • the clip's name, which is the base name of the file the engine decoded; it is never translated,
  • the marker same file while another clip shares its file with this one,
  • the clip's length in the m:ss.d form of Duration,
  • the loop flag - Loop while the clip loops, One-shot while it plays once.

Two clips count as sharing a file when their name and their shown length match; the engine decodes every reference to one file into its own buffer, so the wire carries no file identity and the shown length is what a reader can compare. A clip whose file occurs once carries no marker.

A session without a single clip shows No clips loaded yet. Drag audio files onto a slot of the session grid. instead of the groups. The list scrolls on its own within the panel, the header line stays; the fixed grid bounds it at 256 rows, so nothing is virtualised and a frame that changes one slot re-renders the list, not the window.

The Browser is a read-only list: its rows are not controls. A click on a row does not select anything, does not launch a clip and does not open an editor - launching clips and selecting slots happen in the session grid (see Selection and Session).

Inspector: the selected slot

The Inspector is a read-only table of the selected slot: one label in the left column and one value in the right one, in this order - Selection, Clip, Duration, Sample rate, Loop, State, Track colour. Every row exists in every state: a row without a value shows the dash —, so selecting another slot never moves a row, a label or a column.

While nothing is selected, the table is empty of values and the panel says No slot selected. Click a clip slot in the session grid or move to one with the arrow keys.; the Track colour row shows the dash too, because a colour belongs to a track and there is none yet. The rows themselves are described in their own sections below; the selection that feeds them is Selection.

An empty slot is a perfectly good selection: the Selection row then names the slot, the State row reads empty and the metadata rows show the dash. Nothing of the panel is sent to the engine - the one exception is the colour control of the Track colour row, which sends project.setTrackColor like the swatch in the grid header does.

Selection

The selected slot is the slot the Inspector describes. At most one slot of the grid is selected at a time - it starts as nothing selected - and you set it in four ways, all of them inside the session grid:

  • Click a cell - its launch button, its loop switch or its padding. The press addresses exactly the slot the drop target would, and it selects an empty slot just as well as a loaded one.
  • Arrow keys walk from the focused cell to its neighbour: ← and → move along the track, ↓ and ↑ along the scene, and both wrap around the edges of the grid. The walk moves the keyboard focus and the selection together.
  • Home and End jump to the first and the last track of the current row, Page Up and Page Down to the first and the last scene of the current track.
  • Enter starts what has the focus (see Session) and selects the slot it acted on. On a focused scene header it launches the scene and selects nothing, and a press on a scene header with the pointer selects nothing either - a row header is not a slot.

The selection is pure interface state: it is never sent to the engine, it is not part of any stored document, and it stays where it is while the engine is unreachable - a slot address remains meaningful without a connection. It starts as nothing selected; this build has no gesture that drops the selection again, and re-selecting the slot that is already selected changes nothing (the panel does not even re-render). The iPad remote has no selection of its own: its grid starts and stops clips without telling the desktop anything.

Clip

The name of the selected clip: the base name of the file the engine decoded into that slot, exactly as the engine reports it - Kick 01.wav stays Kick 01.wav in the German interface. A slot the session snapshot does not list (an empty slot) shows the dash —; the clip name replaces the dash the moment a file is loaded onto the slot, without a refresh.

Duration

The length of the decoded clip as m:ss.d - minutes, seconds and tenths of a second, rounded to the tenth: 0:02.0 in English, 0:02,0 in German, because the decimal separator and the digit grouping follow the interface language. The value comes from the clip's frame count and sample rate, so it is the length the engine will play, not the length of the file on disk. An empty slot shows the dash —; a clip the engine could not measure reads as 0:00.0.

The session grid shows the same length in its own unit-free form; the Inspector is the place to read it exactly. The Browser uses the same m:ss.d form and the same rounding for its rows, which is what makes two clips comparable at a glance.

Sample rate

The sample rate of the decoded clip in hertz, written in the number format of the interface language and suffixed with Hz - 44,100 Hz in English, 44.100 Hz in German, because the digit grouping follows the language. It is the rate the engine runs at, not necessarily the rate of the file on disk: the clip loader resamples a file offline when the audio device runs at another rate, and the Inspector reports the result. An empty slot shows the dash —.

A sample rate the clip cannot report reads as 0 Hz; the row never disappears, so the table keeps its shape.

Loop

The loop flag of the selected clip as the engine holds it: On while the clip repeats from its own start until it is stopped, Off while it plays once and stops at its end. It is the same flag the loop switch of the cell and the L key flip (see Session); the Inspector shows the value that is currently stored, and a flip in the grid updates the row on the next frame. An empty slot shows the dash —.

The engine applies the flag when the clip reaches its end, so flipping it while the clip plays decides what happens at its next end - a running clip is not restarted by the change (see Session).

State

The play state of the selected slot, as the session snapshot reports it and translated into the interface language:

  • stopped - the slot holds a clip that is not producing samples.
  • playing - the slot is producing samples, the fade-in and the fade-out tail included.
  • waiting for its start - a launch is armed and the clip starts at the next quantisation boundary.
  • empty - no clip of the session is stored in that slot. The wire has no such value, so the Inspector derives it from the snapshot.

Without a selection the row shows the dash —. The state is engine truth: it changes on the frames the engine publishes, never because a gesture was started.

Track colour (Inspector)

The Track colour row of the Inspector shows the swatch of the selected track, its spoken name and the palette behind it - the same control the header of that track column carries in the session grid (see Track colour). Picking an entry sends project.setTrackColor for that track, so the row, the grid header and every cell of the column follow at once; Default in the palette clears the colour, which is the per-track reset.

Without a selection the row shows the dash —, because a colour belongs to a track. While the interface is not connected to the engine the control is disabled - a colour command would have no one to answer it - and the row still shows the colour of the last known state.

Track colour

Every track of the session can carry one colour, and each track column of the grid shows the control that sets it: the small swatch at the right end of the column header, next to the track name. The same control sits in the Track colour row of the Inspector.

Press the swatch to open the palette; the swatch announces which track it belongs to and which colour it currently shows - Track 3 colour: Blue - so sixteen identical swatches stay tellable apart with assistive technology. Picking a colour sends project.setTrackColor and closes the palette, and the swatch, the grid header and the cell bars of the column repaint at once: the colour is patched optimistically, and the next project frame of the engine confirms it or rolls exactly this track back on an error.

A track colour is a project value, not an application setting: it is stored with the project - one palette id per track, null for a track without a colour of its own - and every project carries its own colours. The colours themselves come from the active theme (see Theme), so switching the theme swaps the whole palette underneath your choices. While the interface is not connected, the swatches are disabled: they still show the last known colour, but a press changes nothing.

Every clip renders the colour of its track: a slim bar at the left edge of the cell and the swatch in its Browser row. A track without a colour of its own - the value null, or a palette id a newer engine added and this build does not paint - uses the theme's default track token, a neutral grey. A clip's colour never changes its audio, its length or its launch behaviour.

Track colour palette

The palette behind the swatch: one row of seven colours plus the entry that clears the colour. The seven palette ids of the contract are Blue, Teal, Green, Amber, Red, Violet and Neutral; Neutral is a grey of its own, not the same as having no colour. The entry that matches the track's current colour is marked as selected, and a press applies that colour and closes the palette - one gesture, one command.

The palette closes on Escape and on a press outside it without changing anything, and it opens for one track at a time: opening another swatch's palette closes the first one. The palette is the same for every track and for both surfaces that show the control, so the grid header and the Inspector can never drift apart. A palette id this build does not know is not offered here: a newer engine may report one, and the swatch then paints the default track token while no entry of the palette is marked as selected.

Default

Default is the last entry of the palette and it is the reset of one track's colour: picking it sends null for that track, so the track has no colour of its own again and paints the theme's default track token. It is the per-track reset - the other entries never remove a colour, and the project document stores null for a track that has none. Nothing else about the track changes: its clips, their audio, their length and their launch behaviour stay exactly as they were.

A brand-new project starts with this value on every track, which is why a fresh session grid shows grey bars and no coloured headers. The counterpart for the whole project would be resetting every track colour in the project document; this build offers only the one-track entry.

Workflow: read a clip in the Inspector

  1. If the Inspector is not in the window, open it from the Panels menu and dock it where you want it - the built-in Recording workspace has it on the right.
  2. Click a cell of the session grid - for example the cell that carries the clip you are interested in.
  3. Read the rows of the Inspector: the grid address, the clip name, the length, the sample rate, the loop flag, the state and the colour of the track (see Inspector: the selected slot).
  4. Walk to the next slot with the arrow keys; the Inspector follows the focus (see Selection).
  5. Flip the loop flag with the loop switch of the cell or with L (see Session) and watch the Loop row change.

Workflow: give a track a colour

  1. Find the column of the track in the session grid and press the swatch in its header (see Track colour) - or use the Track colour row of the Inspector while a slot of that track is selected.
  2. Pick a colour in the palette; the header, the cells of the column and the Browser rows of that track repaint at once.
  3. Repeat for the tracks you want to tell apart; Neutral is a grey of its own, the Default entry removes the colour of the track again.
  4. Switch the theme and watch the palette follow - the colours you picked stay, the token set underneath them changes.

Remote

The iPad remote has no Browser, no Inspector and no selection: it shows the connect view, the session grid and the transport, and its grid starts and stops clips without describing them (see iPad remote). Track colours are a project value of the desktop: the remote's grid paints its own slot tokens, so a colour you set here does not change the remote, and nothing the remote does changes a colour. There is no per-track colour control on the remote either.