Bitfocus Companion module for Disguise LiveUpdate API.
This module provides real-time integration with Disguise Designer through the WebSocket-based LiveUpdate API. It allows you to:
- Monitor Designer properties in real-time using feedbacks that create dynamic variables
- Set property values remotely (strings, numbers, booleans, and complex JSON objects)
- Use Companion's expression system for visual feedback based on property values
- Automatically handle connection recovery and subscription healing
- Feedback-Based Subscriptions: Add "LiveUpdate Variable" feedbacks to buttons to create live-updating module variables
- Self-Healing: Automatic reconnection and subscription recovery after errors or connection loss
- Auto-Update Detection: Subscriptions automatically update when you change feedback options
- Type-Safe Actions: Separate actions for String, Number, Boolean, and JSON property types
- No Manual Management: No subscription IDs or manual refresh needed - everything happens automatically
- Disguise Designer (all versions with LiveUpdate API support)
- Director IP Address: The IP address of the Disguise Designer Director machine (default: 127.0.0.1)
- Port: The port number for the LiveUpdate API (default: 80)
- Reconnect Interval: Time to wait before reconnecting after connection loss (default: 5000ms)
- Pending Subscription Timeout: Maximum time to wait for subscription confirmation (default: 30000ms)
- Add "LiveUpdate Variable" feedback to a button
- Configure:
- Variable Name:
fps - Object Path:
subsystem:MonitoringManager.findLocalMonitor("fps") - Property Path:
object.seriesAverage("Actual", 1)
- Variable Name:
- Use
$(liveupdate:fps)anywhere in Companion
- Add "Set to Disguise (Number)" action to a button
- Configure:
- Value:
10.5 - Object Path:
screen2:surface_1 - Property Path:
object.offset.x
- Value:
Creates a live-updating variable that tracks a Designer property in real-time.
Options:
- Variable Name
- Object Path (Designer expression)
- Property Path (Python expression)
- Update Frequency (ms)
Visual indicator showing connection status to Disguise Designer.
Set text properties (e.g., object.description)
Set numeric properties (e.g., object.offset.x)
Set boolean properties (e.g., object.enabled)
Set complex properties (e.g., object.offset as {"x": 1, "y": 2, "z": 0})
Current connection status (Connected / Disconnected)
Variables are automatically created for each active subscription using the variable name you specify in the feedback.
Example: Variable name fps creates $(liveupdate:fps)
Companion's expression variables work with module variables for powerful visual feedback:
// Button background based on FPS
$(liveupdate:fps) < 30 ? rgb(200,0,0) : rgb(0,150,0)
// Formatted text
FPS: ${toFixed($(liveupdate:fps), 1)}
// Timecode display
${secondsToTimestamp($(liveupdate:playhead))}yarn installyarn buildyarn watchyarn lintThis module uses Companion's feedback lifecycle to manage LiveUpdate subscriptions:
- subscribe: Creates LiveUpdate subscription when feedback is added
- unsubscribe: Removes subscription when feedback is removed
- callback: Monitors for option changes and handles self-healing
Module variables are dynamically created and updated as subscriptions receive data from Disguise.
For detailed information about the Disguise Designer LiveUpdate API:
MIT
For questions about Disguise Designer integration:
For general Disguise support:
- [email protected]
- help.disguise.one