ArtNet Input

WATCHOUT can receive ArtNet DMX data over the network and map incoming DMX channel values to show variables. This allows lighting consoles, DMX controllers, and other ArtNet-capable devices to directly control media server parameters like opacity, position, color, and any other variable-driven property.

WATCHOUT does not directly support DMX input. You need a DMX-to-Ethernet adapter (Art-Net node) to convert physical DMX signals to Art-Net over Ethernet before WATCHOUT can receive them. If your controller already outputs Art-Net natively over Ethernet, no adapter is needed.

Enabling ArtNet

ArtNet input is enabled or disabled from the Network window in Producer using the ArtNet toggle. When enabled, the Operative listens for ArtNet packets on the standard ArtNet port.

External Key Format

ArtNet variables use a structured external key format that specifies the DMX universe and channel address. The primary syntax uses universe() and channel():

artnet.universe(N).channel(N)

Universe addressing can be specified in two ways:

  • Full address: artnet.net(1).subnet(2).uv(3).ch(10) — Specifies the ArtNet net, subnet, and universe individually.
  • Flat (absolute) universe: artnet.universe(1).channel(2) — When only universe is specified (without net and subnet), it is treated as an absolute universe number. The valid range is 0–32767. If not specified, universe 0 is used by default. Universe 0 maps to net 0, subnet 0, universe 0; universe 18 (= 1x16 + 2) maps to net 0, subnet 1, universe 2; and so on.

Both channel() and channels() (plural) are accepted and are functionally identical.

Channel Resolutions

WATCHOUT supports multiple DMX channel resolutions for different precision requirements:

Coarse (8-bit) — A single DMX channel. Range: 0–255.

artnet.universe(0).channel(1)

Fine (16-bit) — Two DMX channels combined for higher precision. Range: 0–65,535.

artnet.universe(0).channel(1, 2)

Ultra (24-bit) — Three DMX channels. Range: 0–16,777,215.

artnet.universe(0).channel(1, 2, 3)

Uber (32-bit) — Four DMX channels for maximum precision. Range: 0–4,294,967,295.

artnet.universe(0).channel(1, 2, 3, 4)

For multi-channel resolutions, channels are listed in order from most significant (coarse) to least significant. The values are combined in big-endian byte order.

Named Accessor Syntax

As an alternative to listing channel numbers, you can use named accessors to bind individual resolution channels explicitly:

artnet.universe(1).coarse(1).fine(2).ultra(3).uber(4)

This syntax is equivalent to artnet.universe(1).channel(1, 2, 3, 4) and can be more readable when the channel mapping is non-contiguous or when you want to make the resolution hierarchy explicit.

Maximum Values by Resolution

When working with absolute (non-normalized) values, the maximum value depends on the number of channels. The formula is 2^N - 1 where N is the total bit depth:

ChannelsBitsFormulaMaximum Value
Coarse82^8 - 1255
Coarse + Fine162^16 - 165,535
Coarse + Fine + Ultra242^24 - 116,777,215
Coarse + Fine + Ultra + Uber322^32 - 14,294,967,295

When using absolute (non-normalized) values, you need to manually set the maximum field on the variable to match the resolution's maximum value. If the maximum is not set correctly, the variable's effective range will not match the incoming DMX data.

DMX channels are 1-indexed in the key format — channel 1 corresponds to the first channel in the DMX universe.

Normalization

Append .normalized() to the key to receive normalized values (0.0–1.0) instead of raw DMX values:

artnet.universe(0).channel(1).normalized()

Normalization divides the raw value by the maximum for the channel resolution (255 for 8-bit, 65535 for 16-bit, etc.). This is useful when your variable range is 0–1 or when you want consistent scaling regardless of resolution.

Update Frequency and Interpolation

ArtNet typically operates at approximately 44 Hz (roughly every 22ms). Each incoming ArtNet packet is timestamped with a 50ms interpolation window by the Operative before forwarding to the Director. This provides smooth transitions between DMX value updates.

The Operative subscribes only to the ArtNet universes that are actually referenced by variables in the current show. If no variables reference a particular universe, that universe's traffic is ignored, keeping processing efficient.

ArtNet Fixtures and Output

In addition to receiving ArtNet input, WATCHOUT supports ArtNet output through fixture cues on timelines. Fixture cues allow you to drive external DMX devices (lights, fog machines, motors, etc.) from the WATCHOUT timeline with keyframed values. ArtNet output runs at 44 FPS.

Fixture cues support:

  • Multiple channel resolutions (8-bit through 32-bit).
  • Channel relationships (multiply and override) for master/slave dimmer configurations.
  • ArtNet recording — recording incoming ArtNet data for later playback as timeline content.

See the ArtNet Fixture Cues section in Chapter 6 for details on fixture configuration and output.

Use Cases

  • Lighting desk integration — Control WATCHOUT opacity, position, and blend parameters from a grandMA, ETC Eos, or any ArtNet-capable lighting console.
  • DMX show control — Use a DMX-based automation system to drive WATCHOUT variables alongside lighting and mechanical effects.
  • Recording and playback — Record incoming ArtNet data from a lighting desk rehearsal and play it back as part of the show, ensuring consistent lighting-to-video synchronization.