Software · manual

Playback Fail — User Manual

Version 1.2.9 · Sound Analysts Ltd. The same manual is built into the app under Help.

About Playback Fail Download

Version 1.2.9 · Sound Analysts Ltd

Playback Fail is an automatic audio failover controller for macOS. It listens to your primary playback machine, and the moment that machine stops delivering audio it switches your mixing console to a backup source, with a reaction time of a few tens of milliseconds. When the primary comes back, it can switch straight back.

1. How it works

Playback Fail does not try to guess whether your show audio has stopped. Instead, your primary playback machine plays a continuous 1 kHz pilot tone on a spare channel, alongside the show audio. Playback Fail watches that channel:

  • Tone present → the primary is alive. Nothing happens.
  • Tone gone for longer than the timeout (default 25 ms) → fallover. Playback Fail sends mute commands to your console: it unmutes the Backup channels first, then mutes the Main channels, so there is never a gap on air.
  • Tone returns (optional) → auto reset. Main is unmuted, then Backup is muted again.

The audio reaches Playback Fail in one of two ways:

ModeUse whenHow
DantePrimary and backup are separate machines on a Dante networkAudinate's Dante Virtual Soundcard (DVS) on the Playback Fail Mac receives the channels
LoopbackQLab (or any app) runs on the same Mac as Playback FailThe bundled Looped Back Audio 8ch virtual device: the app plays into it and Playback Fail listens on it

Fallover commands go to the console as MIDI over TCP/IP (Allen & Heath, Behringer/Midas, Yamaha, Soundcraft and others have presets) or, optionally, as GPIO pin changes.

2. Requirements

  • macOS 11 or later, Apple Silicon or Intel.
  • A console that accepts MIDI mute messages over TCP/IP (see §6), on the same network as the Mac.
  • Dante mode: Dante Virtual Soundcard (licensed separately by Audinate) and a wired network connection.
  • Loopback mode: nothing extra; the Looped Back Audio driver is included (§7).

3. Installation

  1. Open the DMG and drag Playback Fail into Applications.
  2. Launch it. On first run macOS asks for Microphone access: allow it. This is how the app listens to audio inputs. (If you missed the prompt: System Settings ▸ Privacy & Security ▸ Microphone.)
  3. Everything else the app needs is inside the bundle: the native CoreAudio capture helper, the Looped Back Audio driver, and the 1 kHz test tones.

Updating. Playback Fail checks for updates on launch and shows an Update chip in the header when one is available. Click it to download; click again to install and relaunch.

Uninstalling. Double-click Uninstall Playback Fail on the DMG. Tick what to remove: the app, settings and licence data, and the Looped Back Audio driver (which asks for your Mac password).

4. Licensing and trial

  • Every new install gets a 14-day free trial, recorded against this Mac's hardware ID. The remaining days are shown on the Trial chip in the header.
  • When the trial ends the app prompts you to buy. Enter your licence key (format PBFL-XXXXX-XXXXX-XXXXX-XXXXX, the dashes are added for you) and the email used at purchase, then click Activate.
  • A licence is bound to one Mac. To move it, click Deactivate on the old Mac first (Settings ▸ About ▸ Licence…).
  • Licences re-validate with the Sound Analysts server automatically. The app needs to be online at least once every 40 days; otherwise it reverts to the trial prompt until it can reach the server again.

5. First-time setup

Work down the main window from top to bottom.

5.1 Soundcard Input Patch

  1. Input devices. Tick every device that carries audio you want to monitor: your Dante Virtual Soundcard, Looped Back Audio 8ch in Loopback mode, or both at once (for example QLab on this Mac via Looped Back for the primary, and the backup machine arriving over Dante). With more than one ticked, Playback Fail builds a combined device called Playback Fail Inputs automatically and numbers the channels per device. Dante is used as the clock master when present and the other devices are switched to the same sample rate, so a 96 kHz Dante network runs everything at 96 kHz. The channel order stays fixed (Looped Back, then Dante, then others); if devices are added or removed, the patch moves with its devices so it keeps pointing at the same physical channels. The caption shows the devices and the capture engine in use. Click Refresh if a device is missing; your ticks are remembered and are the only thing that decides which devices are used. If a ticked device isn't present at launch (for example Dante Virtual Soundcard starts after Playback Fail), the others connect straight away and the missing one is added automatically when it appears.
  2. Patch. For each role, choose the input channel that carries it:
  3. Primary L / R — the show audio from the primary machine (meters only).
  4. Primary Tone — the channel carrying the 1 kHz pilot tone. This is the channel that is watched.
  5. Secondary L / R — the backup machine's audio (meters only).

Channel names follow the device: "DVS Rx 3" on Dante, "Looped Back 3" on loopback; with several devices ticked each device's channels are listed in turn. The patch is saved automatically.

  1. The level meters beside each row confirm audio is arriving.

5.2 Ping

Optional network health checks. Enter the IP of the primary machine, the secondary machine and the console; the buttons ping each one. Playback Fail can run on either playback machine, so nothing is assumed about which address is "this Mac" (its own address is shown for reference).

5.3 Fallover Settings

  • Fallover Trigger Mode. Tone Loss (recommended) or Dante Clock Loss. Run the pilot tone just above the −40 dB floor (about −36 dB) rather than in the middle of the window: as soon as it fades it leaves the window, which gives the fastest possible detection.
  • Tone loss timeout (ms). How long the tone must be absent before fallover fires. Default 10 ms (the minimum). Detection runs inside the audio engine on every ~1 ms chunk, so total reaction is roughly this value plus 10 ms. Raise it (40–60 ms) if a noisy feed causes false triggers.
  • Auto reset to Main. Tick to switch back automatically when the tone returns. Auto reset hold (ms) is how long the tone must be continuously back first (default 10 ms). Use this for shows with several cues that each carry their own tone file. A manual Activate Fallover is never auto-reset.
  • Level match alert. Always on: Playback Fail warns when the Backup is not at the same level as the Main. It averages Primary L/R and Secondary L/R; if they differ by more than the tolerance (default 3 dB) for longer than the hold (default 10 s), or the Backup carries no audio while the Main does, an amber Level mismatch chip appears in the header and the sidebar and the log records it. Monitoring only; it never triggers a fallover.
  • Last detection reaction. Read-only: the measured figures from the last event, e.g. engine saw loss after 26 ms → backup live +31 ms → main back +18 ms.
  • Sidebar grid. 1 × 4 (tall strip) or 4 × 1 (wide bar) for the sidebar view (§9).
  • Trigger Output Mode. MIDI over TCP/IP (normal) or GPIO. The Cue Relay (§5.5) lives on the same page.

5.4 Console (MIDI) settings

  1. Choose your console from the preset list. The preset sets the port and message format. For an Allen & Heath AHM the app sends Note On mute messages exactly as the AHM protocol requires; SQ/dLive/Avantis use NRPN.
  2. Enter the console's IP address (port 51325 for Allen & Heath).
  3. For Main and Backup, enter the channel, zone or control-group numbers to mute/unmute. Up to six commands per side.
  4. Use the Test Mute ON / OFF buttons to confirm the console reacts.
Allen & Heath consoles accept one TCP MIDI connection. If the A&H MIDI Control app or another controller is connected, Playback Fail cannot connect. Close the other connection first.

5.5 Cue relay (lighting network cues)

If the lighting console is triggered by network cues (UDP OSC from QLab, for example to an Eos, MA3, Chamsys or Hog desk), those cues normally stop when the primary machine fails. The Cue Relay on the Trigger Config page keeps them flowing:

  1. Pick the Lighting console by brand and model (ETC Eos family and ColorSource, MA Lighting grandMA3 / grandMA2, ChamSys MagicQ, High End Hog 4, Avolites Titan, Obsidian Onyx, Lightkey, QLab) or leave Custom; it fills in the usual OSC port and transport, but always check the desk's own OSC settings since ports are configurable on every console. Tick Enabled, set the Listen port (default 9000) and the Lighting console IP / port. For TCP consoles (Eos port 3032) choose TCP and the matching framing (OSC 1.0 length-prefix, or OSC 1.1 SLIP for Eos 3037); the status line shows when the TCP link is up.
  2. In both QLabs, point the network cue patch at the Playback Fail Mac's IP on the listen port instead of the console.
  3. Enter the backup machine's IP as the Secondary Source IP on the Ping page; several addresses can be given separated by commas. Cues from this Mac always count as Primary; if the Secondary IP is left blank, cues from any other machine count as the backup. In the backup's QLab patch, choosing a fixed network interface makes its source address predictable.

On the Sources page each source card has an LX cues box (shown only while the Cue Relay is enabled): the whole box strobes in that source's colour on every packet received from that machine (full strength = forwarded to the console, half strength = held back), with the last cue decoded, how long ago, the count, and whether it is going to the console. The flash strength is set in Settings ▸ Appearance ▸ LX cue flash. The sidebar view shows the same two boxes (LX Pri / LX Sec).

Playback Fail forwards only the live machine's packets to the console: the primary's while Main is live, the backup's after a fallover, and back again on reset. Packets are passed through unchanged, so any UDP cue protocol works. Optionally set a Notify address (e.g. /pf/state) and Playback Fail sends that OSC message with the fallover / reset argument to the console each time it switches, so the lighting operator gets a flag. Test notify sends it now. The status line shows which machine is being forwarded and how many packets were sent or held back.

5.6 Pilot tone on the primary machine

Open Settings ▸ Downloads ▸ Open test tones folder. It contains 1kHz_Tone_2min.mp3 through 1kHz_Tone_60min.mp3 at −30 dB RMS. On the primary playback machine, play one of these continuously to the channel patched as Primary Tone, for example as a looping audio cue in QLab that starts with the show. The tone must sit inside the −40 to −10 dB window shown on the Tone meter.

6. Operating

The header shows the state at a glance: Tone Detected (green), Tone Lost (red), Fallover Active, and the audio/console connection chips.

  • Activate Fallover — switch to Backup now (testing, or a deliberate manual switch). Backup is unmuted first, then Main is muted.
  • Reset to Main — return to Main: Main unmuted first, then Backup muted. Works whether the fallover was automatic or manual.
  • Help — turns on Help Mode: hover any highlighted control for a description.
  • Settings — see §10.
  • Sidebar — see §9.

Whenever a fallover happens the whole window shows a red FALLOVER ACTIVE banner, and in sidebar view the whole strip pulses red.

Recommended pre-show check: play the tone, confirm "Tone Detected", press Activate Fallover and listen for the switch, press Reset to Main, then stop the tone and confirm an automatic fallover. The reaction readout should show figures in the tens of milliseconds.

7. Loopback mode (no Dante)

For a single-Mac setup where QLab (or any app) runs on the same Mac as Playback Fail. Playback Fail includes its own virtual audio device, Looped Back Audio 8ch, so nothing needs downloading.

  1. In Soundcard Input Patch ▸ Loopback, click Install Looped Back Audio. An information page explains what will be installed (a small user-space CoreAudio plug-in, copied from inside Playback Fail into /Library/Audio/Plug-Ins/HAL/). Tick the box and click Install; macOS asks for your administrator password. Playback Fail never sees that password. The system audio service restarts, so other apps' audio may pause for a second.
  2. In QLab: Settings ▸ Audio ▸ New patch with audio device ▸ Looped Back Audio 8ch, and assign that patch to the cues Playback Fail should hear (typically the pilot-tone cues, with the tone on an output such as 4). Looped Back Audio is a plain 8-channel device: cue output 4 arrives on Playback Fail channel 4.
  3. The Loopback card shows the eight channels with live levels, which Playback Fail input each one is patched to, and the apps that currently have Looped Back Audio open (QLab appears here as soon as its patch is active). Use it to confirm the tone is landing on the channel you expect.
  4. Patch Primary L/R and Primary Tone to those Looped Back channels (channel names show as "LB 1", "LB 2" …).

If the same cue must also be heard in the room, either send the music on a separate cue/output patch to your real interface, or build a Multi-Output device in Audio MIDI Setup. Note that macOS exposes a stacked Multi-Output device as 2 channels only, so keep the tone on output 1 or 2 if you go that way.

Update driver appears when a newer driver ships with a Playback Fail update. Remove driver uninstalls it (administrator password). The uninstaller on the disk image can remove it too.

Sample rates. Looped Back Audio runs at 44.1, 48, 88.2, 96, 176.4 or 192 kHz and follows whatever the source app or your interface is set to; Playback Fail's detection is independent of sample rate.

8. Configuration files

Save Configuration writes everything (patch, trigger settings, timeouts, auto reset, ping addresses, console settings, GPIO) to a .pfconfig file, which is plain JSON. Open Configuration loads one. Recent files appear in the File menu. Keep one file per venue or show.

9. Sidebar view

Click Sidebar to shrink Playback Fail to a compact always-on-top strip parked at the right edge of the screen. It shows the app icon, the five meters (L, R, Tone with its −40/−10 window, B-L, B-R), the live state, the two LX cue boxes when the Cue Relay is on (LX Pri left, LX Sec right; full names in the 4 × 1 layout), and Fallover, Reset and Expand buttons. Drag it anywhere by its background. During a fallover the whole strip pulses red. Choose 1 × 4 or 4 × 1 in Fallover Settings; Expand returns to the full window.

10. Settings

Open with the ⚙ Settings button. One scrolling page:

  • General — Open Playback Fail at login (macOS login item; installed app only) and Ask before quitting: quitting or closing the window shows a confirmation with Save settings & Quit (writes the configuration file first), Quit or Cancel.
  • General ▸ Boot snapshot — Save boot snapshot keeps a complete copy of the show setup (input devices and patch, console and trigger settings, cue relay, ping addresses, appearance). With Apply at launch ticked, Playback Fail restores that copy every time it starts, so a crash, a power cut or an accidental change cannot leave the show machine in the wrong state. Pair it with Open at login for a machine that comes back on its own. Restore now applies it immediately; Clear removes it. Set the app up, check it, then take the snapshot.
  • Downloads — the test tone folder and this manual.
  • Appearance ▸ Meters — meter style for the main meters and the sidebar: LED VU (segmented green/amber/red ladder, the default), Classic bar or Heritage Meters (analogue-console lime ladder with the dB scale between L and R).
  • Appearance ▸ Source colours — the Primary and Secondary colours, chosen from ten standard swatches (red and blue by default). They outline the two source cards and colour the LX cue strobe on each side.
  • Appearance ▸ LX cue flash — how strongly the LX cue boxes strobe on each cue (0 % = dot only) and how many flashes each cue gets (1–5, each 0.2 s).
  • Demo mode — runs a scripted show on screen (music on both sources, pilot tone, lighting cues from both machines, a tone loss at 18 s, fallover, reset; loops every 40 s) so you can check the look of the app, the sidebar and the themes. Nothing is sent to the mixing console or the lighting desk and the real audio engine is ignored while it runs. It switches off when the app closes. Jump to tone loss / Jump to reset skip ahead in the script.
  • Appearance ▸ Themes — Playback Fail (default) is built in and locked. Use Duplicate as custom… to make an editable copy, then change the interface and heading fonts, text size, the four status colours (OK, alarm, warning, info) and the surface/text colours. Changes apply live and are saved. High contrast, Broadcast and Light are also included.
  • Event Log — a timestamped record of detection events, fallovers, MIDI activity and errors (newest first). Copy puts it on the clipboard for support. The section is collapsible.
  • About — version, audio engine and device in use, Check for updates, and Licence….

11. Troubleshooting

SymptomLikely cause / fix
"Tone: WAITING" with the tone playingWrong channel patched as Primary Tone, or level outside −40…−10 dB. Watch the Tone meter: the bar must sit inside the shaded window.
Console shows "connected" but nothing mutesWrong console preset (an AHM needs the AHM preset, not SQ). Check channel/zone numbers with the Test buttons. Make sure no other app holds the console's TCP MIDI connection.
Fallover feels slowLook at the reaction readout. If the engine figure is small but the switch is slow, the delay is in the console or network. If you are testing in QLab, use Stop (⌘.) not Esc: Esc is Panic, which fades over a couple of seconds. On Dante, pulling the primary off the network leaves DVS outputting until the Dante flow times out (around a second); stopping playback is detected within the timeout.
False falloversRaise the tone loss timeout to 40–60 ms, or fix dropouts on the feed. With auto reset on, a false trigger switches straight back.
QLab shows "(disconnected)" on a loopback patchThe patch was made against a device that is no longer present. Create a new patch with Looped Back Audio 8ch.
"Dante Virtual Soundcard not found"Install DVS, enter its licence, pick the network interface and click START in the DVS panel, then Refresh.
No input devices / meters deadMicrophone permission denied: System Settings ▸ Privacy & Security ▸ Microphone ▸ Playback Fail.
Licence lostOnline check needed (40-day rule), or the licence is active on another Mac. Deactivate there, then activate here.

12. Specifications

Inputs monitoredup to 16 channels, any CoreAudio device
Capture enginenative CoreAudio (pf-audio), 64-frame (1.3 ms) IO buffer
Tone detection1 kHz pilot, −40 to −10 dB window, evaluated per audio chunk
Tone-loss timeout10–2000 ms (default 10)
Auto-reset hold0–30 000 ms (default 10)
Typical reaction (loss → backup unmuted)30–45 ms on Loopback
Typical return (tone back → main unmuted)15–25 ms
Console controlMIDI over TCP/IP (Note On / NRPN / CC presets), optional GPIO
Config files.pfconfig (JSON)

Support: info@soundanalysts.co.uk · © Sound Analysts Ltd

Need a hand?

Support: info@soundanalysts.co.uk

Email support