npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

iobroker.blackmagic-atem

v0.2.3

Published

Control Blackmagic ATEM video mixers (Mini, Mini Pro, Television Studio, Constellation, and more)

Readme

ioBroker.blackmagic-atem

NPM version Downloads Number of Installations Current version in stable repository License

Tests: Test and Release

Control Blackmagic ATEM video mixers from ioBroker — supports all 21+ ATEM models from Mini to Constellation 4K+.

Description

This adapter controls Blackmagic Design ATEM video mixers over the network. It uses the reverse-engineered ATEM UDP protocol via the atem-connection library, and supports 21+ model variants — from ATEM Mini through Television Studio to Constellation 4K+ — with capability-based state creation that adapts to the connected device.

Features

  • Program/Preview switching — change program and preview inputs
  • Transitions — Cut, Auto, manual T-bar; Mix / Dip / Wipe / DVE / Sting styles with per-style rates
  • Fade to Black — toggle and configure FTB rate
  • Upstream Keyers (up to 4 per M/E) — on air, type, fill/key source, mask, fly
  • Downstream Keyers (up to 4) — on air, tie, auto, rate, fill/key source
  • Aux outputs (up to 48) — source routing
  • Audio Mixer — master gain/balance, monitor, per-input gain/balance/mix (Classic + Fairlight)
  • Color Generators — hue/saturation/luminance
  • Streaming — start/stop, status, cache used (supported models)
  • Recording — start/stop, switch disk, duration, remaining space (supported models)
  • Media Players — source type, still/clip index, playback control
  • Tally — program/preview tally state
  • Macros — run, stop, continue, loop, named slots (up to 100)
  • Input metadata — short/long names, port type
  • Auto model detection — capabilities discovered from the connected device

Requirements

  • js-controller >= 6.0.11
  • ioBroker Admin >= 7.6.20
  • Node.js >= 22
  • Blackmagic ATEM switcher with network connectivity

Installation

Install via the ioBroker Admin UI: Adapters → search for blackmagic-atem → install.

Configuration

  1. Open the adapter instance configuration in ioBroker Admin
  2. Enter the IP address of your ATEM device
  3. Choose the model (or leave on Auto Detect)
  4. Adjust the reconnect and poll intervals if needed
  5. Save and start the adapter

State Tree

info.connection
device.{modelName, productId, videoMode, capabilities}
me[0-3].{programInput, previewInput, inTransition, transitionPosition}
me[0-3].transition.{style, mixRate, dipRate, wipeRate, dveRate, wipePattern}
me[0-3].fadeToBlack.{isFullyBlack, inTransition, rate}
me[0-3].usk[0-3].{onAir, type, fillSource, keySource, maskEnabled, flyEnabled}
commands.{cut, auto, ftb}
dsk[0-3].{onAir, tie, inTransition, rate, fillSource, keySource, auto}
aux[0-47].source
audio.master.{gain, balance, afv}
audio.monitor.{enabled, gain, mute, solo, dim}
audio.inputs.input[N].{gain, balance, mixOption}
audio.commands.resetPeaks
colorGenerator[0-1].{hue, saturation, luminance}
streaming.{status, start, stop, duration, cacheUsed}
recording.{status, start, stop, switchDisk, duration, remainingDiskSpace}
mediaPlayer[0-3].{sourceType, stillIndex, clipIndex, playing, loop, atBeginning}
tally.{programInputs, previewInputs}
macros.{run, stop, continue, isRunning, isWaiting, loop, runningIndex, recordedCount}
macros.slots[0-99].{name, isUsed, trigger}
inputs.input[N].{shortName, longName, inputId, portType}

States are created conditionally based on detected/selected model capabilities. Orphans are cleaned up when the model changes.

Example Usage

// Switch program to camera 1
setState('blackmagic-atem.0.me0.programInput', 1);

// Perform a cut
setState('blackmagic-atem.0.commands.cut', true);

// Start streaming (supported models only)
setState('blackmagic-atem.0.streaming.start', true);

// Run macro 5
setState('blackmagic-atem.0.macros.run', 5);

Input ID Reference

| ID | Source | | ------------- | ----------------------- | | 1–8 | Camera inputs | | 0 | Black | | 1000 | Color Bars | | 2001–2002 | Color Generators 1, 2 | | 3010, 3011 | Media Player 1, 2 | | 3020, 3021 | Media Player 1, 2 Key | | 7001–7002 | Clean Feed 1, 2 | | 10010, 10011 | Program, Preview |

Protocol Notes

This adapter uses the reverse-engineered ATEM UDP protocol (port 9910), as documented by the open-source community:

The ATEM protocol has no authentication — keep ATEM devices on a trusted, private network.

Changelog

0.2.3 (2026-05-21)

  • (Alan Paris) Bump minimum Node.js to 22 and CI matrix to 22/24 for ioBroker community submission compliance
  • (Alan Paris) Set common.noGit: true so the gitignored build/ tree does not trip the repochecker
  • (Alan Paris) Trim common.news to only versions published to npm

0.2.2 (2026-05-20)

  • (Alan Paris) Switched CI publish to npm trusted publishing (OIDC)

0.2.1 (2026-05-20)

  • (Alan Paris) Initial publication to npm registry

0.2.0 (2025-02-04)

  • (Alan Paris) Added model selection, transition rates, auxiliary outputs, tally, audio per-input, color generators

0.1.0 (2025-01-29)

  • (Alan Paris) Initial release: program/preview switching, DSK/USK, streaming and recording, media players, macros

License

MIT License — see LICENSE for details.

Copyright (c) 2024-2026 Alan Paris [email protected]