Skip to content

Autozoom plugin

Naostage has developed a GrandMA2 plugin to automatically control the zoom of a moving head to that the beam size will be constant on a moving stage marker.


You can download the files needed here.


  1. Download the files auto-zoom.lua and auto-zoom.xml and put them in the plugins folder of GrandMA2 :

    • Usually C:\Program Files (x86)\grandma2\plugins or C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.9.60\plugins on Windows.
    • In your USB key gma2/plugins.
  2. Load the plugin in your show file :

    • Open the plugin pool (Create Basic Window -> System -> Plugin).


    • Right click where you want to add the plugin.


    • An "Edit Plugin" window will show up. Click on the "Import" button.


    • On the "Import Plugins" window, select the auto-zoom.xml file and click on the "Import" button.


    • You can optionally select Execute On Load so that the plugin automatically starts when you load the show file.


  3. Next we want to create a couple of macro to control the execution of the plugin :

    • LUA "AZ.Enable()" This will enable the plugin and make it run.
    • LUA "AZ.Disable()" This will disable the plugin and stop it from running.
    • LUA "AZ.ShowEnabled()" This will show a message in the console if the plugin is enabled or not.
    • LUA "AZ.SetMode('Programmer')" This will set the plugin to Programmer mode.
    • LUA "AZ.SetMode('Executor')" This will set the plugin to Executor mode.
    • LUA "AZ.ShowMode()" This will show a message in the console if the plugin is in Programmer or Executor mode.
    • LUA "AZ.Refresh()" This will refresh the plugin. This is useful if you change fixture type properties or fixture info.


Enable / Disable the plugin

To enable the plugin, run the macro containing LUA "AZ.Enable()".
To disable the plugin, run the macro containing LUA "AZ.Disable()".
This can also be controlled with user variable AUTO_ZOOM_PLUGIN_ENABLED (0 = disabled, 1 = enabled).
If Execute On Load is enabled, the plugin will automatically start when you load the show file.

Prepare fixture

  1. Import the fixture type in your show file you want to use, then enable XYZ mode with Enable XYZ button.


  2. Then edit the fixture type with the Edit button and edit the Pan channel by selecting it and clicking on the Edit Row button. Make sure that the values From, To, From Phys and To Phys of the Pan and Tilt attributes are corresponding to the real values given by the fixture manufacturer. You need to change theses values if it is not the case, you would be surprise how much fixture types are wrong.
    In the case below, the Pan movement of the BMFL Spot is given at 540° by the manufacturer. 540° / 2 = 270°, the values From -270.00 To 270.00 and From Phys -270.00 To Phys 270.00 are therefore correct.



  3. Do the same for the tilt value.

  4. Next jump to the Zoom channel and set From/To to 0 -> 100. And FromPhys/ToPhys to values given by the the manufacturer (the values can be inverted (100 -> 0)).



  5. If you use iris to create a smaller beam when zoom if not enough, do the same for the iris.


That is all that is required, all this steps can be repeated if you have multiple fixture type that you need to use for XYZ tracking.

Setup Stage Marker, PSN and fixture

To setup everything for a followspot application, please follow the followspot application tutorial before coming back to this tutorial.

Programmer mode

Programmer mode is the easiest mode to use as it doesn't require any programming. You should only use this mode for testing purpose, it can be a good idea to test your setup before using executor mode.

  • Call your macro with LUA "AZ.SetMode('Programmer')" to enable this mode.
  • Call in a plugin LUA "AZ.EnableFixture(<fixture>, <stage marker>, <beam size>)".

    • <fixture> can be the ID of the fixture or the label
    • <stage marker> can be the ID of the fixture or the label
    • <beam size> is the value of the beam in meters

    For example LUA "AZ.EnableFixture(1, 1001, 2)" will enable XYZ tracking for Fixture 1 on Stage Marker Fixture 1001 with a beam size of 2 meters.

  • You can disable fixture tracking with LUA "AZ.DisableFixture(<fixture>)"

Executor mode

Once you made sure you that everything works, you can move to executor mode which have additional requirement.

  • Call your macro with LUA "AZ.SetMode('Executor')" to enable this mode.
  • You can still enable/disable fixture like in Programmer mode.

You will need to create 2 sequences per fixture, assigned on fader. The label of the sequence are important.

  • XYZ_ZOOM_<fixture id> : A sequence with Temp fader with zoom wide stored. If you fixture id is 1, then sequence name is XYZ_ZOOM_1.
  • XYZ_IRIS_<fixture id> : A sequence with Temp fader with iris open stored. If you fixture id is 1, then sequence name is XYZ_IRIS_1.

Then for each pair fixture/marker you need to create a base sequence XYZ_<fixture id>_<stage marker id> with:

  • STAGEX at 0
  • STAGEY at 0
  • STAGEZ at 0 (or the offset you need)
  • MARK to the stage marker
  • ZOOM narrow
  • IRIS close (or the minimum iris you want to use)

For example for fixture 1 and stage marker 1001, the sequence will be named XYZ_1_1001.


The plugin will then call the appropriate base sequence when you LUA "AZ.EnableFixture(fixture, marker, beam size)" and control zoom and iris temp fader to make the beam size matching your desired value.