Project file
A Showmesh project is a JSON-formatted .show file. The engine normalises, migrates, journals, and atomically saves it.
Top-level structure
json
{
"schemaVersion": 1,
"name": "My show",
"resources": [],
"outputs": [],
"connections": [],
"triggers": [],
"cueLists": [
{ "id": "main", "name": "Main", "cues": [] }
]
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Connections currently describe OSC destinations. Triggers map MIDI Note/CC to transport actions including GO and PANIC.
Resource types
| Resource type | Label | Kind-specific fields |
|---|---|---|
media | Media | path, fps |
text | Text | text, font, fontSize, textColor, align, width, height, backgroundColor |
ltcGen | LTC | startTc, ltcRate |
liveIn | Live audio input | inputDevice |
Output types
| Output type | Label | Kind-specific fields |
|---|---|---|
display | Program output | display, windowed, width, height |
ndi | NDI output | width, height, ndiName |
spout | Spout output | width, height, spoutName |
null | Output | — |
audioOut | Output | deviceName, channelStart, channelCount |
Minimal video cue with an action
json
{
"id": "cue-video",
"number": "1",
"name": "Opening video",
"type": "video",
"target": "res-video",
"playMode": "onceHold",
"preWait": 0,
"postWait": 0,
"continueMode": "none",
"durationSec": 0,
"actions": [
{
"id": "fade-in",
"type": "transition",
"property": "video.opacity",
"from": 0,
"to": 1,
"durationSec": 1,
"curve": "sCurve",
"trigger": { "type": "onPlay" }
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Safe editing
- Prefer the editor; the engine is the only document writer.
- Stop the engine before unavoidable hand editing.
- Copy the project and keep IDs unique.
- Do not rename registry IDs.
- Validate JSON, open the copy, inspect warnings, save, and rehearse.
Legacy fade and transition fields are migrated where possible. Save migrated projects under a new name.