Inspiration
Live performance teams often coordinate lighting, captions, and sound through separate notes and timing sheets. StageCue explores whether a compact, readable domain-specific language can make the sequence easier to reason about before rehearsal. It is an educational browser simulation, not a tool for controlling theater equipment.
What it does
StageCue lets a user write a show title and length, then cue blocks with a start time, duration, light levels for three positions, an optional caption, and a built-in chime or pulse sound. The browser parser builds a cue list and interactive timeline. Selecting a cue moves the playhead; playback animates an abstract stage preview. The inspector reports source-line syntax errors, out-of-range light levels, cues that exceed show length, duplicate names, and overlapping time windows. Overlaps remain playable for inspection, and the later cue takes preview priority.
Why a language
The grammar is intentionally small enough to learn in minutes. Its line-based structure makes timing and scope explicit: each cue owns its own light values, so there is no hidden state carried from an earlier cue. The parser produces a structured schedule, and semantic validation checks relationships between cues after parsing. Two included scripts demonstrate a clean show and a deliberate collision.
How it was built
The interpreter, diagnostic engine, timeline, stage scene, and example scripts were written in plain JavaScript, HTML, and CSS. Procedural sounds use Web Audio, without audio files or external APIs. The visual concept image was AI generated; the shipped stage and interface are code-native. The app does not send scripts to a server and does not integrate with live hardware.
Challenges and lessons
The tricky part was balancing strict syntax errors with useful warning behavior. A bad command blocks playback and identifies its source line; an overlap is a warning that remains visible while a designer explores the schedule. I also made the timeline keyboard-accessible through standard buttons and the native range control.
Testing
I checked parsing of the four-cue example, deliberate overlap detection, source-line errors, invalid-playback blocking, cue jumps, scrub-and-pause behavior, HTML-like input escaping, and desktop/mobile horizontal overflow. I recorded a 32-second browser demonstration and verified the encoded MP4 with a full FFmpeg decode plus representative frame review.
What is next
Future versions could support named fixture groups, reusable macros, transitions, cue dependencies, collaboration, and imports from real rehearsal documents. Hardware output would require a separate safety-oriented design and is outside this prototype.
Live app: https://estona815.github.io/stagecue-syntax-summit-2026/
Source: https://github.com/estona815/stagecue-syntax-summit-2026
Demo video: https://youtu.be/MAJCKTKnY58
Team: solo entrant; concept, language design, code, examples, and tests created for this event.
Built With
- css
- ffmpeg
- html
- javascript
- playwright
- web-audio
Log in or sign up for Devpost to join the conversation.