Перейти к содержимому

Gateways

Это содержимое пока не доступно на вашем языке.

Gateways let existing control set-ups talk to a Freedome dome, and let Freedome drive other systems, as a migration path. Everything is off by default ([gateways.*], [[drivers.*]]). A listener has a role and a CIDR allow-list; a port that cannot be opened marks that listener only.

What compatibility means here. Nothing on this page has run against the real product. Each target says what it was tested against. docsOnly: true in GET /api/v1/gateways means the same.

Target Our part Tested against
Screenberry JSON API inbound HTTP, TCP, UDP, OSC, serial; outbound HTTP fixtures from the public page, our own emulator; serial not run
WATCHOUT 6 text protocol inbound TCP, UDP fixtures from Dataton’s public page
WATCHOUT 7 REST outbound the requests built, no server
disguise transport API outbound the requests built, no server
MPCDI freedome-dome mpcdi import / export round trips of our own files; no VESA sample, no VIOSO file
Domemaster folders (Cinema 4D, Sky-Skan, Digistar, Spitz renders) freedome-dome convert synthetic folders
TouchDesigner, Cinema 4D script, Blendy crates/fd-gateways/integrations/ never run in the product
Resolume outbound mock, below
fulldome.pro our own adapter, kept in legacy/ waits for the test dome: its fixtures and rewrite are not done
[gateways.screenberry]
enabled = true # http :8180, tcp :8181, udp :8182, osc :8183 address /jsonApi
[[drivers.watchout]]
name = "stage"
url = "http://10.0.0.50:3019"

The raw commands of outbound drivers are {"op": …}: play, pause, stop, jump, jump_cue, input, state for WATCHOUT; play, stop, gototime, gotosection, returntostart, transports for disguise; any Screenberry cmd.

GET /api/v1/gateways lists the configured gateways; OSC show controllers use the native OSC space.

Status: written from Resolume’s public documents and tested against a mock only (docsOnly: true). It has not run against a real Resolume yet. Sources and open points: fixtures/resolume/SOURCE.

Channel Used for Resolume default
OSC over UDP continuous parameters and triggers input port 7000
REST /api/v1 changes between scenes, composition reads web server port 8080
WebSocket /api/v1 composition structure, subscribed parameters same port as REST
[[drivers.resolume]]
name = "resolume"
host = "10.0.0.70"

In Resolume turn on Preferences > OSC > OSC Input and Preferences > Webserver.

Same machine. Resolume’s defaults are also ours, so one side has to move. Keep Resolume on its defaults and move the media server: config/resolume-same-host.toml sets http.listen to 8090 and osc.listen_udp / osc.listen_tcp to 7010. Clients of our API then use those ports. With a host on loopback the server refuses to start while a port collides and names the key to change. It cannot tell that a LAN address is this machine, so with such a host the check does not run.

Values. OSC floats are normalised: 0..1 covers the parameter’s whole range, so 100 % scale is 0.1 when the range is 0–1000 %. Scene outputs outside 0..1 are refused.

Rate limit. max_msgs_per_s (default 500) and burst (32) bound what reaches Resolume over all addresses; osc_max_rate_hz (unset by default) also limits each address. Below the limits a value leaves at once. Above it, values of one address merge and the newest is sent; triggers stay in order and go first. The default is our choice, not a figure from Resolume.

Status. up = REST and WebSocket work; degraded = REST works, WebSocket does not; down = no answer on the web port. Reconnect uses exponential backoff with jitter. OSC does not depend on any of this: it keeps sending, because the OSC input and the web server are separate switches in Resolume.

The [audio_reactive] section maps audio analysis onto gateways. A scene is a JSON document in the contract’s format (docs/audio-reactive.md): each mapping is continuous or trigger, reads one metric of one input and writes one target. Curves here: exp = t², log = log10(1 + 9t), s-curve = smoothstep. Selecting a scene is refused when a float output leaves 0..1, because Resolume would pin the parameter at the end of its range. Shipped presets: vocal-aura, percussion-wave (crates/fd-app/presets/audio_reactive/). Their addresses fit a composition with the layers described in each preset; adjust them or add your own files through scenes_dir. Scenes stored through the API survive a restart, and a preset deleted through the API stays deleted.

patchGateway with config changes the Resolume driver while it runs: host, oscPort, restPort, ws, oscMaxRateHz, x-maxMsgsPerS, x-burst, x-bundle. OSC, REST and the WebSocket move to the new peer at once, and the settings are kept in the server’s database: from then on they win over [[drivers.resolume]].

source = "ananta" reads live frames from anantadigital-engined over gRPC (endpoint); inputs are set with PUT /venues/{id}/audio/analysis. source = "test_double" is synthetic: no audio is involved, and the log says so at start.