Indirections
Overview
Indirections are primarily used for switching out pre-programmed content on the fly. They can be used for situations where the user may wish to change objects under certain scenarios such as triggering of an external system or changing playback to match different talent performing on stage.
Indirections are controlled by an Indirection controller, of which there are five types:
Manual
Holds a single resource that the Indirection uses. They can be manually controlled via the UI or via the new Indirections API.
List
The list controller type holds a list of objects and has an index for which object they refer to. The list can be controlled manually via the UI or via the Indirections API.
SequencedIndirectionController The indirection control module allows indirections to be sequenced on the timeline. Users can sequence indirection changes on the timeline. One Indirection control module controls one indirection. This is controlled by keyframes in an IndirectionControl layer.
OSC
The OSC controller holds an address, for example - “/d3/indirection/name” and an OSC device. It’s controlled by sending a string to Designer via OSC in the following format:
Address: /d3/indirection/nameOfIndirectionToControl
Message: sample/george.jpg
DMX
The DMX controller holds a channel and a universe. It’s controlled by sending a value on that channel/universe that corresponds to a DMX bank & slot.
UDP
The UDP controller holds a string-keyed list of objects. It’s controlled by sending a raw UDP message with the specified string to select the associated object.
Indirections can also be accessed via a dedicated API, documentation for which can be found at http://localhost/docs/v1/index.html whilst you have Designer running.
Workflow
- An Indirection acts somewhat like a “dynamic” keyframe
- The dynamic keyframe has a controller attached to it
- The controller gets values sent to it
- Based on those values the resulting output can be changed temporarily
Examples
Manual
Manual indirections are extremely useful if you want to make a quick change to a defined resource via Designer user interface. For example, swap out a logo during a corporate event
- Open a content layer, such as Video.
- Open the keyframe editor for the resource you wish to change, i.e. videoClip.
- Create a new Indirection.
- Give the Indirection a unique name.
- In the Indirection create a controller.
- Choose the manual controller type.
- In the manual controller, choose a resource to assign to the controller.
- Once this is done, the resource can be changed and the layer is updated.
List
List is a useful controller for when you have a small selection of resources you wish to change out or swap between. For example toggling between two pieces of media for when a different performer is covering for someone during a show.
- Open a content layer, such as Video.
- Open the keyframe editor for the resource you wish to change, i.e. videoClip.
- Create a new Indirection.
- Give the Indirection a unique name.
- In the Indirection create a controller
- Choose the list controller type
- In the list controller, choose resources to assign to the controller. a. Resources can be re-ordered like other lists in Designer. Drag the items up and down to re-order. b. The index value cycles through resources, so the ordering of the list is important. c. The Index value can have an expression which can be linked to an external device, for example a midi controller.
- Once this is done, the resource can be changed and the layer is updated.
OSC
The OSC indirection is useful if you want to create a more complex front end interface on a device such as an iPad, or apply logic to your Indirections.
- Open a content layer, such as Video.
- Open the keyframe editor for the resource you wish to change, i.e. videoClip.
- Create a new Indirection.
- Give the Indirection a unique name.
- In the Indirection create a controller.
- Choose the OSC controller type.
- In the OSC controller, choose values to assign to the controller.
- Set the OSC device that the controller is receiving data from.
- Set the OSC address that the controller is listening to.
- Once this is done, the resource can be changed and the layer is updated.
DMX
DMX is useful for being able to change Indirections via a lighting desk, much in the same way sockpuppet works, but without needing to set up a full sockpuppet programming workflow.
- Open a content layer, such as Video.
- Open the keyframe editor for the resource you wish to change, i.e. videoClip.
- Create a new Indirection.
- Give the Indirection a unique name.
- In the Indirection create a controller.
- Choose the DMX controller type.
- In the DMX controller, choose values to assign to the controller.
- Set the universe & address.
- Ensure the resources you wish to control are exposed in the bank assignments, much like sockpuppet.
- Once this is done, the resource can be changed and the layer is updated.
UDP
The UDP Indirection is useful for more complex use cases where an external system is running logic to decide which Indirections are being used.
- Open a content layer, such as Video.
- Open the keyframe editor for the resource you wish to change, i.e. videoClip.
- Create a new Indirection.
- Give the Indirection a unique name.
- In the Indirection create a controller.
- Choose the UDP controller type.
- In the UDP controller, choose resources to assign to the controller.
- Set the key(s) for your resource(s).
- Once this is done, the resource can be changed and the layer is updated.