File Format Definition

Describes the GDTF file format and the included files.

File Format Definition

To describe the device type, a zip file with the extension “*.gdtf” is used. The archive shall contain a description XML file and resource files. Some of the resource files are located in a folder structure. There are two folders defined: “./wheels” and “./models”. The folder “./models” has subfolders for a better structural overview:

  • ./models/3ds
  • ./models/gltf
  • ./models/svg

The description.xml file contains the description of the device type and all DMX modes as well as all firmware revisions of the device.

./description.xml
./thumbnail.png
./thumbnail.svg
./wheels/gobo1.png
./wheels/gobo2.png
./models/3ds/base.3ds
./models/3ds/yoke.3ds
./models/gltf/base.glb
./models/gltf/yoke.glb
./models/3ds_low/base.3ds
./models/3ds_low/yoke.3ds
./models/gltf_low/base.glb
./models/gltf_low/yoke.glb
./models/gltf_high/base.glb
./models/gltf_high/yoke.glb
./models/3ds_high/base.3ds
./models/3ds_high/yoke.3ds
./models/svg/base.svg
./models/svg/yoke.svg
./models/svg_side/base.svg
./models/svg_side/yoke.svg
./models/svg_front/base.svg
./models/svg_front/yoke.svg

The ZIP archive name is specified as follows: <ManufacturerName>@<FixtureTypeName>@<OptionalComment>

Example: generic@led@comment

UTF-8 has to be used to encode the XML file. Each XML file internally consists of XML nodes. Each XML node could have XML attributes and XML children. Each XML attribute has a value. If a XML attribute is not specified, the default value of this XML attribute will be used. If the XML attribute value is specified as a string, the format of the string will depend on the XML attribute type. All XML attribute types are specified in Table 1.

Table 1 — XML Attribute Value Types
Value Type Format Description
Uint Integer Unsigned integer
Int Integer Signed integer
Hex Integer Number in hexadecimal notation; Default value: 0
Float float Floating point numeric; Separator: “.”
String Literal Text
Name restricted Literal Unique object names; The allowed characters are listed in Annex C Default value: object type with an index in parent.
Date yyyy-mm-ddThh:mm:ss Date and time corresponding to UTC +00:00 (Coordinated Universal Time): yyyy – year, mm – month, dd – day, hh – hours (24 format), mm – minutes, ss – seconds. Example: “2016-06-21T11:22:48”
Node Name.Name.Name… Link to an element: “Name” is the value of the attribute “Name” of a defined XML node. The starting point defines each attribute separately.
ColorCIE floatx, floaty,floatY CIE color representation xyY 1931
Vector3 {float,float,float} Vector with 3 float components
Matrix {float,float,float,float}
{float,float,float,float}
{float,float,float,float}
{float,float,float,float}
The transformation matrix consists 4 x 4 floats. Stored in a row-major order. For example, each row of the matrix is stored as a 4- component vector. The mathematical definition of the matrix is in a column-major order. For example, the matrix rotation is stored in the first three columns, and the translation is stored in the 4th column. The metric system consists of the Right- handed Cartesian Coordinates XYZ:
X – from left (-X) to right (+X),
Y – from the outside of the monitor (-Y) to the inside of the monitor (+Y),
Z – from bottom (-Z) to top (+Z). 0,0,0 – center base.
Rotation {float, float, float}
{float, float, float}
{float, float, float}
Rotation matrix, consist of 3*3 floats. Stored as row-major matrix, i.e. each row of the matrix is stored as a 3-component vector. Mathematical definition of the matrix is column-major, i.e. the matrix rotation is stored in the three columns. Metric system, right-handed Cartesian coordinates XYZ:
X – from left (-X) to right (+X),
Y – from the outside of the monitor (-Y) to the inside of the monitor (+Y),
Z – from the bottom (-Z) to the top (+Z).
Enum Literal Possible values are predefined.
DMXAddress Int, Alternative format: Universe.Address Absolute DMX address (size 4 bytes); Alternative format: Universe – integer universe number, starting with 1; Address: address within universe from 1 to 512. Format: integer
DMXValue Uint/n for ByteMirroring values
Uint/ns for ByteShifting values
Special type to define DMX value where n is the byte count. The byte count can be individually specified without depending on the resolution of the DMX Channel.
By default byte mirroring is used for the conversion. So 255/1 in a 16 bit channel will result in 65535.
You can use the byte shifting operator to use byte shifting for the conversion. So 255/1s in a 16 bit channel will result in 65280.
GUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unique ID corresponding to RFC 4122: X–1 digit in hexadecimal notation. Example: “308EA87D-7164-42DE-8106-A6D273F57A51”.
Resource String File name of the resource file without extension and without subfolder.
Pixel Pixel Integer value representing one Pixel inside a MediaFile. Pixel count starts with zero in the top left corner.

The first XML node is always the XML description node: <?xml version="1.0" encoding="UTF-8"?>

The second XML node is the GDTF node. The attribute of this node is the DataVersion: <GDTF DataVersion="1.2">

The example above shows the XML node for GDTF version 1.2.

Table 2. GDTF Node Attributes

XML Attribute Name Value Type Description
DataVersion UInt.UInt The DataVersion attribute defines the minimal version of compatibility. The Version format is “Major.Minor”, where major and minor is Uint with size 1 byte.