OSC
Native OSC address space of the media server, generated from the contract (osc/addresses.yaml,
osc/legacy.yaml, v1.0.0-rc.1 — the contract files are normative; this page is a copy for reading).
- UDP 7000 in (OSC 1.0), replies and pushes to the sender or to the subscriber’s
replyPort(default 7001); TCP 7000 with SLIP framing (OSC 1.1). Announced over mDNS as_osc._udp(prefix=/freedome/v1). {v}= venue (_= default),{p}= player (_=main).- No in-band auth. Each listener has a CIDR allow-list (
[osc] allow, default private networks) and a fixed role ([osc] role, default operator). Addresses marked admin CIDR are accepted only from[osc] admin_allow(default loopback). Packets from other sources are dropped silently and counted (freedome_mediaserver_osc_rejected_total). - Bundles with a future time tag run at that time on the server clock (multi-node sync); more than 24 h ahead is refused. Packets over 64 KiB are refused; a TCP connection is closed after 3 framing errors.
- Errors:
/freedome/v1/error ,sss= problem code, detail, address. Successful commands answer nothing. - Subscriptions:
/freedome/v1/subscribe ,s<topic> [,i<replyPort>]→ pushes/freedome/v1/event ,s<topic> ,s<json envelope>plus the fast path/freedome/v1/venue/{v}/player/{p}/position ,ff(position, duration). UDP subscriptions expire after 300 s without renewal. - Every accepted OSC message is also offered to the show’s OSC triggers (cue automation).
Example (python-osc):
from pythonosc.udp_client import SimpleUDPClientc = SimpleUDPClient("dome.local", 7000)c.send_message("/freedome/v1/venue/_/output/brightness", 0.6)c.send_message("/freedome/v1/venue/_/player/_/seek", 42.0)Native (/freedome/v1)
Section titled “Native (/freedome/v1)”| Address | Dir | Args | Maps to | Scope |
|---|---|---|---|---|
/freedome/v1/ping |
in | s token? | ping | anon |
/freedome/v1/info |
in | getInfo | anon | |
/freedome/v1/subscribe |
in | s topic i replyPort? | subscribe | events:subscribe |
/freedome/v1/unsubscribe |
in | s topic i replyPort? | unsubscribe | events:subscribe |
/freedome/v1/venue/{v}/player/{p}/play |
in | s id? i itemIndex? f position? | play | playback:control |
/freedome/v1/venue/{v}/player/{p}/pause |
in | pause | playback:control | |
/freedome/v1/venue/{v}/player/{p}/resume |
in | resume | playback:control | |
/freedome/v1/venue/{v}/player/{p}/stop |
in | stop | playback:control | |
/freedome/v1/venue/{v}/player/{p}/next |
in | next | playback:control | |
/freedome/v1/venue/{v}/player/{p}/previous |
in | previous | playback:control | |
/freedome/v1/venue/{v}/player/{p}/seek |
in | f seconds | seek | playback:control |
/freedome/v1/venue/{v}/player/{p}/rate |
in | f rate | patchPlayer | playback:control |
/freedome/v1/venue/{v}/player/{p}/loop |
in | i loop | patchPlayer | playback:control |
/freedome/v1/venue/{v}/player/{p}/volume |
in | f volume | patchPlayer | playback:control |
/freedome/v1/venue/{v}/output/brightness |
in | f value | patchOutput | playback:control |
/freedome/v1/venue/{v}/output/volume |
in | f value | patchOutput | playback:control |
/freedome/v1/venue/{v}/output/blackout |
in | T | F True | patchOutput |
/freedome/v1/venue/{v}/output/lighting |
in | T | F True | patchOutput |
/freedome/v1/venue/{v}/output/rotation |
in | f degrees | patchOutput | playback:control |
/freedome/v1/venue/{v}/cue/{c}/fire |
in | fireCue | playback:control | |
/freedome/v1/venue/{v}/param/{path} |
in | f | i | s |
/freedome/v1/venue/{v}/display/{d}/pattern |
in | s kind | setTestPattern | displays:control |
/freedome/v1/venue/{v}/audio/master/gain |
in | f gainDb | patchAudio | audio:control |
/freedome/v1/venue/{v}/audio/zone/{z}/gain |
in | f gainDb | patchAudioZone | audio:control |
/freedome/v1/venue/{v}/audio/source/{id}/position |
in | f azimuth f elevation f distance? | setSourcePosition | audio:control |
/freedome/v1/engine/visual/backend |
in | s backend | setComputeBackend | system:admin (admin CIDR) |
/freedome/v1/event |
out | s topic s json | event | |
/freedome/v1/venue/{v}/player/{p}/position |
out | f position f duration | event | |
/freedome/v1/error |
out | s code s detail s address | error |
Legacy aliases (legacy profile only)
Section titled “Legacy aliases (legacy profile only)”| Address | Dir | Args | Maps to | Scope |
|---|---|---|---|---|
/play |
in | s mediaId | play | playback:control |
/stop |
in | stop | playback:control | |
/pause |
in | pause | playback:control | |
/volume |
in | f value | patchOutput | playback:control |
/brightness |
in | f value | patchOutput | playback:control |
/rotation |
in | f degrees | patchOutput | playback:control |
/position |
in | f seconds | seek | playback:control |
/lighting |
in | T | F True | patchOutput |
/calibrate |
in | startCalibrationJob | calibration:run (admin CIDR) | |
/freedome/play |
in | s contentId? | play | playback:control |
/freedome/stop |
in | stop | playback:control | |
/freedome/status |
in | getPlayer | playback:read | |
/freedome/capabilities |
in | getInfo | anon | |
/freedome/render/single |
in | |||
/freedome/config/reload |
in | getConfig | system:read (admin CIDR) | |
/freedome/backend/switch |
in | s backend | setComputeBackend | system:admin (admin CIDR) |
/freedome/backend/query |
in | getEngine | info:read | |
/server/status |
in | getHealth | anon | |
/server/subscribe |
in | i replyPort? | subscribe | events:subscribe |
/server/unsubscribe |
in | unsubscribe | events:subscribe | |
/server/restart |
in | restartEngine | system:admin (admin CIDR) | |
/server/shutdown |
in | shutdownSystem | system:admin (admin CIDR) | |
/server/exit |
in | rebootSystem | system:admin (admin CIDR) |
Legacy aliases are served only with the legacy profile ([legacy] enabled = true). Legacy 0..100 values are scaled
to 0..1. /server/{exit,restart,shutdown} need a second message …/confirm within 5 s from the admin CIDR.
/freedome/render/single is answered legacy-unsupported (no pixels over the control plane).