In just:live and just:play it is possible to use a custom graphical control user interface for the FX Layer. Instead of using the Inspector to change parameters of a real-time graphic (composition:builder or Quartz Composer file), a dedicated graphical user interface is used to control the graphic.

In composition:builder and Quartz Composer you can publish Input Ports to make them accessible by the playout, which means that the user can modify the published Inputs in the Inspector of just:live and just:play. For many cases this is an easy and sufficient way to set, control and modify the content and behavior of real-time graphics. But there are situations where Input Ports have to be controlled in a more defined and more structured manner.

Features:


Communication of a custom control interface can only take place in an unidirectional manner, that means that the UI can send values to a real-time graphic, but it cannot "receive" anything from the playout system.

Requirements

Basic example download: TOA Custom Graphical Control UI.zip

Preliminaries

Installing the Frameworks & Plugins

Close all applications on your Mac before installation.

Disabling the TOA System Checker

Close all ToolsOnAir applications on your Mac before disabling the TOA System Checker.

To develop, debug and deploy custom interface controlled graphics, it is required to set up a separate just:live or just:play system, which must not be used for an actual playout.

Folder Structure & File Naming

To make a custom control interface work, this folder structure and file naming is required:

How it works?

A custom control interface consists of a HTML file which incorporates JavaScript to transmit data which is entered via HTML forms (or other means). There is one JavaScript function which provides the functionality to send data to a graphic which is currently playing out. Please note that you must publish your desired Input Ports on the Root Macro Patch layer of your Quartz Composition.

toa.setInputPort('nameOfThePublishedInputPort', valueWhichShouldBeTransmitted);

Once the graphic file is dropped into the Workbench of just:live/just:play and then played out, the custom control interface appears as a floating window. It is now ready to use.

What else?

Reopening a Closed Control Interface

Once the floating window of the custom control interface has been closed, it cannot be reopened anymore by default. A dummy Patch is required to show a button in the Inspector of just:live/just:play which can open up the window again.

Using the same names for HTML Form IDs and QTZ Input Ports

An alternative approach to transmit data to the QTZ is to use JavaScript events (onChange, onBlur...) and the this object. To do so, use the same names for the QTZ input ports and the IDs of the HTML forms. Example:

<input type="text" id="textfieldMyTextField" onChange="toa.setInputPort(this.id, this.value)">

In the Root Macro Patch layer of the QTZ there has to be an input port called textfieldMyTextField.

Accessing the Custom Interface with a Web Browser

You can access a custom interface with a web browser on any device (Mac, PC, tablet, smartphone), as long as your network is configured properly. To do so, enter the IP address of the host machine (i.e. the machine which plays out the graphic)  and append ":5000" to the address in the web browser of your choice.

To access the control interface on the local development machine, use localhost:5000.