# OSC Control Video Shader Toys can listen for local OSC messages and map them onto shader layer parameters. ## Configuration Set the UDP port in `config/runtime-host.json`: ```json { "oscPort": 9000 } ``` Set `oscPort` to `0` to disable the OSC listener. ## Address Pattern Send OSC messages to: ```text /VideoShaderToys/{LayerNameOrID}/{ParameterNameOrID} ``` Examples: ```text /VideoShaderToys/layer-1/brightness /VideoShaderToys/VHS/intensity /VideoShaderToys/TemporalLowFPS/frameRate ``` Layer keys are resolved against: - Layer ID, such as `layer-1` - Shader package ID, such as `vhs` - Shader display name, such as `VHS` Parameter keys are resolved against: - Parameter ID from `shader.json` - Parameter label from `shader.json` Matching is exact first. If that fails, names are compared in a simplified form that ignores spaces, underscores, hyphens, and casing. For live control, prefer stable IDs where possible. ## Values The listener accepts one OSC argument per message: - `f`: float - `i`: integer - `s`: string - `T` / `F`: boolean true/false Values are validated with the same shader parameter rules used by the REST API. Invalid values or unknown addresses are ignored. ## Network The listener binds to localhost only: ```text 127.0.0.1: ``` This keeps the control surface local to the machine running Video Shader Toys.