This is a macro I wrote to quickly manage moving head targets throughout all scenes in a show. Every stage we play on requires us to retarget our movers for each preset that uses them - and manually updating those targets across all presets in a show is time consuming. This macro works by allowing you to define a bank of default targets, then batch assign them to your show presets using special preset naming conventions. My band uses about 16 default target positions per show that are duplicated across about 120 individual presets, so only redefining 16 is a real time saver.
The first step in setting up is to open the macro code, and update the variable that defines a specific bank that will hold presets for the default mover targets. You then need to update the list variable that defines the specific channels that will be duplicated to other presets during the batch process. Both of these settings are fairly well documented in the macro. Once done, save the .py file in an appropriate macro location.
Next, you need to create default presets (defined in the macro - above) for all individual mover targets. I limit these presets to only pan/tilt controls, though they could be used for more settings as needed. Each target position preset should be named with a short, but descriptive name. For example, if you wanted to set 2 movers to come together at Center Stage, you would position the movers accordingly, and name the preset something like 'xStage'. During each show's setup, I go through each of these default presets, target heads for each, then resave. With my band's setup (2 movers, 16 default targets), this generally takes no more than 15 minutes.
Finally, within your overall show presets, you would incorporate a delimited name that correlates to the mover position preset being used into each scene preset name. For example, if you had a preset called 'Chorus1' that you wanted to use the 'xStage' target setting on, you'd rename the preset:
Chorus1 -xStage-
Use this same naming format on all show presets that you need to retarget movers on. Here's an example of what a set of scenes might look like with the delimited target names:
Black -sOut- (Black scene, movers off, pointed up and out to the sides)
Intro1 -xFeet- (Intro scene, movers on, each pointing across stage to the performer's feet)
Verse1 -sOut- (Verse scene, movers off, pointed up and out to the sides)
Chorus1 (Chorus scene, no mover position)
Bridge -aUp- (Bridge scene, movers on, both pointing from back of stage out over the audience)
End -sOut- (End scene, movers off, pointed up and out to the sides)
Note: All on/off, gobo, color, etc settings for movers are best handled in the individual scenes above (not the default position settings). The delimited naming conventions are used only to define how the movers will be targeted once the macro is run.
The above preset titles would also assume that we at least have default target preset names as follows:
sOut
xFeet
aUp
Running the macro will grab all defined position channels from all presets in the bank we defined in the macro, then run through all other banks/presets in your show looking for the delimited (dashed) naming conventions. All targets should be properly set when done. Depending on the size of your show, the macro could take as long as 5-10 mins to run (each preset has to be loaded to be able to read/test the preset name), but once done, all moving head targets will be set.
I thought I'd share in case anyone else could use.
Copy/Paste all code below into a text editor and save the file in the DMXis Macros directory.
Code: Select all
#===============================================================
# DMXIS Macro - Update position settings for moving heads
# in an entire show based on positions of all moving heads
# in a specific DMXis Bank. Macro will look for delimited
# tokens found in Preset Names and apply the positions found
# from the (non-delimited) Preset names found in the
# default bank.
#===============================================================
# Set User-Defined Default Values
#===============================================================
# Set the name of the Bank that contains default mover presets - all will be recorded
MvBankName = "Movers"
# Define all of the channels you want this routine to copy and replace in appropriate scenes.
# Add as many as needed within the comma delimited list
MvChan=[65,66,67,68,81,82,83,84]
#===========================================
# Initialize Data List
MvData=[]
# Set delimiter values
dlm = "-"
# Start Processing
print ""
print "======================================="
# Loop through banks looking for our default Movers library
for b in range(GetNumBanks()):
LoadBank(b)
bankName = GetBankName(b)
if bankName == MvBankName:
print "Found " + MvBankName + " Directory "
print " Grabbing position data from all presets"
# Loop through all presets and grab position values into List variables
for x in range(GetNumPresets()):
LoadPreset(x)
presetName = GetPresetName(x)
MvData.append([])
for chans in range(len(MvChan)):
MvData[x].append(GetChVal(MvChan[chans]-1))
MvData[x].append(dlm + presetName + dlm)
print " ...Done"
#print MvData
print ""
# Loop through all Banks
for bb in range(GetNumBanks()):
LoadBank(bb)
bName = GetBankName(bb)
# Skip the Movers bank
if MvBankName != bName:
print "Searching for position identifiers in " + bName + "..."
# Loop through all presets, looking for our special naming convention
for pp in range(GetNumPresets()):
LoadPreset(pp)
pName = GetPresetName(pp)
# Loop through all mover preset positions
for mvpre in range(len(MvData)):
# If we find a match, fill with the the appropriate position values
if pName.find(MvData[mvpre][len(MvChan)]) != -1:
# Loop through all defined channels and insert values
for chans in range(len(MvChan)):
SetChVal(MvChan[chans]-1,MvData[mvpre][chans])
SaveCurrentPreset()
print " FOUND: " + pName + " =>> All Positions Updated"
print ""
Message("All presets have been updated")