I have come up with a fixture definition that I think will work well. It still needs a bit of polishing but should be a good base. Here is how it works:
The definition file is an array we can either make it so that all the fixtures are in one file or break it up by manufacturer.
Each object in the array is a dictionary that contains the following keys:
- fixtureName
- numberOfChannels
- manufacturer
The keys for the channels are the channel offset so if the want the third channel of the fixture you would getObjectForKey: 2. This would return a dictionary with information about the channel with the following keys:
- userLabel // This is the label the user will see and proably be able to edit
- channelType // This will allow the software to determine how to handle the channel
- defaultValue // This is the value the channel is normally at (ie pan & tilt at 50%)
- hasLables // This indicates wether or not the channel has specific labels for various channel values
I have yet to figure out the best way to store the channel value labels. I have also yet to figure out how to classify all of the various kinds of channels (in the sample I could not figure out what to call the 'Frames' that would not be specific to only that light).
So far I have established the following channelType(s):
- intensity
- coarsePan
- finePan
- coarseTilt
- fineTilt
- cyan
- magenta
- yellow
- colorWheel
- frost
- zoom
- focus
- control
- time
- gateRotate
- goboRotate
- goboRotateFine
- goboRotateCoarse
- rotatingGobo
- Gobo
these are the result of using Property List Editor to make the definition for the VL 1000, more types will need to be defined as more lights get defined. These types should be standardized to ensure that the definitions file(s) can be used in any of the programs making use of the LightsOn framework.
Here is the sample file done with Property List Editor.