Skip to content

HTTP Sockpuppet

HTTP Sockpuppet allows sockpuppet control of layers via a HTTP API. This page will give an overview of the functionality possible with HTTP sockpuppet, its limitations and how to set it up in Designer.

Patching a Layer

To control the layer via HTTP Sockpuppet, the layer must be patched.

  1. Right-click the layer on the timeline.
  2. Click Patch to HTTP….

The layer will turn green and by all fields of the layer will be patched, turning green. When a field is patched, it can no longer be controlled with keyframes and will only be controlled by HTTP sockpuppet.

Unpatching a layer

Individual fields can unpatched by:

  1. Right-click the field on the layer.
  2. Click Toggle Sockpuppet to patch / un-patch this specific field.
  3. Click Isolate Sockpuppet to un-patch all other fields on the layer.

Controlling the layer

Once patched the layer can be controlled with the /api/session/sockpuppet endpoints. Querying the available patches with /api/session/sockpuppet/patches will return the available patches that can be controlled, and the fields available for each one. Values can then be changed with the api/session/sockpuppet/livechange endpoint. For more detail see the API documentation

Animating numeric values

HTTP is not suitable for streaming values, animations are implemented to support animating values over time, rather than sending a stream of values like you would with DMX over ethernet or OSC.

Animations can be applied to a numeric field of a patch (e.g a layer) and the animation will be executed in sync across all the machines in the session. If a machine is dropping frames, you may see issues with synchronisation.

Animations are triggered with a start value, end value, a duration of the animation and the easing method to use. The start value will be set on the field and interpolated to end value, over the course of the duration using the easing method supplied.. Examples of interpolation methods are Linear, Cubic, Quadratic.

Easing methods available can be queried with the api/session/sockpuppet/easingfunctions endpoint.

Considerations

HTTP sockpuppet changes are executed with a ~2 frame delay, to allow the change to be distributed across the session, and applied in a synchronised manner.

Once a value had been set via HTTP sockpuppet, it will always be set to the last value set (or final value of the animation) until d3 is restarted. There is no expiration.

The current value or a field on a patch (e.g field on a layer) is provided in the result of the api/session/sockpuppet/patches endpoint, but it is not possible to stream the realtime values of a field.

HTTP sockpuppet changes should be sent to the acting Director. This will depend on failover state.