michaelandClaude Fable 5.1 131cdfd81f Companion module for the DiGiCo S31 with an iPad relay (v1)
Bitfocus Companion 5 connection module (ESM, @companion-module/base ~2.1.3,
runtime node22) for the DiGiCo S21/S31. It occupies the console's single
iPad slot, controls per-channel sends/assigns to one buss, aux send
level/on/pan, mutes, faders and snapshots, and relays any number of DiGiCo
iPad apps through to the console byte-for-byte.

The S31's iPad extension was probed live: it speaks the SD/DiGiCo Pad OSC
tree (console receives on 8000, replies only to the configured iPad port
9000). tools/mock-s31.js emulates the console and test/selftest.js runs the
link + relay end to end against it. docs/design-v2.md is the brief for the
generic v2 rewrite.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-15 15:55:18 -04:00

companion-module-digico-s31

Bitfocus Companion (5.0+) connection module for the DiGiCo S21/S31: per-channel control of one buss (the Apollo Beach "Studio" group by default), aux send level/on/pan, mutes, faders, snapshots — plus a UDP relay so several DiGiCo iPad apps can share the console's single iPad slot.

User-facing documentation (console + iPad setup, variables, the verified protocol table) is in companion/HELP.md; Companion shows it on the connection's help button.

Layout

Path Purpose
src/main.js the InstanceBase subclass (config, lifecycle, state, learn log)
src/definitions.js actions, feedbacks, variables, presets
src/dialects.js address builders/parsers: sd (iPad extension, verified), sseries (OSC Control extension), raw
src/console-link.js one UDP socket to the console (fixed local port)
src/relay.js iPad relay: tracks clients, forwards verbatim, fans out
src/osc.js tolerant OSC codec
tools/ mock-s31.js (console emulator, both dialects), fake-ipad.js, see tools/README.md
test/selftest.js end-to-end check: mock console ↔ link/relay ↔ fake iPad

Develop

npm install          # @companion-module/base ~2.1.3 (2.2.x is rejected by Companion 5.0.x)
npm test             # runs test/selftest.js against the mock console

Install as a developer module (how it runs on AB-ProPresenter)

  1. Copy this folder, including node_modules, to the Companion computer, e.g. ~/Apps/companion-dev-modules/companion-module-digico-s31/.
  2. In the Companion launcher → Developer, enable developer modules and set the path to the parent folder (~/Apps/companion-dev-modules); the launcher restarts Companion with --extra-module-path. (On AB this was done by editing dev_modules_path in ~/Library/Application Support/companion/config.json and relaunching Companion.)
  3. Connections → Add → "DiGiCo: S21; S31" (version Dev). Later file changes hot-reload the connection.

The console side (Extensions → iPad) must point at the Companion computer's IP with Send Port 9000 / Receive Port 8000 (the module defaults).

S
Description
Bitfocus Companion module for the DiGiCo S21/S31: full console control over the iPad OSC leg plus a relay so several DiGiCo iPad apps can share the console's single remote slot
Readme
442 KiB
Languages
JavaScript 100%