Initial Assumptions
Its my assumption that any fixture can be defined by using a variable number of attributes. Each fixture can have any number of the following attributes (multiple attributes of the same type would be possible, for example a fixture with 2 gobo wheels would have the gobo attribute twice).
1. Attribute Types
I have defined the following basic attribute types :
- Basic : The standard 8 bit value, additional snap values or settings may be used within this attribute.
- 16 Bit : A 16 bit number divided between two channels, the 8 LSBs are optional, allowing this attribute to work on an 8bit fixture.
- Wheel : A basic wheel type has a definable number of set values that correspond to snap positions of the wheel (i.e. the location of the gobo, colour or effect). In addition they have a 'generate split values' option to automatically offer positions between each defined snap position. A wheel type may have an additional set of channels to modify the wheel behavior.
- Colour Mix : Uses 3 channels to represent either RGB or CMY or HSI. In addition an option defines if the colour mix is additive, or subtractive. A standard colour interface will be used, with the attribute doing the relevant calculations needed based on the defined settings. An options to allow a shadow Intensity attribute to exist within the fixture.
All channel types will need a reverse channel option, this may be given a more meaningful name for some options, for instance in colour, which is end of range is white.
All channel types will also have either a documented default, or a user specified option to show how the channel responds to cross fades, the options being, 'fade', 'snap'
Each attribute will have space for a name, in the case of a wheel attribute each element of the wheel can be named, along with a associated image or in the case of colour a definition of the colour.
2. Defined Attributes
Using these types I am able to define the following specific attributes to define a fixture :-
2.1. Intensity : Basic
2.2. Shutter : Basic, additional settings :-
Use shutter as Intensity (If enabled a shadow intensity attribute will exist in the fixture. Setting an intensity value will calculate the correct shutter position between the Open and Closed values. This option is for low end fixtures without Intensity channels)
2.3. Strobe : Basic, additional settings :-
Generally (always?, should this just be an option on the shutter attribute?) the shutter channel is used to set the strobing, in which case whichever attribute is last used will adjust the setting on the other attribute appropriately.
2.4. Gobo : Wheel, options :-
- Rotation channel
- Absolute position
- Shake
2.5. Pan : 16 bit, reference data :-
- Pan distance (in Degrees) : Useful for shape generator calculations
- Max Speed (in milliseconds to move from one extreme to the other)
2.6. Tilt : 16 bit, reference data :-
- Tilt distance (in Degrees) : Useful for shape generator calculations
- Max Speed (in milliseconds to move from one extreme to the other)
2.7. Colour : Wheel
2.8. Colour : Colour Mix
Effects such as rotating prisms, should be defined using an additional gobo attribute, appropriately named. I think all other attributes such as Focus, Zoom, Iris, colour temperature correction, automated barn doors etc can be defined using appropriately named basic channels.
A Fixture may have a number of different start addresses defined, each attribute is then assigned an offset relative to a given start address. If a number of attributes share the same channel (for example shutter and strobe) then the last channel used should be the current output.
Other reference data will be needed, for instance we need to know if this is a simple moving mirror or a moving head. I think knowing this will make a big difference to shape generator calculations.
3. Modes
It seems that due the complexity of some fixtures, we need to look at putting the fixture into a certain mode. The the attribute definitions can change depending on the current mode. The mode may be changed by a certain attribute entering a specific value range, or maybe with a mode attribute, that correctly sets the value.
4. Macros
In addition to the attributes a standard set of Macros can exist :-
4.1. Lamp On
4.2. Lamp Off
4.3. Reset Unit
4.4. Home
4.5. Locate Me
Suggested XML for a macro functions :-
<macros>
<macro name="Lamp On">
<step number="1">
<!-- Note that channel is the fixture channel, and not a dmx channel number -->
<dmx channel="1" value="232"/>
</step>
<step number="2">
<delay value="1"/>
</step>
</macro>
<macro name="Lamp Off">
<step number="1">
<!-- Where multiple dmx tags are specified, they will all change at the same time, order is not relevant-->
<dmx channel="3" value="255"/>
<dmx channel="4" value="255"/>
<dmx channel="5" value="255"/>
</step>
<step number="2">
<delay value="1"/>
</step>
<step number="3">
<dmx channel="1" value="252"/>
</step>
<step number="4">
<delay value="6"/>
</step>
</macro>
</macros>
This means we have already defined tags 'dmx' and 'delay' that can be included between 'step' tags. You can not mix these tags within a 'step'. I believe there will be other tags that we want to use, I also think we may want to be able to pass parameters from the desk into the macro. For instance if using a macro to play a track on a DMX enabled media server. I suspect we may also want to be able to use mathematical functions within a maco. So thought still needs to go into this.
5. Palette
There should also be predefined palettes for colours, positions etc.
The format used to specify the above will be XML.