OSC Integration

Send and receive Open Sound Control messages to automate lighting desks, media servers, sound consoles, and more — triggered by spoken words.

How It Works

ProdCom listens to live audio on one or more channels, transcribes speech in real time, and matches keywords you define. When a keyword fires, ProdCom sends OSC messages to your configured destinations — no external scripting required.

  1. Add a destination — Settings → OSC → Add Destination (host, port, UDP or TCP).
  2. Create an automation — Settings → Automations → New Automation.
  3. Choose a trigger — keyword match, inbound OSC message, or MIDI event.
  4. Add an OSC Send action — set the address pattern, arguments, and target destination.
  5. Go live — start your channels and ProdCom handles the rest.

OSC Address Patterns

An OSC address is a forward-slash-delimited path, similar to a URL. ProdCom supports the full OSC 1.1 pattern matching spec for inbound triggers:

Pattern Matches
/cue/go Exact address
/cue/* Any direct child of /cue/
/cue/*/fire Wildcard segment in the middle
/cue/{go,stop} Matches /cue/go or /cue/stop
/cue/[1-5] Character range — matches /cue/1 through /cue/5
/msg/{channel}/{text} Named capture — captures channel and text for use in actions

Named Captures

When using an OSC trigger, wrap a path segment in curly braces to capture its value at runtime. Captured values can then be used as template variables in any downstream action.

Trigger Pattern Incoming Address Captures
/msg/{channel}/{text} /msg/Stage Left/standby {channel} → "Stage Left", {text} → "standby"
/fader/{id}/level /fader/7/level {id} → "7"
/cue/{list}/{cue}/fire /cue/main/42/fire {list} → "main", {cue} → "42"

Captures are also available by position: {1} is the first capture, {2} the second, and so on.

Note: Curly braces with a comma inside — like {go,stop} — are standard OSC alternation, not captures. Only single-word braces like {name} create captures.

Template Variables

Action fields that accept text — such as OSC send addresses, string arguments, and "send text to channel" messages — support template variables. Wrap a variable name in curly braces and ProdCom replaces it with the live value when the automation fires.

Variable Trigger Description
{value} Keyword / OSC Matched transcript text, or first OSC argument
{source.channel} Keyword Name of the channel that produced the match
{address} OSC Full incoming OSC address
{arg1}, {arg2}, … OSC Nth argument from the incoming message
{1}, {2}, … OSC Nth captured segment from a named-capture trigger
{channel_name}, etc. OSC Named capture — matches the {name} in the trigger pattern
{note} MIDI MIDI note number
{velocity} MIDI MIDI note velocity
{raw} All Full raw description of the triggering event

Example: An OSC trigger /msg/{channel}/{text} paired with an OSC send action using address /reply/{channel}/ack and string argument {text} — when /msg/FOH/standby arrives, ProdCom sends /reply/FOH/ack with argument "standby".

Dynamic Channel Targeting

The "Send Text to Channel" action supports a Dynamic target option. Instead of picking a fixed channel, enter a template variable — ProdCom resolves it at runtime and routes the text to the matching channel.

Resolution order:

  1. By name — exact match against channel display names (case-insensitive).
  2. By index — if the resolved value is a number, it targets the channel at that position (1-based).

Example: Trigger pattern /msg/{channel_name}/{text} with a "Send Text to Channel" action targeting {channel_name} and message {text}. When /msg/Stage Left/standby for cue 5 arrives, ProdCom sends "standby for cue 5" to the channel named "Stage Left".

If neither a name nor an index matches, the action is skipped and logged to the Activity Log.

Argument Types

ProdCom supports the standard OSC 1.0/1.1 argument types:

Type Tag Name Example
i Int32 42
f Float32 0.75
s String "hello"
b Blob (binary) Raw bytes
T / F Bool True / False
N Null
I Impulse (bang)

Transport Options

UDP

The default for most OSC workflows. Fire-and-forget, lowest latency. Use for lighting desks (ETC Eos, grandMA3), media servers (Resolume, Disguise), and most sound consoles.

TCP

Reliable, ordered delivery with automatic reconnect. Required by QLab and recommended when packet loss is unacceptable. ProdCom uses SLIP framing (OSC 1.1) and reconnects automatically with exponential backoff if the connection drops.

Receiving OSC

ProdCom can also listen for inbound OSC messages and use them as automation triggers. Enable the OSC server in Settings → OSC, choose a port, and select UDP, TCP, or both.

Use cases:

  • A lighting console sends /cue/go — ProdCom selects a channel or clears a transcript.
  • A stage manager's tablet sends /standby/1 — ProdCom starts listening on channel 1.
  • QLab fires an OSC cue — ProdCom sends a MIDI note to a downstream device.

Built-in Commands

When the OSC server is enabled, ProdCom automatically responds to messages under the /prodcom/ address prefix — no automations required. This follows the same zero-configuration pattern used by QLab, ETC Eos, grandMA3, and other professional tools.

Channel Commands

Control individual channels by 1-based index or slug (lowercase name, spaces replaced with hyphens).

AddressArgumentsDescription
/prodcom/channel/nextSelect the next channel
/prodcom/channel/previousSelect the previous channel
/prodcom/channel/countReply with channel count
/prodcom/channel/listReply with index, slug, and name for each channel
/prodcom/channel/{ch}/selectSelect a specific channel
/prodcom/channel/{ch}/sends textSend text to a channel's transcript
/prodcom/channel/{ch}/clearClear a channel's transcript
/prodcom/channel/{ch}/markMark a channel's transcript as read
/prodcom/channel/{ch}/nameReply with the channel's slug and display name
/prodcom/channel/all/clearClear all transcripts
/prodcom/channel/all/markMark all transcripts as read
/prodcom/channel/selected/sends textSend text to the selected channel
/prodcom/channel/selected/clearClear the selected channel's transcript
/prodcom/channel/selected/markMark the selected channel as read

{ch} is a 1-based index (e.g. 1) or a slug (e.g. stage-left).

Scroll Commands

AddressDescription
/prodcom/scroll/upScroll the transcript up
/prodcom/scroll/downScroll the transcript down
/prodcom/scroll/currentScroll to the current position

Window & Flash

AddressArgumentsDescription
/prodcom/window/showShow the main window
/prodcom/window/hideHide the main window
/prodcom/flashs text, f duration (opt), i repeats (opt)Flash text on screen

Font Commands

AddressDescription
/prodcom/font/increaseIncrease transcript font size
/prodcom/font/decreaseDecrease transcript font size

Automation Commands

Trigger automations by name or slug, and query the list of configured automations.

AddressArgumentsDescription
/prodcom/automation/triggers nameTrigger an automation by display name
/prodcom/automation/{slug}/triggerTrigger an automation by slug
/prodcom/automation/countReply with automation count
/prodcom/automation/listReply with index, slug, and name for each automation
/prodcom/automation/{slug}/nameReply with the automation's display name

Query & Discovery

AddressDescription
/prodcom/pingReplies with /prodcom/pong
/prodcom/versionReplies with /prodcom/version/reply containing the app version

Built-in commands execute first; any automation triggers on the same incoming message still fire independently — both run without conflict.

Common Device Examples

ETC Eos Family

Fire a cue: /eos/cue/1/fire
Set channel intensity: /eos/chan/1/param/intens with a Float32 argument (0.0–1.0).

Default port: 8000 UDP. Enable OSC RX/TX in Eos Shell → Settings → Show Control → OSC.

QLab

Go on current cue: /go
Go on specific cue: /cue/42/start
Stop all: /stop

Default port: 53000 TCP. Enable OSC in QLab → Settings → Network → OSC Access.

grandMA3

Execute command: /cmd with a String argument (e.g. "Go+ Executor 1").
Page change: /Page with an Int32 argument.

Default port: 8000 UDP. Enable in grandMA3 → Menu → In & Out → Protocols → OSC.

Resolume Arena / Avenue

Trigger clip: /composition/layers/1/clips/1/connect with Int32 1.
Master opacity: /composition/master/video/opacity with Float32 (0.0–1.0).

Default port: 7000 UDP. OSC is enabled by default in Resolume preferences.

Disguise (d3)

Play section: /d3/showcontrol/cue with a String cue name.
Next section: /d3/showcontrol/next

Default port: 8000 UDP. Enable in Disguise → Show Control Settings.

Activity Log

Monitor all OSC and MIDI traffic in real time with the built-in Activity Log. Open it from the Window menu or press L.

The log shows:

  • Inbound messages — OSC and MIDI events received by ProdCom.
  • Outbound messages — OSC and MIDI messages sent by automation actions.
  • Automation events — which automations fired, what they resolved, and any actions that were skipped (e.g. a dynamic channel target that didn't match).
  • Connection events — TCP connect/disconnect, errors, and reconnection attempts.

Troubleshooting

Messages aren't reaching the destination

Check the Activity Log for send errors. Verify the destination host, port, and transport match the target device. For UDP, ensure no firewall is blocking the port. For TCP, confirm the device is listening and check the connection status indicator in Settings → OSC.

ProdCom isn't receiving OSC

Confirm the OSC server is enabled in Settings → OSC. Verify the port isn't in use by another application. Check that your sending device targets the correct IP and port.

TCP connection keeps dropping

ProdCom reconnects automatically with exponential backoff (1s → 30s cap). If drops are frequent, check network stability and ensure only one client is connecting to the target port. The health indicator in Settings → OSC shows current connection state.

Need Help?

We're happy to help you wire up your production workflow.