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>
2.2 KiB
2.2 KiB
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)
- Copy this folder, including
node_modules, to the Companion computer, e.g.~/Apps/companion-dev-modules/companion-module-digico-s31/. - 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 editingdev_modules_pathin~/Library/Application Support/companion/config.jsonand relaunching Companion.) - 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).