Projects / 001 · Show control system

REVd Cycling

The instructor never touches software.

A boutique cycling studio wanted a room that reacts — LED wall, moving light, strobes, all shifting with the class. What it could not have was an instructor crouched over a laptop mid-ride. So the whole system collapses into fifteen labelled buttons.

ClientREVd Cycling
RoomsCycle · Reformer
Surfaces2 × Stream Deck, 5×3
VisualsResolume Arena / OSC
LightingMyDMX 3 / MIDI
ControlBitfocus Companion
Date2026.08
StatusRunning
Fig 01 · Two-room rig — LED wall + DMX lighting
00

The brief

Two rooms. One studio PC. A wraparound LED wall, a DMX rig, and a class schedule that never pauses for a technical problem.

The studio already owned good equipment — Resolume Arena driving the wall, MyDMX 3 driving the fixtures. The problem was never capability. It was that running a class meant alt-tabbing between two professional VJ applications while pedalling, and nobody was going to do that at 6am.

The system I built puts a Stream Deck in each room and hides everything else. Visuals travel over OSC. Lighting travels over MIDI through a virtual cable. The two paths are deliberately independent, so a failure in one leaves the other running — and the room stays usable while it gets fixed.

15buttons per room
13Resolume layers
22state variables
0windows touched
01

One press, one action

Every button does exactly one thing, and its face says what that thing is. No holds, no double-taps, no hidden modes. The single exception is Blackout All, which toggles — because the one moment you need to kill the room, you also need to bring it back.

A five by three grid of custom Stream Deck button faces — phase, tempo, podium, wash and blackout controls — with the REVd overlay and red wash buttons outlined in green to show they are currently live.
The live run page, mid-class. Every icon was drawn for this system, and a green outline means that state is live — on every button, always.
The interesting constraint

Every setup screen exists and works. The room deck simply cannot navigate to it — surface groups restrict each deck to a single page. Opening the full instructor workflow later is a configuration change, not new construction. Shipping less than was built is what made version one safe to hand over.

02

The room, running

Three phases — Warm Up, Build, Peak — each a source and mask pair on the wall, each clearing every other phase as it fires. Nothing can bleed between them, and no phase can be half-live.

Peak phase — the wall wraps the room, the wash tracks it.
Milestone overlay — a dedicated text layer, picked from a sub-page.
The entire interface, mid-class.
Cycle room, red wash, wall live.
Podium is its own zone — wash changes never disturb it.
Custom content, created in Resolume.
Custom branded content — the REVD crest loop.
New scene content on the wall, mid-class, from the saddle.
Red phase — geometry wrapping the room while the floor stays dark.
Heat phase, mid-class — the content carries the effort, not the lights.
Recovery phase — the room drops to blue and holds.
Geometry phase — the X-motif tracks across the full wrap.
A quick punch — magenta rings between phases.
The portal look, carrying a phase change from red into blue.
The LED wall running synthwave graphics behind the bikes, caught with its rider in the mirrored wall.
Between classes, wall idling.
03

Two paths that don't need each other

This separation is the load-bearing decision in the whole build. Visuals and lighting never share a transport. When something breaks, the half that still works tells you where to look.

Companion holds all state itself rather than reading it back — which is why the button outlines can be trusted even when the applications behind them are minimised and forgotten.

04

Behind the glass

Under the surface it is ordinary professional tooling, wired so that nobody has to look at it. Scenes live in MyDMX with their own fade times; Companion only ever sends a trigger.

An equipment rack with a patch panel and network switch, LED processor, four-way DMX booster and myDMX interface, a shelf of media players, and a pull-out console whose rack monitor shows the REVD desktop.
One rack, two rooms, one studio PC.
The REVD ops dashboard on black and red: stream deck, Companion, show PC and wall status all green, a live capture of the wall, and lighting, visuals and MIDI status with one-press restart buttons.
Every subsystem's health, one glance — watchdog armed, wall live.
05

Rules the system has to keep

These were written down before the build and checked after every change. They are the difference between a room that works and a room that mostly works.

  1. Instructors never see software

    No workflow may require a window, a mouse, or a decision about Resolume.

  2. One press, one action

    No holds, no double-taps, no hidden functions.

  3. The green outline is always true

    Every state change updates every sibling, in the same action list.

  4. Zones stay independent

    A wash change must never disturb the podium or the other room.

  5. Blackouts always fully recover

    From any state, kill and restore must return a usable room.

  6. Black is the resting state

    No effect may lift the black level of the wall.

  7. Phases are exclusive

    Never two live at once. Never zero after a press.

06

Handed over, not just installed

The build shipped with two documents: a technical reference for whoever maintains it, and a one-page quick guide for whoever teaches the class.

A show control system that only its builder understands is a liability. The documentation is what makes it an asset — it lets someone else add a lighting scene in a year without quietly breaking the blackouts, and lets a new instructor run the room on their first morning.

The instructor guide never mentions Resolume, MyDMX, MIDI or OSC. It describes fifteen buttons and three rules, and nothing else:

  • Green outline = live. That button or state is currently active.
  • One press = one action. No holds, no double-taps, no hidden functions.
  • One phase at a time. Warm Up, Build and Peak are exclusive — the last one pressed wins.
Instructor quick guide · PDF · 1 page ↗
07 · Show stack

The room runs itself

Phase two: unattended show automation and a branded ops dashboard, so the machine behind the wall no longer needs a person who knows it.

One Windows show PC runs six pieces of software — virtual MIDI, tempo clock, lighting desk, visuals engine, button logic, remote access — that must come up in the right order and stay up through a full day of classes. The people running the room are instructors on Macs, on a different network. Before this, "the wall is black" meant calling whoever knew the machine.

The failures were the mundane ones that plague every unattended media PC. A 3 a.m. power cut reboots into MyDMX's start screen and nothing downstream ever launches — or MyDMX races the USB DMX interface and opens with no output at all. The remote-access tool's virtual-display driver spawns phantom monitors that shuffle Windows' display numbering and move the Resolume output off the wall. The show-file path goes stale when the lighting programmer re-saves under a dated name. The cursor drifts onto the LED wall in front of a hundred riders. Companion hangs, and the team's only known fix is a five-minute reboot mid-changeover.

  1. Boot on evidence, never on delay

    Every startup stage waits for proof the last one worked: CPU quiet for three consecutive samples, the Windows MIDI device count actually rising, Device Manager reporting the DMX interface OK before MyDMX may launch. UI Automation waits for MyDMX's real interface dialog, clicks Start, force-focuses the window and arms the show; fail once and the whole sequence retries from scratch. Cold boot to fully cued room: about four minutes, nobody in the building.

  2. A show file that cannot go stale

    The configured path resolves to the newest show file in the lighting folder if the expected one was renamed. A re-saved show can no longer break boot.

  3. A watchdog that cannot flap

    Companion is tailed and polled, then escalated in three levels with cooldowns: rescan surfaces, restart the one failing connection, and only after minutes of confirmed death, relaunch. Investigating the "glitching" found the real cause — the Stream Decks are network-dock modules on DHCP leases, not USB devices. Reservations fixed the disease; the watchdog handles the symptoms.

  4. Displays locked by hardware, not number

    The monitor arrangement is captured once by hardware path — never Windows' 1/2 numbering — and re-applied every 30 seconds. Phantom monitors are detached within half a minute; the output can no longer wander off the wall. The cursor is parked off the wall every 29 minutes, which ended that complaint permanently.

  5. A dashboard that answers "which button do I press"

    A small PowerShell web server on the show PC serves one page to any browser on the LAN — nothing to install, just a bookmark. Status every two seconds; a live capture of the wall every second, so the team sees what riders see. Every monitored thing has its matching fix beside it, every fix is the same code the boot sequence uses, every button is two-step armed with every press logged. Visuals state is read from Arena's REST API — real data, not a guess.

  6. Nothing that expires

    The whole stack is PowerShell 5.1 and .NET on stock Windows — no services, no cloud accounts, no packages, no licences — shipped as one installer, each component logging plainly and removable on its own. Remote access over an outbound-only tunnel is built and switched off, ready in ten minutes when wanted. Boring on purpose; boring is what survives.

The design brief was status-first

The first dashboard looked like a developer built it. The final one is REVD's: crest loop in a circular mask, condensed wordmark, brand red on true black, fonts served from the show PC so the page never touches the internet. One word per state — All good, Degraded, Room down — readable from across the room, with the mono detail rows underneath for whoever wants the numbers. An instructor should know in one glance whether to do anything, and if so, exactly which button.

4 mincold boot to cued room
6subsystems, one installer
3watchdog escalation levels
0cloud dependencies