# The OSC dictionary Every address LivePremier Plus answers, what it takes, and what it does. Send OSC over UDP to the port set in **Settings → OSC input**. It is off by default, and it binds to loopback unless told otherwise — this port fires takes on a video switcher. ```text /lp/screen/1/take /lp/screen/1/memory/5/recall/preview /lp/master/memory/12/store /lp/screen/1/preset/a/layer/2/opacity/opacity 128 /lp/screen/1/preset/a/layer/2/opacity/opacity/norm 0.5 /lp/screen/1/group/control/takeUpTime 20 ``` The same addresses work typed at the Console, which is the quickest way to try one before wiring a surface to it. --- ## The five rules **1. The address is the target; the argument is only the value.** Everything about *what* is addressed is in the path, so a button with a fixed address and no argument still means something specific. That is the difference between a TouchOSC layout you can draw once and one that needs logic behind every control. **2. A trigger fires on a non-zero argument, and on no argument at all.** Surfaces send `1` on press and `0` on release. A take that fired on both would fire twice per press, and the second one is the one nobody meant. A release is logged as *released, nothing sent* rather than dropped, so a surface sending something correctly ignored still shows up. **3. A recall never defaults to program.** `/lp/screen/1/memory/5/recall` goes to preview. Reaching air always costs the explicit word — the same rule the Mynah command language keeps, for the same reason: an under-specified command must not be able to change what is on screen. **4. Units are the device's, unless the address ends `/norm`.** A fader sends 0..1; the device wants 0–256 for opacity and −2000000..2000000 for a position. Which one `0.5` means cannot be worked out from the value — it is a perfectly good literal `posH` *and* the middle of a fader's throw — so it is said in the address. `/norm` scales across the parameter's own range; without it the value goes as given and is clamped to that range. **5. `preview` and `program` are resolved, never assumed.** They name whichever preset buffer is pending or live right now, and a take swaps them. > ⚠️ **Over UDP, only `/a`, `/b` and `/c` work for live layer parameters.** > Resolving `preview` or `program` needs the device's take state, and the OSC > listener holds no store mirror — so it refuses those addresses with that > reason rather than guessing. A layer move that landed in whichever buffer > happened to be live is exactly the failure rule 5 exists to prevent. The > Console *can* resolve them, because the page has the store. ### Not implemented, and reserved There is no relative form. A relative step needs the current value, which makes it a property of the surface holding the encoder rather than of the address space. `/rel` is refused by name, so the reserved tail explains itself instead of looking like a typo. --- ## Types, and what happens to them | Sent as | Read as | |---|---| | `i` int32, `h` int64 | a number | | `f` float32, `d` float64 | a number | | `s` string | a string — enum values are sent by name, e.g. `LIVE_3` | | `T` / `F` | true / false | | `I` impulse | a press | | `N` nil | null | Bundles are unpacked and their contents run. **Timetags are ignored** — waiting on a clock this machine does not share would make a video cue fire late because two computers disagree about the time, which is worse than firing it now. An enum may also be given as an integer index, because a button on a surface has nowhere to put a name. Names are matched case-insensitively; an index is bounds-checked. A value the device does not have is refused rather than rounded to the nearest one. Nothing is ever sent back. This listens; it does not answer. --- > Generated by `tools/gen-osc-docs.mjs` — do not edit the tables by hand. > Layer and screen-group parameters come from the control surface’s own > catalogue, read off a **NLC_CMAX** (67 layer > parameters, 19 screen-group). Everything else is verified > against LivePremier firmware **6.2.73**. **173 addresses.** ## Screens | Address | Argument | What it does | |---|---|---| | `/lp/screen/{n}/take` | none, or 1 to fire | Transition preview to program. screen is 1–24. | | `/lp/screen/{n}/cut` | none, or 1 to fire | Swap preview and program with no transition. screen is 1–24. | | `/lp/screen/{n}/memory/{slot}/recall` | none, or 1 to fire | Recall a memory into preview. Slots 1–1000. | | `/lp/screen/{n}/memory/{slot}/recall/{preview\|program}` | none, or 1 to fire | The same, saying which preset. Without it, preview — never program. | | `/lp/screen/{n}/memory/{slot}/store` | none, or 1 to fire | Store the program preset into a memory. | | `/lp/screen/{n}/memory/{slot}/store/{preview\|program}` | none, or 1 to fire | The same, saying which preset to take the look from. | | `/lp/screen/{n}/memory/{slot}/label` | string | Rename a memory. | | `/lp/screen/{n}/memory/{slot}/delete` | none, or 1 to fire | Empty a memory slot. | | `/lp/screen/{n}/layer/{l}/memory/{slot}/recall` | none, or 1 to fire | Recall a layer memory. Layers 1–128 or NATIVE; slots 1–50. | | `/lp/screen/{n}/layer/{l}/memory/{slot}/store` | none, or 1 to fire | Store a layer memory. | ## Auxiliary screens | Address | Argument | What it does | |---|---|---| | `/lp/aux/{n}/take` | none, or 1 to fire | Transition preview to program. aux is 1–96. | | `/lp/aux/{n}/cut` | none, or 1 to fire | Swap preview and program with no transition. aux is 1–96. | | `/lp/aux/{n}/memory/{slot}/recall` | none, or 1 to fire | Recall a memory into preview. Slots 1–1000. | | `/lp/aux/{n}/memory/{slot}/recall/{preview\|program}` | none, or 1 to fire | The same, saying which preset. Without it, preview — never program. | | `/lp/aux/{n}/memory/{slot}/store` | none, or 1 to fire | Store the program preset into a memory. | | `/lp/aux/{n}/memory/{slot}/store/{preview\|program}` | none, or 1 to fire | The same, saying which preset to take the look from. | | `/lp/aux/{n}/memory/{slot}/label` | string | Rename a memory. | | `/lp/aux/{n}/memory/{slot}/delete` | none, or 1 to fire | Empty a memory slot. | | `/lp/aux/{n}/layer/{l}/memory/{slot}/recall` | none, or 1 to fire | Recall a layer memory. Layers 1–128 or NATIVE; slots 1–50. | | `/lp/aux/{n}/layer/{l}/memory/{slot}/store` | none, or 1 to fire | Store a layer memory. | ## Master | Address | Argument | What it does | |---|---|---| | `/lp/master/memory/{slot}/recall` | none, or 1 to fire | Recall a master memory into preview. Slots 1–500. | | `/lp/master/memory/{slot}/recall/{preview\|program}` | none, or 1 to fire | The same, saying which preset. | | `/lp/master/memory/{slot}/store` | none, or 1 to fire | Store a master memory with the bank’s own record mask. | | `/lp/master/memory/{slot}/label` | string | Rename a master memory. | | `/lp/master/memory/{slot}/delete` | none, or 1 to fire | Empty a master memory slot. | ## Multiviewer | Address | Argument | What it does | |---|---|---| | `/lp/multiviewer/{out}/memory/{slot}/recall` | none, or 1 to fire | Recall a multiviewer layout onto an output. Outputs 1–8, slots 1–50. | | `/lp/multiviewer/{out}/memory/{slot}/store` | none, or 1 to fire | Store a multiviewer layout. | ## Layer parameters | Address | Argument | What it does | |---|---|---| | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/color/blue` | int 0–255 | Set border.edge.color.blue. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/color/blue/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/color/green` | int 0–255 | Set border.edge.color.green. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/color/green/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/color/red` | int 0–255 | Set border.edge.color.red. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/color/red/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/opacity` | int 0–255 | Set border.edge.opacity. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/opacity/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/radius` | int 0–255 | Set border.edge.radius. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/radius/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/sizeH` | int 0–255 | Set border.edge.sizeH. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/sizeH/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/sizeV` | int 0–255 | Set border.edge.sizeV. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/sizeV/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/edge/style` | structured value | Set border.edge.style. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/color/blue` | int 0–255 | Set border.shadow.color.blue. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/color/blue/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/color/green` | int 0–255 | Set border.shadow.color.green. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/color/green/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/color/red` | int 0–255 | Set border.shadow.color.red. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/color/red/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/opacity` | int 0–255 | Set border.shadow.opacity. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/opacity/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/radius` | int 0–255 | Set border.shadow.radius. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/radius/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/sizeH` | int -512–512 | Set border.shadow.sizeH. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/sizeH/norm` | float 0–1 | The same, as a fader position over -512 to 512. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/sizeV` | int -512–512 | Set border.shadow.sizeV. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/sizeV/norm` | float 0–1 | The same, as a fader position over -512 to 512. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/border/shadow/style` | structured value | Set border.shadow.style. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/aspectOverride` | value name from PE_ASPECTOUT, or an index | Set cropping.classic.aspectOverride. 5 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/aspectOverride/norm` | float 0–1 | The same, as a fader position over 5 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/bottom` | int 0–65535 | Set cropping.classic.bottom. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/bottom/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/left` | int 0–65535 | Set cropping.classic.left. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/left/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/right` | int 0–65535 | Set cropping.classic.right. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/right/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/top` | int 0–65535 | Set cropping.classic.top. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/classic/top/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/mask/bottom` | int 0–65535 | Set cropping.mask.bottom. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/mask/bottom/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/mask/left` | int 0–65535 | Set cropping.mask.left. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/mask/left/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/mask/right` | int 0–65535 | Set cropping.mask.right. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/mask/right/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/mask/top` | int 0–65535 | Set cropping.mask.top. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cropping/mask/top/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/cropping/bottom` | int 0–65535 | Set cutNFill.cut.cropping.bottom. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/cropping/bottom/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/cropping/left` | int 0–65535 | Set cutNFill.cut.cropping.left. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/cropping/left/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/cropping/right` | int 0–65535 | Set cutNFill.cut.cropping.right. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/cropping/right/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/cropping/top` | int 0–65535 | Set cutNFill.cut.cropping.top. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/cropping/top/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/curve` | int 0–4294967295 | Set cutNFill.cut.curve. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/curve/norm` | float 0–1 | The same, as a fader position over 0 to 4294967295. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/flags` | structured value | Set cutNFill.cut.flags. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/inputNum` | value name from INPUTLAYER_LOGIC, or an index | Set cutNFill.cut.inputNum. 482 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/cut/inputNum/norm` | float 0–1 | The same, as a fader position over 482 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/type` | value name from PE_MASK_TYPE, or an index | Set cutNFill.type. 3 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/cutNFill/type/norm` | float 0–1 | The same, as a fader position over 3 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/effects/flags` | structured value | Set effects.flags. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/effects/strobe/frames` | int 2–255 | Set effects.strobe.frames. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/effects/strobe/frames/norm` | float 0–1 | The same, as a fader position over 2 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/point1/posH` | int -32768–32767 | Set flying.point1.posH. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/point1/posH/norm` | float 0–1 | The same, as a fader position over -32768 to 32767. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/point1/posV` | int -32768–32767 | Set flying.point1.posV. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/point1/posV/norm` | float 0–1 | The same, as a fader position over -32768 to 32767. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/point2/posH` | int -32768–32767 | Set flying.point2.posH. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/point2/posH/norm` | float 0–1 | The same, as a fader position over -32768 to 32767. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/point2/posV` | int -32768–32767 | Set flying.point2.posV. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/point2/posV/norm` | float 0–1 | The same, as a fader position over -32768 to 32767. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/type` | value name from PE_FLYING_TYPE, or an index | Set flying.type. 5 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/flying/type/norm` | float 0–1 | The same, as a fader position over 5 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/keying/enable` | none, or 1 to fire | Set keying.enable. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/keying/source` | value name from LAYER_KEYER_BANK_SELECT, or an index | Set keying.source. 51 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/keying/source/norm` | float 0–1 | The same, as a fader position over 51 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/opacity/opacity` | int 0–256 | Layer opacity. The range is 0–256, not 0–100. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/opacity/opacity/norm` | float 0–1 | The same, as a fader position over 0 to 256. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/anchor` | value name from ANCHOR, or an index | Which point of the layer its position refers to. The device defaults to MIDDLE_CENTER. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/anchor/norm` | float 0–1 | The same, as a fader position over 9 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/posH` | number -2000000–2000000 | Horizontal centre of the layer, in pixels. Negative is normal — the anchor is the centre, so a layer half off the canvas has a negative position. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/posH/norm` | float 0–1 | The same, as a fader position over -2000000 to 2000000. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/posV` | number -2000000–2000000 | Vertical centre of the layer, in pixels. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/posV/norm` | float 0–1 | The same, as a fader position over -2000000 to 2000000. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/sizeH` | number 0–1000000 | Layer width in pixels. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/sizeH/norm` | float 0–1 | The same, as a fader position over 0 to 1000000. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/sizeV` | number 0–1000000 | Layer height in pixels. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/sizeV/norm` | float 0–1 | The same, as a fader position over 0 to 1000000. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/stereo3d/posZ` | number -2000000–2000000 | Set position.stereo3d.posZ. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/position/stereo3d/posZ/norm` | float 0–1 | The same, as a fader position over -2000000 to 2000000. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/source/color/blue` | int 0–255 | Set source.color.blue. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/source/color/blue/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/source/color/green` | int 0–255 | Set source.color.green. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/source/color/green/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/source/color/red` | int 0–255 | Set source.color.red. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/source/color/red/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/source/inputNum` | value name from INPUTLAYER_LOGIC, or an index | Which input the layer shows. An enum name, not a number. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/source/inputNum/norm` | float 0–1 | The same, as a fader position over 482 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/speed/point1` | int 0–255 | Set speed.point1. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/speed/point1/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/speed/point2` | int 0–255 | Set speed.point2. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/speed/point2/norm` | float 0–1 | The same, as a fader position over 0 to 255. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/speed/type` | value name from PE_TBAR_TYPE, or an index | Set speed.type. 2 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/speed/type/norm` | float 0–1 | The same, as a fader position over 2 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/closing/end` | int 0–65535 | Set timing.closing.end. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/closing/end/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/closing/start` | int 0–65535 | Set timing.closing.start. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/closing/start/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/opening/end` | int 0–65535 | Set timing.opening.end. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/opening/end/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/opening/start` | int 0–65535 | Set timing.opening.start. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/opening/start/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/ratio` | int 0–65535 | Set timing.ratio. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/timing/ratio/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/closing/type` | value name from ELEMENT_TRANSITION, or an index | Set transition.closing.type. 6 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/closing/type/norm` | float 0–1 | The same, as a fader position over 6 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/closing/way` | value name from TRANSITION_WAY, or an index | Set transition.closing.way. 11 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/closing/way/norm` | float 0–1 | The same, as a fader position over 11 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/flags` | structured value | Set transition.flags. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/opening/type` | value name from ELEMENT_TRANSITION, or an index | Set transition.opening.type. 6 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/opening/type/norm` | float 0–1 | The same, as a fader position over 6 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/opening/way` | value name from TRANSITION_WAY, or an index | Set transition.opening.way. 11 values. | | `/lp/screen/{n}/preset/{preview\|program\|a\|b\|c}/layer/{l}/transition/opening/way/norm` | float 0–1 | The same, as a fader position over 11 values. | ## Screen group | Address | Argument | What it does | |---|---|---| | `/lp/screen/{n}/group/control/copyMode` | none, or 1 to fire | Set control.copyMode. | | `/lp/screen/{n}/group/control/presetDown` | value name from PRESET, or an index | Set control.presetDown. 3 values. | | `/lp/screen/{n}/group/control/presetDown/norm` | float 0–1 | The same, as a fader position over 3 values. | | `/lp/screen/{n}/group/control/presetPrevious` | value name from PRESET, or an index | Set control.presetPrevious. 3 values. | | `/lp/screen/{n}/group/control/presetPrevious/norm` | float 0–1 | The same, as a fader position over 3 values. | | `/lp/screen/{n}/group/control/presetUp` | value name from PRESET, or an index | Set control.presetUp. 3 values. | | `/lp/screen/{n}/group/control/presetUp/norm` | float 0–1 | The same, as a fader position over 3 values. | | `/lp/screen/{n}/group/control/takeDownTime` | int 0–3000 | Transition time towards the down preset, in tenths of a second. | | `/lp/screen/{n}/group/control/takeDownTime/norm` | float 0–1 | The same, as a fader position over 0 to 3000. | | `/lp/screen/{n}/group/control/takeUpTime` | int 0–3000 | Transition time towards the up preset, in tenths of a second. | | `/lp/screen/{n}/group/control/takeUpTime/norm` | float 0–1 | The same, as a fader position over 0 to 3000. | | `/lp/screen/{n}/group/control/tbarPosition` | int 0–65535 | T-bar position. Full throw completes the transition. | | `/lp/screen/{n}/group/control/tbarPosition/norm` | float 0–1 | The same, as a fader position over 0 to 65535. | | `/lp/screen/{n}/group/control/xCopyProgramToPreview` | none, or 1 to fire | Copy what is on air back into preview. | | `/lp/screen/{n}/group/control/xCut` | none, or 1 to fire | Swap preview and program with no transition. | | `/lp/screen/{n}/group/control/xStepBack` | none, or 1 to fire | Undo the last take. | | `/lp/screen/{n}/group/control/xTake` | none, or 1 to fire | Transition preview to program. | | `/lp/screen/{n}/group/control/xTakeAbort` | none, or 1 to fire | Stop a transition in progress. | | `/lp/screen/{n}/group/control/xTakeDown` | none, or 1 to fire | Run the transition towards the down preset. | | `/lp/screen/{n}/group/control/xTakeUp` | none, or 1 to fire | Run the transition towards the up preset. | --- ## How a message reaches the switcher ```text QLab / TouchOSC / Companion / a lighting desk │ UDP ▼ server/osc.js ──decode──▶ the resolver ──▶ store paths │ ▼ AWJ, TCP 10606 the switcher ``` Writes go out over **AWJ**, the vendor's own control protocol, rather than through a browser tab. The point of a show-control input is that it works when nobody is looking at it: a cue fires at 20:03 whether or not an operator happens to have a Web RCS tab open. Two consequences: - **The device's AWJ port has to be on.** It can be switched off in the Web RCS security settings, and when it is, every OSC message fails with the same connection error. Check that first. - **The device allows five AWJ clients** and counts them. This opens one connection per exchange and closes it, so it holds none of that budget between messages — but the budget is shared with everything else on the network. ## Getting the address right The quickest check is the Console: type the address, and the compiled write is shown before you press Enter. A refusal names what it did not understand. For a sender you cannot easily change, **Settings → OSC input** counts what arrived, what was written and what was refused, and the Console log carries each message with the reason when one was rejected.