Skip to main content

OSC Control

The FrenschPress accepts incoming OSC commands on the OSC port set in the settings.

ParameterValue
Namespace/fpress
ProtocolOSC over UDP
Port53001 (default)
TargetIP address of the device
Note

The port can be changed in the Settings or directly on the Stream Deck. It is shared with the internal QLab feedback listener.

Command overview

CommandArgumentsSaved
/fpress/mode1, 2, 3Yes
/fpress/setA, B, C + optional maskYes
/fpress/presetpreset ID (string)Yes
/fpress/buttonbutton + optional actionNo
/fpress/macromacro name or ID + optional actionNo
/fpress/timeline/armtimeline selectorYes
/fpress/timeline/disarmtimeline selectorYes
/fpress/timeline/arm_allYes
/fpress/timeline/disarm_allYes
/fpress/ledr g b or target r g bNo
/fpress/led/release– or targetNo
/fpress/streamdeck/buttonrow col [action]No
/fpress/streamdeck/feedbackbutton stateNo
/fpress/streamdeck/feedback/allstateNo
/fpress/streamdeck/feedback/clearNo
/fpress/query– or a group nameNo

/fpress/mode

Switches the device mode.

ValueMode
1 / "qlab"QLab mode
2 / "macro" / "custom"Macro mode
3 / "companion"Companion mode
/fpress/mode 1
/fpress/mode 2
/fpress/mode 3

/fpress/set

Switches the active macro button set. Works only in Macro mode.

First argument — target set:

ValueSet
"A" / 1Set A
"B" / 2Set B
"C" / 3Set C

Second argument (optional) — mask: limits which buttons are switched. Without a mask all buttons are set.

/fpress/set "A"
/fpress/set "B"
/fpress/set "C" "stop,go,pause"
/fpress/set "A" 7

Mask dictionary

The second argument can be an integer bitmask, a selector string, or "all". Inside a selector string, ,, ;, | and spaces all work as separators.

Selector tokenBitmask
stop, 01 << 0
go, 11 << 1
pause, 21 << 2
enc, encoder, push, 31 << 3
left, prev, ccw, 41 << 4
right, next, cw, 51 << 5
push_left, combo_left, combo_prev, 61 << 6
push_right, combo_right, combo_next, 71 << 7
all0xFF
/fpress/set "B" "stop,go,pause"
/fpress/set "C" "all"
/fpress/set "A" 255
/fpress/set "A" 7

/fpress/preset

Applies a preset by ID. Uses the preset ID, not the display name. The IDs are visible in the preset picker in the web interface.

Preset typeFormat
User preset"my-preset-12ab"
Plugin preset"pluginId:presetId"
Clear"empty"
/fpress/preset "my-user-preset-12ab"
/fpress/preset "osc-qlab-basics:transport"
/fpress/preset "empty"

/fpress/button

Triggers a physical button virtually — as if the press came from the device itself. This is what makes press/release macros usable remotely.

First argument — button:

ValueButton
"stop" / 0STOP
"go" / "play" / 1GO
"pause" / 2PAUSE

Second argument (optional) — action, default "tap":

ActionEffect
"tap" / "trigger" / "go"Press and release immediately
"press" / "on" / "1"Press only (the button stays logically held)
"release" / "off" / "0"Release only
/fpress/button "go"
/fpress/button "stop" "press"
/fpress/button "stop" "release"
/fpress/button 1 "tap"
caution

Whoever sends press must also send release. A logically held button otherwise blocks release sequences and toggle states.


/fpress/macro

Starts a macro directly by name or ID, whether or not it is assigned to a button.

First argument — exact macro name or macro ID. An ambiguous name is rejected.

Second argument (optional) — action, default "trigger":

ActionEffect
"trigger" / "tap" / "start"Run the macro once
"on" / "press" / "1"Turn a snapshot macro on; behaves like trigger for all other macros
"off" / "release" / "0"Turn a snapshot macro off
"toggle"Toggle a snapshot macro
/fpress/macro "House Lights"
/fpress/macro "House Lights" "toggle"
/fpress/macro "macro-7f3a" "trigger"
note

off, release and toggle are available for snapshot macros only (Art-Net/sACN DMX snapshots), since only those carry a persistent on/off state.


/fpress/timeline/arm & /fpress/timeline/disarm

Arms or disarms a single timeline.

Argument — timeline selector. Accepted forms:

FormExample
Visible number from the dropdown"1"
Display name"Main Timeline"
Internal ID"main"
/fpress/timeline/arm "1"
/fpress/timeline/arm "Main Timeline"
/fpress/timeline/disarm "main"

/fpress/timeline/arm_all & /fpress/timeline/disarm_all

Arms or disarms all timelines at once. No arguments.

/fpress/timeline/arm_all
/fpress/timeline/disarm_all
note

These commands are idempotent: a state that is already in place causes no filesystem write. All-timeline changes are saved atomically.


/fpress/led

Sets a runtime RGB colour for all LEDs or one individual LED. The colour is not persisted.

Range: 0–255 per channel

Accepted targets:

TargetDescription
"all" / "*" / 0All LEDs
"stop" / "btn0" / "button0" / 1Stop button
"go" / "btn1" / "button1" / 2Go button
"pause" / "btn2" / "button2" / 3Pause button
"encoder" / "enc" / "push" / "btn3" / 4Encoder
/fpress/led 255 0 0
/fpress/led "all" 255 0 0
/fpress/led "stop" 255 0 0
/fpress/led "go" 0 255 0
/fpress/led "pause" 255 140 0
/fpress/led "encoder" 0 80 255

The override stays active until another /fpress/led changes it or /fpress/led/release clears it. Mode and feedback updates continue in the background and become visible again after the release.

/fpress/led/release

Releases runtime overrides and restores the current live colour. Without an argument all overrides are cleared. Targets are the same as for /fpress/led.

Alias: /fpress/led/clear

/fpress/led/release
/fpress/led/release "all"
/fpress/led/release "stop"

Stream Deck over OSC

These commands only take effect while a Stream Deck is connected.

/fpress/streamdeck/button

Triggers a deck key virtually. Row and column are zero-based.

Two equivalent forms:

/fpress/streamdeck/button 1 2
/fpress/streamdeck/button/1/2

Optional action as the last argument (default "tap"):

ActionEffect
"tap" / "trigger" / "go"Press and release
"press" / "on" / "1"Press only
"release" / "off" / "0"Release only
/fpress/streamdeck/button 0 0 "tap"
/fpress/streamdeck/button/0/0 "press"
/fpress/streamdeck/button/0/0 "release"
note

Keys reserved for the timecode display and the tools key run no macros over OSC either.

/fpress/streamdeck/feedback

Overrides the feedback colour of a deck key from outside — for example to show the state of a third-party system on the deck.

State values:

ValueMeaning
1, "on", "true", "active", trueForce the active/feedback colour
0, "off", "false", "idle", falseForce the idle colour
"clear", "auto", "local", "release"Drop the override, local logic takes over again

Floats between 0.0 and 1.0 are rounded at 0.5.

Addressing by key number (132, one-based):

/fpress/streamdeck/feedback 5 1
/fpress/streamdeck/feedback/5 1
/fpress/streamdeck/5/feedback 1

Addressing by grid (row/column, zero-based):

/fpress/streamdeck/feedback/1/2 1
/fpress/streamdeck/1/2/feedback "clear"

/fpress/streamdeck/feedback/all

Sets every key to one state.

/fpress/streamdeck/feedback/all 1
/fpress/streamdeck/feedback/all "clear"

/fpress/streamdeck/feedback/clear

Drops all OSC overrides. No arguments.

/fpress/streamdeck/feedback/clear
/fpress/query
/fpress/query "qlab"

/fpress/query

Asks the device for its state. FrenschPress answers with one or more /fpress/status/… messages — back to the address and port the request came from. A receiver only has to listen on the port it sent from.

/fpress/query
/fpress/query "mode"

With no argument, all four replies are sent. With one of the group names device, mode, set or qlab, only that one comes back.

Replies

MessageArguments
/fpress/status/deviceDevice name · firmware version · MAC address · IP address
/fpress/status/modeMode (qlab / macro / companion) · QLab transport (osc / msc) · internal transport code
/fpress/status/setActive button set (A / B / C) · the set per button as a letter sequence
/fpress/status/qlabCue running (0/1) · paused (0/1) · QLab feedback subscribed (0/1)
note

Queries are limited to one reply per 100 ms per sender; faster requests are dropped. Requests from the device's own address are ignored.

Companion

If you want to drive FrenschPress from Bitfocus Companion, you do not need to build these messages yourself — the Companion module already handles querying and parsing.


Quick reference

/fpress/mode 2
/fpress/set "B"
/fpress/set "B" "stop,go,pause"
/fpress/preset "my-user-preset-12ab"
/fpress/preset "osc-qlab-basics:transport"
/fpress/button "go"
/fpress/button "stop" "press"
/fpress/macro "House Lights" "toggle"
/fpress/timeline/arm "Main Timeline"
/fpress/timeline/disarm_all
/fpress/led "stop" 255 0 0
/fpress/led 255 80 0
/fpress/led/release
/fpress/streamdeck/button/0/0
/fpress/streamdeck/feedback/1/2 1
/fpress/streamdeck/feedback/clear
/fpress/query
/fpress/query "qlab"