Replay

Load a prerecorded CSV file and inspect it with the same tools as live data.

The Replay panel plots a CSV file instead of a live controller, useful for looking at a recording after the fact, comparing two runs, or analysing data captured on a machine you cannot reach. It is hidden by default; switch it on in the View menu.

Replay panel with a file selected

Loading a file

Click Open CSV… and pick a .csv file. It loads as soon as you choose it: there is no second step to confirm.

A toast reports the result, e.g. Loaded 12 traces, 60000 points. The file name replaces No file loaded beside the button, every column becomes a visible trace, the plot fits the whole recording, and auto-follow is switched off: there is no trailing edge to follow.

A loaded recording

Picking the same file again reloads it, so a recording that is still being written can be re-read as it grows.

From here everything works as with live data: zoom and pan, cursor readouts, measurements, statistics, range export, colours, axis assignment and hiding. See Plotting.

Replay and live data are exclusive

Loading a file disconnects an active controller session, and clicking Connect clears the loaded traces. Desk switches modes for you; nothing has to be disabled first. While in replay mode the Parameters tree stays empty, since there is no controller to read.

The X axis stays in elapsed seconds during a replay. A CSV records an offset from an origin it does not name, so there is no absolute timeline for the wall-clock time base to show.

Accepted CSV format

The first column is the timestamp in milliseconds; X values are plotted relative to the first row, so the plot starts at 0 s. Every other column is one signal, and the header tells Desk what it is:

Header form Produced by Result
Y1 root/path/signal (ch. 0) Desk CSV export Signal on axis y1, channel 0
Y root/path/signal older Desk exports Signal on y1
root/path/signal[0] controller-side recorders Signal on y1, channel 0

A UTC Time (ISO 8601) column is recognised as a second rendering of the timestamp and is not imported as a trace.

Cells that are not numbers (string enums, blanks) are skipped as gaps in that trace, so a mixed file still loads; a column with no numeric data at all becomes an empty trace.

Auto-sort Y axes

When the file carries no axis information in its headers, an Auto-sort Y axes switch appears under the file name once the traces are on screen. It is on by default: Desk spreads the columns over y1–y4 by the order of magnitude of their values, so signals of wildly different scale do not crush each other on one axis. Files exported from Desk already carry their axes, so the switch is not shown for them.

Flipping it re-lays the file out without re-reading it, and the choice sticks for the next file you open.

Large files

Parsing runs in the browser and yields periodically, so the window stays responsive and shows a loading toast. Traces are sized to the file, so no points are dropped. Very large recordings (hundreds of megabytes) are still limited by the memory available to the browser tab. Export a narrower time range or fewer signals if loading fails.