User Tools

Site Tools


Shape Definitions

Based on Pattern Definitions as building blocks, shape definitions simply advise the software to apply a certain curve as modulator to a certain attribute. A few parameters can be set.

Simple Shapes

A simple shape definition may look like this:

  <Shape ID="26" Name="Dimmer Pulse 1:1" Group="I">
    <Function ChannelID="Dimmer" PatternID="Pulse 1:1" Amplitude="1000" Phase="0" Speed="29"/>

There is the outer <Shape … element with the properties ID, Name, and Group.

And there is one or more childs: the <Function … elements with ChannelID, PatternID, Amplitude, Phase, and Spread.

The <Shape ...> element

The <Shape …> element is the shape definition - each shape which you can find in Titan has its own definition in the shapefile.

  • ID seems to be a unique number - it is assumed that each shape needs to have such a number
  • Name is the name of the shape which is ultimately shown in Titan
  • Group , denoted by a single letter, refers to the attribute group this shape is assigned to. This defines if the shape is displayed in Titan depending from the attribute group currently selected. The group to which a particular attribute belongs is set in the personality, see attribute_group. At the moment, available attribute groups are
    • I ⇒ Intensity (Dimmer, Shutter)
    • P ⇒ Position
    • C ⇒ Colour
    • G ⇒ Gobo
    • B ⇒ Beam (Focus, Iris, Frost etc.)
    • E ⇒ Effect
    • S ⇒ Special/Speed

The <Function ...> element

This is the reference to the pattern(s) used in this particular shape.

  • ChannelID refers to the attribute id of the attribute this shape is meant to run on. Attribute ids are set in the personality file.
  • PatternID defines the pattern which is to run in this shape, see Pattern Definitions
  • Amplitude is the size this shape is initially set to. This can be altered at run time. In most cases Amplitude is set to 1000 which translates to 100%.
  • Phase is the phase offset in degrees (i.e. a value from 0 to 360). This defaults to 0 for simple shapes (with one pattern only) but may be different for shapes with more than one pattern running. Essentially you could acchieve the same thing with several simple shapes when adjusting the shape offset in Titan and restarting the shapes: offset is how far one pattern is shifted in its timeline against another pattern.
  • Speed is the speed (in BPM) this shape is initially set to. This can be altered at run time. Sensible speed values may range from something like 4 to 30.

Complex Shapes

Of course it is also possible to combine multiple patterns - running across different attributes - into one shape. While you could even create a flyout shape (by combining a tilt and a dimmer shape), things like this are better - and more versatile - done using keyframe shapes (from v10 onwards). However, in particular for colours or multicell fixtures, complex shapes are a good solution.

The Circle

The most prominent example is the circle shape:

  <Shape ID="1" Name="Circle" Group="P">
    <Function ChannelID="Pan" PatternID="Sine" Amplitude="200" Phase="270" Speed="15"/>
    <Function ChannelID="Tilt" PatternID="Sine" Amplitude="200" Phase="0" Speed="15"/>

Both, pan and tilt, are modulated with a sine function which is offset in one dimension by 270 degrees - we might have used the cosine function instead which, by definition, is an offset sine. However, both patterns are running at the same size and speed, making for a circle (if there is no flip involved - which would make this an 8).

The Rainbow

This is an example for running three patterns on three attributes which are related: Cyan, Magenta, and Yellow.

  <Shape ID="10" Name="Rainbow" Group="C">
    <Function ChannelID="Cyan" PatternID="Cosine" Amplitude="1000" Phase="0" Speed="29"/>
    <Function ChannelID="Magenta" PatternID="Cosine" Amplitude="1000" Phase="120" Speed="29"/>
    <Function ChannelID="Yellow" PatternID="Cosine" Amplitude="1000" Phase="240" Speed="29"/>

We have cosine patterns running on all three attributes, but offset by 120 degrees between the patterns - which gives us all available colours.

However, this explains pretty well the pitfalls of colour shapes, as reducing a particular colour would in fact bring up their complementary colour: imagine you have a colour shape (e.g. a red shape) running on an RGB fixture.

  • if the fixture is set to 100% white then red cannot get any brighter - you'll see only the negative part of the modulation (reducing red from white gives cyan) - this looks like a cyan/white shape.
  • if the fixture is set to black (red, green, blue = 0%) then red cannot get any darker - you'll see only the positive part of the modulation - this gives a black/red shape
  • if the fixture is set to grey (RGB = 50%) then you can see both the negative and positive part of the modulation. Set the shape size to 50% in order to best use ranges and times. The result will be a full cyan/red shape.

Dimmer Saw 16 Cell

This is an example for another technique: shapes for subfixtures which are not defined as subfixtures.

  <Shape ID="128" Name="Dimmer Saw 16 Cell" Group="I">
    <Function ChannelID="Dimmer1" PatternID="Saw" Amplitude="1000" Phase="0" Speed="29"/>
    <Function ChannelID="Dimmer2" PatternID="Saw" Amplitude="1000" Phase="23" Speed="29"/>
    <Function ChannelID="Dimmer3" PatternID="Saw" Amplitude="1000" Phase="45" Speed="29"/>
    <Function ChannelID="Dimmer4" PatternID="Saw" Amplitude="1000" Phase="68" Speed="29"/>
    <Function ChannelID="Dimmer5" PatternID="Saw" Amplitude="1000" Phase="90" Speed="29"/>
    <Function ChannelID="Dimmer6" PatternID="Saw" Amplitude="1000" Phase="113" Speed="29"/>
    <Function ChannelID="Dimmer7" PatternID="Saw" Amplitude="1000" Phase="135" Speed="29"/>
    <Function ChannelID="Dimmer8" PatternID="Saw" Amplitude="1000" Phase="158" Speed="29"/>
    <Function ChannelID="Dimmer9" PatternID="Saw" Amplitude="1000" Phase="180" Speed="29"/>
    <Function ChannelID="Dimmer10" PatternID="Saw" Amplitude="1000" Phase="203" Speed="29"/>
    <Function ChannelID="Dimmer11" PatternID="Saw" Amplitude="1000" Phase="225" Speed="29"/>
    <Function ChannelID="Dimmer12" PatternID="Saw" Amplitude="1000" Phase="248" Speed="29"/>
    <Function ChannelID="Dimmer13" PatternID="Saw" Amplitude="1000" Phase="270" Speed="29"/>
    <Function ChannelID="Dimmer14" PatternID="Saw" Amplitude="1000" Phase="293" Speed="29"/>
    <Function ChannelID="Dimmer15" PatternID="Saw" Amplitude="1000" Phase="315" Speed="29"/>
    <Function ChannelID="Dimmer16" PatternID="Saw" Amplitude="1000" Phase="340" Speed="29"/>

For the sake of backward coompatibility, when subfixtures were introduced, there needed to be a way to also control such fixtures with Titan versions not capable of running subfixtures. Compatibility attributes were introduced. Where e.g. a Showtec sunstrip, featuring 10 dimmer channels, can be controlled as master fixture with 10 subfixture in newer software - and as a result a normal dimmer saw can be run on the subfixtures - for older software there were distinct attributes Dimmer1, Dimmer2, Dimmer3 etc. And of course the shape needed to accomodate for this: in this example, 16 patterns with an offset of 22.5 degrees between adjacent patterns.

Limitation: One pattern per shape only

While it is perfectly possible to combine several attributes into one shape, the Titan engine will take only the first pattern into account (due to internal optimisations). Thus it is not possible to combine e.g. a circle (with pattern Cosine) with a dimmer pulse (pattern: Pulse 1:1), or a red swing with a negative blue swing.

shapes/shapes.txt · Last modified: 2018/08/24 07:03 by icke_siegen