For an introduction to ArtDmx, please refer to Streaming Packets.
In order to unicast ArtDmx, the device which originates the ArtDmx packet needs to know which nodes are consumers of the specific Port-Address. This is achieved using the following algorithm:
- The originating device (controller) broadcasts ArtPoll on regular cycle of period 2.5 to 3s.
- Controller parses all ArtPollReply packets and builds a list of up to 8 possible Port-Addresses and associated IP address for each device that responds. These are called subscribers.
- The controller uses this list to calculate the IP address it should use for unicasting the ArtDmx packets.
This algorithm ensures that only nodes which can use a particular Port-Address will receive the data, providing a massive relief in processing power compared to broadcast.
There are, however, some special cases that require consideration:
At power-on, the console has not yet built its subscriber table. Until it has built the table, it will use broadcast.
When a console is programmed to output a specific Port-Address, but that Port-Address has no subscribers, it must not transmit ArtDmx.
The table below shows an example subscriber table and the ArtPollReply fields used to generate each entry for a given node. The console will generate this 8 entry table for every node which responds. The actual number of entries for each node may be less than 8, depending on the number of input and output ports. Which input and output ports are implemented is defined in the array: ArtPollReply->PortTypes
It is worth emphasising that the maximum number of subscribers for a given node is 8 and not 4. The input ports must be included as well as the output ports. This is because, depending on the type of node, an input port can be a consumer of ArtDmx.
The diagram below shows a network containing a controller and two nodes, both of which have just 4 ports implemented. For the purposes of this example, it is not important whether the implemented ports are input or output.
Shown below is the subscriber table that the controller will generate in the above example. The column labelled ‘Cast’ shows whether and how the controller will transmit the ArtDmx packets.
The following table shows a summary of the ArtDmx transmission from the controller’s perspective.