Skip to content

openrcs 0.3.0

Choose a tag to compare

@stoatworks-labs stoatworks-labs released this 08 Aug 01:59
· 19 commits to main since this release

A modern control surface for Analog Way Midra and LiveCore video processors.

This release is about one thing: making the Workspace a page you can actually run
a show from. Getting there meant fixing how openrcs understood the take, which
turned out to be the reason building a show did not work.

The take model was wrong

PRinp[screen,0] and [screen,1] are fixed preset banks — PA and PB. A take does
not swap their contents, it changes which one is on air, and GCsta says which.
So "program" is a bank the device names, not a constant index.

The old build assumed index 0 was always program. That had two consequences: it
could label the on-air bank "Preview" and let you edit what was live, and its
Take did nothing at all when the desk was already sitting on the up bank,
because it always fired the same directional command. Takes are now resolved per
screen from the device's own status, through Plngr, in both the Workspace and
the Stage view.

Two related traps, both found on hardware and now handled:

  • A layer pointed at a source the frame does not have can never open, and the take
    waiting on it never lands — the screen sits mid-transition indefinitely.
    Those layers are flagged amber and can be cleared in one click, and a stalled
    transition gets a button to complete it.
  • PRlay is the RCS's multi-layer edit selection, not layer visibility. Reading
    it as "shown" was hiding live layers.

The Workspace

  • Drag a source onto a layer — onto a layer rectangle, a layer slot, or bare
    canvas, which places it on the first free layer where you let go. Clicking a
    source still arms it, for touch panels.
  • Program stacked above preview for each screen, tagged, with the live one
    marked ON AIR. Each canvas edits its own bank.
  • A layer properties panel exposing everything the device holds for the
    selected layer: position and size with keep-aspect, screen size, content size,
    a nine-point placement pad and aspect presets; transparency and the master
    fader; cropping and aspect override; border style, colour, size and opacity;
    opening and closing transitions with directions; timing, speed and the flying
    curve; and the effects — force transition, smooth move, flip, black & white,
    negative, sepia, solarise, strobe.
  • Take, Cut, a T-bar, and step back per screen, plus Take all and Cut all.
  • Layout presets — Fill, 2-up, 3-up, Quad, PiP, Stack.
  • The real memory system: 144 screen memories and 144 master memories with
    save mode, load, load-and-take, erase, editable labels, and the per-category
    filter so a recall can bring in only geometry, or only sources.
  • Device labels are read and written, so inputs, screens and memories carry
    their own names instead of numbers.

Live source thumbnails

The LiveCore serves a thumbnail per input from its own HTTP server. openrcs now
enables the device's snapshot system and shows the real picture on each input in
the source palette and on the layers themselves. Inputs only — the device serves
nothing for screens or outputs, and a Midra serves no HTTP at all.

Midra

Midra gets the same treatment where its model differs: its own T-bar range, screen
freeze, reload-program, step back, take-available, presets with save, recall and
erase, and an inspector built on PRftr/PRsmm/PRfli and per-layer durations
rather than LiveCore's bitfield.

Two long-standing Midra unknowns are also settled, from the MIDRA updater's own
firmware image: the live-layer source list is contiguous — black, one entry per
input, colour last — so source n is input n; and a PRinp write that vanishes
without an error is the device refusing an input with no signal, not a layer
allocation problem. Sources that cannot be placed are marked, and a refused drop
now says so instead of appearing to work.

Under the hood

The enum meanings on both platforms are no longer guesses — the LiveCore's came
from the enumerations in its own Web RCS, the Midra's from its updater firmware —
and docs/PROTOCOL.md documents the take model, the PE_FLAGS bit layout, the
memory filter bits, the HTTP thumbnail surface and the Midra findings.

Install

Grab the archive for your OS below, then:

openrcs-server --device <processor-ip>:10500 --platform livecore
# then open http://127.0.0.1:8730/

Use --platform midra for the Midra family. Prefer no command line? The
tray launcher
bundles the server in a menu-bar app.

Not affiliated with Analog Way. Device and product names appear only to state
compatibility.