Stage Recorder User Interface
Stage Recorder — User Interface
Stage Recorder is a professional multi-channel media recorder and player. This page documents the on-screen interface. For controlling the application over the network, see Stage Recorder OSC Interface and Stage Recorder MQTT Interface.
The interface is a single full-screen window built with Dear ImGui on an OpenGL surface. It is designed for touch panels as well as mouse operation — every text field opens an on-screen keyboard when focused.
Window Layout
The window is divided into a large content area and a tab bar along the bottom edge. The tab bar switches the content area between the four main views and also hosts global actions:
| Tab / Button | Purpose |
|---|---|
| Channels | Live recorder/player operation — the main working view. See #Channels Tab. |
| Schedule | Time-based recording tasks and iCal import/export. See #Schedule Tab. |
| Files | Browse, preview, load and delete recorded media. See #Files Tab. |
| Settings | Inputs, outputs, recording/playback profiles and system configuration. See #Settings Tab. |
| (right edge) | Current date and time. |
| Save & Restart | Appears in red only when a setting was changed that requires a restart to take effect. Saves the project and offers to relaunch the application. |
On-Screen Keyboard
Every editable text field (channel names, project name, profile names, filter text, settings values, passwords) opens a virtual keyboard when tapped or clicked. Press Enter to commit; the keyboard is intended for kiosk/touch installations without a physical keyboard.
Channels Tab
The Channels tab is the primary operating view. It shows:
- a project name bar at the top,
- one panel per licensed channel (up to four side by side per screen width),
- a shared Channel Control strip at the bottom for synchronised operation.
The number of channels is determined by the license dongle. Without a dongle the application starts with no channels and shows a warning.
Project Name Bar
Displays the current project name and its file path. The ... button opens a popup to rename the project; renaming also moves the project's working directory.
Channel Panel
Each channel is an independent recorder and player. A channel automatically shows the player when a file is loaded, and the recorder otherwise.
The panel contains, top to bottom:
- Channel name — click to edit.
- ⚙ (cog) button — toggles the channel between operation mode and settings mode. In settings mode the channel shows its recording-profile and playback-profile selectors instead of the video preview.
- Video preview — the live camera image (recorder) or the current frame (player). Multi-source recording profiles show a grid of source previews.
- Sound button — overlaid on the top-left of the preview. When more than one player is active, this acts as a radio button selecting which channel's audio is routed to the outputs (only one channel plays audio at a time).
- Seek slider — playback position / duration; drag to seek (player only).
- Transport controls:
- Player: skip-to-start, previous marker, next marker, ... (open file), Play, Pause, Stop.
- Recorder: Record and Stop (shown when no file is loaded).
- Camera selector — while a recording runs, one combo per recorded source shows which camera feeds it and switches it on the spot. See #Switching Cameras During a Recording.
- Marker controls / aux panel — cue-point list. The aux panel opens automatically when the first marker is set during recording, or when a loaded file already contains markers.
Two-Stage Stop (Soft Stop)
The player Stop button is two-stage when soft-stop is enabled (default):
- First press — pause and rewind to position 0 (the file stays loaded).
- Second press — unload the file (the channel returns to recorder view).
Soft-stop can be disabled via Settings → /Playback/Use Softstop. The same behaviour applies to the `stop` command received over OSC/MQTT.
Switching Cameras During a Recording
While a channel records, a Camera combo appears above the transport row — one per recorded source, labelled Camera 1, Camera 2 … for a multi-source profile. Picking another entry switches that source without interrupting the recording: the file keeps its frame size and timeline, and the picture changes from the next frame on.
- The list offers every configured input pair; an entry whose capture source is not running is greyed out. A camera that should be switchable therefore has to be set up as an input pair in Settings — it is then started with the application.
- A camera with a different resolution or aspect ratio is scaled aspect preserving and centred in the frame, with black bars on the remaining sides. The frame size of a file that is already being written cannot change.
- The preview follows the switch, so the channel always shows what is actually being recorded.
- Switching also works while the preemptive buffer is armed, including inside the pre-roll.
The same switch can be triggered remotely — see Stage Recorder OSC Interface#Recorder Commands (set_camera).
Recording → Playback Hand-off
When a recording is stopped, its cue markers are written into the file as metadata and the finished clip is immediately opened in the same channel's player (paused at position 0), so it can be reviewed at once.
Channel Control (Synchronised Operation)
The strip below the channel panels drives several channels at once. Select the target channels with the checkboxes, then use the shared transport row:
- skip-to-start · previous marker · next marker · Play · Pause · Stop · Record (red) · Set marker,
- a shared seek slider,
- Open sync-set (📄) and Save sync-set (💾) buttons.
A sync-set (`.mxr_syncset`) stores, per channel, the loaded filename and the channel selection, so a multi-channel arrangement can be recalled in one action. Internally, these controls emit the same commands as the network protocol, fanned out to the selected channels — see Stage Recorder OSC Interface#Sync Control.
Schedule Tab
The Schedule tab manages time-based recording tasks. Each task starts (and optionally stops) a recording on one or more channels at a given wall-clock time.
- Create new task — opens a dialog with a calendar date picker, start-time spinners (hour/min/sec), an optional Include stop duration, and channel checkboxes.
- Export .ics — writes all tasks to an iCal file (RFC 5545).
- Import .ics — drag a `.ics` file onto the window while the Schedule tab is open. A dialog lists every calendar event with a checkbox to import it and a channel assignment; events without an assigned channel are highlighted and skipped. Generic calendar events (with an end time) are imported as fixed-duration recordings.
Each row in the task list shows the task name, a live countdown, and the scheduled time. Tasks can be Edited or, with Ctrl+Click on the ✖ button, deleted. A channel that is currently mid-recording under a scheduled stop shows a red Recording indicator.
Tasks are stored in the project file and persist across restarts. See also Stage Recorder OSC Interface#Scheduler.
Files Tab
The Files tab browses recorded media within the current project directory.
The header offers a project selector (choose which project directory to browse), a Filter field (comma-separated substrings), Reload (rebuild thumbnails/metadata) and Open project directory in file browser.
Each file row shows:
- the file name with its duration and size,
- a thumbnail (generated in the background and cached; click to enlarge),
- one Player n button per channel to load the file into that channel (the button is disabled/highlighted if the file is already loaded there).
Right-click a file for a Delete option (files in use cannot be deleted). Sync-set files (`.mxr_syncset`) instead show a Sync Control button that recalls the stored arrangement.
Thumbnails and file metadata are cached on disk and validated against each file's modification time, so browsing large directories stays responsive.
Settings Tab
The Settings tab is password-protected (default key `123456`, configurable at `/System/SettingsKey`). It presents several tables:
| Table | Contents |
|---|---|
| Input pairs | Per channel: a display name, the video capture source, a capture size (Default, a preset, or Custom WIDTHxHEIGHT), and the audio capture source. |
| Output pairs | Per channel: a display name, the target monitor (video output), and the audio sink. |
| Recording profiles | Per channel: name, selected input pair(s), codec, and GOP size. Multi-source recording is available; sources whose resolution does not match the first selected source are disabled. GOP does not apply to ProRes; NVENC H.264 enforces a minimum GOP of 4. |
| Playback profiles | Per channel: name and the set of output pairs the player feeds. |
| System configuration | A raw editable tree of every application configuration key (network ports, MQTT settings, etc.). Boolean, integer and string values are edited in place. |
Changing most hardware-related settings sets the Save & Restart flag: the change is stored but only takes effect after the application is relaunched.
The full configuration key reference is on the Stage Recorder OSC Interface#Configuration Reference page.
Remote User Interface (VNC)
The complete on-screen interface can be operated from another machine on the local network with any VNC viewer (RealVNC, TightVNC, UltraVNC, macOS Screen Sharing, …). The recorder acts as a VNC server; the operator connects to the recorder's IP address and port and sees the same window the local operator sees, including the live previews, and drives it with mouse and keyboard.
Enable it in Settings → /System/IO/VNC/Use VNC (off by default; the VNC keys appear in the configuration tree from the first start on) and restart. Further keys: Port (5900), Frame Rate (captures per second, 10), Scale (size of the picture sent to viewers in percent, 25–100 in steps of 5, default 100 — VNC viewers do not scale, so a control laptop with a smaller screen than the recorder needs this). Name is what the viewer shows in its title bar (default Tourette Stage Recorder). Password is not enforced in this build — the server has no VNC authentication without OpenSSL — so use it only on a trusted network.
From a browser: no viewer software is needed. Open http://<recorder ip>:5800/ (key Web Port, 0 switches it off) on any machine, tablet or phone on the network — the page scales the recorder's window to fit, mouse, touch and keyboard drive the interface, and it reconnects by itself after the recorder restarts. On touch devices a keyboard button in the corner raises the on-screen keyboard. The viewer is noVNC, built into the recorder; nothing is installed or served from disk.
Notes:
- Local and remote input act on the same interface at the same time; the last event wins.
- Only changed parts of the screen are sent, so a static interface costs almost nothing; a moving preview sends the tiles it covers at the configured frame rate.
- There is no authentication in this build. Use it on a trusted network behind a firewall only.
- The connection carries the interface, not a program signal: for the picture on stage displays use the output windows, for control from other software use OSC or MQTT.
Colour Depth
The application can run its whole picture path at 10 bit: capture upload, the preview and program textures, the recording composite and the encoder. It is switched on with Settings → /System/Use 10 Bit Recording (off by default) and is read once at startup, so a change needs a restart.
- Sources — a camera or capture card delivering P010 or P016 enters the pipeline at ten bits. An 8-bit source does not gain detail, but it no longer picks up the banding that repeated 8-bit conversions add while it is scaled and composited.
- Recording — the file is written at ten bits when the selected codec can store them. The codec list only offers encoders this build actually has; with the shipped Windows build that means hevc_nvenc and ProRes store 10 bit, while h264_nvenc and h264_qsv are 8-bit by design and record at their own depth. The log names the depth each codec can store.
- Display — sending ten bits to the screen and to the program outputs is a separate switch,
/System/Use 10 Bit Display, off by default. It is the only part that depends on the graphics driver, the cable and the panel all supporting it. With it off, everything up to the framebuffer still runs at ten bits and recordings are unaffected.
Switching the pipeline off restores the previous 8-bit behaviour exactly.
Secondary Monitor Output
Every non-primary monitor detected at startup receives a borderless output window that displays the channel routed to it (via the output-pair Monitor setting). These windows carry the live program image full-screen with no UI chrome.
See Also
- Stage Recorder OSC Interface — control the application over UDP/OSC.
- Stage Recorder MQTT Interface — control and monitor the application over an MQTT broker.