Skip to content

Instantly share code, notes, and snippets.

@vanous
Last active June 17, 2018 11:41
Show Gist options
  • Save vanous/3605a8a5e9b79e38ea5eab1d31204858 to your computer and use it in GitHub Desktop.
Save vanous/3605a8a5e9b79e38ea5eab1d31204858 to your computer and use it in GitHub Desktop.
This script converts ROBE XML definitions into QLC+ qxf fixture files. Generated example included.
#!/usr/bin/python3
import robe2qlc
import sys
if len(sys.argv) >1:
file_name = sys.argv[1]
print (robe2qlc.convert(file_name))
else:
print (robe2qlc.convert())
# -*- coding: utf-8 -*-
#use python3 :)
import lxml.etree as ET
import lxml.builder #for header definition
from lxml import etree #xml parser
debug=True
debug=False
def convert(file_name="input.txt"):
error = ""
out=""
attr_map={
"speed time duration rate":"Speed",
"power special":"Maintenance",
"prism":"Prism",
"scrim barndoor keystoning framing iris zoom focus frost hot":"Beam",
"gobo":"Gobo",
"color colour cto ctc ct0":"Colour",
"shutter":"Shutter",
"dimmer intensity":"Intensity",
"macro effect mbe effects graphic pattern shaper": "Effect",
"pan":"Pan",
"tilt":"Tilt",
"red green blue white cyan magenta yellow amber":"Intensity",
"reserved":"Nothing",
"background - active zone":"Effect",
}
def attr_map_get(attr):
err=None
ret=attr_map.get(attr, None)
if ret is not None:
return ret, err
else:
for item, value in attr_map.items():
for i in item.split():
if i in attr:
return value, err
return "Nothing", attr
return ret, err
type_map={
'Head':'Headmover',
'Fixed':'Conventional',
}
dbchangelog = 'http://www.qlcplus.org/FixtureDefinition'
E = lxml.builder.ElementMaker(
nsmap={
None: dbchangelog
})
the_doc=E.FixtureDefinition() #MA is root element
robe_fixture = etree.parse(file_name, etree.XMLParser(recover=True)).getroot()
creator= etree.Element('Creator')
creator_name= etree.Element('Name')
creator_name.text="ROBE robe2qlc converter"
creator.append(creator_name)
creator_version= etree.Element('Version')
creator_version.text="0.1"
creator.append(creator_version)
creator_author= etree.Element('Author')
creator_author.text="ROBE Petr Vanek"
creator.append(creator_author)
manufacturer=etree.Element('Manufacturer')
manufacturer.text=robe_fixture.find("fixturetype//manufacturer").text
model=etree.Element('Model')
model.text=robe_fixture.find("fixturetype").get("name")
fixture_type= etree.Element('Type')
fixture_type.text="Moving Head"
the_doc.append(creator)
the_doc.append(manufacturer)
the_doc.append(model)
the_doc.append(fixture_type)
for channel in robe_fixture.xpath("//ROBE//parameters/parameter"):
fine_list=["fine","16 bit","16bit"]
fine=False
channeltype=etree.Element('Channel',Name=channel.get('id'))
groupbyte='0'
if any(fn in channel.get("id").lower() for fn in fine_list):
groupbyte='1'
group=etree.Element('Group',Byte=groupbyte)
group.text, err=attr_map_get(channel.get("id").lower())
if err:
error+=err
channeltype.append(group)
channel_function=etree.Element('Capability',Min='0',Max='255')
channel_function.text=channel.get('id')
channeltype.append(channel_function)
else:
group=etree.Element('Group',Byte=groupbyte)
group.text, err=attr_map_get(channel.get("id").lower())
if err:
error+=err
channeltype.append(group)
ranges=robe_fixture.xpath("//ROBE//parameters/parameter[@id='"+channel.get('id')+"']//attribute")
for one_range in ranges:
#print(one_range.attrib)
x=one_range.get('dmx_from')
y=one_range.get('dmx_to')
x,y=int(x),int(y)
minus_x = 0
minus_y = 0
bit=1
channelset=etree.Element('Capability',Min=str(x*bit-minus_x),Max=str(y*bit-minus_y))
channelset.text=one_range.get('name')
channeltype.append(channelset)
#hand added special presets
if "dimmer" in channel.get('id').lower():
channelset=etree.Element('Capability',Min='0',Max='0')
channelset.text="Closed"
channeltype.append(channelset)
channelset=etree.Element('Capability',Min=str(256*bit-1),Max=str(256*bit-1))
channelset.text="Open"
channeltype.append(channelset)
elif ("pan" in channel.get('id').lower())or( "tilt" in channel.get('id').lower()):
if not ("speed" in channel.get('id').lower()):
channelset=etree.Element('Capability',Min='0',Max='0')
channelset.text="Min"
channeltype.append(channelset)
channelset=etree.Element('Capability',Min=str(128*bit),Max=str(128*bit))
channelset.text="Center"
channeltype.append(channelset)
channelset=etree.Element('Capability',Min=str(256*bit-1),Max=str(256*bit-1))
channelset.text="Max"
channeltype.append(channelset)
elif "zoom" in channel.get('id').lower():
channelset=etree.Element('Capability',Min='0',Max='0')
channelset.text="Wide"
channeltype.append(channelset)
channelset=etree.Element('Capability',Min=str(128*bit),Max=str(128*bit))
channelset.text="Center"
channeltype.append(channelset)
channelset=etree.Element('Capability',Min=str(256*bit-1),Max=str(256*bit-1))
channelset.text="Narrow"
channeltype.append(channelset)
elif "focus" in channel.get('id'):
channelset=etree.Element('Capability',Min='0',Max='0')
channelset.text="Max"
channeltype.append(channelset)
channelset=etree.Element('Capability',Min=str(128*bit),Max=str(128*bit))
channelset.text="Middle"
channeltype.append(channelset)
channelset=etree.Element('Capability',Min=str(256*bit-1),Max=str(256*bit-1))
channelset.text="Min"
channeltype.append(channelset)
the_doc.append(channeltype)
for mode in robe_fixture.xpath("//ROBE//modes/mode"):
mode_= etree.Element('Mode', Name=mode.attrib['name'])
physical=etree.Element('Physical')
try:
bulb=etree.Element('Bulb', Type=robe_fixture.find("physical_properties//light_source").text, Lumens="0", ColourTemperature="0") #todo add CCT, lumens
physical.append(bulb)
except:
bulb=etree.Element('Bulb', Type="0", Lumens="0", ColourTemperature="0") #todo add CCT, lumens
physical.append(bulb)
dimensions=etree.Element('Dimensions', Weight="1" , Width ="1", Height="1", Depth="1")
physical.append(dimensions)
try:
dmin=robe_fixture.find("physical_properties//zoom_range").text.split('-')[0].strip().replace("°","")
dmax=robe_fixture.find("physical_properties//zoom_range").text.split('-')[1].strip().replace("°","")
lens=etree.Element('Lens',DegreesMin=dmin, DegreesMax=dmax, Name="Other")
physical.append(lens)
except:
try:
dmin=robe_fixture.find("physical_properties//zoom_range").text.split(',')[0].strip().replace("°","")
dmax=robe_fixture.find("physical_properties//zoom_range").text.split(',')[0].strip().replace("°","")
lens=etree.Element('Lens',DegreesMin=dmin, DegreesMax=dmax, Name="Other")
physical.append(lens)
except:
lens=etree.Element('Lens',DegreesMin="0", DegreesMax="0", Name="Other")
physical.append(lens)
try:
focus=etree.Element('Focus',
Type="Head",
PanMax=robe_fixture.find("physical_properties//pan_range").text,
TiltMax=robe_fixture.find("physical_properties//tilt_range").text,
)
physical.append(focus)
except:
focus=etree.Element('Focus', Type="Head", PanMax="0", TiltMax="0")
physical.append(focus)
mode_.append(physical)
n=0
for channel in robe_fixture.xpath("//ROBE//modes/mode[@id='" + mode.get('id') +"']//channel"):
_channel=etree.Element('Channel',Number=str(n))
_channel.text=channel.get('id')
mode_.append(_channel)
n+=1
the_doc.append(mode_)
out+=etree.tostring(the_doc,
pretty_print=True,
doctype='<!DOCTYPE FixtureDefinition>',
encoding='unicode')
if debug:
return error
#return error + "\n\n" + out +"\n\n"+ error
else:
return out
<!DOCTYPE FixtureDefinition>
<FixtureDefinition xmlns="http://www.qlcplus.org/FixtureDefinition">
<Creator>
<Name>ROBE robe2qlc converter</Name>
<Version>0.1</Version>
<Author>ROBE Petr Vanek</Author>
</Creator>
<Manufacturer>Robe lighting s.r.o.</Manufacturer>
<Model>Robin Megapointe</Model>
<Type>Moving Head</Type>
<Channel Name="Pan">
<Group Byte="0">Pan</Group>
<Capability Max="255" Min="0">Pan movement by 540°</Capability>
<Capability Max="0" Min="0">Min</Capability>
<Capability Max="128" Min="128">Center</Capability>
<Capability Max="255" Min="255">Max</Capability>
</Channel>
<Channel Name="Pan Fine">
<Group Byte="1">Pan</Group>
<Capability Max="255" Min="0">Pan Fine</Capability>
</Channel>
<Channel Name="Tilt">
<Group Byte="0">Tilt</Group>
<Capability Max="255" Min="0">Tilt movement by 265°</Capability>
<Capability Max="0" Min="0">Min</Capability>
<Capability Max="128" Min="128">Center</Capability>
<Capability Max="255" Min="255">Max</Capability>
</Channel>
<Channel Name="Tilt fine">
<Group Byte="1">Tilt</Group>
<Capability Max="255" Min="0">Tilt fine</Capability>
</Channel>
<Channel Name="Pan/Tilt speed , Pan/Tilt time">
<Group Byte="0">Speed</Group>
<Capability Max="0" Min="0">Standard mode</Capability>
<Capability Max="1" Min="1">Max. Speed Mode</Capability>
<Capability Max="255" Min="2">Time from 0.2 s to 25.5 sec. / Speed from max. to min.</Capability>
</Channel>
<Channel Name="Power/Special functions">
<Group Byte="0">Maintenance</Group>
<Capability Max="9" Min="0">Reserved</Capability>
<Capability Max="14" Min="10">DMX input: Wired DMX *</Capability>
<Capability Max="19" Min="15">DMX input: Wireless DMX *</Capability>
<Capability Max="24" Min="20">Graphic display On</Capability>
<Capability Max="29" Min="25">Graphic display Off</Capability>
<Capability Max="34" Min="30">High CRI (CRI=90+)</Capability>
<Capability Max="39" Min="35">Standard CRI (CRI=80)</Capability>
<Capability Max="44" Min="40">Eco mode ( Lamp power 380W)</Capability>
<Capability Max="49" Min="45">Standard mode (Lamp power 470W)</Capability>
<Capability Max="54" Min="50">Close proximity mode On</Capability>
<Capability Max="59" Min="55">Close proximity mode Off</Capability>
<Capability Max="64" Min="60">Fans mode: Auto</Capability>
<Capability Max="69" Min="65">Fans mode: High</Capability>
<Capability Max="74" Min="70">Dimmer curve: Square law</Capability>
<Capability Max="79" Min="75">Dimmer curve: Linear</Capability>
<Capability Max="84" Min="80">Autofocus On</Capability>
<Capability Max="89" Min="85">Autofocus Off</Capability>
<Capability Max="94" Min="90">Pan/Tilt speed mode</Capability>
<Capability Max="99" Min="95">Pan/Tilt time mode</Capability>
<Capability Max="101" Min="100">Blackout while pan/tilt moving</Capability>
<Capability Max="103" Min="102">Disabled blackout while pan/tilt moving</Capability>
<Capability Max="105" Min="104">Blackout while prism wheel 1 (wheel 2) moving</Capability>
<Capability Max="107" Min="106">Disabled blackout while prism wheel 1 (wheel 2) moving</Capability>
<Capability Max="119" Min="108">Reserved</Capability>
<Capability Max="124" Min="120">Parking position On</Capability>
<Capability Max="129" Min="125">Parking position Off</Capability>
<Capability Max="139" Min="130">Lamp On</Capability>
<Capability Max="149" Min="140">Pan/Tilt reset</Capability>
<Capability Max="159" Min="150">Colour system reset</Capability>
<Capability Max="169" Min="160">Gobo wheels reset</Capability>
<Capability Max="179" Min="170">Dimmer/Shutter/Hot Spot reset</Capability>
<Capability Max="189" Min="180">Zoom/focus/frost/prism wheels reset</Capability>
<Capability Max="199" Min="190">Effect wheel reset</Capability>
<Capability Max="209" Min="200">Total reset</Capability>
<Capability Max="229" Min="210">Reserved</Capability>
<Capability Max="239" Min="230">Lamp Off</Capability>
<Capability Max="244" Min="240">RoboSpot enabled</Capability>
<Capability Max="249" Min="245">RoboSpot disabled - except handle faders and pan/tilt</Capability>
<Capability Max="255" Min="250">RoboSpot fully disabled except pan/tilt</Capability>
</Channel>
<Channel Name="Cyan">
<Group Byte="0">Intensity</Group>
<Capability Max="255" Min="0">Cyan from min. saturation - - &gt; full cyan</Capability>
</Channel>
<Channel Name="Magenta">
<Group Byte="0">Intensity</Group>
<Capability Max="255" Min="0">Magenta from min. saturation - - &gt; full magenta</Capability>
</Channel>
<Channel Name="Yellow">
<Group Byte="0">Intensity</Group>
<Capability Max="255" Min="0">Yellow from min. saturation - - &gt; full yellow</Capability>
</Channel>
<Channel Name="Colour wheel">
<Group Byte="0">Colour</Group>
<Capability Max="0" Min="0">Open/white - Positioning</Capability>
<Capability Max="9" Min="9">Deep Red - Positioning</Capability>
<Capability Max="18" Min="18">Deep Blue - Positioning</Capability>
<Capability Max="27" Min="27">Yellow - Positioning</Capability>
<Capability Max="37" Min="37">Light green - Positioning</Capability>
<Capability Max="46" Min="46">Magenta - Positioning</Capability>
<Capability Max="55" Min="55">Lavender - Positioning</Capability>
<Capability Max="64" Min="64">Pink - Positioning</Capability>
<Capability Max="73" Min="73">Dark green - Positioning</Capability>
<Capability Max="82" Min="82">CTO 2700K - Positioning</Capability>
<Capability Max="91" Min="91">Blue - Positioning</Capability>
<Capability Max="101" Min="101">Orange - Positioning</Capability>
<Capability Max="110" Min="110">CTO 3200K - Positioning</Capability>
<Capability Max="119" Min="119">UV (Kongo blue) - Positioning</Capability>
<Capability Max="129" Min="128">White - Positioning</Capability>
<Capability Max="134" Min="130">Deep Red - Indexing</Capability>
<Capability Max="138" Min="135">Deep Blue - Indexing</Capability>
<Capability Max="143" Min="139">Yellow - Indexing</Capability>
<Capability Max="147" Min="144">Light green - Indexing</Capability>
<Capability Max="152" Min="148">Magenta - Indexing</Capability>
<Capability Max="157" Min="153">Lavender - Indexing</Capability>
<Capability Max="161" Min="158">Pink - Indexing</Capability>
<Capability Max="166" Min="162">Dark green - Indexing</Capability>
<Capability Max="171" Min="167">CTO 2700K - Indexing</Capability>
<Capability Max="176" Min="172">Blue - Indexing</Capability>
<Capability Max="180" Min="177">Orange - Indexing</Capability>
<Capability Max="185" Min="181">CTO 3200K - Indexing</Capability>
<Capability Max="189" Min="186">UV (Kongo blue) - Indexing</Capability>
<Capability Max="215" Min="190">Forwards rainbow effect from fast to slow</Capability>
<Capability Max="217" Min="216">No rotation</Capability>
<Capability Max="243" Min="218">Backwards rainbow effect from slow to fast</Capability>
<Capability Max="249" Min="244">Random colour selection by audio control</Capability>
<Capability Max="255" Min="250">Auto random colour selection from fast to slow</Capability>
</Channel>
<Channel Name="Colour wheel - fine positioning">
<Group Byte="1">Colour</Group>
<Capability Max="255" Min="0">Colour wheel - fine positioning</Capability>
</Channel>
<Channel Name="Virtual colour wheel">
<Group Byte="0">Colour</Group>
<Capability Max="0" Min="0">Open/white</Capability>
<Capability Max="2" Min="1">Filter 4 (Medium Bastard Amber)</Capability>
<Capability Max="4" Min="3">Filter 10 (Medium Yellow)</Capability>
<Capability Max="6" Min="5">Filter 19 (Fire)</Capability>
<Capability Max="8" Min="7">Filter 26 (Bright Red)</Capability>
<Capability Max="10" Min="9">Filter 58 (Lavender)</Capability>
<Capability Max="12" Min="11">Filter 68 (Sky Blue)</Capability>
<Capability Max="14" Min="13">Filter 71 (Tokyo Blue)</Capability>
<Capability Max="16" Min="15">Filter 79 (Just Blue)</Capability>
<Capability Max="18" Min="17">Filter 88 (Lime Green)</Capability>
<Capability Max="20" Min="19">Filter 90 (Dark Yellow Green)</Capability>
<Capability Max="22" Min="21">Filter 100 (Spring Yellow)</Capability>
<Capability Max="24" Min="23">Filter 101 (Yellow)</Capability>
<Capability Max="26" Min="25">Filter 102 (Light Amber)</Capability>
<Capability Max="28" Min="27">Filter 103 (Straw)</Capability>
<Capability Max="30" Min="29">Filter 104 (Deep Amber)</Capability>
<Capability Max="32" Min="31">Filter 105 (Orange)</Capability>
<Capability Max="34" Min="33">Filter 106 (Primary Red)</Capability>
<Capability Max="36" Min="35">Filter 111 (Dark Pink)</Capability>
<Capability Max="38" Min="37">Filter 115 (Peacock Blue)</Capability>
<Capability Max="40" Min="39">Filter 116 (Medium Blue - Green)</Capability>
<Capability Max="42" Min="41">Filter 117 (Steel Blue)</Capability>
<Capability Max="44" Min="43">Filter 118 (Light Blue)</Capability>
<Capability Max="46" Min="45">Filter 119 (Dark Blue)</Capability>
<Capability Max="48" Min="47">Filter 120 (Deep Blue)</Capability>
<Capability Max="50" Min="49">Filter 121 (Filter Green)</Capability>
<Capability Max="52" Min="51">Filter 128 (Bright Pink)</Capability>
<Capability Max="54" Min="53">Filter 131 (Marine Blue)</Capability>
<Capability Max="56" Min="55">Filter 132 (Medium Blue)</Capability>
<Capability Max="58" Min="57">Filter 134 (Golden Amber)</Capability>
<Capability Max="60" Min="59">Filter 135 (Deep Golden Amber)</Capability>
<Capability Max="62" Min="61">Filter 136 (Pale Lavender)</Capability>
<Capability Max="64" Min="63">Filter 137 (Special Lavender)</Capability>
<Capability Max="66" Min="65">Filter 138 (Pale Green)</Capability>
<Capability Max="68" Min="67">Filter 139 (Primary Green)</Capability>
<Capability Max="70" Min="69">Filter 141 (Bright Blue)</Capability>
<Capability Max="72" Min="71">Filter 147 (Apricot)</Capability>
<Capability Max="74" Min="73">Filter 148 (Bright Rose)</Capability>
<Capability Max="76" Min="75">Filter 152 (Pale Gold)</Capability>
<Capability Max="78" Min="77">Filter 154 (Pale Rose)</Capability>
<Capability Max="80" Min="79">Filter 157 (Pink)</Capability>
<Capability Max="82" Min="81">Filter 158 (Deep Orange)</Capability>
<Capability Max="84" Min="83">Filter 162 (Bastard Amber)</Capability>
<Capability Max="86" Min="85">Filter 164 (Flame Red)</Capability>
<Capability Max="88" Min="87">Filter 165 (Daylight Blue)</Capability>
<Capability Max="90" Min="89">Filter 169 (Lilac Tint)</Capability>
<Capability Max="92" Min="91">Filter 170 (Deep Lavender)</Capability>
<Capability Max="94" Min="93">Filter 172 (Lagoon Blue)</Capability>
<Capability Max="96" Min="95">Filter 179 (Chrome Orange)</Capability>
<Capability Max="98" Min="97">Filter 180 (Dark Lavender)</Capability>
<Capability Max="100" Min="99">Filter 181 (Congo Blue)</Capability>
<Capability Max="102" Min="101">Filter 197 (Alice Blue)</Capability>
<Capability Max="104" Min="103">Filter 201 (Full C.T. Blue)</Capability>
<Capability Max="106" Min="105">Filter 202 (Half C.T. Blue)</Capability>
<Capability Max="108" Min="107">Filter 203 (Quarter C.T. Blue)</Capability>
<Capability Max="110" Min="109">Filter 204 (Full C.T. Orange)</Capability>
<Capability Max="112" Min="111">Filter 205 (Half C.T. Orange)</Capability>
<Capability Max="114" Min="113">Filter 206 (Quarter C.T. Orange)</Capability>
<Capability Max="116" Min="115">Filter 247 (Filter Minus Green)</Capability>
<Capability Max="118" Min="117">Filter 248 (Half Minus Green)</Capability>
<Capability Max="120" Min="119">Filter 281 (Three Quarter C.T. Blue)</Capability>
<Capability Max="122" Min="121">Filter 285 (Three Quarter C.T. Orange)</Capability>
<Capability Max="124" Min="123">Filter 352 (Glacier Blue)</Capability>
<Capability Max="126" Min="125">Filter 353 (Lighter Blue)</Capability>
<Capability Max="128" Min="127">Filter 715 (Cabana Blue)</Capability>
<Capability Max="130" Min="129">Filter 778 (Millennium Gold)</Capability>
<Capability Max="132" Min="131">Filter 793 (Vanity Fair)</Capability>
<Capability Max="255" Min="133">Raw DMX</Capability>
</Channel>
<Channel Name="Effect Speed">
<Group Byte="0">Speed</Group>
<Capability Max="255" Min="0">Speed of CMY movement from max. to min.</Capability>
</Channel>
<Channel Name="CMY &amp; Colour wheel time">
<Group Byte="0">Speed</Group>
<Capability Max="0" Min="0">Function is off</Capability>
<Capability Max="255" Min="1">Time of CMY and col. wheel movement (0.1sec - - &gt;25.5sec.)</Capability>
</Channel>
<Channel Name="Zoom &amp; Focus &amp; Frost &amp; Prism time">
<Group Byte="0">Speed</Group>
<Capability Max="0" Min="0">Function is off</Capability>
<Capability Max="0" Min="0">Wide</Capability>
<Capability Max="128" Min="128">Center</Capability>
<Capability Max="255" Min="255">Narrow</Capability>
<Capability Max="255" Min="1">Time of zoom/ focus movement (0.1 sec - - &gt;25.5 sec.)</Capability>
<Capability Max="0" Min="0">Wide</Capability>
<Capability Max="128" Min="128">Center</Capability>
<Capability Max="255" Min="255">Narrow</Capability>
<Capability Max="100" Min="1">Time of frost movement (0.1 sec - - &gt;10 sec)</Capability>
<Capability Max="0" Min="0">Wide</Capability>
<Capability Max="128" Min="128">Center</Capability>
<Capability Max="255" Min="255">Narrow</Capability>
<Capability Max="50" Min="1">Time of prism movement (0.1 sec - - &gt;5 sec.)</Capability>
<Capability Max="0" Min="0">Wide</Capability>
<Capability Max="128" Min="128">Center</Capability>
<Capability Max="255" Min="255">Narrow</Capability>
</Channel>
<Channel Name="Effect wheel positioning">
<Group Byte="0">Effect</Group>
<Capability Max="19" Min="0">No function</Capability>
<Capability Max="127" Min="20">Proportional indexing</Capability>
<Capability Max="170" Min="128">Ramping from open to full position ( max - - - &gt;min. speed)</Capability>
<Capability Max="213" Min="171">Ramping from open to half position ( max. - - - &gt;min. speed)</Capability>
<Capability Max="255" Min="214">Ramp. from half position to full position ( max. - - - &gt;min. speed)</Capability>
</Channel>
<Channel Name="Effect wheel rotation">
<Group Byte="0">Effect</Group>
<Capability Max="0" Min="0">No rotation</Capability>
<Capability Max="127" Min="1">Forwards rotation from fast to slow</Capability>
<Capability Max="128" Min="128">No rotation</Capability>
<Capability Max="255" Min="129">Backwards rotation from slow to fast</Capability>
</Channel>
<Channel Name="Effect wheel animations">
<Group Byte="0">Effect</Group>
<Capability Max="3" Min="0">No animation</Capability>
<Capability Max="5" Min="4">Animation Macro 1</Capability>
<Capability Max="7" Min="6">Animation Macro 2</Capability>
<Capability Max="9" Min="8">Animation Macro 3</Capability>
<Capability Max="11" Min="10">Animation Macro 4</Capability>
<Capability Max="13" Min="12">Animation Macro 5</Capability>
<Capability Max="15" Min="14">Animation Macro 6</Capability>
<Capability Max="17" Min="16">Animation Macro 7</Capability>
<Capability Max="19" Min="18">Animation Macro 8</Capability>
<Capability Max="21" Min="20">Animation Macro 9</Capability>
<Capability Max="23" Min="22">Animation Macro 10</Capability>
<Capability Max="25" Min="24">Animation Macro 1</Capability>
<Capability Max="27" Min="26">Animation Macro 2</Capability>
<Capability Max="29" Min="28">Animation Macro 3</Capability>
<Capability Max="31" Min="30">Animation Macro 4</Capability>
<Capability Max="33" Min="32">Animation Macro 5</Capability>
<Capability Max="35" Min="34">Animation Macro 6</Capability>
<Capability Max="37" Min="36">Animation Macro 7</Capability>
<Capability Max="39" Min="38">Animation Macro 8</Capability>
<Capability Max="41" Min="40">Animation Macro 9</Capability>
<Capability Max="43" Min="42">Animation Macro 10</Capability>
<Capability Max="255" Min="44">Raw DMX</Capability>
</Channel>
<Channel Name="Static gobo wheel">
<Group Byte="0">Gobo</Group>
<Capability Max="3" Min="0">Open/Hole</Capability>
<Capability Max="9" Min="4">Gobo 1</Capability>
<Capability Max="15" Min="10">Gobo 2</Capability>
<Capability Max="21" Min="16">Gobo 3</Capability>
<Capability Max="27" Min="22">Gobo 4</Capability>
<Capability Max="33" Min="28">Gobo 5</Capability>
<Capability Max="39" Min="34">Gobo 6</Capability>
<Capability Max="45" Min="40">Gobo 7</Capability>
<Capability Max="51" Min="46">Gobo 8</Capability>
<Capability Max="57" Min="52">Gobo 9</Capability>
<Capability Max="63" Min="58">Gobo 10</Capability>
<Capability Max="69" Min="64">Beam reducer 1</Capability>
<Capability Max="75" Min="70">Beam reducer 2</Capability>
<Capability Max="81" Min="76">Beam reducer 3</Capability>
<Capability Max="87" Min="82">Beam reducer 4</Capability>
<Capability Max="95" Min="88">Gobo 1</Capability>
<Capability Max="103" Min="96">Gobo 2</Capability>
<Capability Max="111" Min="104">Gobo 3</Capability>
<Capability Max="119" Min="112">Gobo 4</Capability>
<Capability Max="127" Min="120">Gobo 5</Capability>
<Capability Max="135" Min="128">Gobo 6</Capability>
<Capability Max="143" Min="136">Gobo 7</Capability>
<Capability Max="151" Min="144">Gobo 8</Capability>
<Capability Max="159" Min="152">Gobo 9</Capability>
<Capability Max="167" Min="160">Gobo 10</Capability>
<Capability Max="175" Min="168">Beam reducer 1</Capability>
<Capability Max="183" Min="176">Beam reducer 2</Capability>
<Capability Max="191" Min="184">Beam reducer 3</Capability>
<Capability Max="199" Min="192">Beam reducer 4</Capability>
<Capability Max="201" Min="200">Open/hole</Capability>
<Capability Max="222" Min="202">Forwards gobo wheel rotation from fast to slow</Capability>
<Capability Max="243" Min="223">Backwards gobo wheel rotation from slow to fast</Capability>
<Capability Max="249" Min="244">Random gobo selection by audio control</Capability>
<Capability Max="255" Min="250">Auto random gobo selection from fast to slow</Capability>
</Channel>
<Channel Name="Rotating gobo wheel">
<Group Byte="0">Gobo</Group>
<Capability Max="0" Min="0">Open/Hole</Capability>
<Capability Max="4" Min="1">Hole (flat field)</Capability>
<Capability Max="7" Min="5">Gobo 1</Capability>
<Capability Max="10" Min="8">Gobo 2</Capability>
<Capability Max="13" Min="11">Gobo 3</Capability>
<Capability Max="16" Min="14">Gobo 4</Capability>
<Capability Max="19" Min="17">Gobo 5</Capability>
<Capability Max="22" Min="20">Gobo 6</Capability>
<Capability Max="25" Min="23">Gobo 7</Capability>
<Capability Max="28" Min="26">Gobo 8</Capability>
<Capability Max="31" Min="29">Gobo 9</Capability>
<Capability Max="34" Min="32">Gobo 1 - Rotation</Capability>
<Capability Max="37" Min="35">Gobo 2 - Rotation</Capability>
<Capability Max="40" Min="38">Gobo 3 - Rotation</Capability>
<Capability Max="43" Min="41">Gobo 4 - Rotation</Capability>
<Capability Max="46" Min="4">Gobo 5 - Rotation</Capability>
<Capability Max="49" Min="47">Gobo 6 - Rotation</Capability>
<Capability Max="52" Min="50">Gobo 7 - Rotation</Capability>
<Capability Max="55" Min="53">Gobo 8 - Rotation</Capability>
<Capability Max="59" Min="56">Gobo 9 - Rotation</Capability>
<Capability Max="67" Min="60">Gobo 1 - Shaking Index</Capability>
<Capability Max="75" Min="68">Gobo 2 - Shaking Index</Capability>
<Capability Max="83" Min="76">Gobo 3 - Shaking Index</Capability>
<Capability Max="91" Min="84">Gobo 4 - Shaking Index</Capability>
<Capability Max="99" Min="92">Gobo 5 - Shaking Index</Capability>
<Capability Max="107" Min="100">Gobo 6 - Shaking Index</Capability>
<Capability Max="115" Min="108">Gobo 7 - Shaking Index</Capability>
<Capability Max="123" Min="116">Gobo 8 - Shaking Index</Capability>
<Capability Max="129" Min="124">Gobo 9 - Shaking Index</Capability>
<Capability Max="137" Min="130">Gobo 1 - Shaking Rotation</Capability>
<Capability Max="145" Min="138">Gobo 2 - Shaking Rotation</Capability>
<Capability Max="153" Min="146">Gobo 3 - Shaking Rotation</Capability>
<Capability Max="161" Min="154">Gobo 4 - Shaking Rotation</Capability>
<Capability Max="169" Min="162">Gobo 5 - Shaking Rotation</Capability>
<Capability Max="177" Min="170">Gobo 6 - Shaking Rotation</Capability>
<Capability Max="185" Min="178">Gobo 7 - Shaking Rotation</Capability>
<Capability Max="193" Min="186">Gobo 8 - Shaking Rotation</Capability>
<Capability Max="199" Min="194">Gobo 9 - Shaking Rotation</Capability>
<Capability Max="201" Min="200">Open/hole</Capability>
<Capability Max="222" Min="202">Forwards gobo wheel rotation from fast to slow</Capability>
<Capability Max="243" Min="223">Backwards gobo wheel rotation from slow to fast</Capability>
<Capability Max="249" Min="244">Random gobo selection by audio control</Capability>
<Capability Max="255" Min="250">Auto random gobo selection from fast to slow</Capability>
</Channel>
<Channel Name="Rot. gobo indexing and rotation">
<Group Byte="0">Gobo</Group>
<Capability Max="255" Min="0">Gobo indexing</Capability>
<Capability Max="0" Min="0">No rotation</Capability>
<Capability Max="127" Min="1">Forwards gobo rotation from fast to slow</Capability>
<Capability Max="128" Min="128">No rotation</Capability>
<Capability Max="255" Min="129">Backwards gobo rotation from slow to fast</Capability>
</Channel>
<Channel Name="Rot. gobo indexing/rotation - fine">
<Group Byte="1">Gobo</Group>
<Capability Max="255" Min="0">Rot. gobo indexing/rotation - fine</Capability>
</Channel>
<Channel Name="Prism wheel 1">
<Group Byte="0">Prism</Group>
<Capability Max="3" Min="0">Open position/hole</Capability>
<Capability Max="7" Min="4">Prism 1 - 6 - facet linear</Capability>
<Capability Max="11" Min="8">Prism 2 - cylindrical</Capability>
<Capability Max="15" Min="12">Prism 3 - 8 - facet 12° circular</Capability>
<Capability Max="19" Min="16">Prism 1 - 6 - facet linear</Capability>
<Capability Max="23" Min="20">Prism 2 - cylindrical</Capability>
<Capability Max="27" Min="24">Prism 3 - 8 - facet 12° circular</Capability>
<Capability Max="255" Min="28">Raw DMX</Capability>
</Channel>
<Channel Name="Prism wheel 1 indexing/rotation">
<Group Byte="0">Prism</Group>
<Capability Max="255" Min="0">Prism 1 indexing</Capability>
<Capability Max="0" Min="0">No rotation</Capability>
<Capability Max="127" Min="1">Forwards prism rotation from fast to slow</Capability>
<Capability Max="128" Min="128">No rotation</Capability>
<Capability Max="255" Min="129">Backwards prism rotation from slow to fast</Capability>
</Channel>
<Channel Name="Prism wheel 2">
<Group Byte="0">Prism</Group>
<Capability Max="3" Min="0">Open position/hole</Capability>
<Capability Max="7" Min="4">Prism 1 - 6 - facet linear</Capability>
<Capability Max="11" Min="8">Prism 2 - 32 - facet circular</Capability>
<Capability Max="15" Min="12">Prism 3 - 8 - facet 18° circular</Capability>
<Capability Max="19" Min="16">Prism 1 - 6 - facet linear</Capability>
<Capability Max="23" Min="20">Prism 2 - 32 - facet circular</Capability>
<Capability Max="27" Min="24">Prism 3 - 8 - facet 18° circular</Capability>
<Capability Max="255" Min="28">Raw DMX</Capability>
</Channel>
<Channel Name="Prism wheel 2 indexing/rotation">
<Group Byte="0">Prism</Group>
<Capability Max="255" Min="0">Prism 1 indexing</Capability>
<Capability Max="0" Min="0">No rotation</Capability>
<Capability Max="127" Min="1">Forwards prism rotation from fast to slow</Capability>
<Capability Max="128" Min="128">No rotation</Capability>
<Capability Max="255" Min="129">Backwards prism rotation from slow to fast</Capability>
</Channel>
<Channel Name="Pattern sellection">
<Group Byte="0">Effect</Group>
<Capability Max="3" Min="0">Open position/hole</Capability>
<Capability Max="5" Min="4">Pattern 1</Capability>
<Capability Max="7" Min="6">Pattern 2</Capability>
<Capability Max="9" Min="8">Pattern 3</Capability>
<Capability Max="11" Min="10">Pattern 4</Capability>
<Capability Max="13" Min="12">Pattern 5</Capability>
<Capability Max="15" Min="14">Pattern 6</Capability>
<Capability Max="17" Min="16">Pattern 7</Capability>
<Capability Max="19" Min="18">Pattern 8</Capability>
<Capability Max="21" Min="20">Pattern 9</Capability>
<Capability Max="23" Min="22">Pattern 10</Capability>
<Capability Max="25" Min="24">Pattern 11</Capability>
<Capability Max="27" Min="26">Pattern 12</Capability>
<Capability Max="29" Min="28">Pattern 1</Capability>
<Capability Max="31" Min="30">Pattern 2</Capability>
<Capability Max="33" Min="32">Pattern 3</Capability>
<Capability Max="35" Min="34">Pattern 4</Capability>
<Capability Max="37" Min="36">Pattern 5</Capability>
<Capability Max="39" Min="38">Pattern 6</Capability>
<Capability Max="41" Min="40">Pattern 7</Capability>
<Capability Max="43" Min="42">Pattern 8</Capability>
<Capability Max="45" Min="44">Pattern 9</Capability>
<Capability Max="47" Min="46">Pattern 10</Capability>
<Capability Max="49" Min="48">Pattern 11</Capability>
<Capability Max="51" Min="50">Pattern 12</Capability>
<Capability Max="53" Min="52">Pattern 13</Capability>
<Capability Max="55" Min="54">Pattern 14</Capability>
<Capability Max="57" Min="56">Pattern 15</Capability>
<Capability Max="59" Min="58">Pattern 16</Capability>
<Capability Max="61" Min="60">Pattern 17</Capability>
<Capability Max="63" Min="62">Pattern 18</Capability>
<Capability Max="65" Min="64">Pattern 19</Capability>
<Capability Max="67" Min="66">Pattern 20</Capability>
<Capability Max="255" Min="68">Raw DMX</Capability>
</Channel>
<Channel Name="Pattern rotation and indexing">
<Group Byte="0">Effect</Group>
<Capability Max="255" Min="0">Pattern indexing</Capability>
<Capability Max="0" Min="0">No rotation</Capability>
<Capability Max="127" Min="1">Forwards pattern rotation from fast to slow</Capability>
<Capability Max="128" Min="128">No rotation</Capability>
<Capability Max="255" Min="129">Backwards pattern rotation from slow to fast</Capability>
</Channel>
<Channel Name="Beam shaper selection">
<Group Byte="0">Effect</Group>
<Capability Max="3" Min="0">Open position/hole</Capability>
<Capability Max="7" Min="4">Beam shaper 1</Capability>
<Capability Max="11" Min="8">Beam shaper 2</Capability>
<Capability Max="15" Min="12">Beam shaper 3</Capability>
<Capability Max="19" Min="16">Beam shaper 4</Capability>
<Capability Max="23" Min="20">Beam shaper 1</Capability>
<Capability Max="27" Min="24">Beam shaper 2</Capability>
<Capability Max="31" Min="28">Beam shaper 3</Capability>
<Capability Max="35" Min="32">Beam shaper 4</Capability>
<Capability Max="255" Min="36">Reserved</Capability>
</Channel>
<Channel Name="Beam shaper rotation and indexing">
<Group Byte="0">Effect</Group>
<Capability Max="255" Min="0">Shaper indexing</Capability>
<Capability Max="0" Min="0">No rotation</Capability>
<Capability Max="127" Min="1">Forwards shaper rotation from fast to slow</Capability>
<Capability Max="128" Min="128">No rotation</Capability>
<Capability Max="255" Min="129">Backwards shaper rotation from slow to fast</Capability>
</Channel>
<Channel Name="Frost">
<Group Byte="0">Beam</Group>
<Capability Max="0" Min="0">Open</Capability>
<Capability Max="50" Min="1">Light Frost from 0% to 100% - Light frost</Capability>
<Capability Max="53" Min="51">100% Light Frost - Light frost</Capability>
<Capability Max="63" Min="54">Pulse closing from slow to fast - Light frost</Capability>
<Capability Max="73" Min="64">Pulse opening from fast to slow - Light frost</Capability>
<Capability Max="83" Min="74">Ramping from fast to slow - Light frost</Capability>
<Capability Max="86" Min="84">Open - Light frost</Capability>
<Capability Max="136" Min="87">Medium Frost from 0% to 100% - Medium frost</Capability>
<Capability Max="139" Min="137">100% Medium Frost - Medium frost</Capability>
<Capability Max="149" Min="140">Pulse closing from slow to fast - Medium frost</Capability>
<Capability Max="159" Min="150">Pulse opening from fast to slow - Medium frost</Capability>
<Capability Max="169" Min="160">Ramping from fast to slow - Medium frost</Capability>
<Capability Max="172" Min="170">Open - Medium frost</Capability>
<Capability Max="222" Min="173">Medium Frost from 0% to 100% (Light Frost inserted) - Medium frost</Capability>
<Capability Max="225" Min="223">100% Medium Frost (Light Frost inserted) - Medium frost</Capability>
<Capability Max="235" Min="226">Pulse closing from slow to fast (both frosts together) - Medium frost</Capability>
<Capability Max="245" Min="236">Pulse opening from fast to slow (both frosts together) - Medium frost</Capability>
<Capability Max="255" Min="246">Ramping from fast to slow (both frosts together) - Medium frost</Capability>
</Channel>
<Channel Name="Zoom">
<Group Byte="0">Beam</Group>
<Capability Max="255" Min="0">Zoom from max. to min.beam angle</Capability>
<Capability Max="0" Min="0">Wide</Capability>
<Capability Max="128" Min="128">Center</Capability>
<Capability Max="255" Min="255">Narrow</Capability>
</Channel>
<Channel Name="Zoom - fine">
<Group Byte="1">Beam</Group>
<Capability Max="255" Min="0">Zoom - fine</Capability>
</Channel>
<Channel Name="Focus">
<Group Byte="0">Beam</Group>
<Capability Max="255" Min="0">Continuous adjustment from far to near</Capability>
</Channel>
<Channel Name="Focus Fine">
<Group Byte="1">Beam</Group>
<Capability Max="255" Min="0">Focus Fine</Capability>
</Channel>
<Channel Name="Hot - Spot control">
<Group Byte="0">Beam</Group>
<Capability Max="0" Min="0">Automatic Hot - Spot control</Capability>
<Capability Max="255" Min="1">Hot - Spot control (from min. to max. intensity of image centre)</Capability>
</Channel>
<Channel Name="Shutter/ strobe">
<Group Byte="0">Shutter</Group>
<Capability Max="31" Min="0">Shutter closed</Capability>
<Capability Max="63" Min="32">Shutter open</Capability>
<Capability Max="95" Min="64">Strobe - effect from slow to fast</Capability>
<Capability Max="127" Min="96">Shutter open</Capability>
<Capability Max="143" Min="128">Opening pulse in sequences from slow to fast</Capability>
<Capability Max="159" Min="144">Closing pulse in sequences from fast to slow</Capability>
<Capability Max="191" Min="160">Shutter open</Capability>
<Capability Max="223" Min="192">Random strobe - effect from slow to fast</Capability>
<Capability Max="255" Min="224">Shutter open, Full lamp power</Capability>
</Channel>
<Channel Name="Dimmer intensity">
<Group Byte="0">Intensity</Group>
<Capability Max="255" Min="0">Dimmer intensity from 0% to 100%</Capability>
<Capability Max="0" Min="0">Closed</Capability>
<Capability Max="255" Min="255">Open</Capability>
</Channel>
<Channel Name="Dimmer intensity - fine">
<Group Byte="1">Intensity</Group>
<Capability Max="255" Min="0">Dimmer intensity - fine</Capability>
</Channel>
<Mode Name="Mode 1 - Standard 16 - bit">
<Physical>
<Bulb ColourTemperature="0" Lumens="0" Type="Osram Sirius HRI 470W RO"/>
<Dimensions Depth="1" Height="1" Weight="1" Width="1"/>
<Lens DegreesMax="21 beam mode&#10;3" DegreesMin="1.8" Name="Other"/>
<Focus PanMax="540" TiltMax="265" Type="Head"/>
</Physical>
<Channel Number="0">Pan</Channel>
<Channel Number="1">Pan Fine</Channel>
<Channel Number="2">Tilt</Channel>
<Channel Number="3">Tilt fine</Channel>
<Channel Number="4">Pan/Tilt speed , Pan/Tilt time</Channel>
<Channel Number="5">Power/Special functions</Channel>
<Channel Number="6">Cyan</Channel>
<Channel Number="7">Magenta</Channel>
<Channel Number="8">Yellow</Channel>
<Channel Number="9">Colour wheel</Channel>
<Channel Number="10">Colour wheel - fine positioning</Channel>
<Channel Number="11">Virtual colour wheel</Channel>
<Channel Number="12">Effect Speed</Channel>
<Channel Number="13">CMY &amp; Colour wheel time</Channel>
<Channel Number="14">Zoom &amp; Focus &amp; Frost &amp; Prism time</Channel>
<Channel Number="15">Effect wheel positioning</Channel>
<Channel Number="16">Effect wheel rotation</Channel>
<Channel Number="17">Effect wheel animations</Channel>
<Channel Number="18">Static gobo wheel</Channel>
<Channel Number="19">Rotating gobo wheel</Channel>
<Channel Number="20">Rot. gobo indexing and rotation</Channel>
<Channel Number="21">Rot. gobo indexing/rotation - fine</Channel>
<Channel Number="22">Prism wheel 1</Channel>
<Channel Number="23">Prism wheel 1 indexing/rotation</Channel>
<Channel Number="24">Prism wheel 2</Channel>
<Channel Number="25">Prism wheel 2 indexing/rotation</Channel>
<Channel Number="26">Pattern sellection</Channel>
<Channel Number="27">Pattern rotation and indexing</Channel>
<Channel Number="28">Beam shaper selection</Channel>
<Channel Number="29">Beam shaper rotation and indexing</Channel>
<Channel Number="30">Frost</Channel>
<Channel Number="31">Zoom</Channel>
<Channel Number="32">Zoom - fine</Channel>
<Channel Number="33">Focus</Channel>
<Channel Number="34">Focus Fine</Channel>
<Channel Number="35">Hot - Spot control</Channel>
<Channel Number="36">Shutter/ strobe</Channel>
<Channel Number="37">Dimmer intensity</Channel>
<Channel Number="38">Dimmer intensity - fine</Channel>
</Mode>
<Mode Name="Mode 2 - Reduced 8 - bit">
<Physical>
<Bulb ColourTemperature="0" Lumens="0" Type="Osram Sirius HRI 470W RO"/>
<Dimensions Depth="1" Height="1" Weight="1" Width="1"/>
<Lens DegreesMax="21 beam mode&#10;3" DegreesMin="1.8" Name="Other"/>
<Focus PanMax="540" TiltMax="265" Type="Head"/>
</Physical>
<Channel Number="0">Pan</Channel>
<Channel Number="1">Pan Fine</Channel>
<Channel Number="2">Tilt</Channel>
<Channel Number="3">Tilt fine</Channel>
<Channel Number="4">Pan/Tilt speed , Pan/Tilt time</Channel>
<Channel Number="5">Power/Special functions</Channel>
<Channel Number="6">Cyan</Channel>
<Channel Number="7">Magenta</Channel>
<Channel Number="8">Yellow</Channel>
<Channel Number="9">Colour wheel</Channel>
<Channel Number="10">Virtual colour wheel</Channel>
<Channel Number="11">Effect Speed</Channel>
<Channel Number="12">CMY &amp; Colour wheel time</Channel>
<Channel Number="13">Zoom &amp; Focus &amp; Frost &amp; Prism time</Channel>
<Channel Number="14">Effect wheel positioning</Channel>
<Channel Number="15">Effect wheel rotation</Channel>
<Channel Number="16">Effect wheel animations</Channel>
<Channel Number="17">Static gobo wheel</Channel>
<Channel Number="18">Rotating gobo wheel</Channel>
<Channel Number="19">Rot. gobo indexing and rotation</Channel>
<Channel Number="20">Prism wheel 1</Channel>
<Channel Number="21">Prism wheel 1 indexing/rotation</Channel>
<Channel Number="22">Prism wheel 2</Channel>
<Channel Number="23">Prism wheel 2 indexing/rotation</Channel>
<Channel Number="24">Pattern sellection</Channel>
<Channel Number="25">Pattern rotation and indexing</Channel>
<Channel Number="26">Beam shaper selection</Channel>
<Channel Number="27">Beam shaper rotation and indexing</Channel>
<Channel Number="28">Frost</Channel>
<Channel Number="29">Zoom</Channel>
<Channel Number="30">Focus</Channel>
<Channel Number="31">Hot - Spot control</Channel>
<Channel Number="32">Shutter/ strobe</Channel>
<Channel Number="33">Dimmer intensity</Channel>
</Mode>
</FixtureDefinition>
@vanous
Copy link
Author

vanous commented Feb 23, 2018

This script is reused from some old script which generates gMA2 fixture types, so some 16bit generating code could still be cleaned.

ROBE xml DMX files can be found here (very ugly url) https://www.robe.cz/support/?q=xml&type=10880&cHash=a7c0c0121b5404478222678d10be4e30

Example file included. Most profiles validate perfectly (actually the included example doesn't validate due to wrong lens information, this is very simple to edit). Some physical definitions are added as 0 or 1 just to validate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment