Docs menu
Guides

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.

IdWhat it doesProtocolNotable settings
misc.ltc.timecodeReads or generates SMPTE LTC on a sound card channel. 24, 25, 29.97 drop-frame and 30 fps; input rate detected automaticallyAudio (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.timecodeReads (chases) or generates MIDI Time Code on a MIDI port of the computerOS MIDI (CoreMIDI, Windows MIDI, ALSA)mode, port (required, name or part of it), fps, dropoutMs
misc.rtpmidi.timecodeReads or generates MTC over the network with RTP-MIDI (AppleMIDI sessions). No driver neededUDP 5004/5005mode, session (initiator or listen), host, port, localPort, name
kissbox.midi.timecodeReads or generates MTC through a Kissbox MIDI interface in MIDI-over-UDP modeKissbox UDP (default 9813)mode, host (required), port, localPort
misc.artnet.timecodeReceives ArtTimeCode from a desk or media server, or generates itArt-Net UDP 6454direction, fps, host (output; empty for broadcast), timeoutMs, streamId
misc.ptp.timecodeListens to a PTPv2 (IEEE 1588) grandmaster and reports its identity, lock state and offset to this computer's clockUDP 319/320 multicastdomain, interface, lockThresholdUs, timeoutMs
misc.ntp.timecodeQueries an NTP server and reports clock offset, round-trip delay and stratumNTP UDP 123host (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-devices setup step lists the sound card inputs and outputs. If no sound card matches, the device is offline with the list of devices that exist.
  • MTC and MSC: plug in the MIDI interface first. The midi-ports setup 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 goes offline.
  • RTP-MIDI: as initiator, Tangle invites the peer at host:port; as listen, Tangle waits for invitations on localPort. Windows may ask to allow the UDP ports through the firewall on first use. Kissbox interfaces running RTP-MIDI firmware use misc.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_SERVICE on Linux); Windows usually allows them but may ask about the firewall. Without them the device shows error with that explanation. Accuracy is in the tens to hundreds of microseconds.
  • Status: a timecode input goes timeout when no timecode arrives for dropoutMs (default 1000) and back online when it returns. Art-Net timecode inputs stay online and set signal to false instead.
  • Edition: chasing or generating timecode, and PTP clock sync, require Tangle Pro or Ultimate. See Licensing.

Projectors

IdWhat it controlsProtocolNotable settings
misc.pjlink.projectorProjectors that speak PJLink (most Epson, NEC/Sharp, Panasonic, Sony, Canon, Hitachi, Optoma, ViewSonic): power, input, picture mute, lamp hours, errorsTCP 4352host, port, password (secret)
barco.pulse.projectorBarco Pulse platform (UDX, UDM, F70/F80/F90, G62, HDX 4K, Threshold...): power, source, shutter, laser power, lens zoom/focus/shift, laser runtime, alarmsPulse JSON-RPC, TCP 9090host, port
christie.native.projectorChristie Boxer, Griffyn, M, HS, Crimson and D/HD/WU series: power, input, shutter, lamp hours, alarmsChristie ASCII protocol, TCP 3002host, port
panasonic.native.projectorPanasonic PT-RZ, PT-RQ, PT-DZ, PT-MZ, PT-VMZ, PT-REQ/REZ and most networked models: power, input, shutter, freeze, light hours, errorsNTCONTROL, TCP 1024host, 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 host and port to 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.

IdWhat it controlsProtocolNotable settings
dataton.watchout.mediaserver.v6WATCHOUT 6 (and 5) production or display computer: main and auxiliary timelines, control cues, load show, standby, onlineWatchout TCP control (3040 production, 3039 display)host, mode (production/display), password (secret), timelines
dataton.watchout.mediaserver.v7WATCHOUT 7: play, pause, stop, jump to time or cue on any timelineHTTP API on the Director, port 3019host, mainTimeline
disguise.d3.mediaserverdisguise (d3 / Designer r17.4+): transports, cues, tracks, sections, machine healthdisguise HTTP API on the director, port 80host (the director), transport
christie.pandorasbox.mediaserverPandoras Box servers and Manager: sequence transport, cues, numeric device parametersPB automation TCP, port 6211host, domain, sequence, fps
ioversal.vertex.mediaserverVertex: playbacks, cues, fade to cue, go to time, any Vertex script line; timecode and cue feedbackExternal control TCP, port 50009host, playback, feedback, frameRate
hive.player.mediaserverHive players (Beeblade family): playlists, clips, seek, output brightnessHTTP, port 80, base path /api/v1host, basePath, username, password (secret)
brightsign.player.mediaserverBrightSign players running the Tangle player script: play files or the playlist from the SD card, seek, volumeText commands over TCP/UDP, port 5000host, port, playlist, loop, autoplay, volume, networkMode
modulopi.kinetic.mediaserverModulo Kinetic: timeline transport and selection, tasks, any JSON-RPC methodJSON-RPC over WebSocket, port 8080host, port, path, timeline
resolume.arena.mediaserverResolume Arena and Avenue 7+: clips, columns, clear, composition master, layer opacity and bypass, BPM, tap, resyncREST (8080) and OSC (7000)host, port, oscPort, trigger (osc/rest)
vyv.photon.mediaserverVYV Photon (and Xenon): timeline play, pause, stop, seek, speed, free-run, LTC chase, cues, system commandsExternal TCP control, port 55503host, frameRate, playSpeed
avstumpfl.pixera.mediaserverPIXERA: play, pause, stop, locate, cues on any timeline. Reports every timeline's time as a named playhead (tangle.playhead)JSON-RPC over TCP, port 1400host, mainTimeline
greenhippo.hippotizer.mediaserverGreen Hippo Hippotizer V4: media and presets on layers, mix presets and levels with fades, timelines and cues, any pin, OSC to MulticontrollerREST API component, port 40512; optional OSChost, 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: load is 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 fps setting.
  • 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-card configurator: it builds autorun.brs (the script) and tangle-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. With networkMode: static, the script sets the address at boot; use it as host. 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; positionMs is the last position sought to.
  • Pixera: in Settings > API, enable the TCP API with the JSON/TCP protocol, port 1400.

Game engines

IdWhat it controlsProtocolSetup
epic.unreal.engineUnreal Engine 5 (and 4.26+), editor or packaged game: call Blueprint functions, set and watch properties, Remote Control presetsRemote Control API: HTTP 30010, WebSocket 30020No Tangle plugin. Enable Epic's Remote Control API plugin. Configurator remote-control
misc.godot.engineGodot 4 games and apps: fire named triggers, set named properties, receive game eventsTangle engine protocol, TCP 9420Tangle Godot addon in the game. Configurator plugin
unity.unity.engineUnity games and real-time apps: fire named triggers, set named properties, receive game eventsTangle engine protocol, TCP 9420Tangle 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

IdWhat it controlsProtocolNotable settings
videolan.vlc.playerVLC 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 consolehost, protocol (http/rc), port, password (secret), mediaFolder, previewPort, fps
blackmagic.hyperdeck.playerBlackmagic HyperDeck recorders: play (speed, loop, single clip), pause, stop, record named clips, clip and timecode locate, slot select; transport, timecode, clips and slotsHyperDeck Ethernet Protocol, TCP 9993host, port
qsc.core.playerAudio Player components in a Q-SYS design: play, pause, stop, file selection, loop, status and position. One device can drive several playersQRC, TCP 1710host, user, pin (secret), players (required), mainPlayer, controlNames
cockos.reaper.playerReaper as a playback or recording machine: transport, record, loop, markers and regions as cues, master volumeOSC (8000 in, 9000 feedback), optional web remotehost, 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. seek is 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 is oscPort (8000); tick "Allow binding messages". Adding the Web browser interface (port 8080, set webPort: 8080) is recommended: the module then sees a Reaper that quit as offline and lists markers and regions as cues. Reaper actions run only if their ids are listed in allowedActions.

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.

IdWhat it controlsProtocolNotable settings
misc.wol.computerWakes computers with a Wake-on-LAN magic packet; optional check that the computer is upUDP magic packet (port 9)mac (required), broadcast, password (SecureOn, secret), checkHost, checkPort
misc.ssh.computermacOS, Linux and Windows (OpenSSH) computers: shut down, restart, sleep, hibernate, start and stop apps, named commands; uptime and loadSSHhost, username, os, password / privateKey / passphrase (secrets), keyFile, hostKeyCheck, sudo, commands, apps
microsoft.powershell.computerWindows PCs over PowerShell Remoting: shut down, restart, sleep, hibernate, apps, named PowerShell commands; uptime, CPU, Windows versionWinRM, 5985 (5986 with HTTPS)host, username, password (secret), https, auth (ntlm, kerberos, basic), certValidation, commands, apps
microsoft.psexec.computerWindows PCs through Sysinternals PsExec: same functions as the PowerShell module, without remoting setupSMB (445) and the ADMIN$ sharehost, 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. Without checkHost the module cannot tell whether the computer is up. An asleep computer shows as degraded (not offline) 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 set hostKey. Requires Python 3.11+ and installs asyncssh in the module's environment.
  • PowerShell Remoting: run the enable-remoting configurator. It generates a script for that PC (enable remoting, firewall rules, LocalAccountTokenFilterPolicy for local administrator accounts, Basic authentication when auth: basic, and a self-signed HTTPS listener when https: true). Run it in Windows PowerShell as administrator on the PC. The account must be an administrator. Over plain HTTP use ntlm; use basic with https only. Requires Python 3.11+ and installs pywinrm; for Kerberos (domain PCs) install pywinrm[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 with node (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 leave username empty to use the core's own Windows account.
  • tangle.power on fails on the SSH, PowerShell and PsExec modules with a hint to use misc.wol.computer.

I/O

IdWhat it controlsProtocolNotable settings
advantech.adam.ioAdvantech 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 outModbus TCP 502host, unitId, model, map, aiRange, aoRange, registers, allowRawWrites
kissbox.io.ioKissbox I/O units, card by card: digital inputs with change events, relay and digital outputs, analog in and outKissbox UDP (9812)host, cards (required, { slot, type } with di8, do8, ai8, ao8)

Setup notes:

  • Digital input changes send an input.changed device event for automations.
  • ADAM: set aiRange and aoRange to the ranges configured in Advantech's utility (default 0 to 10 V). Raw Modbus writes are refused unless allowRawWrites is 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

IdWhat it controlsProtocolNotable settings
qsc.core.dspQ-SYS Cores (and Designer emulation): the gains, mutes, selectors and triggers you list, snapshots, engine status. Changes made elsewhere are pushed backQRC, TCP 1710host, user, pin (secret), controls, levelControl, muteControl, snapshots
biamp.tesira.dspBiamp 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 subscriptionsTesira Text Protocol, Telnet TCP 23 or RS-232host, serialPort, user, password (secret), controls, levelControl, muteControl, presets
symetrix.composer.dspSymetrix Prism, Edge, Radius NX and Jupiter: faders, mutes and other controls by controller number, presets, raw commandsComposer protocol, TCP or UDP 48631, or RS-232host, transport, serialPort, controls, levelControl, muteControl, presets
yamaha.rcp.dspYamaha 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 statusYamaha remote control protocol, TCP 49280 (RS-232C on MTX/MRX)host, serialPort, controls, levelControl, muteControl, sceneCategory, presets
allenheath.ahm.dspAllen & 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 MIDITCP MIDI, port 51325host, 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.

IdWhat it doesProtocolNotable settings
misc.dmx.lightingLighting devices (dimmers, LED pars, moving heads) described by lighting device profiles and patched to a universe and address. Also a recorderDMX enginerole (light/recorder), universe, address, profile, mode, recordSource, refreshHz
misc.artnet.lightingSends a universe to an Art-Net node, or receives one from a lighting desk. Finds nodes with ArtPollArt-Net UDP 6454direction, universe, host (empty for broadcast), net/subnet/artnetUniverse, refreshHz (40), sync, nodeCheck, merge
misc.sacn.lightingSends a universe as sACN (multicast or unicast), or receives one from desks, highest priority firstsACN (E1.31) UDP 5568direction, universe, sacnUniverse, host (empty for multicast), priority, sourceName, syncUniverse, merge
misc.usbdmx.lightingSends a universe through a USB interface: Enttec DMX USB Pro and compatibles, or FTDI-based Open DMX style interfacesUSB serialport (required), interface (enttec-pro/open-dmx), universe, refreshHz, breakUs, mabUs
misc.dali.lightingDALI 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 degradedGateway REST and WebSocket, port 80gateway, host, lights, mainLight, scenes
lutron.integration.lightingLutron RadioRA 2/3, HomeWorks QS/QSX, Quantum and Athena: zones (dimmers, switches, shades) set and followed, keypad buttons as events, phantom buttons for scenesLutron Integration Protocol, Telnet TCP 23 with login, or RS-232host, user, password (secret), zones, mainZone, keypads, scenes
pharos.designer.lightingPharos 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 temperaturesController HTTP APIhost, 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:

ProfileModes
generic-dimmer8-bit (1 ch), 16-bit (2 ch)
generic-rgbRGB (3 ch), Dimmer RGB (4 ch)
generic-rgbwRGBW (4 ch), Dimmer RGBW (5 ch)
generic-moving-headBasic (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 address to address + channels - 1 of its universe. A device that overlaps another gets status error naming 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.level scales the colour.
  • A light is online once 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: output records what Tangle sends; recordSource: input records 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 is online and goes timeout when it stops answering; a node that never answers stays online with 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 as 2.255.255.255) is more reliable.
  • sACN: receivers never answer, so the device is online with a note saying where it sends, and offline only 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/ttyUSB0 style on Linux). Some interfaces need the FTDI driver on macOS. An unplugged interface goes offline and 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's node.
  • Edition: the number of DMX universes (distinct universe values) follows your edition: Lite allows 2. See Licensing.

Lighting consoles

IdWhat it controlsProtocolNotable settings
malighting.grandma.console.ma2grandMA2 consoles, onPC and NPUs: named commands, Go / Go back / Pause / Off / Goto Cue on executors, fader levels, macros, with the console's answerTelnet, TCP 30000host, user, password (secret), commands, mainExecutor, levelExecutor, templates, allowRaw
malighting.grandma.console.ma3grandMA3 consoles, onPC and processing units: named commands, Go+ / Go- / Pause / Off / Goto Cue on sequences, executor faders and keys, macrosOSC (8000 in, 8001 feedback)host, port, localPort, prefix (gma3), commands, mainSequence, levelFader, heartbeat, allowRaw
etc.eos.consoleETC 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 cueOSC on TCP 3032 (length-prefixed or SLIP) or UDPhost, transport, framing, localPort, user, mainList, levelSub, commands, allowRaw
chamsys.magicq.consoleChamSys MagicQ consoles and MagicQ PC/Mac: playback go, stop, pause, release, level and jump to cue; page, channel intensity, execute items, named remote commandsOSC (with playback feedback) or ChamSys Remote Ethernet Protocol (UDP 6553)host, protocol, port, localPort, mainPlayback, levelPlayback, commands
behringer.x32.consoleBehringer 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 /xremoteOSC, UDP 10023host, 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. With heartbeat on, a console that is off or not echoing shows as timeout, never offline (UDP cannot tell the difference).

Show control

IdWhat it doesProtocolNotable settings
misc.msc.controlSends 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 eventsMIDI SysEx over a MIDI port or RTP-MIDItransport (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

IdWhat it controlsProtocolNotable settings
samsung.mdc.displaySamsung commercial displays and LED walls: power, input, volume, mute, panel on/off, backlight, temperature, errorsMDC, TCP 1515 or RS-232host, serialPort, displayId
lg.signage.displayLG commercial and signage displays: power, input, volume, mute, screen off, backlight, temperature, screen faultLG RS-232C command set, TCP 9761 or RS-232host, serialPort, setId
sharp.nec.displaySharp/NEC MultiSync large-format displays: power, input, volume, mute, screen mute, backlight, temperature, self-diagnosisNEC external control, TCP 7142 or RS-232host, serialPort, monitorId
philips.sicp.displayPhilips professional displays: power, input, volume, backlight, temperature, operating hoursSICP, TCP 5000 or RS-232host, serialPort, monitorId
sony.bravia.displaySony BRAVIA Professional displays: power, input, volume, mute, picture muteSimple IP Control, TCP 20060 (with notifications), or RS-232C on BZ modelshost, 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

IdWhat it controlsProtocolNotable settings
extron.sis.switcherExtron switchers, matrices and scalers: routes (follow or breakaway), presets, video mute, volume and audio mute; front-panel changes reportedSIS, Telnet TCP 23 or RS-232host, password (secret), inputs, outputs, inputNames, outputNames, mainOutput, presets
kramer.p3000.switcherKramer switchers and matrices: routes per layer, presets, video mute, level and muteProtocol 3000, TCP 5000 or RS-232host, machineNumber, user, password (secret), inputs, outputs, mainOutput, presets
lightware.lw3.switcherLightware matrices and switchers: video and audio routes, video mute, analog output volume and mute, with subscriptionsLW3, TCP 6107 or RS-232host, inputs, outputs, mainOutput, dialect, audioPort
blackmagic.videohub.switcherBlackmagic Videohub routers: routes, prepared routes taken together, locks, labelsVideohub Ethernet Protocol, TCP 9990host, mainOutput
aja.kumo.switcherAJA KUMO SDI routers: routes, names, locks, salvos as presetsKUMO HTTP API, port 80host, password (secret), mainDestination
blackmagic.atem.switcherBlackmagic ATEM production switchers: program and preview per M/E, cut and auto, aux outputs, macrosATEM UDP protocol, port 9910host, mixEffect
analogway.livepremier.switcherAnalog Way LivePremier (Aquilon, Zenith, Ascender, Pulse): screen, aux and master memories, TAKE, layer and aux sourcesREST API, HTTPhost, user, password (secret), screens, layers, mainScreen, memories
barco.eventmaster.switcherBarco Event Master (E2, S3, E3, EX, Encore 3): presets to preview or program, transitions, cues, layer and aux sources, freezeJSON-RPC, HTTP port 9999host, operatorId, password (secret), mainDestination, mainLayer
obs.obs.switcherOBS Studio 28+: program and preview scenes, transitions, streaming, recording, audio mute, any obs-websocket requestobs-websocket 5, port 4455host, password (secret), audioInput
vmix.vmix.switchervMix: transitions, preview and program inputs, overlays, streaming, recording, outputs, master volume, any shortcut function, with tallyTCP API 8099 or HTTP 8088host, protocol, user, password (secret)
crestron.nvx.avoipCrestron DM NVX endpoints: route a decoder to a stream, local inputs, start and stop streams, HDMI output mute, stream and sync statusOn-device REST API, HTTPShost, username, password (secret)
atlona.omnistream.avoipAtlona OmniStream encoders and decoders: route a decoder to an encoder stream, video and audio mute, link status, alarmsOmniStream JSON API over WebSockethost, username, password (secret), output, sources
justaddpower.jap.avoipJust 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 offTelnet TCP 23 or RS-232host, role, channelMode, channels
audinate.dante.routingDante subscriptions on any brand's Dante device: subscribe receive channels to channel@device, unsubscribe, subscription statusDante control protocol (ARC, UDP 4440); found by name over mDNSname, 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

IdWhat it controlsProtocolNotable settings
misc.visca.cameraPTZ 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, presetsUDP 52381, TCP/UDP or RS-232transport, host, port, address, presets, streamUrl, snapshotUrl
panasonic.aw.cameraPanasonic AW-UE and AW-HE PTZ cameras: power, pan/tilt, zoom, focus, presets, tally, head errorsHTTP CGI, port 80host, 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

IdWhat it controlsProtocolNotable settings
cisco.roomos.codecCisco Room, Board and Desk devices: dial, hang up, answer, microphone mute, volume, standby, presentation, selfview, camera presetsxAPI over WebSockethost, user, password (secret), presentationSource
poly.g7500.codecPoly G7500, Studio X30/X50/X52/X70/X72, G62: microphone and camera mute, volume, dial, hang up, reboot; sleep and wakePoly REST API (HTTPS) and command line (telnet 24)host, user, password (secret), dialType, callRate
zoom.rooms.codecZoom Rooms: join, start, leave and end meetings, answer or decline calls, microphone and camera mute, volume, HDMI sharingZoom Rooms Control System API, SSH port 2244host, user, password (secret)
barco.clickshare.presentationBarco ClickShare base units: sharing status, buttons, screens, standby, health, wake, rebootClickShare REST API v2, HTTPS 4003host, user, password (secret)
mersive.solstice.presentationMersive Solstice Pods: users, posts, sharing, end session, clear posts, bulletin and emergency messages, restartOpenControl API v1, HTTP or HTTPShost, password (secret)
misc.calendar.schedulingRoom calendars in Microsoft 365 or Google Workspace: meeting in progress, next meeting, free/busy, with meeting.starting, meeting.started and meeting.ended events for automationsMicrosoft Graph or Google Calendarprovider, room, tenantId, clientId, clientSecret (secret), serviceAccountKey (secret), leadMinutes

Microphones and amplifiers

IdWhat it controlsProtocolNotable settings
shure.mxa.microphoneShure MXA ceiling and table arrays, P300, ANI: device mute and LED, channel gains and mutes, presets, identify, metersShure command strings, TCP 2202host, levelChannel, presetNames, meterRateMs
shure.wireless.microphoneShure ULX-D, QLX-D, SLX-D, Axient Digital: per-channel name, mute, gain, battery, RF; low battery as eventsShure command strings, TCP 2202host, family, channels, lowBatteryBars, lowBatteryMinutes
sennheiser.ssc.microphoneSennheiser EW-DX, SpeechLine, TeamConnect Ceiling: mute, gain or level, identify, names, battery, RFSSCv2 (HTTPS with Server-Sent Events) or SSC v1 (UDP 45)host, protocol, password (secret), channels
crown.hiqnet.amplifierCrown DCi, CDi DriveCore, XLC, XTi 2, I-Tech HD: power, mute, level and fault parameters you listHiQnet, TCP 3804host, node, controls, powerControl, muteControl, levelControl
powersoft.armonia.amplifierPowersoft X and T series, Quattrocanali, Duecanali, Ottocanali: standby, channel gain and mute, presets, alarmsPowersoft UDP protocol, port 1234host, channelNames, presets

Power

IdWhat it controlsProtocolNotable settings
middleatlantic.racklink.powerMiddle Atlantic RackLink PDUs: outlets on, off, cycle; sequencing; voltage, current, power, temperature; EPO and surge faults as degradedRackLink protocol, TCP 60000 with login, or RS-232host, user, password (secret, required), powerOutlets
wattbox.ovrc.powerSnapAV WattBox: outlets on, off, toggle, reset; voltage, current, power; UPS battery (degraded on battery)WattBox Integration Protocol, Telnet 23host, user, password (secret), powerOutlets

Building and network

IdWhat it controlsProtocolNotable settings
misc.bacnet.buildingBACnet/IP controllers: the analog, binary and multi-state points you list, followed with COV (or polled) and commanded at a priority; Who-Is discoveryBACnet/IP, UDP 47808host, deviceInstance, priority, points, powerPoint, levelPoint
misc.knx.buildingKNX through a KNXnet/IP interface or router: group addresses with their DPT read, written and followedKNXnet/IP tunnelling (UDP 3671) or routing (224.0.23.12)mode, host, points, powerPoint, levelPoint
misc.modbus.buildingModbus TCP or RTU devices: coils, inputs and registers you list (bool, 16/32-bit, float32, word order, scale), polled and writtenModbus TCP 502, or RTU on a serial port or gatewayhost, serialPort, unitId, points, powerPoint, levelPoint
misc.snmp.networkAny SNMP v1/v2c agent: UPSes (UPS-MIB), PDUs, switches; reads OIDs into state, switches outlets, traps as eventsSNMP, UDP 161 (traps on trapPort)host, version, community (secret), values, outlets, ups
misc.ping.networkAnything 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 alertsICMP or TCPhost, method, tcpPort, intervalMs, failures
globalcache.itach.gatewayGlobal Caché iTach and Flex: IR codes to IR-only devices, relays, contact sensors; standard power, mute and input for IR-only TVs and playersiTach API, TCP 4998host, 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.

IdWhat it controlsProtocolNotable settings
misc.tcp.genericAny device that takes text or binary commands over TCPTCPhost, port, commands, feedback, bindings, poll
misc.udp.genericAny device that takes UDP datagrams. Set a poll command that gets an answer, so an absent device shows timeoutUDPhost, port, localPort, broadcast, commands, feedback, poll
misc.serial.genericAny RS-232, RS-422 or RS-485 device, on a local port or an IP-to-serial gatewaySerialpath, baudRate, parity, commands, feedback, bindings
misc.http.genericAny device with an HTTP or REST API: each command is a request, feedback rules read the answersHTTP, HTTPSbaseUrl, 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:

IdWhat it does
tangle.builtin.listenerThe built-in listeners: WebSocket, HTTP, TCP, UDP (text, hex, JSON, OSC) and serial, so other systems can trigger Tangle
tangle.image.libraryThe image function library: resize, crop, rotate, adjust and combine images, read their colours