Dante

The Dante API Device Core lets a SKAARHOJ controller drive audio and video routing on a Dante network through Dante Director or Dante Domain Manager (DDM). Rather than making the operator deal with Dante’s two-part “device + channel” addressing, you map the channels you care about to plain numbered input and output slots. The controller then routes “input N to output M”, and the core translates that into the correct Dante subscription.

A panel button works in single numbers, so the two-part Dante address has to be flattened into one. That is what the core’s I/O Mapping does — each row ties one Dante device + channel to a number. From then on the panel only thinks in numbers: the routeInputToOutput parameter looks up what each number points to, and the core asks Dante (through Director or DDM) to make or clear the connection.

Connecting to Dante

A device is configured in Reactor’s device-core settings (these are the per-device connection details for the Director or DDM instance you are talking to):

An API key inherits the full access of the account that created it — potentially every site and domain. Treat it like a password: don’t share it, and revoke it in Director/DDM if it is ever exposed.

Once connected, the status pill in the lower-left of the web UI shows “Connected to Dante”; it polls every couple of seconds and turns red if the link to Director/DDM drops.

Opening the web UI

Open Reactor and go to the Packages menu, find the Dante API package and use the button to open its UI. If the core manages several Dante devices, a device selector appears in the lower-left of the sidebar so you can switch between them; the connection pill sits just above it. Everything below happens in this UI.

The I/O Mapping page

The web UI opens on the I/O Mapping page. The sidebar holds the Save & Restart button, the section navigation and the connection pill; the main area has two collapsible sections, Inputs and Outputs. This is where you decide which Dante channels each numbered slot stands for.

Dante API I/O Mapping landing page

Inputs

Inputs are Dante tx channels (sources). Each row binds a unique integer ID to one tx channel and shows its Name, the source Device and Channel, and a coloured Type badge (audio, video, ancillary…) reflecting the channel’s media type.

Input IDs must be unique. Duplicates are highlighted in red and block saving until you fix them.

ID 0 is reserved for “clear” — routing input 0 to an output unsubscribes it.

Inputs section with the slot table

Outputs

Outputs are Dante rx channels (subscribers/receivers). They use the same columns as Inputs, but with one important difference: output IDs may repeat. When you send a routing command for output ID 5, every row tagged 5 is updated — this is how one panel action fans out to several rx channels at once.

Outputs section with the slot table

Adding channels

Use Add Inputs / Add Outputs to pick from the channels seen live on the network. Channels are grouped by device into collapsible blocks; type in the Filter box to narrow by device or channel name, and set a Start ID that the new slots auto-increment from. Each device block has a Select all toggle, and every channel carries its media-type badge.

If the dialog reports “No live channels found”, the core is not connected to a domain (or the domain has no API-visible devices) — check the connection pill.

Add Inputs dialog listing live Dante channels

Editing, reordering & deleting

Rows can be tuned individually or in bulk:

Delete device, Delete selected and the row trash icon remove slots from your draft with no undo button. The change only becomes permanent when you Save & Restart — until then the saved configuration on the device is untouched.

Inline row edit of ID and Name

Delete-device dialog

Tick rows to enable batch delete

Save & Restart

Edits are kept in a draft until you press Save & Restart. While there are unsaved changes the button turns blue and pulses and an “Unsaved changes” note appears.

Save & Restart restarts the core. The numbered-routing parameters are sized and labelled from your mapping, so their shape only updates on restart. Make all your edits first, then save once.

Save & Restart showing unsaved changes

Using it from a panel

Once a mapping is saved, the core exposes two parameters under routing for everyday operation:

For everyday operation reach for routeInputToOutputOpt — picking the input by name reads far more clearly on the panel than a raw number.

The output dimension’s element labels are taken from the names you gave the outputs (when several outputs share an ID, their names are joined with “ + ”), so the routing reads clearly in Reactor.

Direct routing (advanced)

For ad-hoc routing without a numbered map, the core also exposes a manual selection workflow. You browse the domain directly and connect any receiver channel to any transmitter channel:

Troubleshooting

Built-in Help

The web UI has a built-in Help page summarising what the core does, how to configure the mapping for AV technicians, and the routing parameters for integrators — a quick reference while you work.

Built-in Help page in the Dante API web UI

Reference

Routing parameters (numbered): routeInputToOutputOpt (option list; input by name — recommended) and routeInputToOutput (integer; value = input ID, dimension = output ID, 0 = clear).

Direct parameters: current_domain, domain_name, domain_status_*; rx_device, rx_channel, rx_channel_type; tx_device, tx_channel, tx_channel_type, current_tx_device, current_tx_channel; take, take_or_clear, revert, mode (Take / Direct).

Concepts: Inputs = Dante tx channels (unique IDs; ID 0 = clear); Outputs = Dante rx channels (IDs may repeat for fan-out). Mapping changes take effect after Save & Restart.


Revision #3
Created 16 June 2026 12:38:47 by Samuel Jakobsen
Updated 16 June 2026 13:21:39 by Samuel Jakobsen