Animated SuperSource transitions for Blackmagic ATEM switchers. Not affiliated with Blackmagic Design.
A layout waits on preview in its final form. When it's taken to air, it starts as an exact copy of what's already on program (the presenter camera full screen, say), then animates into the layout. Taking it out runs the other way. The design, decisions and open work are in project.md.
The app drives either a real ATEM over the network or a built-in simulator with the same inputs and buses as a 2 M/E. The ATEM connection is written and tested against a stand-in switcher, but not yet against real hardware; the first checks to run on one are in spike/. Pick the connection in Setup.
| Folder | What's in it |
|---|---|
packages/core |
Design model, motion maths, source matching, take planning, the engine and the simulator. No Electron, no ATEM. |
apps/desktop |
The Windows tray app (Electron + React). |
apps/companion |
The Bitfocus Companion module (Companion 4.3 or later). |
packages/atem |
The ATEM adapter: connection, discovery, state, and takes streamed frame by frame. |
packages/protocol |
Types for the link between the app and the Companion module. |
apps/site |
The download page at superdupersource.kennedys.nz, with release notes at /releases/. |
spike |
Phase 0 scripts to run on a real ATEM. |
Supersources-templates |
Background and cutout PNGs. |
Needs Node 22 or later (the Companion module tooling requires it).
npm installThe desktop app:
npm run dev -w @sds/desktopThe same UI in a browser, with the simulator running in the page (handy for quick UI work):
npm run web -w @sds/desktopThen open http://localhost:5199.
Tests and type checks:
npm testnpm run typecheck- On the SuperSources tab, click Slides + Presenter. It loads into SuperSource 1 and goes to preview.
- Open Simulator (bottom of the left rail). Program shows the presenter camera.
- Press SS CUT. The camera shrinks into the right-hand strip while the slides are revealed.
- Put CAM2 (the slides) on preview and press SS CUT again. The slides grow to full screen and the switcher cuts to them.
- Panel CUT is a take made on the switcher panel. The app sees it but doesn't animate, as designed.
The module connects to the app on port 8710. To build the package Companion imports:
npm run build -w companion-module-kennedys-superdupersourcenpm run package -w companion-module-kennedys-superdupersourceThat writes apps/companion/kennedys-superdupersource-0.1.0.tgz. In Companion, import it under Modules, add a SuperDuperSource connection, and drag buttons from its presets. The module's help page covers the buttons.
A release is cut by tagging a version:
npm run bump 0.2.0git commit -am "v0.2.0" && git tag v0.2.0 && git push --follow-tagsThe tag starts .github/workflows/release.yml, which runs the tests, builds the Windows installer and the Companion module, and publishes both as a GitHub release. The download page and the app's auto-update read that release. To build the installer locally instead:
npm run dist -w @sds/desktopIt lands in apps/desktop/release/. Builds are unsigned until the Azure Trusted Signing secrets are added to the repo; apps/desktop/electron-builder.config.cjs lists them.
Installed copies check for updates about 15 seconds after starting and every 6 hours. An update downloads in the background and installs when the app quits, or when you press Restart and update in Setup. The app never restarts on its own.
apps/site is the page at superdupersource.kennedys.nz. Its hero runs the real Slides + Presenter transitions, drawn the way the app draws layouts. It links the latest GitHub release, and /releases/ lists every release with its notes.
npm run dev -w @sds/siteCapRover builds it from the repo root on every push to main, using captain-definition and apps/site/Dockerfile.
MIT