Manual — REAC segments

Which end of the wire the console is.

A REAC segment has exactly one master. Either this console masters it and drives the stageboxes, or another desk does and the console joins as the box end. That choice is the segment’s role, and it is one of two things you set per segment in Setup → Clock — the other being the rate. The default leaves the choice to the console, which observes the wire before it asserts anything.

01

Segments, and the two things you set on one.

A segment is one REAC wire — REAC A, REAC B and so on, listed with the patch name of what is on it. Everything else the card shows is observation: what is mastering it, at what pace, which link is up, which box model and firmware answered, whether there is a conflict. Two fields are yours: the rate and the role.

A field you never set stays unset, and an unset field leaves the daemon’s own best default standing — which is not the same as choosing it. The one exception is the role, which behaves as automatic until you say otherwise.

Both picks are staged rather than sent as you scroll. You choose, then confirm, and the confirmation says what it will cost: changing a role re-establishes the segment on the wire, a few seconds of interruption. Changing the rate is worse — about six seconds while the box re-locks, and on a box carrying the PA return that is the whole rig.

02

Mixer, recorder, automatic.

Mixer. The console is the desk end of the pairing. It masters the segment, drives the stageboxes on it, and owns the wire’s pace — which is why the rate is only yours to set in this role.

Recorder. The console presents as the box end and joins a wire another desk is mastering, to take a feed off it. It asserts no pace of its own and follows the foreign desk physically.

Automatic. The default. The console reads the segment first and then takes whichever end is open: a wire with nothing mastering it, or one it is already mastering, it takes as the mixer; a wire a foreign desk is mastering, it joins as the recorder. Unplugging a desk and having the console pick the boxes up is automatic doing its job.

Automatic never asserts against a foreign master. A desk is joined, not fought — one master per segment is REAC’s law, not a policy of this console’s. If a stagebox is mastering the wire, or if the console cannot tell what is, it asserts nothing at all and tells you why.

The word recorder does double duty on this desk, and the labels keep the two apart. The control in Setup is called REAC role, and its three settings are Mixer, Recorder and Automatic — that recorder is the end of a REAC pairing the console presents as. Everywhere the desk means the multitrack recorder that writes takes to disk it says recorder (takes) instead, so a sentence like “this console has no recorder (takes)” is never about the wire.

03

What automatic is watching, and when it decides.

Two facts, both published by the wire: whether the segment has a master and whether it is ours, and — when it is not ours — whether the thing mastering it is a desk, a stagebox, or something the console cannot identify. That is the whole input.

It is not a timer. Every segment resolves when it announces itself, so a decision follows the wire rather than a clock: a desk that arrives after the console has taken a segment is seen on its next announce and automatic re-resolves against it. A slow desk costs one re-resolution and never a fight.

Automatic runs on every segment the console can see, including ones you have never touched — a fresh console does not sit inert on a wire waiting to be told once.

The console re-asserts what you asked for, never what it worked out. Leaving a segment on automatic keeps it on automatic: an observation that changes cannot quietly write a fixed role into your show.

The card shows the daemon’s own answer beside the role you picked — Applied, Re-establishing…, or Hunting for a desk…. A recorder waiting on a desk that is not there reads as hunting and never as applied, which is the honest answer.

04

When the console will not take the role you asked for.

It says which of four things happened, on the segment’s own card, and where there is a single gesture that resolves it, that gesture is a button beside the sentence — never a config file and never a restart.

  • You asked to be the mixer, and a desk already masters the wire

    You asked to be the mixer, but a desk is already mastering this segment. One master per segment is REAC law, so the console is holding and has asserted nothing on the wire.

    The panel offers one button: switch this segment to recorder.

  • A stagebox on the segment has its Mode switch on M

    A stagebox on this segment has its REAC Mode switch on M (master), so the console will not take a role beside it. Set the switch to S (slave) and power-cycle the box.

    There is no button, because the remedy is a switch on the box. Inventing a control the console cannot honour would be the other half of the same lie.

  • Something is mastering the wire and the console cannot tell what

    Something is mastering this segment and the console cannot tell what it is, so it will not take a role beside it. Check what else is on this wire.

    Also no button. Find out what is on the segment first.

  • You asked to record, and nothing is mastering the wire

    You asked to record, but nothing is mastering this segment. The role has been asserted and the console is hunting for a desk; until one appears there is nothing to record from.

    This one has already gone to the wire — you chose it. The panel offers a switch back to mixer.

05

The rate belongs to whoever masters the wire.

A segment following a foreign desk has no rate to set: it follows that desk’s pace, physically. The console refuses a rate write on such a segment rather than accepting one it cannot honour, and the panel says so — a slave segment has no rate to set — it follows the foreign master’s pace.

The gate is on what the segment is running now, not on what you intend it to become. Promoting a segment to mixer and setting its rate is therefore two confirmations, not one: take the wire first, then set the pace on it.

A rate the segment does not publish as drivable is refused too, naming the rates it will take. It is never quietly rounded to the nearest one it likes.

06

The file the console writes.

The REAC daemon is configured by a small environment file at ~/.config/openmixer/reac.env, and the console generates it: setting the role in Setup is what puts REAC_ROLE on disk, so the choice survives a restart of the daemon and of the machine. The write is atomic — a new file is put in place whole — so an interrupted save never leaves a half-written configuration behind.

The file says what the console is on the wire, and holds nothing else: the role, the two interfaces, the mixer family and the wire’s rate, plus the box model where the rig still carries an expectation of one. Which stagebox is actually out there is learned from the wire and is deliberately not written down here.

Because the console regenerates the file rather than editing it in place, it is the console’s file and not a shared one: a comment or a variable of your own added by hand is dropped the next time the console writes it. Keep anything you need for yourself somewhere else.

The console is conservative about writing at all. A role change writes only when the file actually says something different, and if there is no file, or the file does not parse, nothing is written — an unconfigured host stays unconfigured rather than acquiring a binding nobody chose.

Arriving

What this chapter does not describe yet.

  • In developmentA rate control that hides itself on a following segment. The panel decides whether to offer it from the role you asked for rather than from the role the segment is running, so on a segment left on automatic that has joined a foreign desk the control can still be there. The write is refused honestly if you use it, with the sentence above — nothing is set behind your back.

The segments are /reac/segment and each one is /reac/segment/{name}, with the two writable fields and everything the wire reports about it, in the REST reference.

openmixer

A software mixing console for Linux. The desk is the software; the browser is the surface.

Pages

Licence

OpenMixer is free software under the GPL-3.0-or-later. Every package in the workspace carries the same licence.

Roland, Midas, Behringer, RME and the product names used here belong to their respective owners. OpenMixer is an independent project and is not affiliated with any of them.