Device catalog
Every official Tangle device module by category, with what it controls, its protocol and the setup each device needs.
This page lists the official device modules, grouped by category. Each table gives the module id, what it controls, how it talks to the device, and the setup needed on the device side. To add a device with one of these modules, see Devices.
Some modules include setup steps for the device side (a script to copy, a remote-access setting to enable). The designer runs them as setup assistants on the device page; see Setup assistants. The setup notes on this page say what each one does.
The catalog has 103 modules. Settings are listed by name; secrets (passwords, PINs, keys) are stored in the credential store, never in the project. Modules that talk RS-232 also accept a network serial port (tcp://, rfc2217:// or udp:// through an IP-to-serial gateway); see Network serial ports.
Timecode and clock references
Timecode modules are native programs built for steady timing. Inputs report tangle.timecode state (timecode, fps, running, signal) and can be chased by a timeline. Outputs generate timecode from start, stop and locate, which core uses to output a timeline's position. See Timelines.
| Id | What it does | Protocol | Notable settings |
|---|---|---|---|
misc.ltc.timecode | Reads or generates SMPTE LTC on a sound card channel. 24, 25, 29.97 drop-frame and 30 fps; input rate detected automatically | Audio (SMPTE 12M) | mode (input/output), device (sound card name or part of it; empty for the default), channel, fps, levelDb (output, default -12 dBFS), dropoutMs |
misc.mtc.timecode | Reads (chases) or generates MIDI Time Code on a MIDI port of the computer | OS MIDI (CoreMIDI, Windows MIDI, ALSA) | mode, port (required, name or part of it), fps, dropoutMs |
misc.rtpmidi.timecode | Reads or generates MTC over the network with RTP-MIDI (AppleMIDI sessions). No driver needed | UDP 5004/5005 | mode, session (initiator or listen), host, port, localPort, name |
kissbox.midi.timecode | Reads or generates MTC through a Kissbox MIDI interface in MIDI-over-UDP mode | Kissbox UDP (default 9813) | mode, host (required), port, localPort |
misc.artnet.timecode | Receives ArtTimeCode from a desk or media server, or generates it | Art-Net UDP 6454 | direction, fps, host (output; empty for broadcast), timeoutMs, streamId |
misc.ptp.timecode | Listens to a PTPv2 (IEEE 1588) grandmaster and reports its identity, lock state and offset to this computer's clock | UDP 319/320 multicast | domain, interface, lockThresholdUs, timeoutMs |
misc.ntp.timecode | Queries an NTP server and reports clock offset, round-trip delay and stratum | NTP UDP 123 | host (required), intervalMs (16000; keep 16 s or more for public servers) |
Setup notes:
- LTC: connect the LTC cable to a line input (reader) or line output (generator). The
audio-devicessetup step lists the sound card inputs and outputs. If no sound card matches, the device isofflinewith the list of devices that exist. - MTC and MSC: plug in the MIDI interface first. The
midi-portssetup step lists the ports. For virtual ports, enable the IAC Driver in Audio MIDI Setup on macOS, or use loopMIDI on Windows. The port list is checked every 10 s, so an unplugged interface goesoffline. - RTP-MIDI: as
initiator, Tangle invites the peer athost:port; aslisten, Tangle waits for invitations onlocalPort. Windows may ask to allow the UDP ports through the firewall on first use. Kissbox interfaces running RTP-MIDI firmware usemisc.rtpmidi.timecode. - Kissbox MIDI: the default ports and the datagram format are assumptions; check them in the Kissbox configuration tool before relying on this module.
- PTP: ports 319 and 320 need administrator rights: root on macOS and Linux (or
CAP_NET_BIND_SERVICEon Linux); Windows usually allows them but may ask about the firewall. Without them the device showserrorwith that explanation. Accuracy is in the tens to hundreds of microseconds. - Status: a timecode input goes
timeoutwhen no timecode arrives fordropoutMs(default 1000) and backonlinewhen it returns. Art-Net timecode inputs stayonlineand setsignalto false instead. - Edition: chasing or generating timecode, and PTP clock sync, require Tangle Pro or Ultimate. See Licensing.
Projectors
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
misc.pjlink.projector | Projectors that speak PJLink (most Epson, NEC/Sharp, Panasonic, Sony, Canon, Hitachi, Optoma, ViewSonic): power, input, picture mute, lamp hours, errors | TCP 4352 | host, port, password (secret) |
barco.pulse.projector | Barco Pulse platform (UDX, UDM, F70/F80/F90, G62, HDX 4K, Threshold...): power, source, shutter, laser power, lens zoom/focus/shift, laser runtime, alarms | Pulse JSON-RPC, TCP 9090 | host, port |
christie.native.projector | Christie Boxer, Griffyn, M, HS, Crimson and D/HD/WU series: power, input, shutter, lamp hours, alarms | Christie ASCII protocol, TCP 3002 | host, port |
panasonic.native.projector | Panasonic PT-RZ, PT-RQ, PT-DZ, PT-MZ, PT-VMZ, PT-REQ/REZ and most networked models: power, input, shutter, freeze, light hours, errors | NTCONTROL, TCP 1024 | host, port, user (default admin1), password (secret) |
Setup notes:
- PJLink: turn on PJLink in the projector's network menu and note its password. Class 2 projectors are found by discovery; class 1 projectors do not answer the search.
- Barco Pulse: the JSON-RPC API is on by default; no password is needed for the functions this module uses.
- Christie: projectors with RS-232 only need an RS-232-to-IP adapter (a serial device server in TCP server mode); set
hostandportto the adapter. Projectors or adapters that ask for a login on connect are not supported yet. - Panasonic: turn on network control ("Command control" / "NETWORK CONTROL") in the projector's network menu. Both protected (password) and unprotected modes work.
- Input, shutter and mute while the projector is off or warming up fail as retryable, so core tries again. Projector warnings and alarms show the device as
degraded.
Media servers
All media server modules report tangle.transport (play, pause, stop, seek, load) for a main timeline or playback, plus a module-specific capability for any timeline by name.
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
dataton.watchout.mediaserver.v6 | WATCHOUT 6 (and 5) production or display computer: main and auxiliary timelines, control cues, load show, standby, online | Watchout TCP control (3040 production, 3039 display) | host, mode (production/display), password (secret), timelines |
dataton.watchout.mediaserver.v7 | WATCHOUT 7: play, pause, stop, jump to time or cue on any timeline | HTTP API on the Director, port 3019 | host, mainTimeline |
disguise.d3.mediaserver | disguise (d3 / Designer r17.4+): transports, cues, tracks, sections, machine health | disguise HTTP API on the director, port 80 | host (the director), transport |
christie.pandorasbox.mediaserver | Pandoras Box servers and Manager: sequence transport, cues, numeric device parameters | PB automation TCP, port 6211 | host, domain, sequence, fps |
ioversal.vertex.mediaserver | Vertex: playbacks, cues, fade to cue, go to time, any Vertex script line; timecode and cue feedback | External control TCP, port 50009 | host, playback, feedback, frameRate |
hive.player.mediaserver | Hive players (Beeblade family): playlists, clips, seek, output brightness | HTTP, port 80, base path /api/v1 | host, basePath, username, password (secret) |
brightsign.player.mediaserver | BrightSign players running the Tangle player script: play files or the playlist from the SD card, seek, volume | Text commands over TCP/UDP, port 5000 | host, port, playlist, loop, autoplay, volume, networkMode |
modulopi.kinetic.mediaserver | Modulo Kinetic: timeline transport and selection, tasks, any JSON-RPC method | JSON-RPC over WebSocket, port 8080 | host, port, path, timeline |
resolume.arena.mediaserver | Resolume Arena and Avenue 7+: clips, columns, clear, composition master, layer opacity and bypass, BPM, tap, resync | REST (8080) and OSC (7000) | host, port, oscPort, trigger (osc/rest) |
vyv.photon.mediaserver | VYV Photon (and Xenon): timeline play, pause, stop, seek, speed, free-run, LTC chase, cues, system commands | External TCP control, port 55503 | host, frameRate, playSpeed |
avstumpfl.pixera.mediaserver | PIXERA: play, pause, stop, locate, cues on any timeline. Reports every timeline's time as a named playhead (tangle.playhead) | JSON-RPC over TCP, port 1400 | host, mainTimeline |
greenhippo.hippotizer.mediaserver | Green Hippo Hippotizer V4: media and presets on layers, mix presets and levels with fades, timelines and cues, any pin, OSC to Multicontroller | REST API component, port 40512; optional OSC | host, mix, timeline, oscPort, pollIntervalMs |
Setup notes:
- Watchout 6: allow control in Watchout (production: Preferences > Control; the display cluster always listens). Auxiliary timelines cannot be queried: their state is what Tangle last commanded.
- Watchout 7:
loadis not supported; load the show in Producer. - Pandoras Box: the wire format was written without access to a real server. Check it on your Pandoras Box before using it in a show. Positions are converted to frames with the
fpssetting. - Hive: the HTTP endpoints are an assumption made without Hive's API reference. Check them on a player before use.
- BrightSign: the player must run the Tangle player script. Run the
sd-cardconfigurator: it buildsautorun.brs(the script) andtangle-settings.json(this player's port, playlist, volume and network) from the device's settings. Copy both to the root of the SD card next to the media files and start the player. WithnetworkMode: static, the script sets the address at boot; use it ashost. Discovery finds players running the script. - Modulo Kinetic: add a "Web socket server" device in Kinetic Designer and use its port.
- Resolume: turn on the webserver (Preferences > Webserver, port 8080) and OSC input (Preferences > OSC, port 7000).
- VYV Photon: Photon does not report the timeline position;
positionMsis the last position sought to. - Pixera: in Settings > API, enable the TCP API with the JSON/TCP protocol, port 1400.
Game engines
| Id | What it controls | Protocol | Setup |
|---|---|---|---|
epic.unreal.engine | Unreal Engine 5 (and 4.26+), editor or packaged game: call Blueprint functions, set and watch properties, Remote Control presets | Remote Control API: HTTP 30010, WebSocket 30020 | No Tangle plugin. Enable Epic's Remote Control API plugin. Configurator remote-control |
misc.godot.engine | Godot 4 games and apps: fire named triggers, set named properties, receive game events | Tangle engine protocol, TCP 9420 | Tangle Godot addon in the game. Configurator plugin |
unity.unity.engine | Unity games and real-time apps: fire named triggers, set named properties, receive game events | Tangle engine protocol, TCP 9420 | Tangle Unity package in the game. Configurator plugin |
Each game event becomes a device event game.<name> that automations can react to. See Engine plugins for setting up each engine.
Players
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
videolan.vlc.player | VLC media player: play, pause, stop, seek, playlist (add, remove, move, sort), media from a folder on the VLC computer, open a file or URL, volume, loop, random, fullscreen. Reports its time as a playhead (tangle.playhead) and an optional preview stream (tangle.preview) | Lua HTTP interface (8080) or RC / telnet console | host, protocol (http/rc), port, password (secret), mediaFolder, previewPort, fps |
blackmagic.hyperdeck.player | Blackmagic HyperDeck recorders: play (speed, loop, single clip), pause, stop, record named clips, clip and timecode locate, slot select; transport, timecode, clips and slots | HyperDeck Ethernet Protocol, TCP 9993 | host, port |
qsc.core.player | Audio Player components in a Q-SYS design: play, pause, stop, file selection, loop, status and position. One device can drive several players | QRC, TCP 1710 | host, user, pin (secret), players (required), mainPlayer, controlNames |
cockos.reaper.player | Reaper as a playback or recording machine: transport, record, loop, markers and regions as cues, master volume | OSC (8000 in, 9000 feedback), optional web remote | host, oscPort, feedbackPort, webPort, webUser, webPassword (secret), cues, allowedActions |
Setup notes:
- VLC: turn on the web interface (Preferences > All > Interface > Main interfaces: Web, with a Lua HTTP password), or run the setup assistant, which gives the command line for macOS, Windows and Linux. The preview assistant starts VLC with a small Motion JPEG stream on
previewPort(8081), which a Camera control can show; it costs some CPU on the VLC computer. - Q-SYS players: each player component needs Script Access set to External or All in Designer.
seekis not available: the Audio Player has no control for it. - Reaper: in Preferences > Control/OSC/web, add an OSC (Open Sound Control) surface with pattern config Default: Device IP is the Tangle computer, Device port is
feedbackPort(9000), Local listen port isoscPort(8000); tick "Allow binding messages". Adding the Web browser interface (port 8080, setwebPort: 8080) is recommended: the module then sees a Reaper that quit asofflineand lists markers and regions as cues. Reaper actions run only if their ids are listed inallowedActions.
Computer control
Computer modules only run named commands written in the device's settings, never free text from a dashboard or cue. Each command can declare typed parameters (string, number, integer, boolean, enum), which are checked before anything is sent and are never pasted into the script.
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
misc.wol.computer | Wakes computers with a Wake-on-LAN magic packet; optional check that the computer is up | UDP magic packet (port 9) | mac (required), broadcast, password (SecureOn, secret), checkHost, checkPort |
misc.ssh.computer | macOS, Linux and Windows (OpenSSH) computers: shut down, restart, sleep, hibernate, start and stop apps, named commands; uptime and load | SSH | host, username, os, password / privateKey / passphrase (secrets), keyFile, hostKeyCheck, sudo, commands, apps |
microsoft.powershell.computer | Windows PCs over PowerShell Remoting: shut down, restart, sleep, hibernate, apps, named PowerShell commands; uptime, CPU, Windows version | WinRM, 5985 (5986 with HTTPS) | host, username, password (secret), https, auth (ntlm, kerberos, basic), certValidation, commands, apps |
microsoft.psexec.computer | Windows PCs through Sysinternals PsExec: same functions as the PowerShell module, without remoting setup | SMB (445) and the ADMIN$ share | host, username, password (secret), psexecPath, statusCheck (tcp/psexec), commands, apps |
Setup notes:
- Wake-on-LAN: turn on Wake-on-LAN in the computer's BIOS/UEFI and network card settings (Windows: Device Manager > network card > "Wake on Magic Packet"; macOS: "Wake for network access"; Linux:
ethtool -s eth0 wol g). Use the subnet's broadcast address when the computer is on another interface; routers usually do not forward broadcasts. WithoutcheckHostthe module cannot tell whether the computer is up. An asleep computer shows asdegraded(notoffline) so it can still receive the wake action. Turning a computer off is done with the SSH or PowerShell module. - SSH: Windows needs the built-in OpenSSH Server feature. With
sudo: true, give the account a sudoers rule without password for exactly the power commands. Host keys are trusted on first use by default and stored in the module's data folder; after reinstalling a computer, delete its entry or sethostKey. Requires Python 3.11+ and installsasyncsshin the module's environment. - PowerShell Remoting: run the
enable-remotingconfigurator. It generates a script for that PC (enable remoting, firewall rules,LocalAccountTokenFilterPolicyfor local administrator accounts, Basic authentication whenauth: basic, and a self-signed HTTPS listener whenhttps: true). Run it in Windows PowerShell as administrator on the PC. The account must be an administrator. Over plain HTTP usentlm; usebasicwithhttpsonly. Requires Python 3.11+ and installspywinrm; for Kerberos (domain PCs) installpywinrm[kerberos], which needs the system Kerberos libraries on macOS and Linux. - PsExec: only runs on a Windows core node with PsExec installed; on macOS or Linux the device shows
error. In a cluster, pin the device to a Windows node withnode(see Devices). The password is passed on PsExec's command line, so other users of that machine can see it in the process list: run the core under its own account, or leaveusernameempty to use the core's own Windows account. tangle.poweronfails on the SSH, PowerShell and PsExec modules with a hint to usemisc.wol.computer.
I/O
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
advantech.adam.io | Advantech ADAM-6000 Ethernet I/O (6050, 6052, 6060, 6066, 6017, 6024, or a custom map for other Modbus TCP I/O): digital inputs with change events, digital and relay outputs, pulse, analog in and out | Modbus TCP 502 | host, unitId, model, map, aiRange, aoRange, registers, allowRawWrites |
kissbox.io.io | Kissbox I/O units, card by card: digital inputs with change events, relay and digital outputs, analog in and out | Kissbox UDP (9812) | host, cards (required, { slot, type } with di8, do8, ai8, ao8) |
Setup notes:
- Digital input changes send an
input.changeddevice event for automations. - ADAM: set
aiRangeandaoRangeto the ranges configured in Advantech's utility (default 0 to 10 V). Raw Modbus writes are refused unlessallowRawWritesis on. - Kissbox I/O: the UDP wire format is provisional and has not been matched to Kissbox's protocol documentation. It will not talk to a real Kissbox until that is done.
Audio DSP
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
qsc.core.dsp | Q-SYS Cores (and Designer emulation): the gains, mutes, selectors and triggers you list, snapshots, engine status. Changes made elsewhere are pushed back | QRC, TCP 1710 | host, user, pin (secret), controls, levelControl, muteControl, snapshots |
biamp.tesira.dsp | Biamp Tesira: the level, mute and other block controls you list (instance tag, attribute, index), presets, faults, raw TTP commands. Changes made elsewhere come back through subscriptions | Tesira Text Protocol, Telnet TCP 23 or RS-232 | host, serialPort, user, password (secret), controls, levelControl, muteControl, presets |
symetrix.composer.dsp | Symetrix Prism, Edge, Radius NX and Jupiter: faders, mutes and other controls by controller number, presets, raw commands | Composer protocol, TCP or UDP 48631, or RS-232 | host, transport, serialPort, controls, levelControl, muteControl, presets |
yamaha.rcp.dsp | Yamaha DME7, MTX/MRX and CL/QL/TF/DM7/RIVAGE PM: faders, channel on/mutes, names and other parameters by address, scene and preset recall, device status | Yamaha remote control protocol, TCP 49280 (RS-232C on MTX/MRX) | host, serialPort, controls, levelControl, muteControl, sceneCategory, presets |
allenheath.ahm.dsp | Allen & Heath AHM-64/32/16 and dLive: input, zone, control group, room, group, aux, matrix, main and DCA levels and mutes you list, presets and scenes, raw MIDI | TCP MIDI, port 51325 | host, model (ahm/dlive), midiChannel, controls, levelControl, muteControl, presets |
Only the controls listed in the settings can be changed from Tangle. Named controls come from Designer's Named Controls pane; component controls need the component's Script Access set to External or All. tangle.level maps 0..1 linearly onto the gain's min..max dB (default -60..0), which is not the fader taper Q-SYS shows. A Core in Standby or Idle shows as degraded.
The other DSP modules work the same way: list the controls you want in controls, and pick the one that tangle.level and tangle.mute drive with levelControl and muteControl.
Lighting
The DMX modules are native and share one DMX engine (tangle-dmx): lighting devices, outputs and inputs on the same Tangle universe work together.
| Id | What it does | Protocol | Notable settings |
|---|---|---|---|
misc.dmx.lighting | Lighting devices (dimmers, LED pars, moving heads) described by lighting device profiles and patched to a universe and address. Also a recorder | DMX engine | role (light/recorder), universe, address, profile, mode, recordSource, refreshHz |
misc.artnet.lighting | Sends a universe to an Art-Net node, or receives one from a lighting desk. Finds nodes with ArtPoll | Art-Net UDP 6454 | direction, universe, host (empty for broadcast), net/subnet/artnetUniverse, refreshHz (40), sync, nodeCheck, merge |
misc.sacn.lighting | Sends a universe as sACN (multicast or unicast), or receives one from desks, highest priority first | sACN (E1.31) UDP 5568 | direction, universe, sacnUniverse, host (empty for multicast), priority, sourceName, syncUniverse, merge |
misc.usbdmx.lighting | Sends a universe through a USB interface: Enttec DMX USB Pro and compatibles, or FTDI-based Open DMX style interfaces | USB serial | port (required), interface (enttec-pro/open-dmx), universe, refreshHz, breakUs, mabUs |
misc.dali.lighting | DALI lighting through a Lunatone DALI-2 IoT gateway: lights by short address, group or broadcast switched, dimmed and sent to scenes; lamp and gear failures show as degraded | Gateway REST and WebSocket, port 80 | gateway, host, lights, mainLight, scenes |
lutron.integration.lighting | Lutron RadioRA 2/3, HomeWorks QS/QSX, Quantum and Athena: zones (dimmers, switches, shades) set and followed, keypad buttons as events, phantom buttons for scenes | Lutron Integration Protocol, Telnet TCP 23 with login, or RS-232 | host, user, password (secret), zones, mainZone, keypads, scenes |
pharos.designer.lighting | Pharos LPC, TPC, LPC X, VLC/VLC+ and EXT controllers: start, release, toggle, pause and resume timelines and scenes, group masters, triggers, with their states and temperatures | Controller HTTP API | host, secure, user, password (secret), levelGroup, temperatureLimit |
A lighting device sends nothing by itself: add an output (Art-Net, sACN or USB) on the same Tangle universe. Several outputs may send the same universe.
Lighting device profiles
A lighting device profile says what each channel of a model means, per mode. Built-in profiles:
| Profile | Modes |
|---|---|
generic-dimmer | 8-bit (1 ch), 16-bit (2 ch) |
generic-rgb | RGB (3 ch), Dimmer RGB (4 ch) |
generic-rgbw | RGBW (4 ch), Dimmer RGBW (5 ch) |
generic-moving-head | Basic (8 ch), Compact (6 ch) |
The generic profiles are not real products: check the channel order against the device's manual.
For any other model, download its definition from open-fixture-library.org (the "OFL JSON" export, one file per model). Put it in the module's profiles folder and set profile to the file name without .json, or give an absolute path in profile. mode picks a mode by name or short name (8ch); the default is the first mode. Matrix models (pixel templates) are refused.
| Profiles folder | |
|---|---|
| macOS | ~/Library/Application Support/Tangle/module-data/misc.dmx.lighting/data/profiles/ |
| Windows | %ProgramData%\Tangle\module-data\misc.dmx.lighting\data\profiles\ |
| Linux | ~/.local/share/tangle/module-data/misc.dmx.lighting/data/profiles/ |
Lighting devices accept tangle.level.set (0 to 1), light.color.set (#rrggbb, a colour name, or red/green/blue/white/amber/uv), light.position.set (pan, tilt) and light.channel.set (any channel by number or name, 0 to 255). Every action takes fadeMs.
How the patch and merge work:
- Patch. A device reserves
addresstoaddress + channels - 1of its universe. A device that overlaps another gets statuserrornaming the channels and the other device, and is not retried until you change its address. - Merge. Every source (each light, raw channels, desk input with
merge, take playback) is merged per channel. Intensity channels are HTP (highest wins); other patched channels such as pan, tilt and wheels are LTP (last change wins). On devices without a dimmer channel,tangle.levelscales the colour. - A light is
onlineonce patched, whether or not an output sends its universe yet.
Recording a lighting sequence
A misc.dmx.lighting device with role: recorder records one universe into named takes and plays them back:
recordSource: outputrecords what Tangle sends;recordSource: inputrecords what a lighting desk sends to an Art-Net or sACN input device on the same universe.- Actions:
dmx.recorder.record(take),stop,play(take,offsetMs,loop),select,list,delete. A timeline cue or a dashboard button can start recording or playback. - Playback merges with live control (HTP/LTP as above). When a take ends, its last look holds until
stop. - Takes are stored as files in the DMX process's data folder, keeping only the channels that change.
Note: Recording into a DMX track on a timeline is not available yet. Use the recorder's takes and start them from cues.
Output status and setup
- Art-Net: a node never acknowledges DMX, so the module checks it with ArtPoll. With
nodeCheck: auto, a unicast node that answers isonlineand goestimeoutwhen it stops answering; a node that never answers staysonlinewith a note that its status is not checked. On macOS, broadcasts to 255.255.255.255 only go out on the primary interface; a directed broadcast (such as2.255.255.255) is more reliable. - sACN: receivers never answer, so the device is
onlinewith a note saying where it sends, andofflineonly when the network refuses to send. - USB DMX: find the port name with
ls /dev/tty.*on macOS or in Device Manager on Windows (/dev/ttyUSB0style on Linux). Some interfaces need the FTDI driver on macOS. An unplugged interface goesofflineand comes back when plugged in again. Open DMX interfaces depend on the computer's timing; use 30 Hz if a receiver flickers. When the interface is plugged into one cluster node, set the device'snode. - Edition: the number of DMX universes (distinct
universevalues) follows your edition: Lite allows 2. See Licensing.
Lighting consoles
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
malighting.grandma.console.ma2 | grandMA2 consoles, onPC and NPUs: named commands, Go / Go back / Pause / Off / Goto Cue on executors, fader levels, macros, with the console's answer | Telnet, TCP 30000 | host, user, password (secret), commands, mainExecutor, levelExecutor, templates, allowRaw |
malighting.grandma.console.ma3 | grandMA3 consoles, onPC and processing units: named commands, Go+ / Go- / Pause / Off / Goto Cue on sequences, executor faders and keys, macros | OSC (8000 in, 8001 feedback) | host, port, localPort, prefix (gma3), commands, mainSequence, levelFader, heartbeat, allowRaw |
etc.eos.console | ETC Eos family (Ti, Gio, Ion Xe, Element 2, Nomad, Eos software): Go and Stop/Back on cue lists, fire a cue, macros, channel intensity, submasters, named command lines, with the active and pending cue | OSC on TCP 3032 (length-prefixed or SLIP) or UDP | host, transport, framing, localPort, user, mainList, levelSub, commands, allowRaw |
chamsys.magicq.console | ChamSys MagicQ consoles and MagicQ PC/Mac: playback go, stop, pause, release, level and jump to cue; page, channel intensity, execute items, named remote commands | OSC (with playback feedback) or ChamSys Remote Ethernet Protocol (UDP 6553) | host, protocol, port, localPort, mainPlayback, levelPlayback, commands |
behringer.x32.console | Behringer X32 and Midas M32 mixers: faders, mutes, names and other parameters by strip or OSC address, scene recall, raw OSC. Console changes come back through /xremote | OSC, UDP 10023 | host, controls, levelControl, muteControl, scenes |
The grandMA, Eos and MagicQ modules only run the commands written in the settings and a few templates with checked parameters. Free text commands are refused unless allowRaw is on.
Setup notes:
- grandMA2: Setup > Console > Global Settings: enable Telnet "Login Enabled". Create a user for Tangle with the rights it needs, or use administrator.
- grandMA3: Menu > In & Out > OSC: add a line with Destination IP = the Tangle computer, Port =
localPort(8001), the console's receive port =port(8000), Prefix =prefix, and turn on Receive, Receive Command, Send and Send Command. Enable input and output. Withheartbeaton, a console that is off or not echoing shows astimeout, neveroffline(UDP cannot tell the difference).
Show control
| Id | What it does | Protocol | Notable settings |
|---|---|---|---|
misc.msc.control | Sends MIDI Show Control commands (GO, STOP, RESUME, LOAD, SET, FIRE, ALL_OFF...) to lighting consoles, sound and show controllers (ETC Eos, QLab, grandMA...), and reports the MSC commands it receives as device events | MIDI SysEx over a MIDI port or RTP-MIDI | transport (midi/rtpmidi), outputPort, inputPort, deviceId (127 = all-call), commandFormat, listenDeviceId |
Cue numbers, lists and paths are digits and dots (12.5). Received commands become msc.received device events. The midi-ports setup step lists the MIDI ports.
Displays
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
samsung.mdc.display | Samsung commercial displays and LED walls: power, input, volume, mute, panel on/off, backlight, temperature, errors | MDC, TCP 1515 or RS-232 | host, serialPort, displayId |
lg.signage.display | LG commercial and signage displays: power, input, volume, mute, screen off, backlight, temperature, screen fault | LG RS-232C command set, TCP 9761 or RS-232 | host, serialPort, setId |
sharp.nec.display | Sharp/NEC MultiSync large-format displays: power, input, volume, mute, screen mute, backlight, temperature, self-diagnosis | NEC external control, TCP 7142 or RS-232 | host, serialPort, monitorId |
philips.sicp.display | Philips professional displays: power, input, volume, backlight, temperature, operating hours | SICP, TCP 5000 or RS-232 | host, serialPort, monitorId |
sony.bravia.display | Sony BRAVIA Professional displays: power, input, volume, mute, picture mute | Simple IP Control, TCP 20060 (with notifications), or RS-232C on BZ models | host, protocol, serialPort |
More projectors: epson.escvp.projector (ESC/VP21 over ESC/VP.net TCP 3629 or RS-232), sony.adcp.projector (ADCP, TCP 53595 with or without the password challenge, or RS-232) and sharp.nec.projector (NEC binary commands, TCP 7142 or RS-232) give power with warm-up and cool-down, input, picture mute, freeze, light hours and errors. Like PJLink, their power actions report "warming up" until the projector is on, so an automation step can wait for it.
Video switchers, routers and AV over IP
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
extron.sis.switcher | Extron switchers, matrices and scalers: routes (follow or breakaway), presets, video mute, volume and audio mute; front-panel changes reported | SIS, Telnet TCP 23 or RS-232 | host, password (secret), inputs, outputs, inputNames, outputNames, mainOutput, presets |
kramer.p3000.switcher | Kramer switchers and matrices: routes per layer, presets, video mute, level and mute | Protocol 3000, TCP 5000 or RS-232 | host, machineNumber, user, password (secret), inputs, outputs, mainOutput, presets |
lightware.lw3.switcher | Lightware matrices and switchers: video and audio routes, video mute, analog output volume and mute, with subscriptions | LW3, TCP 6107 or RS-232 | host, inputs, outputs, mainOutput, dialect, audioPort |
blackmagic.videohub.switcher | Blackmagic Videohub routers: routes, prepared routes taken together, locks, labels | Videohub Ethernet Protocol, TCP 9990 | host, mainOutput |
aja.kumo.switcher | AJA KUMO SDI routers: routes, names, locks, salvos as presets | KUMO HTTP API, port 80 | host, password (secret), mainDestination |
blackmagic.atem.switcher | Blackmagic ATEM production switchers: program and preview per M/E, cut and auto, aux outputs, macros | ATEM UDP protocol, port 9910 | host, mixEffect |
analogway.livepremier.switcher | Analog Way LivePremier (Aquilon, Zenith, Ascender, Pulse): screen, aux and master memories, TAKE, layer and aux sources | REST API, HTTP | host, user, password (secret), screens, layers, mainScreen, memories |
barco.eventmaster.switcher | Barco Event Master (E2, S3, E3, EX, Encore 3): presets to preview or program, transitions, cues, layer and aux sources, freeze | JSON-RPC, HTTP port 9999 | host, operatorId, password (secret), mainDestination, mainLayer |
obs.obs.switcher | OBS Studio 28+: program and preview scenes, transitions, streaming, recording, audio mute, any obs-websocket request | obs-websocket 5, port 4455 | host, password (secret), audioInput |
vmix.vmix.switcher | vMix: transitions, preview and program inputs, overlays, streaming, recording, outputs, master volume, any shortcut function, with tally | TCP API 8099 or HTTP 8088 | host, protocol, user, password (secret) |
crestron.nvx.avoip | Crestron DM NVX endpoints: route a decoder to a stream, local inputs, start and stop streams, HDMI output mute, stream and sync status | On-device REST API, HTTPS | host, username, password (secret) |
atlona.omnistream.avoip | Atlona OmniStream encoders and decoders: route a decoder to an encoder stream, video and audio mute, link status, alarms | OmniStream JSON API over WebSocket | host, username, password (secret), output, sources |
justaddpower.jap.avoip | Just Add Power 2G, 3G, Omega, Ultra, MaxColor: receivers switch channel (unified or per video, audio, USB), mute or turn off video; transmitters turn their stream on and off | Telnet TCP 23 or RS-232 | host, role, channelMode, channels |
audinate.dante.routing | Dante subscriptions on any brand's Dante device: subscribe receive channels to channel@device, unsubscribe, subscription status | Dante control protocol (ARC, UDP 4440); found by name over mDNS | name, host, sources |
Setup notes:
- ATEM: the protocol was written after the open-source atem-connection library, not from Blackmagic documentation.
- Dante: uses the reverse-engineered control protocol documented by the netaudio project. Check it with your devices before relying on it in a show.
Cameras
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
misc.visca.camera | PTZ cameras over VISCA: Sony VISCA over IP, plain VISCA over TCP or UDP (PTZOptics, Lumens, Marshall, AVer, BirdDog) or RS-232. Power, pan/tilt, zoom, focus, presets | UDP 52381, TCP/UDP or RS-232 | transport, host, port, address, presets, streamUrl, snapshotUrl |
panasonic.aw.camera | Panasonic AW-UE and AW-HE PTZ cameras: power, pan/tilt, zoom, focus, presets, tally, head errors | HTTP CGI, port 80 | host, user, password (secret), presets, streamUrl, snapshotUrl |
The modules control the camera; the picture comes from the camera's own MJPEG, snapshot or HLS output, set in streamUrl or snapshotUrl for the dashboard Camera control. Panasonic preset numbers start at 1 in Tangle (preset 1 is the camera's code 00).
Conference rooms and presentation
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
cisco.roomos.codec | Cisco Room, Board and Desk devices: dial, hang up, answer, microphone mute, volume, standby, presentation, selfview, camera presets | xAPI over WebSocket | host, user, password (secret), presentationSource |
poly.g7500.codec | Poly G7500, Studio X30/X50/X52/X70/X72, G62: microphone and camera mute, volume, dial, hang up, reboot; sleep and wake | Poly REST API (HTTPS) and command line (telnet 24) | host, user, password (secret), dialType, callRate |
zoom.rooms.codec | Zoom Rooms: join, start, leave and end meetings, answer or decline calls, microphone and camera mute, volume, HDMI sharing | Zoom Rooms Control System API, SSH port 2244 | host, user, password (secret) |
barco.clickshare.presentation | Barco ClickShare base units: sharing status, buttons, screens, standby, health, wake, reboot | ClickShare REST API v2, HTTPS 4003 | host, user, password (secret) |
mersive.solstice.presentation | Mersive Solstice Pods: users, posts, sharing, end session, clear posts, bulletin and emergency messages, restart | OpenControl API v1, HTTP or HTTPS | host, password (secret) |
misc.calendar.scheduling | Room calendars in Microsoft 365 or Google Workspace: meeting in progress, next meeting, free/busy, with meeting.starting, meeting.started and meeting.ended events for automations | Microsoft Graph or Google Calendar | provider, room, tenantId, clientId, clientSecret (secret), serviceAccountKey (secret), leadMinutes |
Microphones and amplifiers
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
shure.mxa.microphone | Shure MXA ceiling and table arrays, P300, ANI: device mute and LED, channel gains and mutes, presets, identify, meters | Shure command strings, TCP 2202 | host, levelChannel, presetNames, meterRateMs |
shure.wireless.microphone | Shure ULX-D, QLX-D, SLX-D, Axient Digital: per-channel name, mute, gain, battery, RF; low battery as events | Shure command strings, TCP 2202 | host, family, channels, lowBatteryBars, lowBatteryMinutes |
sennheiser.ssc.microphone | Sennheiser EW-DX, SpeechLine, TeamConnect Ceiling: mute, gain or level, identify, names, battery, RF | SSCv2 (HTTPS with Server-Sent Events) or SSC v1 (UDP 45) | host, protocol, password (secret), channels |
crown.hiqnet.amplifier | Crown DCi, CDi DriveCore, XLC, XTi 2, I-Tech HD: power, mute, level and fault parameters you list | HiQnet, TCP 3804 | host, node, controls, powerControl, muteControl, levelControl |
powersoft.armonia.amplifier | Powersoft X and T series, Quattrocanali, Duecanali, Ottocanali: standby, channel gain and mute, presets, alarms | Powersoft UDP protocol, port 1234 | host, channelNames, presets |
Power
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
middleatlantic.racklink.power | Middle Atlantic RackLink PDUs: outlets on, off, cycle; sequencing; voltage, current, power, temperature; EPO and surge faults as degraded | RackLink protocol, TCP 60000 with login, or RS-232 | host, user, password (secret, required), powerOutlets |
wattbox.ovrc.power | SnapAV WattBox: outlets on, off, toggle, reset; voltage, current, power; UPS battery (degraded on battery) | WattBox Integration Protocol, Telnet 23 | host, user, password (secret), powerOutlets |
Building and network
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
misc.bacnet.building | BACnet/IP controllers: the analog, binary and multi-state points you list, followed with COV (or polled) and commanded at a priority; Who-Is discovery | BACnet/IP, UDP 47808 | host, deviceInstance, priority, points, powerPoint, levelPoint |
misc.knx.building | KNX through a KNXnet/IP interface or router: group addresses with their DPT read, written and followed | KNXnet/IP tunnelling (UDP 3671) or routing (224.0.23.12) | mode, host, points, powerPoint, levelPoint |
misc.modbus.building | Modbus TCP or RTU devices: coils, inputs and registers you list (bool, 16/32-bit, float32, word order, scale), polled and written | Modbus TCP 502, or RTU on a serial port or gateway | host, serialPort, unitId, points, powerPoint, levelPoint |
misc.snmp.network | Any SNMP v1/v2c agent: UPSes (UPS-MIB), PDUs, switches; reads OIDs into state, switches outlets, traps as events | SNMP, UDP 161 (traps on trapPort) | host, version, community (secret), values, outlets, ups |
misc.ping.network | Anything with an IP address: answers to ICMP ping or a TCP port, round-trip time, packet loss, last seen. Puts it on dashboards and under Sentinel alerts | ICMP or TCP | host, method, tcpPort, intervalMs, failures |
globalcache.itach.gateway | Global Caché iTach and Flex: IR codes to IR-only devices, relays, contact sensors; standard power, mute and input for IR-only TVs and players | iTach API, TCP 4998 | host, irPort, irCodes, relays, sensors, inputs |
For a Modbus device you use often, make a driver with named registers in the device creator instead of listing points on every device.
Generic devices
When no module exists for a device, use one of these and write its commands in the device settings, or make a driver in the device creator.
| Id | What it controls | Protocol | Notable settings |
|---|---|---|---|
misc.tcp.generic | Any device that takes text or binary commands over TCP | TCP | host, port, commands, feedback, bindings, poll |
misc.udp.generic | Any device that takes UDP datagrams. Set a poll command that gets an answer, so an absent device shows timeout | UDP | host, port, localPort, broadcast, commands, feedback, poll |
misc.serial.generic | Any RS-232, RS-422 or RS-485 device, on a local port or an IP-to-serial gateway | Serial | path, baudRate, parity, commands, feedback, bindings |
misc.http.generic | Any device with an HTTP or REST API: each command is a request, feedback rules read the answers | HTTP, HTTPS | baseUrl, username, password (secret), headers, commands, feedback |
commands are named, with placeholders for parameters; bindings map standard capabilities (power, mute, input, level, preset) to commands; feedback rules read answers into state.
Listeners and libraries
Two modules are not devices:
| Id | What it does |
|---|---|
tangle.builtin.listener | The built-in listeners: WebSocket, HTTP, TCP, UDP (text, hex, JSON, OSC) and serial, so other systems can trigger Tangle |
tangle.image.library | The image function library: resize, crop, rotate, adjust and combine images, read their colours |