OSC Control
The FrenschPress accepts incoming OSC commands on the OSC port set in the settings.
| Parameter | Value |
|---|---|
| Namespace | /fpress |
| Protocol | OSC over UDP |
| Port | 53001 (default) |
| Target | IP address of the device |
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
| Command | Arguments | Saved |
|---|---|---|
/fpress/mode | 1, 2, 3 | Yes |
/fpress/set | A, B, C + optional mask | Yes |
/fpress/preset | preset ID (string) | Yes |
/fpress/button | button + optional action | No |
/fpress/macro | macro name or ID + optional action | No |
/fpress/timeline/arm | timeline selector | Yes |
/fpress/timeline/disarm | timeline selector | Yes |
/fpress/timeline/arm_all | – | Yes |
/fpress/timeline/disarm_all | – | Yes |
/fpress/led | r g b or target r g b | No |
/fpress/led/release | – or target | No |
/fpress/streamdeck/button | row col [action] | No |
/fpress/streamdeck/feedback | button state | No |
/fpress/streamdeck/feedback/all | state | No |
/fpress/streamdeck/feedback/clear | – | No |
/fpress/query | – or a group name | No |
/fpress/mode
Switches the device mode.
| Value | Mode |
|---|---|
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:
| Value | Set |
|---|---|
"A" / 1 | Set A |
"B" / 2 | Set B |
"C" / 3 | Set 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 token | Bitmask |
|---|---|
stop, 0 | 1 << 0 |
go, 1 | 1 << 1 |
pause, 2 | 1 << 2 |
enc, encoder, push, 3 | 1 << 3 |
left, prev, ccw, 4 | 1 << 4 |
right, next, cw, 5 | 1 << 5 |
push_left, combo_left, combo_prev, 6 | 1 << 6 |
push_right, combo_right, combo_next, 7 | 1 << 7 |
all | 0xFF |
/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 type | Format |
|---|---|
| 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:
| Value | Button |
|---|---|
"stop" / 0 | STOP |
"go" / "play" / 1 | GO |
"pause" / 2 | PAUSE |
Second argument (optional) — action, default "tap":
| Action | Effect |
|---|---|
"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"
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":
| Action | Effect |
|---|---|
"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"
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:
| Form | Example |
|---|---|
| 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
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:
| Target | Description |
|---|---|
"all" / "*" / 0 | All LEDs |
"stop" / "btn0" / "button0" / 1 | Stop button |
"go" / "btn1" / "button1" / 2 | Go button |
"pause" / "btn2" / "button2" / 3 | Pause button |
"encoder" / "enc" / "push" / "btn3" / 4 | Encoder |
/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"):
| Action | Effect |
|---|---|
"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"
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:
| Value | Meaning |
|---|---|
1, "on", "true", "active", true | Force the active/feedback colour |
0, "off", "false", "idle", false | Force 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 (1–32, 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
| Message | Arguments |
|---|---|
/fpress/status/device | Device name · firmware version · MAC address · IP address |
/fpress/status/mode | Mode (qlab / macro / companion) · QLab transport (osc / msc) · internal transport code |
/fpress/status/set | Active button set (A / B / C) · the set per button as a letter sequence |
/fpress/status/qlab | Cue running (0/1) · paused (0/1) · QLab feedback subscribed (0/1) |
Queries are limited to one reply per 100 ms per sender; faster requests are dropped. Requests from the device's own address are ignored.
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"