Redundancy

Redundancy mode runs two Stem Director instances — a primary and a secondary — in lockstep. If the primary fails for any reason, the secondary takes over automatically within one musical bar. The audience never notices.

How it works

Both machines load the same show file and play the same track simultaneously. The secondary machine's audio outputs are muted — it runs silently in the background. If the primary's heartbeat disappears (machine crash, power failure, audio engine fault), the secondary unmutes its outputs and takes over at the exact same playback position.

The secondary is always one buffer behind the primary. At a 512-sample buffer and 48 kHz sample rate, that's approximately 10 ms — inaudible.

Requirements

  • Two machines running Stem Director (both need valid licences — redundancy is included in all paid plans)
  • Both machines on the same show file version (sync the file before the show)
  • Gigabit Ethernet connection between machines (direct cable or via gigabit switch)
  • Same audio interface model is not required — but output routing must be configured identically on both machines

Network setup

Direct cable (simplest)

Connect the two machines with a standard Cat5e or Cat6 Ethernet cable directly (modern network ports are auto-MDI, so a crossover cable is not needed).

Assign static IP addresses to both machines:

Primary:   192.168.10.1 / 255.255.255.0
Secondary: 192.168.10.2 / 255.255.255.0

Via a switch

If the redundancy network shares a switch with other production systems, use a dedicated VLAN or ensure QoS is configured to prioritise Stem Director traffic. Bandwidth is low (< 1 Mbps for sync), but latency must be consistent.

Configuring redundancy

On the primary machine

  1. Open Preferences → Redundancy
  2. Set Role to Primary
  3. Enter the Secondary IP address (192.168.10.2 in the example above)
  4. Set the Sync port (default: 7700 — change if there's a port conflict)
  5. Click Enable Redundancy

The primary will begin broadcasting its state. The status indicator shows Searching for secondary... until the secondary connects.

On the secondary machine

  1. Open the same show file as the primary (copy via USB or network share)
  2. Open Preferences → Redundancy
  3. Set Role to Secondary
  4. Enter the Primary IP address (192.168.10.1)
  5. Set the Sync port to match the primary
  6. Click Enable Redundancy

The secondary connects to the primary and begins mirroring. The status indicator shows Synced — following primary. The secondary's audio outputs are automatically muted.

Failover behaviour

| Primary event | Secondary response | Time | |---|---|---| | Heartbeat timeout (network loss) | Unmute outputs, continue playing | < 1 bar | | Process crash | Unmute outputs, continue playing | < 1 bar | | Audio engine fault | Unmute outputs, continue playing | < 1 bar | | Graceful handoff (manual) | Unmute immediately | Instant |

The failover threshold is configurable in Preferences → Redundancy → Failover Timeout (default: 500 ms). At 120 BPM, one bar is 2 seconds — the default threshold is well within one bar at any tempo above 30 BPM.

After failover

Once the secondary takes over, it becomes the acting primary. If the original primary recovers, it does not automatically take control — it reconnects as a secondary and waits. This prevents a recovered machine from disrupting a show that is already running.

To explicitly hand control back, use the Take Primary action (assignable to a MIDI button) on the machine you want to be primary.

Monitoring status

Both machines show a redundancy status panel:

| Status | Meaning | |---|---| | 🟢 Synced | Connected and in sync | | 🟡 Syncing | Connected, catching up (during initial connect) | | 🔴 Disconnected | No connection to partner machine | | ⬛ Standalone | Redundancy not configured |

The status panel also shows:

  • Sync latency — round-trip time between machines (should be < 5 ms on a direct cable)
  • Drift — position difference between primary and secondary (should be 0–1 sample)
  • Last failover — timestamp of the most recent automatic failover

Post-show log

After each show, Stem Director writes a redundancy log to:

  • macOS: ~/Library/Application Support/StemDirector/logs/
  • Windows: %APPDATA%\StemDirector\logs\

The log records all failover events, sync interruptions, and heartbeat gaps with millisecond timestamps. Review this after every production to catch problems before they become emergencies.

Testing failover before a show

Always test your failover before sound check:

  1. Start playback on the primary
  2. Confirm secondary is Synced and audio is muted on secondary
  3. Force failover by closing Stem Director on the primary (or pulling the network cable)
  4. Confirm the secondary unmutes and playback continues without audible interruption
  5. Restore the primary and confirm it reconnects as secondary

This test takes under 2 minutes and should be part of every pre-show checklist.