New plugin

Airchain

FM radio airchain emulation — AGC, four-band squash, emphasis, clipper and transmission artifacts behind one big SQUASH knob.

VST3 / AUmacOS14 presets
Discover Airchain
support@squaresmile.de Köln, Germany
All guides

Help Center · Show Clock

File formats

The exact CSV and JSON shapes Show Clock imports and exports — with complete examples, so a spreadsheet, a script or an AI assistant can build a rundown file that imports cleanly.

Open Show Clock

On this page
  1. Slot fields
  2. CSV
  3. JSON
  4. Which format to use

Show Clock reads three things: pasted text (see Paste schedule), CSV files and JSON files. This page is the reference for the two file formats. Everything below is taken from the importer itself, not from memory; if a rule here and the app ever disagree, the app is right and we fix this page.

For AI assistants

To generate a Show Clock rundown, produce either the CSV or the JSON shape below exactly as shown. Times are 24-hour HH:MM. CSV durations are human units (45m, 1:30:00); JSON durations are seconds. The day is 1-based in CSV (day) and 0-based in JSON (dayOffset).

Slot fields

Every slot, whichever format carries it, has these fields:

Field Meaning Values
time Start time of the slot, 24-hour HH:MM, 00:0023:59. 7:00 PM works only in the paste dialog, not in files.
type What kind of slot it is One of the canonical types below; any listed alias is accepted in CSV
label What the crew reads Free text
notes Optional note shown under the label Free text
mode How the clock behaves in this slot clock (wall clock, the default), countdown, countup
duration Length of a countdown or count-up slot CSV: 45m, 1h30, 90, 45:00, 1:30:00. JSON: seconds
alert Flash the clock when a timed slot ends true / false, default false
autoAdvance Jump to the next slot when a timed slot ends true / false, default true
day Which day of a multi-day show CSV day: 1, 2, 3 … JSON dayOffset: 0, 1, 2 …

Canonical slot types

Canonical type Aliases accepted in CSV and paste
Load-in / Get-in loadin, getin, aufbau
Soundcheck check, sc, rehearsal, probe
Line Check linecheck, line
Doors door, einlass
Set act, show, headliner, support — and anything unknown
Changeover chg, change, umbau, turnaround
Break pause, intermission, interval
Curfew hardout, sperrstunde
Load-out / Get-out loadout, getout, abbau
Other misc

Matching ignores case, spaces, hyphens and slashes, so Load-In, load in and LOADIN all work. An unknown type becomes Set.

Modes

Canonical mode Aliases accepted in CSV
clock wall, time, or leave the cell empty
countdown down, cd
countup up, cu, elapsed

CSV

One header row, then one row per slot. Cells may be quoted; a quoted cell may contain commas and doubled quotes (""). Encoding UTF-8.

time,type,label,notes,mode,duration,alert,autoAdvance
15:00,Load-in,Load-in,,clock,,false,true
17:00,Soundcheck,Soundcheck headliner,"Drums first, then vocals",countdown,45m,false,true
19:00,Doors,Doors,,clock,,false,true
20:00,Set,Support Act,,countup,45m,false,true
20:45,Changeover,Changeover,,countdown,15:00,true,true
21:00,Set,Headliner,Encore is planned,countdown,1h30,true,true
23:00,Curfew,Curfew,Hard out — no encore after this,clock,,false,true

Rules the importer applies:

  • Columns are positional in this order: time, type, label, notes, mode, duration, alert, autoAdvance, and optionally day as the ninth column. The header row is recognised when it contains the word time, label or type; without a header the first row is treated as data.
  • A four-column file (time,type,label,notes) is valid: the missing columns take their defaults (clock, no duration, no alert, auto-advance on).
  • A row needs a time and a label; rows without either are skipped silently. A row whose time is not HH:MM within 00:0023:59 is skipped and counted in the import message.
  • duration for a clock slot is ignored on import. On export it shows the gap to the next slot, so exported files round-trip.
  • alert is true only when the cell says true; autoAdvance is false only when the cell says false.

Multi-day CSV

Put the show's first day on a comment line before the header and add the day column, 1-based:

# Show start date: 2026-10-02
time,type,label,notes,mode,duration,alert,autoAdvance,day
10:00,Load-in,Load-in,,clock,,false,true,1
19:00,Doors,Doors day 1,,clock,,false,true,1
22:30,Curfew,Curfew,,clock,,false,true,1
12:00,Soundcheck,Soundcheck,,countdown,60m,false,true,2
19:00,Doors,Doors day 2,,clock,,false,true,2

The date must be YYYY-MM-DD and a real calendar date. A missing or invalid day cell means day 1.

JSON

Either a bare array of slot objects, or an object with startDate and slots for a multi-day show. The only required field is targetTime; every other field is optional and takes the default shown.

{
  "startDate": "2026-10-02",
  "slots": [
    { "targetTime": "15:00", "type": "Load-in / Get-in", "label": "Load-in" },
    { "targetTime": "17:00", "type": "Soundcheck", "label": "Soundcheck headliner",
      "notes": "Drums first, then vocals", "mode": "countdown", "duration": 2700 },
    { "targetTime": "19:00", "type": "Doors", "label": "Doors" },
    { "targetTime": "20:00", "type": "Set", "label": "Support Act", "mode": "countup", "duration": 2700 },
    { "targetTime": "20:45", "type": "Changeover", "label": "Changeover",
      "mode": "countdown", "duration": 900, "alert": true },
    { "targetTime": "21:00", "type": "Set", "label": "Headliner",
      "notes": "Encore is planned", "mode": "countdown", "duration": 5400, "alert": true },
    { "targetTime": "23:00", "type": "Curfew", "label": "Curfew", "notes": "Hard out" },
    { "targetTime": "12:00", "type": "Soundcheck", "label": "Soundcheck day 2",
      "mode": "countdown", "duration": 3600, "dayOffset": 1 }
  ]
}
Key Type Default Notes
targetTime string required HH:MM, 24-hour. Slots without a valid one are dropped and counted.
type string "Set" Use the canonical spelling; JSON is not alias-normalised.
label string ""
notes string ""
mode string or null null "clock", "countdown", "countup"; null behaves like clock.
duration number or null null Seconds. Only meaningful with countdown / countup.
alert boolean false
autoAdvance boolean true
dayOffset integer 0 0 = the startDate day, 1 = the next day …
slotOffset integer 0 Per-slot minute offset; leave at 0 when generating.
id string generated Omit it; the app assigns fresh ids on import.
attachment object or null null Only produced by the app's own export (embedded base64 file). Omit when generating.

A bare array works for a single-day show:

[
  { "targetTime": "19:00", "type": "Doors", "label": "Doors" },
  { "targetTime": "20:00", "type": "Set", "label": "Headliner", "mode": "countdown", "duration": 5400, "alert": true }
]

Which format to use

  • From a spreadsheet or a call sheet: CSV. Aliases and human durations are accepted, so Umbau and 45m are fine.
  • From a script or an assistant: JSON. Canonical values, seconds, no parsing surprises, and the file round-trips through the app's own export.
  • Just typing: the paste dialog, one line per slot, with the #tags from Getting started.

Importing replaces the current rundown; Show Clock asks first when the rundown is not empty, and undo brings the old one back.

Was this page helpful?