Navigation

Ventuz Introduction

  • Introduction
  • Getting Started
  • Ventuz Editions
  • Ventuz Products
  • Realtime Rendering
  • Frequently Asked Questions
  • Common Mistakes
  • Deploying a Ventuz Presentation
  • Scene Performance and Tweaks

Quick Guides

  • Quick Guide Index
  • Business Logic
  • 3D Art
  • 2D Art
  • Programming
  • System Engineer

General

  • Index
  • What's New
  • Ventuz System Requirements
  • Communication Protocol Overview
  • Configuration Editor
  • Audio / Video Configuration
  • Machine Configuration
  • Web Configuration Editor and License Manager
  • GPI Configuration for Runtime or Director
  • Supported Formats
  • Supported Hardware
  • Multisampling / Anti-Aliasing
  • Input Subsystem
  • Ventuz Proprietary Files
  • Migrating Content to Ventuz 6
  • Migrating Content to Ventuz 5
  • Summary Shortcuts
  • Terminology
  • Manual Index

Ventuz Designer

  • Designer Indices
Introduction
  • Designer Introduction Index
  • Designer Overview
  • Realtime Rendering
  • Project Browser
  • Designer Interface
  • Designer Options
  • Working with Nodes
  • Hierarchy and Content Editors
  • 2D Workflow
  • 3D Workflow
  • Animation Workflow
  • Best Practices
  • Reading Data in Ventuz
  • Display Images and Movies
  • Scene Performance and Tweaks
  • Deploying a Ventuz Presentation
  • Render to Disk
User Interface
  • Designer User Interface Index
  • Designer Interface
  • Renderer Window
  • Layer Editor
  • Property Editor
  • Property Groups
  • Hierarchy Editor
  • Content Editor
  • Find and Replace
  • Toolbox
  • Animation Editor
  • Shader Editor
  • Text Editor
  • Message View
  • Scene Tree
  • Stage Editor
  • Container Outline
  • Watches Editor
  • Performance Statistics
2D Workflow
  • 2D Workflow Index
  • 2D Workflow
  • Layer Editor
  • Common Layer Properties
  • IPP Effects
  • Color Correction FX
  • Distortion FX
  • Filter FX
  • Hierarchy and Content Editors
  • Display Images and Movies
3D Workflow
  • 3D Workflow Index
  • 3D Workflow
  • Hierarchy and Content Editors
  • Renderer Window
  • Camera Navigation
  • Manipulate Objects with Gizmos
  • Layer Editor
  • Property Editor
  • Hierarchy Editor
  • Working with Nodes
  • Isolated Objects
  • Containers
  • Text Rendering
  • Character Sets
  • Geometry Import
  • Display Images and Movies
  • Particle System
  • Creating Realistic Reflections
  • Unreal Integration
  • Notch Integration
  • E2E Node Overview
Logic Workflow
  • Logic Workflow Index
  • Hierarchy and Content Editors
  • Content Editor
  • Hierarchy Editor
  • Working with Nodes
  • Property Editor
  • Containers
  • Project and Scene Data
  • Reading Data in Ventuz
  • Display Images and Movies
  • Input Subsystem
  • Multitouch
  • TUIO Protocol
  • Open Sound Control
  • Unreal Integration
  • Notch Integration
  • E2E Node Overview
Animation Workflow
  • Animation Workflow Index
  • Animation Workflow
  • Animation Editor
  • Content Editor
  • Hierarchy Editor
  • Property Editor
  • Animation and State Engine
  • Templates
  • Template Engine
  • Unreal Integration
  • Notch Integration
Project Structure
  • Project Structure Index
  • Annotations
  • Projects and Scenes
  • Project Properties
  • Project Maintenance
  • Project and Scene Data
  • Scene Management
  • Scene Statistics
  • Scene Tree
  • Performance Statistics
How Tos
  • Designer How to Index
  • How to Run Ventuz
  • How to Work with Designer
  • Ventuz Designer Drag&Drop Workflow
  • How to work with Shadows
  • How to Build Content for Multiple Screens
  • How to Use Emoijs
  • How to Build a Template
  • How to Use the Color Difference Keyer
  • How To Use the HDR Engine
  • How Create Lens Flares and Bloom
  • How to Create Visuals Loader Node
  • How to Remote Control with a Phone
  • How to use Head Mounted Displays
  • How to work with 3D Reference Layers
  • How to create a Firework Particle System
  • How to use DDS with new Block Compression modes
  • How to use the Substance Integration
  • How To Integrate Unreal
  • How To Integrate Notch
  • How To use the Vertex Integration
  • How To Control and Customize Ventuz
Reference
  • Available Nodes
  • Animation Nodes
  • Material&Color Nodes
  • Data Nodes
  • E2E Nodes
  • Geometry Nodes
  • Interaction Nodes
  • IO Nodes
  • Layers
  • Light Nodes
  • Logic Nodes
  • Render Option Nodes
  • Slides Nodes
  • Sound Nodes
  • Text Nodes
  • Texture Nodes
  • VR Nodes
  • World Nodes
  • Summary Shortcuts
  • Layer Editor Shortcuts
  • Hierarchy Editor Shortcuts
  • Content Editor Shortcuts
  • Animation Editor Shortcuts
  • Director Shortcuts

Ventuz Director

  • Index
  • Introduction
  • Environment
  • Show
  • User Interface
  • Assets
  • Taking Action
  • Property Editor
  • Shot Box
  • Project Data
  • Pages
  • Playlist
  • Timeline
  • Content References
  • Topology
  • Channels
  • Macros
  • Designing Templates
  • Plug-Ins
  • Shortcuts
  • Command Line Options
  • Application Settings
  • Glossary
  • GPI Configuration

Ventuz Runtime & Configuration

  • Runtime Index
  • Configuration Configuration Editor
  • Machine Configuration
  • Video/Audio Configuration
  • Web Configuration Editor and License Manager
  • Render Setup Editor
  • Warping and Soft-Edging Editor
  • Machine Clustering
  • Supported Hardware
  • Director Mode
  • Runtime How Tos Index
  • How to Configure Audio
  • How to Use Live Options
  • How To Play Out On Multiple Screens
  • How To Render on a Machine Cluster
  • How to Use Head Mounted Displays
  • How to Setup Spout with Ventuz
  • How to Use Newtek NDI
  • How to Use a Mixed Frame Rate Cluster
  • How to Use Tracking

How To

Designer
  • Designer How to Index
  • How to Run Ventuz
  • How to Work with Designer
  • Ventuz Designer Drag&Drop Workflow
  • How to work with Shadows
  • How to Build Content for Multiple Screens
  • How to Use Emoijs
  • How to Build a Template
  • How to Use the Color Difference Keyer
  • How To Use the HDR Engine
  • How Create Lens Flares and Bloom
  • How to Create Visuals Loader Node
  • How to Remote Control with a Phone
  • How to use Head Mounted Displays
  • How to work with 3D Reference Layers
  • How to create a Firework Particle System
  • How to use DDS with new Block Compression modes
  • How to use the Substance Integration
  • How To Integrate Unreal
  • How To Integrate Notch
  • How To build and playback Ventuz Content in Vertex
Runtime & Configuration
  • Runtime How Tos Index
  • How to Configure Audio
  • How to Use Live Options
  • How To Play Out On Multiple Screens
  • How To Render on a Machine Cluster
  • How to use Head Mounted Displays
  • How to setup Spout with Ventuz
  • How to use Newtek NDI
  • How to use a Mixed Frame Rate Cluster
  • How to use Tracking
  • How To Integrate Unreal
  • How To Integrate Notch
  • How To build and playback Ventuz Content in Vertex
Director
  • How To Control Multiple Graphics Independently From Each Other
  • How to use the Companion with Director

Ventuz Node Reference

ANIMATION
  • Mover
  • Alternator
  • Simple Control
  • Timeline Control
  • Anmation Rig
  • Keyframe Animation
  • Animation Group
COLOR/MATERIAL
  • Alpha
  • Fog
  • Ground Fog
  • Sky Box
  • Color to RGBA
  • HSLA to Color
  • RGBA to Color
  • Color Transformer
  • HLSL Shader
  • Color
  • Material
  • Color Picker
  • Substance Material
DATA
  • Database
  • Excel
  • JSON
  • RSS Feed
  • Resource Linker
  • Text File
  • XML
E2E
  • E2E Axis
  • E2E Data
  • E2E Control
  • E2E Layer
  • E2E Provider
  • E2E Node Overview
GEOMETRY
  • Rectangle
  • Rounded Rectangle
  • Gradient Rectangle
  • Overlay Rectangle
  • Cube
  • Circle
  • Sphere
  • Cylinder
  • Cone
  • Torus
  • Chart
  • Random Points
  • Mesh Loader
  • Geometry Import (Live)
  • Volume
  • Get Bounding Box
  • Arrow
  • Particle System
  • Path Renderer
  • Geometry Renderer
INTERACTION
  • Interaction Rect
  • Touch Button
  • Touch Excluder
  • Touch Marker
  • Touch Paint
  • Touch Pattern
  • Touch Proxy
  • Touch Ripples
  • Touch Transformations
  • Web Browser
  • Touch Teleport
  • Touch Simulator
INPUT/OUTPUT (I/O)
  • GPI
  • Joystick
  • Keyboard
  • MIDI
  • Mouse
  • Network
  • Open Sound Control
  • Serial
  • Timecode
  • DMX
  • HTTP
  • RamDiskWriter
LAYER
  • 3D Layers
  • 3D Layer Reference
  • 2D Layers
  • PSD Import Layer
  • E2E Layer
  • Others
LIGHT
  • Light Sources
LOGIC
  • Array Processing
  • Convert To Text
  • Cluster Synchronization
  • Counter
  • Date Time
  • Directory
  • Dispatcher
  • Enumeration
  • Expressions
  • Invert
  • Log
  • Loop Breaker
  • Math Effects
  • Matrix Operations
  • Scene Event
  • Script
  • String Operations
  • System ID
  • Text Splitter
  • Timer
  • Toggle
  • URL
  • Value Switch
  • Value Buffer
  • Variables
  • Visual Indexer
RENDER OPTIONS
  • Alpha Blending
  • Color Write
  • Alpha Testing
  • Clip Plane
  • Filter
  • Mask
  • Mirror
  • Effect
  • Render Cube Map
  • Draw Modes
  • Stencil
  • ZTesting
SOUND
  • Audio Clip
  • Sound
  • Volume Control
  • Audio Analysis
SLIDES
  • Slide Manager
  • Slide
  • Slide Port
  • Pivot
TEXT
  • Text Effects
  • Text Layouts
  • Text Rendering
TEXTURE
  • Background
  • Hatch
  • Image
  • Texture
  • SVG Loader
  • Gradient Texture
  • Live Video
  • Movie Stream
  • Movie Frame
  • Movie Clip
  • Texture Loader
  • Snapshot
  • Snapshot Framebuffer
  • Texture Saver
  • Video Source Selector
  • VIO Input
  • Spout Receiver
  • NDI Receiver
  • Substance Loader
  • QR Code
VR/AR
  • Tracked Devices
  • Draw Tracked Devices
WORLD
  • Axis
  • Billboard
  • GetWorld
  • SetWorld
  • Arrange
  • Ticker
  • Layout
  • Group
  • World Z Sort
  • YesNo
  • Switch
  • Spread
  • Filter Pass
  • Set Pass
  • Hierarchy Container
  • Scene Port
  • Content Container
  • Template Port
  • Container Info
  • Camera
  • Paths

Advanced and Development

  • Advanced and Development Index
  • Command Line Options
  • Ventuz IP Ports
  • Ventuz Machine Service
  • TUIO
  • .NET Scripting
  • HLSL Shader Programming
  • Ventuz API and SDK
  • Ventuz Extension API
  • Ventuz VIO API
  • Ventuz File Format (VFF)
  • Ventuz Stream Out API
  • Lens Calibration File for FreeD
  • E2E Node Overview
  • Unreal Integration
  • Notch Integration
Remoting
  • Remoting Index
  • Remoting Overview
  • How To Control and Customize Ventuz
  • Remoting 4
  • Remoting 4 via Websockets
  • Remoting 4 via HTTP
  • Director Remoting
  • Deprecated Remoting
  • Remoting Machine Signature

Misc

  • Presets
« Previous:
» Index «
Next: »

Ventuz 4 - Remoting

Table of Contents

  1. OSC
    1. OSC Syntax Diagram
    2. OSC TypeTag
    3. OSC Bundles
    4. OSC Address
    5. Strings and Symbols
    6. Arrays
    7. BitVector
  2. TCP/IP
  3. Messages
  4. Command Reference
    1. Error
    2. General Commands
      1. Version
      2. Info [async]
      3. LogLevel
      4. Log [async]
      5. Performance request
      6. Performance frame output [async]
    3. Options
      1. DataModel
      2. DataItem
    4. Project Commands
      1. Files
      2. SceneModel
      3. Clock
      4. DataModel
      5. DataItem [T]
      6. Batch [T]
    5. Pipe Commands
      1. Info [async]
      2. Snapshot Pipe
    6. Scene Commands
      1. Load
      2. Status [async]
      3. Scenes
      4. Validate
      5. Release
      6. Ports [async]
      7. SceneModel [async]
      8. DataItem [T] [async]
        1. Animation Control
    7. Port Commands
      1. Status [T]
      2. Cue [T]
      3. Take [T]
      4. DataItem [T]

The Ventuz 4 - Remoting uses Open Sound Control Version ​OSC 1.0 to communicate with Ventuz in a very fast, version and platform independent way. It doesn't utilize the ​Ventuz OSC.net implementation because of its performance and modifications to the OSC specifications.

Since the default transfer is based on unreliable UDP packets, the new Ventuz 4 - OSC Remoting 4 uses TCP/IP to transfer the OSC messages. Therefore the slip mode introduced in ​OSC 1.1 is implemented to separate particular OSC messages from a byte stream; every message has a leading 32bit integer defining the size in bytes of the following message. This size is always a multiple of 4.

Supported OSC Types:

Type TagDescription mapped to C#.net Type
iInteger (32bit) System.Int32
hInteger (64bit) System.Int64
tOSC Time Tag (64bit) System.Int64
sString UTF-8 System.String
SSymbol String UTF-8 System.String
fFloat (32bit) System.Single
dDouble (64bit) System.Double
IInfinitum System.Single (PositiveInfinity)
bBlob (byte array) System.Byte[]
BBitVector System.Boolean[]
TTrue System.Boolean (true)
FFalse System.Boolean (false)
NNull, no value null
[Begin of array type definition
]End of array type definition



OSC

OSC Syntax Diagram

Every block in this diagram declares a data item that always starts at a relative offset within the stream aligned to a 4-byte boundary. Data block that require a less number of bytes than a multiple of 4 are padded with zeros. See ​OSC 1.0.

OSC TypeTag

The TypeTag is a string that describes the data (arguments) stored in an Element. This string always starts with a comma character.

Example: One int32

",i"

Example: Two int32

",ii"

Example: Two int32 and a string

",iis"

Example: Two int32 and an array of strings

",ii[s]"

OSC Bundles

Bundles are used to schedule certain commands to a specific cluster clock. Only a few commands respect the time tag of the bundle. Such commands are marked with [T] in this documentation.

This scheduling is not intended to be used to schedule certain actions (like one might expect) - its more for synchronizing several commands to be executed with the same frame in the correct order. Commands that are scheduled too far in the future (more than 100 frames) may result in an error!

Scheduling remote commands is only possible with a valid Cluster License

OSC Address

The Remoting 4 OSC implementation doesn't use any wild-carding as specified in ​OSC 1.0. Special characters like '*' or '?' are treated as part of the element address. Any character except slash '/' is a valid character for element addresses. This is required to be able to use the addressing technique used in the Template Engine.

Strings and Symbols

Since OSC only defines ASCII as character encoding we decided to transfer Strings (s) and Symbols (S) always in UTF8 encoding. A third party OSC implementation may encounter problems with that!

Arrays

Since ​OSC 1.0 doesn't define how arrays have to be transferred we created our own implementation. Therefore this implementation is not compatible to any other implementation. Some restrictions apply:

  • No nested arrays allowed.
  • The array definition must not contain any NULL types (N)
  • A NULL (N) value of nullable types (symbols (S) or blobs (b)) cannot be used to fill an element. Only their representation of an empty instance can be transferred. (String.Empty or byte[0])
  • Strings (s) have a special encoding if a NULL has to be transferred as an array element:
    • If the string value is NULL the value "\" is transferred
    • If the string value starts with a backslash "\" it gets encoded as "\\"
      ("\Folder\File" becomes "\\Folder\File")

An array is serialized as follows:

int32 Number of bytes used for all data fields of that array. 0 for empty arrays.
int32 Number of array elements defined.
data bytes of the elements

Example Array of 3 integers ([i] 100,101,102):

0000000C           (12 bytes)
00000003           (3 elements)
00000008           (100)
00000009           (101)
0000000A           (102)

Example Array of 4 strings ([s] "A", "ABC", "", "ABCD"):

00000014           (20 bytes)
00000004           (4 elements)
41000000           ("A")
41424300           ("ABC")
00000000           ("")
41424344 00000000  ("ABCD")

Example for a mixed type array with 2 string-integer pairs ([si] {"A", 100}, {"B", 101}):

00000010           (16 bytes)
00000004           (2 elements)
41000000           ("A")
000000C8           (100)
42000000           ("B")
000000C9           (101)

As in standard OSC encoding every value has to be aligned to a 4-byte boundary. This also applies to array elements.

BitVector

A BitVector is written as an OSC blob where 1 byte holds max 8 bits (from LBS to MSB). The last byte indicates how many bits in that byte are used. Therefore an empty array results in a 1-byte blob.

The length of the blob is calculated like this: size = (nBits>>3)+1

Last byte:

# of bits bits
7 1bbbbbbb
6 01bbbbbb
5 001bbbbb
4 0001bbbb
3 00001bbb
2 000001bb
1 0000001b
0 00000001
0 00000000

Examples:

empty array:    0x01          or  0x00
4 times true:   0x1F
8 times true:   0xFF,0x01     or  0xFF,0x00
9 times true:   0xFF,0x03

TCP/IP

OSC Remoting uses TCP/IP as its transport protocol. A connection (session) has to be created and kept open until a protocol/syntax/synchronisation error occurs on either side, server or client. In that case the connection is closed and has to be re-established.

Any OSC parsing error or any other socket error will close the connection and shut down the socket. A client has to reconnect and re-issue the last request/commands that haven't yet been confirmed by a valid response. This technique ensures that both sides (server and client) are responsible for a proper session management. Neither the server nor the client tries to recover from a parsing error so the communication streams are always synchronous.

Messages

Messages are the elements transferred between client and server. There are three types of messages:

  • Requests (client to server),
  • corresponding Responses (server to client) and
  • asynchronous Responses (server to client)

Every message consists of the command name (OSC address), a list of parameters where the first one is always the Request ID (see below) and an optional IID in its address:

IID - Instance ID

Scene or Pipe related requests and responses have a special ID in their address; the so called Instance-Identifier IID. The IID is a 4-character code that uniquely identifies a scene instance or a pipe. This string is part of the command resp. OSC-address.

A Scene-IID is a four character code of the characters A to Z (upper case only). The IID is randomly created on server side (Ventuz) and is valid until a project is open. If a scene is removed from memory (unloaded) another scene may get the same IID as the unloaded scene!

Examples:

"HZGE", "RANO", "NNEQ", "AAAV"

A Pipe-IID is a four character code of the characters 0 to 9. Using a Pipe-IID resolves automatically to the instance of the layout scene of the pipe index specified in the IID. Pipes are always indexed from 0 to n (e.g.: a system with two pipes will resolve "0000" and "0001")

Examples:

"0000" resolves to Pipe #0 (always valid)
"0001" resolves to Pipe #1 (valid if pipe #1 exists)
"0002" resolves to Pipe #2 (valid if pipe #2 exists)
...

RID - Request ID

The communication is generally asynchronous. That means if a client sends a Request message it cannot assume that the next received Response message is the reply to that request. The order of the responses may be mixed or asynchronous Responses may be inserted in the reception stream. Therefore every request sent to the server has a Request ID that uniquely identifies a Request. A corresponding Response carries that ID. The client is responsible to associate the correct Response to its Request.

The client should start with a Request ID of 1 and continuously increase this ID by one for each session/connection. Values higher than 2,147,483,647 (=0x7FFFFFFF) are not allowed, so a subsequent increase should wrap around to 1.

The Request ID 0 (zero) is reserved for asynchronous Responses that are transferred from the server to the client without a specific Request (events, log messages, etc). Asynchronous response messages are marked with [async]

PI - Port Index A port index is an integer number starting from 0. Ports of a scene are always indexed from 0 to n-1. If a port index is transferred as an argument is used the normal binary int32 type (i). Port commands use the port index as part of the OSC-Address. In that case the Port is always expressed in two digits. (so the protocol is limited to address 100 ports: 00 to 99)

Examples:

/HZGE/00
/HZGE/42

Command Reference

Error

/Error

Receive errors as a response on requests.

The Error message is received as a possible result to any request send to the server. An error message indicates that the corresponding request couldn't been executed, but the connection to the server is kept intact.

Request:

None

Response:

Type Name Description
iRequestIDThe ID of the request that caused this error.
iErrorCode Code of the error.
s/NMessage A text that contains a human readable text that explains the error or NULL
s/NDetails A string that contains technical details or NULL

Error Codes:

400Unknown An unknown error occurred during command execution.
401NotSupported An unsupported operation.
402NoProject No project is loaded yet. Ventuz doesn't render.
403InvalidDataPool An unknown or invalid data pool was specified.
404InvalidIID The addressed IID doesn't exists.
405InvalidPort The addressed port doesn't exist or is locked.
406InvalidDataItem The addressed DataItem doesn't exist or is read only while trying to set its value.
407InvalidArgument Value couldn't be converted to the type of the DataItem.
408Unavailable The requested value is currently unavailable.
409CueTemplateFailed Cueing of a template failed.
410TransitionCancelled The currently cued or processed template transition has been cancelled.
411TakeFailed The Take cannot be executed because another action is already running.
412UpdateFailed Updating a data item in of port failed.
413Cancelled A batched request was cancelled

500InternalServerError An unknown error on server has occurred.
501InvalidRequest A malformed request message has been received.

General Commands

General commands and messages that can be issued / received even if Ventuz currently doesn't render or has no project loaded.

Version

/Ventuz/Version

Get or set protocol version

The Ventuz message is used to either determine if the connected peer is a Ventuz server or to check which protocol version it supports. The message itself only uses standard OSC types and is therefore upward compatible with all future versions. A client should always try to downgrade a newer server implementation to the supported protocol version of the client in order to work properly. The server will either confirm the downgrade with a proper response or reject it with an error.

Request:

Type Name Description
iRequestIDThe ID of the request.
i?Version Sets the version if specified. Otherwise query the version only.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
iVersion Protocol version the server will use.

Errors:

NotSupported The requested version is unsupported.

Info [async]

/Ventuz/Info

Get general Ventuz process information

Retrieve general information about the running Ventuz server. If the client is connected to a Ventuz Designer the Project ID may change during a session. In this case the sever will send an asynchronous /Ventuz/Info message to notify the client about a project change. A client should release all its scene references and states in such a case.

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
iRequestIDThe ID this response belongs to. 0 if the response was sent without request.
iiiiVersion Ventuz Version (e.g. 4.02.01.00)
sMachineName Name of the machine (Machine Config)
iMode mode running Ventuz software.
sEditionName Text representation of the Ventuz Edition. It may contain additional information such as Beta, Pre4, etc.
iGroupID Group ID of the machine (Machine Config)
iMachineID Machine ID of the machine (Machine Config)
iiRate num/den Frames per second expressed in two integer values: numerator and denominator. (e.g. 60000/1001 = 59.94fps)
[i]PipeModesArray of pipe modes describing the type of all available render pipes starting from index 0. A dual-pipe machine will return two array elements.
iProcessID Windows Process ID of the server (Ventuz) process.
bProcessGUID A 16 byte blob containing a Guid that is generated for each Ventuz process instance.
sSystemID A string that uniquely identifies a physical machine. (e.g. Windows Installation ID)
bProjectID A 16 byte blob the ID of the loaded Ventuz Project. An empty Guid indicates that no project is currently loaded.
s/NProjectName The name of the loaded project or null if no project is loaded

Errors:

(none)

Ventuz Modes:

1Runtime
2Runtime (VPR)
3Designer

LogLevel

/Ventuz/LogLevel

Get or set log level

Gets or sets the level of log messages that the clients wants to receive asynchronously. The default log level for new sessions is None. After a new connection is created the client should set the desired log level before issuing any other commands.

Request:

Type Name Description
iRequestIDThe ID of the request.
i?LogLevel Sets the log level if specified. Otherwise query the current log level.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
iLogLevel Current log level.

Errors:

InvalidArgument The requested log level is invalid.

Log Levels:

0None
10Fatal
20Error
30Warning
40Info
50Debug

Log [async]

/Ventuz/Log

Receive log message, response only

A Log message is received whenever Ventuz logs an entry which matches the log level set by the LogLevel command.

Request:

None

Response:

Type Name Description
iRequestIDAlways 0.
iLogLevelLog level of this message.
s/NModule Module reference to the program module that caused that log entry or NULL.
s/NMessage Message text of that entry or NULL.

Errors:

None, since there is no request for the async /Ventuz/Log response.

Performance request

/Ventuz/Perf

Request performance data

Requests sending of performance data for a certain number of consecutive frames. After processing the request Ventuz will send an async /Ventuz/Perf/Frame message back for each frame you requested.

Request:

Type Name Description
iRequestIDThe ID of the request.
i!Frames Number of frames to get performance data for

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
i!Frames Number of frames perf messages will get sent.

Errors:

InvalidArgument The requested frame count is invalid.

Performance frame output [async]

/Ventuz/Perf/Frame

Receive performance message, response only

A /Perf/Frame message is sent by Ventuz for a certain number of video frames after getting a /Perf request. It contains the frame's statistics output and performance timing data encoded as a JSON object.

Request:

None

Response:

Type Name Description
iRequestIDAlways 0.
sMessage Performance data in JSON format

Errors:

None, since there is no request for the async /Ventuz/Perf/Frame response.

Options

A Ventuz process (Designer or Runtime) has several options that are independent from the loaded project. But the number and type of available options may depend on the actual configuration (Ventuz Configuration, Audio and Video configuration. The Option commands allow a remote client to receive the DataModel of all available options of the connected Ventuz process as well as getting and setting the values.

DataModel

/Ventuz/Options/DataModel

Gets the DataModel of all Ventuz Live Options such as Genlock delay, ShowPointer, etc

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
sDataModelXMLAn XML string that contains the Data Model.

Errors:

None

DataItem

/Ventuz/Options//<DataItem> 

Gets or sets the value of a Live Option.

The <DataItem> part of the address is the full path of the data item. Live options are always rooted and have no named DataModels. Therefore the address of the DataItem always start with a '.'

The double-slash // between /Ventuz/Options and <DataItem> is mandatory!

Example Address for a Live Option:

/Ventuz/Options//.AVC.Streams.DX_0.BorderColor

Get or set option DataItems are not scheduled they are always executed synchronously.

Request:

Type Name Description
iRequestIDThe ID of the request.
any?ValueAll supported types are allowed.
If specified and a Property is addressed the value of that property is set. If no value is specified the property value is queried and attached to the response. A required type conversion is performed when necessary using the invariant culture when converting from or into strings.
If a trigger is addressed the optional value is interpreted as int and the value is attached to the trigger. A trigger value of zero is the default.

Response:

Type Name Description
iRequestIDThe ID of the request.
any? Value Both, get and set Property requests fill this value with the actual value. For set requests the value is queried right after the value has been set. The value may differ from the requested value!
Call Trigger requests do not fill this value.

Errors:

InvalidDataItem The addressed DataItem doesn't exist or is read-only while trying to set its value.
InvalidArgument The type couldn't be converted into the target type, the value is invalid for that DataItem, or setting the property failed in general.

Project Commands

Project related commands are only valid if a project is loaded and the Ventuz Renderer is running. Issuing a project command if no project is loaded will cause a NoProject error message to be returned.

Files

/Ventuz/Files

Get all files of a data pool

Retrieve all files of a specified data pool. A data pool usually refers to a sub folder with the Ventuz project folder - but it could be delegated to another location on the local disk, a network folder or a database. Files returned on this request contain the full relative path and the original file extension. The data pool Scenes doesn't return the file extension so the returned scene files matches directly the scene identity.

Request:

Type Name Description
iRequestIDThe ID of the request.
sDataPoolThe Data Pool to be queried as case insensitive string.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
[s]Files An array that contains all files found in that data pool or an empty array.

Data Pools

Misc Miscellaneous files.
Project Project related files.
Scenes Scene files.
Images Image files.
Textures Texture files. (dds)
Audio Audio files.
Movies Movie files.
Data Data files.
Geometries Geometry files. (vzm)
Shaders Shader related files.
Scripts Script related files.
Fonts Font files.
Sounds Sound files.
Documentation Documentation files.
Assets Asset files.

Errors:

NoProject If a clock is requested but Ventuz doesn't render, because no project is loaded yet.
InvalidDataPool If an unknown data pool is queried.

SceneModel

/Ventuz/SceneModel 

Get complete information about all data models and templates of a scene stored on disk

Gets the entire XML SceneModel description on request. The SceneModel is read directly from disk. The actual scene is not loaded into memory.

Request:

Type Name Description
iRequestIDThe ID of the request.
sSceneIdentityThe Scene Identity (filename without extension) of the scene to be loaded.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
sSceneModelXMLAn XML string that contains the Scene Model.

Errors:

NoProject No project is loaded.
Unavailable The Scene file has been found but it doesn't contain a SceneModel (saved with a Ventuz version below Ventuz 4)

Clock

/Ventuz/Clock

Get the current renderer clock

Get the current rendering time. The returned value is the number of frames in its fps time base returned by /Ventuz/Info. The returned time has no relation to the time of the day in reality! Please note that the returned value could lie in the past at the time of reception! The FPS parameters defines the duration of a frame like this:

 fps.divisor / fps.dividend = frame.duration 

Examples:

 1001 / 60000 = 0.0166833333
 1000 / 60000 = 0.0166666666
 1000 / 50000 = 0.0200000000

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
hClockThe current value of the cluster clock.

Errors:

NoProject If a clock is requested but Ventuz doesn't render, because no project is loaded yet.

DataModel

/Ventuz/DataModel

Gets the DataModel of the Project Data.

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
sDataModelXMLAn XML string that contains the Project Data Model.

Errors:

NoProject No project is loaded.

DataItem [T]

/Ventuz//<DataItem> 

Gets or sets the value of a Project Data Property, calls a Project Trigger.

The <DataItem> part of the address is the full path of the data item within the scene. It follows the addressing rules described in Template Engine. Project Data doesn't support nested data sets (sub-templates). Therefore a project data address always starts with a leading dot ('.')

The double-slash // between /Ventuz and <DataItem> is mandatory!

Example Address for a simple DataItem on scene level:

/Ventuz//.Scores.Home

The time value of the OSC Bundle is only honored on set-requests. If a DataItem is just read the time value is ignored

Request:

Type Name Description
iRequestIDThe ID of the request.
any?ValueAll supported types are allowed.
If specified and a Property is addressed the value of that property is set. If no value is specified the property value is queried and attached to the response. A required type conversion is performed when necessary using the invariant culture when converting from or into strings.
If a trigger is addressed the optional value is interpreted as int and the value is attached to the trigger. A trigger value of zero is the default.

Response:

Type Name Description
iRequestIDThe ID of the request.
any? Value Set Property requests do not fill this value.
Get Property requests fill this value with the requested value.
Call Trigger requests do not fill this value.
Async Trigger callbacks fill this value with the attached argument of that trigger.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or the scene to be assigned is invalid.
InvalidDataItem The addressed DataItem doesn't exist or is read-only while trying to set its value.
InvalidArgument The type couldn't be converted into the target type or the value is invalid for that DataItem.

Batch [T]

/Ventuz/Batch 

Starts or commits/cancels a batch of set DataItem requests.

Batches combines multiple set DataItem requests into one single atomic operation that is either committed or canceled. The first request (no argument) is used to create a BatchID for the current connection (session). The returned BatchID is a negative number used as timestamp for bundled requests that sets any DataItems. Finally the batch is comitted or canceled with a second Batch request along with the BatchID and the Commit parameters. All set commands cached on server side are executed at the time of the second Batch request at the specified timestamp in the OscBundle.

All responses to each set DataItem request are received after the batch has been committed. If the batch has been cancelled all requests will receive an error Cancelled

All batched requests are interpreted on execution. Therefore requests that address DataItem using the port-addressing will apply the the scene that is assigned to the addressed port on execution!

Request:

Type Name Description
iRequestIDThe ID of the request.
h?BatchIDIf specified the batch to commit or cancel (see next parameter)
T/F?CommitOnly valid if the previous parameter BatchID is specified. True = commit, False = cancel

Response:

Type Name Description
iRequestIDThe ID of the request.
hBatchIDThe return BatchID is used as timestamp (OscBundle) for set DataItem request.

Errors:

InternalServerError Batch failed

Pipe Commands

Pipe commands are Project Commands that address render pipes only. Issuing a pipe command if no project is loaded will cause a NoProject error message to be returned.

Info [async]

/<PipeIID>/Info

Get information about a render pipe

Retrieve the shared memory information of a render pipe. Only render pipes that have the MemoryGPU flag are valid addresses for this request. All other pipes will return a NotSupported error. A SharedMemoryInfo message is returned as an asynchronous response if the share information has changed during runtime (device lost/reset, window resized, project closed, etc)

Request:

Type Name Description
iRequestIDThe ID of the request.

Response

Type Name Description
iRequestID The ID this response belongs to. 0 if the response was sent without request.
iMode Mode for the Pipe.
hGpuShareHandle Contains adapter and share handle of the pipe.
iiWidth, Height Size in pixels.
iiRate num/den Refresh rate in numerator/denominator notation.
iPixelFormat Pixel format of the data
i/NLayout IID IID of the Layout scene in this Pipe, null (N) if no project is loaded.

Errors:

NoProject No project is loaded.
NotSupported The addressed pipe doesn't support shared memory
InvalidIID The addressed pipe doesn't exist or is invalid.

Pipe Flags

1Graphics Output via graphics board
2Video Output via video hardware or network
3OffScreen No output - just shared surface

Pixel Formats

0A8R8G8B8 ARGB 8 bit per component, 32 bit per pixel
1A16B16G16R16 ABGR 16 bit per component, 64 bit per pixel
2A16B16G16R16F ABGR 16 bit float per component, 64 bit per pixel
3A32B32G32R32F ABGR 32 bit float per component, 128 bit per pixel

GPU Share Handle

This 64bit number contains the adapter ordinal used to render the pipe in the upper 32 bits. The lower 32bit contains the shared texture handle of the pipe if supported (0 otherwise).

To create the shared counterpart of this texture create a Direct3D 9ex device on the specified adapter ordinal (upper 32 bits of the GpuShareHandle). Then create a texture with the following arguments.

  • Width = Width
  • Height = Height
  • Levels = 1
  • Usage = D3DUSAGE_RENDERTARGET
  • Format =
    • (PixelFormat 0): D3DFMT_A8R8G8B8
    • (PixelFormat 1): D3DFMT_A16B16G16R16
    • (PixelFormat 2): D3DFMT_A16B16G16R16F
    • (PixelFormat 3): D3DFMT_A32B32G32R32F
  • Pool = D3DPOOL_DEFAULT
  • pSharedHandle = lower 32 bits of the GpuShareHandle

If an Info with a different size, a different or zero share handle is received the texture has to be released.

Shared Surfaces a not synchronized with the Ventuz Renderer are only intended for previews. The remotimng client should not lock the shared surface longer as required and should not perform any read-backs to CPU memory. Those action will interfere the rendering may cause frame drops!

Snapshot Pipe

/<PipeIID>/Snapshot

Get a screen-shot of a render pipe

Gets a snapshot of the addressed pipe and transferred as an image. Please note that this command is not real-time capable and the rendering may stutter while grabbing an image!

Request:

Type Name Description
iRequestIDThe ID of the request.
iImageFormat The Image Format to be transferred.
iiSizeThe image will be scaled down or up to the specified size (width and height in pixels). A size of 0,0 will maintain the original size.
iiiiRectangleSub area of the image or 0,0,0,0 for the entire image
iFilterFilter to be used when scaling down the image.
T/FAlphaIf true the image will contain the alpha channel if the specified image format supports it)

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
bImage A blob containing the image.

Errors:

NoProject No project is loaded.
NotSupported The addressed pipe doesn't support snapshots
InvalidIID The addressed pipe doesn't exist or is invalid.
InvalidArgument The called provided invalid argument. See error details.

Image Formats

0BMP Windows Bitmap, uncompressed
1PNG Portable Network Graphics, loss-less compressed
2TIF Tagged Image File, loss-less compressed
3JPG Jpeg, lossy compressed (no alpha support)

Image Filters

0None No Filter
1Low Medium but fast (AreaAverage)
2High Best quality but slow (Lanczos)

Scene Commands

Scene commands are Pipe Commands that can address scene instances or pipes. Issuing a scene command if no project is loaded will cause a NoProject error message to be returned.

Load

/<IID>/Load

Load a scene into memory

Loads a scene into memory. Issuing a Load request always returns a valid IID. Subsequent Status messages informs the client about the progress and success of the load. The addressed IID specifies the scene that actually performs load. If a pipe is specified the currently layout scene of that pipe performs the load. If a scene is specified that scene performs the load.

Request:

Type Name Description
iRequestIDThe ID of the request.
sSceneIdentityThe Scene Identity (filename without extension) of the scene to be loaded.
iLoadFlags Indicates how a scene is loaded.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
iIID IID of the loaded scene.
T/FIsNewTrue if the scene has been loaded as a new instance. False if the scene has been re-used from memory.

Note that you will receive two responses for a Load request: 1. when scene loading starts 2. when scene loading completes!

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or is invalid.
InvalidArgument The specified Load Flags are invalid

Load Flags

The following flags can be or'ed together. At least one flag must be set.

0x01New A new instance is loaded if re-usage of an existing instance was either not allowed or no matching scene has been found.
0x02Existing An existing instance is allowed to be re-used. If no scene is found and the New flag is set a new instance is loaded.
0x04Unused An existing instance is selected only if it is not assigned to a port. This flag is only valid in combination with Existing

Status [async]

/<IID>/Status

Get status of a scene

Gets the status of a scene instance specified by the IID in the address. Such messages are also sent asynchronously without specific request - hence a client receives status changes of all scenes in memory!

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
iRequestIDThe ID this response belongs to. 0 if the response was sent without request.
iStatusDetailed information about the loaded and validation state of the scene. See below.
sSceneIdentityThe Scene Identity of the scene.
i?IID IID of the scene that owns the port where this scene currently assigned to. If this field exists the next field is also existent.
i?PID Port index of the port where this scene currently assigned to.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or is invalid.

Status

0x000000??Loading progress (0-255)
0x00000100Loaded.
0x000001??Validating progress (0-255)
0x00000300Validated and ready to use.
0x80010000Scene has been unloaded from memory and cannot longer be addressed.
0x80020000Load Error. Scene handle is invalid and should be released.

Scenes

/<IID>/Scenes

Get loaded (in-memory) scenes

Retrieve all scenes currently loaded in memory. It optionally requests only scenes that has been loaded by the addressed IID or all scenes (global).

Request:

Type Name Description
iRequestIDThe ID of the request.
T/FGlobalIf set to true all scenes in memory are returned. If false only scene loaded by the addressed IID are returned.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.
[i]IID-ListArray of IIDs.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or is invalid.

Validate

/<IID>/Validate

Validates a scene

Validate the addressed IID. Status messages are received during the validation process.

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or is invalid.

Release

/<IID>/Release

Releases a loaded scene

Releases the addressed IID. Only scenes loaded by the remoting can be released. Releasing a scene doesn't necessarily unload it from memory, because it still could be used by a scene port or it is opened in the Ventuz Designer. One could try to remove the scene from its port before issuing a Release command in order to unload it. Status message will be sent if the scene gets unloaded due to a Release.

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
iRequestIDThe ID this response belongs to.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist.

Ports [async]

/<IID>/Ports

Get information about the ports of a scene

Enumerate the ports of the addressed scene. A synchronous response is sent if the ports of a scene have been changed. This usually only happens if the scene is currently opened in Ventuz Designer and the ports are modified on the fly. Scenes in the Ventuz Runtime never change their port list.

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
iRequestIDThe ID this response belongs to. 0 if the response was sent without request.
[si]Port InfoA array of name and Port Flags

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or is invalid.

Port Flags

0x0001Locked Port is locked and its scene assignment cannot be changed via remoting.
0x0002ManualTemplate The port is a manual template port (Template Layer or Template Port) and should be controlled by its Data property
0x0004Layer The port is a Scene Layer or a Template Layer.

SceneModel [async]

/<IID>/SceneModel 

Get complete information about all data models and templates of a scene in memory

Gets the entire XML SceneModel description on request. The response is also transferred if the scene model has been modified by the user. This can only happen if connected to Ventuz Designer and the operator is modifying the template structure or meta data.

Request:

Type Name Description
iRequestIDThe ID of the request.

Response:

Type Name Description
iRequestIDThe ID this response belongs to. 0 if the response was sent without request.
s?SceneModelXMLAn XML string that contains the XAML representation of the Scene Model. This argument only exists in responses to explicit requests!

Please note that the async response does not provide the SceneModelXML argument. The actual scene model is only transferred on an explicit request since the data volume can exceed multiple kilo- or megabytes'''

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or is invalid.
Unavailable The addressed IID doesn't have a scene model.

DataItem [T] [async]

/<IID>//<DataItem> 

Get or sets the value of a Property, calls a Trigger or receives async triggers.

The <DataItem> part of the address is the full path of the data item within the scene. It follows the addressing rules described in Template Engine. Please note async response always uses the DataModel-qualified addressing!

The double-slash // between <IID> and <DataItem> is mandatory!

Example Address for a simple DataItem on scene level:

/XGTQ//.PositionX

The time value is only honored on Set-requests. If a DataItem is just read the time value is ignored

Request:

Type Name Description
iRequestIDThe ID of the request.
any?ValueAll supported types are allowed.
If specified and a Property is addressed the value of that property is set. If no value is specified the property value is queried and attached to the response. A required type conversion is performed when necessary using the invariant culture when converting from or into strings.
If a trigger is addressed the optional value is interpreted as int and the value is attached to the trigger. A trigger value of zero is the default.

Response:

Type Name Description
iRequestIDThe ID of the request.
any? Value Set Property requests do not fill this value.
Get Property requests fill this value with the requested value.
Call Trigger requests do not fill this value.
Async Trigger callbacks fill this value with the attached argument of that trigger.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or the scene to be assigned is invalid.
InvalidDataItem The addressed DataItem doesn't exist or is read-only while trying to set its value.
InvalidArgument The type couldn't be converted into the target type or the value is invalid for that DataItem.

DataItem Type Mapping

DataItem C-Sharp OSC Notes
Float float f
Double double d
Integer int i
Boolean bool T/F TRUE or FALSE
String string s/N string or NULL
Enum string s
Color Color i 32-bit ABGR (0xaabbggrr)
Visual Uri s
Asset Uri s
FloatArray float[] [f]
DoubleArray double[] [d]
IntegerArray int[] [i]
BooleanArray bool[] B encoded bit array
ByteArray byte[] b Blob
StringArray string[] [s] null-strings within array has a special encoding. see Arrays
Animation Control

If a DataItem represents an Animation Control property it accepts write commands to control the animation logic of this animation.

Only control properties of animation can be controlled. Animation Groups are not controllable this way! The Control property of the Animation node must be connected to the Scene Data, but must not be checked as part of the Scene Template!

The remote caller can send animation control commands as a string. The server will send a response to the set command with the current status. To query the current status without issuing a new command a null-string (N) has to be send.

Reading the current animation status as well async animation status changes notification is not implemented yet!

To clear/remove the current command an empty string ("") has to be sent.

There are five possible commands. These commands can be combined into a concatenated string while any white spaces are ignored:

STATE

"S<StateID>"

Jumps to an Animtion State by its ID>0. Commands issued with zero or any negative value for StateID are ignored.

CONNECTION

Plays an Animation Connection by its ID.

A negative value for the ConnectionID plays the connection backwards.

"C<ConnectionID>"

If the speed/position is specified a positive value it is interpreted as a speed factor of the original speed (1.0 = 100%) and the animations is played (default).

If the value is between 0.0 (0%) and -1.0 (100%) the time is set to the relative position with the connection and the animation is not played. (scrub-mode)

"C<ConnectionID>:<speed/position>"

If the third argument speed is specified it is used as speed and the second argument is always interpreted as position. The connection will be played the specified position and speed.

"C<ConnectionID>:<position>:<speed>"

WAIT

"W[<timeout>]"

Waits for a certain amount of seconds before continue. A value of 0.0 waits forever. Any wait can be released by sending a Proceed command. If no timeout value is specified a value of 0.0 is used.

ROUTE

"R<StateID>[:<timeout>]"

The route command will automatically generate Connection and Wait commands to find the best route to a certain state. A route command could also result in State commands if no proper route could be found. Every generated Connection or State command will have its corresponding Wait to await the expected state to be reached.

If timeout is specified an additional Wait command between every section of a route is inserted.

State, Connection, Wait and Route command can be combined to a batch that can be controlled by the Proceed commands. If a new batch is assigned the previous one will be deleted. An empty batch ("") is used to remove/clear the current one.

Example:

"S6 C3 W7 W C-4:2.0 W8 W R6 W6"
  • Jump to State 6
  • Play Connection 3 at 100% speed
  • Wait for State 7 to be reached
  • Wait forever (a Take command has to be send)
  • Play Connection 4 backwards at 200% speed
  • Wait for State 8 to be reached
  • Wait forever (a Take command has to be send)
  • Route to State 6 and wait for state 6 to be reached.

PROCEED

"P"

A Proceed command interrupts any pending time-based wait. Multiple issued Proceed commands are cached and will release every next time-based wait immediately. If a batch is cleared/removed or a batch reaches its end any cached Proceed commands is dropped.

Port Commands

Port commands are Scene Commands that address a scene instances (IID) and a port of that scene by its index (PI). Issuing a port command if no project is loaded will cause an NoProject error message to be returned. If the IID is invalid an InvalidIID error is returned. If the Port doesn't exist or the port is tried to be assigned but the port is locked an InvalidPort error is returned.

Status [T]

/<IID>/<PI>/Status

Get/Set scene and/or active state of a port

Gets the current port status or sets the port's scene assignment and/or activate/deactivates a port. The Port is addressed as a part of the OSC-Address. See Port Index

The time value is only honored on Set-requests. If a DataItem is just read the time value is ignored

Request:

Type Name Description
iRequestIDThe ID of the request.
i/N?IIDIf specified sets (i) or clears (N) the port
T/F?ActiveIf specified activates/deactivates the port

Response:

Type Name Description
iRequestIDThe ID this response belongs to. 0 if the response was sent without request.
i/NIIDThe scene currently assigned to this port or null if no scene is assigned.
T/FActivePort is active (true) or inactive (false)

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or the scene to be assigned is invalid.
InvalidPort The addressed port doesn't exist or is locked.

Cue [T]

/<IID>/<PI>/Cue

Cues a Template-Transtion based on the current state

The Cue command prepares a template for being activated or deactivated based on the current status. The transition is immediately initialized and ready to be taken by the Take command.

Request:

Type Name Description
iRequestIDThe ID of the request.
iOptionsCue option flags
s/NDataThe Template-Data to be cued/uncued. If data is null or empty all active templates on the addressed port are uncued.
bIDA 16-byte blob that contains a Guid to identify the Cue for further Take commands.

Response:

Type Name Description
iRequestIDThe ID this response belongs to. 0 if the response was sent without request.
[sf][TakeInfo]An array of string/float pairs that contain the name and the duration is seconds of the takes. The length of the array describes the number of required Take commands to complete the entire transition.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or the scene to be assigned is invalid.
InvalidPort The addressed port doesn't exist or is locked.
CueTemplateFailed The calculation of the transition failed. See error details.
Failed The initialization of the transition failed. See error details.
TransitionCancelled During the initialization phase another Cue command has been received that overwrote the current one.

Options

0x0000None Default behavior
0x0001JumpOut Any out-animations of on-air template are skipped
0x0002JumpIn Any in-animations of the requested template are skipped (preview)
0x0004Deactivate The addressed template or host is cued for deactivation. If data is null a deactivation is forced.
0x0008SingleTake The template engine will no longer wait for a take at each intermediate template state but automatically continue with the next transition until the final template state is reached.
0x0010Release The template engine will release previous scene(s) if the transition requires to load and set another scene to the port.
0x0020WithDeactivation If set the template will be cued for activation and deactivation. This flag is ignored if the cue describes a deactivation only.
0x0040IgnoreCurrentState If set the template engine will ignore the current state of the current scene so any running transition or any presented templete will be dropped.

TemplateData

The Data parameters are transferred as a string that can contain several versions of addressing a template or a template host:

  • Template Data Instance (Page)
    • in XML
    • in JSON
    • in BASE64
  • absolute Uri
    • Uri of a Template
    • Uri of of a Template-Host
    • Uri of a Visual
      • Image
      • Texture
      • Movie
      • Scene
  • null or empty string

See TemplateEngine for details.

Take [T]

/<IID>/<PI>/Take

A previously cued template/transition will be animated to the next stop/wait of the transition. This command accepts the transition-Guid used to cue a transition. The number of required Take commands to complete the transition depends on the length of TakeInfo array returned by Cue. A Transition can only the executed in forward order - no take can be skipped and the cue transition can not be changed. If a transition has to be cancelled a newly issued Cue command will cancel it and calculates a new transition based on the current state.

Request:

Type Name Description
iRequestIDThe ID of the request.
bIDA 16-byte blob that contains the Guid to identify the cued transition.

Response:

Type Name Description
iRequestIDThe ID this response belongs to. 0 if the response was sent without request.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or the scene to be assigned is invalid.
InvalidPort The addressed port doesn't exist or is locked.
TakeFailed The take failed. See error details.
Failed Any other error during the internal processing occurred. See error details.
TransitionCancelled The transition tried to be taken has been cancelled.

DataItem [T]

/<IID>/<PI>//<DataItem> 

Get or sets the value of a Property of a Scene that is currently assigned to a Port

The <DataItem> part of the address is the full path of the data item within the scene. It follows the addressing rules described in Template Engine. Please note async responses uses always the DataModel-qualified addressing!

The DataItem message via port is used for MultiPorts (see Remoting 4 documentation) to address values that are currently loaded into a Port of a Cluster.

The double-slash // between <IID> and <DataItem> is mandatory!

Example Address for a simple DataItem on scene level:

/0000/00//.PositionX
/0000/00//Host/Host/Template.Folder.PositionX

The time value of the OSC Bundle is only honored on Set-requests. If a DataItem is just read the time value is ignored

Request:

Type Name Description
iRequestIDThe ID of the request.
any?ValueAll supported types are allowed.
If specified and a Property is addressed the value of that property is set. If no value is specified the property value is queried and attached to the response. A required type conversion is performed when necessary using the invariant culture when converting from or into strings.
If a trigger is addressed the optional value is interpreted as int and the value is attached to the trigger. A trigger value of zero is the default.

Response:

Type Name Description
iRequestIDThe ID of the request.
any? Value Set Property requests do not fill this value.
Get Property requests fill this value with the requested value.
Call Trigger requests do not fill this value.
Async Trigger callbacks fill this value with the attached argument of that trigger.

Errors:

NoProject No project is loaded.
InvalidIID The addressed IID doesn't exist or the scene to be assigned is invalid.
InvalidDataItem The addressed DataItem doesn't exist or is read-only while trying to set its value.
InvalidArgument The type couldn't be converted into the target type or the value is invalid for that DataItem.
UpdateFailed Updating a DataItem in of port failed.

See also:
  • Remoting Overview
  • Remoting via Websocket
  • Deprecated Remoting APIs

« Previous:
» Index «
Next: »
Copyright 2022 Ventuz Technology