DMXis Macro - manage moving head targets for show

Discuss macro programming, and post any new macros here!
rad3d
Posts: 160
Joined: Tue Nov 27, 2012 4:28 pm

DMXis Macro - manage moving head targets for show

Post by rad3d »

Couldn't post to the Python Macro board, so posting here.

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")
ChrisDuncan
Posts: 379
Joined: Sat Sep 14, 2013 9:35 pm
Location: Atlanta GA / USA / Earth / Milky Way / The 'Verse
Been thanked: 1 time

Re: DMXis Macro - manage moving head targets for show

Post by ChrisDuncan »

Hey, man.

Great stuff, thanks so much for sharing. Not only is it nice, clean code, it gives me plenty of food for thought as I set up my own show. We have 16 movers and the positioning issue you mention is one that's been on my mind.

Just wanted to take a moment to let you know I appreciate the work you did on this.
Christopher Duncan
Author of
Have Fun, Get Paid: How to Make a Living With Your Creativity
http://www.ChristopherDuncan.com
rad3d
Posts: 160
Joined: Tue Nov 27, 2012 4:28 pm

Re: DMXis Macro - manage moving head targets for show

Post by rad3d »

Thanks!

Was beginning to wonder if anyone else had this issue, or if my long instructions threw everyone off from even attempting to use. And, yes, the concept can definitely be used for many scenarios beyond moving head positioning.
ChrisDuncan
Posts: 379
Joined: Sat Sep 14, 2013 9:35 pm
Location: Atlanta GA / USA / Earth / Milky Way / The 'Verse
Been thanked: 1 time

Re: DMXis Macro - manage moving head targets for show

Post by ChrisDuncan »

I'm guessing that the majority of users aren't interested in slinging code. I do it for a living so it's a natural tool for me to reach for. I'm still in the process of getting things set up so that I'll have a decent workflow once I get going - macros, then base presets, etc.

I'm looking forward to getting past the grunt work and on to the fun stuff. :)
Christopher Duncan
Author of
Have Fun, Get Paid: How to Make a Living With Your Creativity
http://www.ChristopherDuncan.com
matestubb
Posts: 8
Joined: Tue Sep 10, 2013 7:46 pm

Re: DMXis Macro - manage moving head targets for show

Post by matestubb »

I definitely appreciate it too!

I haven't got around to trying it yet, as I am still building my basic presets. I didn't even know any of this was possible until just recently, when I found out I had been running an ancient version of DMXIS which did not have any macro capability at all.
ChrisDuncan
Posts: 379
Joined: Sat Sep 14, 2013 9:35 pm
Location: Atlanta GA / USA / Earth / Milky Way / The 'Verse
Been thanked: 1 time

Re: DMXis Macro - manage moving head targets for show

Post by ChrisDuncan »

Yeah, the macros are giong to be a real time saver in selecting / enabling channels. I'm running 10 American American Dj Flat Par Tri 7xs and 16 Chauvet Intimidator 150s. Plus, the two follow spots, also have DMX capabilities. To page back and forth on the faders trying to select them one at a time would have been too tedious to bear. Dave's addition of macros was an excellent feature.

How are you going to run the lights at showtime - will someone be operating the standalone app, or are you using a MIDI sequncer and the vst plugin?
Christopher Duncan
Author of
Have Fun, Get Paid: How to Make a Living With Your Creativity
http://www.ChristopherDuncan.com
ChrisDuncan
Posts: 379
Joined: Sat Sep 14, 2013 9:35 pm
Location: Atlanta GA / USA / Earth / Milky Way / The 'Verse
Been thanked: 1 time

Re: DMXis Macro - manage moving head targets for show

Post by ChrisDuncan »

Hey, man.

Spent the day getting familiar with python 101, at least enough to start coding. Thought I'd share my work with you in case there's any concepts that you don't already have in your own stuff.

When I'm working on things, I like to go fast, so to me the biggest thing up front is setting up a bunch of macros so that I can quickly select the fixtures and attributes I need. Toward that end, my first step was creating a bunch of global stuff that will allow me to write a lot of very specific selection macros with only a few lines of code.

Setting up variables for the starting channel of each fixture allows me to reference by name. If the fixture channel changes, it's still a problem to cope with in any saved presets, but at least the macros can be updated in a single line of code to reflect the new position. I also used meaningful names for each of the fixture channel attributes. From there, I set up a bunch of arrays grouping fixtures as I'd likely select them.

I then set up a few simple functions that take the array, offset and state (on / off) since I'm currently dealing with selection and enabling. Put it all together and I can write a simple macro like this to select all the color channels of the Par fixtures on the front truss. Three lines of code without all the comments.

If I wanted to select the corner R2 units, I could call SelectGroup twice, passing the end group for front and rear truss. If I think it'll happen a lot, easy enough to create a new array that has those 4 fixtures.

Anyway, here's the code, first a sample macro for section followed by the common code it references. I'm really a newbie with both python and DMXIS, and people also come up with different solutions for common problems (stuff we all encounter at gigs). Would love it if you'd share what you're up to as you go along.

Code: Select all

from OverlordCommon import *

# deslect and disable all channels
Clear()

# select the ParColor offset of all fixtures in the ParFrontTruss group
# if the channel isn't enabled, it will be automatically
SelectGroup(ParFrontTruss, ParColor, 1)

Here's the common code module:

Code: Select all

#---------------------------------------------------
# Import DMXIS C extension module
#---------------------------------------------------
import _DmxApi
from _DmxApi import *

#===============================================================
# Global variables initialized first time DMXIS (python) is run
#===============================================================

#===============================================================
# Fixture offsets
#===============================================================
ParR 		= 0
ParG 		= 1
ParB 		= 2
ParColor	= 3
ParStrobe	= 4
ParPrograms	= 5
ParDim		= 6

RPan		= 0
RTilt		= 1
RPanFine	= 2
RTiltFine	= 3
RSpeed		= 4
RColor		= 5
RShutter	= 6
RDim		= 7
RGobo		= 8
RControl 	= 9
RAuto	 	= 10

SootDim		= 0
SpotColor	= 1
SpotStrobe	= 2

#===============================================================
# Fixture positions, left to right from FOH
#===============================================================
ParFront1	=	0
ParFront2	=	7
ParFront3	=	14
ParFront4	=	21
ParFront5	=	28
ParFront6	=	35

ParBack1	=	42
ParBack2	=	49
ParBack3	=	56
ParBack4	=	63
ParBack5	=	70
ParBack6	=	77

RFront1		=	100
RFront2		=	111
RFront3		=	122
RFront4		=	133
RFront5		=	144

RBack1		=	155
RBack2		=	166
RBack3		=	177
RBack4		=	188
RBack5		=	199

RFloorFL	=	210
RFloorFR	=	221
RFloorRL	=	232
RFloorRR	=	243

SpotL		=	90
SpotR		=	93

#===============================================================
# full groups
#===============================================================
ParFrontTruss	= [ParFront1, ParFront2, ParFront3, ParFront4, ParFront5, ParFront6]
ParBackTruss	= [ParBack1, ParBack2, ParBack3, ParBack4, ParBack5, ParBack6]

RFrontTruss		= [RFront1, RFront2, RFront3, RFront4, RFront5]
RBackTruss		= [RBack1, RBack2, RBack3, RBack4, RBack5]

RFloor			= [RFloorFL, RFloorFR, RFloorRL, RFloorRR]

#===============================================================
# partial groups
#===============================================================
ParFrontTrussOdd		= [ParFront1, ParFront3, ParFront5]				# every other one starting from the left
ParFrontTrussEven		= [ParFront2, ParFront4]						# every other one starting from the right
ParFrontTrussLeft		= [ParFront1, ParFront2, ParFront3]				# first 3 from left
ParFrontTrussRight		= [ParFront4, ParFront5, ParFront6]				# first 3 from right
ParFrontTrussCenter2	= [ParFront3, ParFront4]						# center 2
ParFrontTrussEnd1		= [ParFront1, ParFront6]						# ends, 1 deep
ParFrontTrussEnd2		= [ParFront1, ParFront2, ParFront5, ParFront6]	# ends, 2 deep

ParBackTrussOdd			= [ParBack1, ParBack3, ParBack5]				# every other one starting from the left
ParBackTrussEven		= [ParBack2, ParBack4, ParBack6]				# every other one starting from the right
ParBackTrussLeft		= [ParBack1, ParBack2, ParBack3]				# first 3 from left
ParBackTrussRight		= [ParBack4, ParBack5, ParBack6]				# first 3 from right
ParBackTrussCenter2		= [ParBack3, ParBack4]							# center 2
ParBackTrussEnd1		= [ParBack1, ParBack6]							# ends, 1 deep
ParBackTrussEnd2		= [ParBack1, ParBack2, ParBack5, ParBack6]		# ends, 2 deep

RFrontTrussOdd		= [RFront1, RFront3, RFront5]						# ends and center
RFrontTrussEven		= [RFront2, RFront4]								# inner two without center
RFrontTrussLeft		= [RFront1, RFront2]								# left 2
RFrontTrussRight	= [RFront4, RFront4]								# right 2
RFrontTrussCenter	= [RFront3]											# center
RFrontTrussEnd		= [RFront1, RFront5]								# ends

RBackTrussOdd		= [RBack1, RBack3, RBack5]							# ends and center
RBackTrussEven		= [RBack2, RBack4]									# inner two without center
RBackTrussLeft		= [RBack1, RBack2]									# left 2
RBackTrussRight		= [RBack4, RBack5] 									# right 2
RBackTrussCenter	= [RBack3]											# center
RBackTrussEnd		= [RBack1, RBack5]									# ends

SpotAll				= [SpotL, SpotR]									# both
SpotL				= [SpotL]											# FOH L
SpotR				= [SpotR]											# FOH R

#===============================================================
# deselect and disable everything
#===============================================================
def Clear():
	for ch in range(0,511):
		SelectCh(ch, 0)
		SetChEnabled(ch, 0)
	
#===============================================================
# set enable of all (channel + offset) in the given group to state
#===============================================================
def EnableGroup(group, offset, state):
	for ch in group:
		SetChEnabled(ch + offset, state)
	
#===============================================================
# set select of all (channel + offset) in the given group to state
#===============================================================
def SelectGroup(group, offset, state):
	for ch in group:
		if 1 == state:
			SetChEnabled(ch + offset, 1)
		SelectCh(ch + offset, state)
Christopher Duncan
Author of
Have Fun, Get Paid: How to Make a Living With Your Creativity
http://www.ChristopherDuncan.com
giusfre
Posts: 11
Joined: Mon Oct 08, 2012 7:28 pm

Re: DMXis Macro - manage moving head targets for show

Post by giusfre »

This looks very interesting!!! I'm completely new to DMXIS and ShowBuddy (I haven't start to use them infact) but one of the main problem I had in the past was the fact that club to club, venue to venue, we can't built the lighting fixtures Always in the same position and this is a big problem expecially with moving lights (they not point as we design them if they are at differents hights or position).
Is this tool useful for this problem?
Many thanks
rad3d
Posts: 160
Joined: Tue Nov 27, 2012 4:28 pm

Re: DMXis Macro - manage moving head targets for show

Post by rad3d »

giusfre wrote:This looks very interesting!!! I'm completely new to DMXIS and ShowBuddy (I haven't start to use them infact) but one of the main problem I had in the past was the fact that club to club, venue to venue, we can't built the lighting fixtures Always in the same position and this is a big problem expecially with moving lights (they not point as we design them if they are at differents hights or position).
Is this tool useful for this problem?
Many thanks
Exactly why I put it together. Heck, I'm a guitarist. I don't have time to mess with lights...

I only have a couple of movers in our show now and it would be a pain to set them without this macro. Without it, I'd be stuck either not using the movers more than a few times per night, or just doing a bunch of random pans throughout the show.
ChrisDuncan
Posts: 379
Joined: Sat Sep 14, 2013 9:35 pm
Location: Atlanta GA / USA / Earth / Milky Way / The 'Verse
Been thanked: 1 time

Re: DMXis Macro - manage moving head targets for show

Post by ChrisDuncan »

Hey, rad3d -

Are you running the show manually or via a sequencer & the vst plugin?

I'm doing the latter, and I think the solution I'm going to use to the moving head focus problem is dedicate bank 0 to the moving head position presets, i.e. all channels disabled but the pan / tilt. When I'm sequencing the presets, it'll be a couple of extra steps.

1. Fire bank 0
2. Fire moving head position preset
3. Fire bank for song preset
4. Fire song preset

If I keep all pan / tilt info out of the song presets and store them all in the first bank, then when setting up for a show I can just scorll down the presets in the first bank, tweak the settings, and save the preset. If I keep a standard copy of the movement presets that I just copy in for a new venue, this will accomplish what you're doing but without having to run and maintain all the macros.

Of course, if you're running the show by hand this wouldn't be effective because your lighting operator wouldn't be able to go back and forth between the movement & regular preset banks as fast as a sequencer does. Anyway, thought I'd throw it out there in case your show is automated.

And yeah, I'm a guitarist, too. When I'm on a gig I want to be chasing girls, not fooling with lights. :)
Christopher Duncan
Author of
Have Fun, Get Paid: How to Make a Living With Your Creativity
http://www.ChristopherDuncan.com
rad3d
Posts: 160
Joined: Tue Nov 27, 2012 4:28 pm

Re: DMXis Macro - manage moving head targets for show

Post by rad3d »

If I were using the vst plugin, that would be a great way to manage it.

In my rig, I use Ableton to trigger quite a few loops and samples, but everything is done as real time performance triggers, so I have no sequences that run through songs (that would make my life way too easy). Many of our songs don't make use of loops or samples at all.

In general, I have Ableton initialize all my gear, including setting up banks in Dmxis, and then I run through scenes manually with a normal dmxis foot switch. I also have some special lighting effects that are triggered as simple midi segments from Ableton, the same way that I trigger everything else (McMillen SoftStep and QuNeo).
ChrisDuncan
Posts: 379
Joined: Sat Sep 14, 2013 9:35 pm
Location: Atlanta GA / USA / Earth / Milky Way / The 'Verse
Been thanked: 1 time

Re: DMXis Macro - manage moving head targets for show

Post by ChrisDuncan »

Yeah, I don't know what I'd do with mysefl if life were too easy. Probably just get into more trouble.

I recently bought Live but don't have much experience with it. However, I did test it with the vst plugin. I don't know if it's worth it to you in terms of effort, but it sounds like you could create simple midi segments like you mentioned to fire your Dmxis lighting presets. If you moved from cycling through with a footpedal to triggering through Live, you'd be able to do the bank zero thing for the moving head presets and wouldn't have to run the retargeting macros.

On the other hand it may be more trouble than it's worth for you to retool. Either way, nice to have options and we seem to have plenty.
Christopher Duncan
Author of
Have Fun, Get Paid: How to Make a Living With Your Creativity
http://www.ChristopherDuncan.com
rad3d
Posts: 160
Joined: Tue Nov 27, 2012 4:28 pm

Re: DMXis Macro - manage moving head targets for show

Post by rad3d »

ChrisDuncan wrote:Yeah, I don't know what I'd do with mysefl if life were too easy. Probably just get into more trouble.

I recently bought Live but don't have much experience with it. However, I did test it with the vst plugin. I don't know if it's worth it to you in terms of effort, but it sounds like you could create simple midi segments like you mentioned to fire your Dmxis lighting presets. If you moved from cycling through with a footpedal to triggering through Live, you'd be able to do the bank zero thing for the moving head presets and wouldn't have to run the retargeting macros.

On the other hand it may be more trouble than it's worth for you to retool. Either way, nice to have options and we seem to have plenty.
I've retooled so many times already... Kind of feel I'd be trying to rework to much of what's already easy to do in straight DMXIS.
ChrisDuncan
Posts: 379
Joined: Sat Sep 14, 2013 9:35 pm
Location: Atlanta GA / USA / Earth / Milky Way / The 'Verse
Been thanked: 1 time

Re: DMXis Macro - manage moving head targets for show

Post by ChrisDuncan »

Besides, you've already got an excellent solution with your targeting macros. Getting the show in front of people is what matters. Don't get me wrong, I'm certainly part geek, but I long for the days when I'm staring at a dance floor full of pretty girls again rather than a computer screen. :)
Christopher Duncan
Author of
Have Fun, Get Paid: How to Make a Living With Your Creativity
http://www.ChristopherDuncan.com
mstreck
Posts: 10
Joined: Fri Jan 17, 2014 6:28 pm

Re: DMXis Macro - manage moving head targets for show

Post by mstreck »

This is quite an awesome idea! Thank you!
ChrisDuncan
Posts: 379
Joined: Sat Sep 14, 2013 9:35 pm
Location: Atlanta GA / USA / Earth / Milky Way / The 'Verse
Been thanked: 1 time

Re: DMXis Macro - manage moving head targets for show

Post by ChrisDuncan »

I love the macro engine. Having power tools is fun. :)
Christopher Duncan
Author of
Have Fun, Get Paid: How to Make a Living With Your Creativity
http://www.ChristopherDuncan.com
ojacques
Posts: 21
Joined: Mon Oct 12, 2015 9:44 pm
Has thanked: 2 times

Re: DMXis Macro - manage moving head targets for show

Post by ojacques »

Just wanted to say thank you to ChrisDuncan and rad3d for the 2 solutions offered. My first 2 moving heads are ordered, and I was wondering how I could solve that problem of pointing them where they need to, when changing venues.
I was about to go for an all-python macros, but I'll try Chris's solution first...

Any other macro / tips you guys are using for moving heads?

Thanks!
DMXIS since 2015, Show Buddy Active since 9/2019.
Sharpola
Posts: 7
Joined: Sat May 30, 2015 5:01 am

Re: DMXis Macro - manage moving head targets for show

Post by Sharpola »

Sorry its pretty much greek to me, any hints on how to get past this?
zxMovers is my mover preset bank, I tryed renaming it to just Movers but same result
Thanks
Ray


File "C:\Program Files (x86)/ENTTEC/DMXIS/Macros//GPS Movers/movers_macro.py", line 14
MvBankName = "zxMovers"
^
IndentationError: unexpected indent


*edit
I figured it out thanks
Sharpola
Posts: 7
Joined: Sat May 30, 2015 5:01 am

Re: DMXis Macro - manage moving head targets for show

Post by Sharpola »

I LOVE this macro!!
rad3d
Posts: 160
Joined: Tue Nov 27, 2012 4:28 pm

Re: DMXis Macro - manage moving head targets for show

Post by rad3d »

Good deal! Glad that a few out there are finding it useful.
ojacques
Posts: 21
Joined: Mon Oct 12, 2015 9:44 pm
Has thanked: 2 times

Re: DMXis Macro - manage moving head targets for show

Post by ojacques »

Just stopping by for a BIG "thank you". Did a full show programming with rad3d's solution - and it worked like a charm. Cool stuff. May be worth uploading to https://github.com/ and share the code there as an Open Source project.
DMXIS since 2015, Show Buddy Active since 9/2019.
rad3d
Posts: 160
Joined: Tue Nov 27, 2012 4:28 pm

Re: DMXis Macro - manage moving head targets for show

Post by rad3d »

ojacques wrote:Just stopping by for a BIG "thank you". Did a full show programming with rad3d's solution - and it worked like a charm. Cool stuff. May be worth uploading to https://github.com/ and share the code there as an Open Source project.
Hey - I'm just glad that someone was able to follow my set up instructions...
wayneakp
Posts: 22
Joined: Thu Jul 07, 2016 6:10 pm

Re: DMXis Macro - manage moving head targets for show

Post by wayneakp »

Just doing some set up with this - great idea and it works!

Just one question I can see its worked in the debugg window but can we get a splash box come up to say when its finished?

thanks

Wayne
jjojjo422
Posts: 4
Joined: Tue Mar 05, 2019 5:34 pm

Re: DMXis Macro - manage moving head targets for show

Post by jjojjo422 »

Hello,

I love this Idea. I'm a newb to python so forgive me if this is a simple fix but I keep running into this error when running the script from within python:

Traceback (most recent call last):
File "/Library/Application Support/ENTTEC/DMXIS/Macros/Python/Moving Head Target.py", line 33, in <module>
for b in range(GetNumBanks()):
NameError: name 'GetNumBanks' is not defined

What should I do to fix it?

Thanks in advance!

****Edit***

When you create your presets for the moving targets for the macro, make sure you save them without the dashes on both sides of it. ie: xStage NOT -xStage-

only use the dashes on the sides in the preset you want the macro to modify. ie: Bridge -xStage-

Thanks again for all your hard work in the macro. Its fantastic.
Pruitt
Posts: 10
Joined: Tue Dec 17, 2019 9:40 pm

Re: DMXis Macro - manage moving head targets for show

Post by Pruitt »

Brilliant, rad3d! I am a new user of DMXIS and Showbuddy, for just a few days now, and this obviously solves a big issue of being on different stages all the time. Very nice. Works well. Thank you! :)
Post Reply