Posts by Ahuramazda


    Thanks Andreas

    This is almost what I did.

    I did it by recalling the plugin component and passing the argument.

    local args = {1,2,3}
    for _,arg in pairs(args) do
        Cmd('plugin 1.1 "'..arg..'"')

    But I thought of doing it without Cmd() but I guess this is not possible, right?

    BTW - which way you think is better, yours (recalling global function) or mine (recalling plugin component)? I personally don't like creating global functions...

    Hi all,

    Is it possible to use a function from one of the components within the plugin from another component but with different arguments simultaneously?

    For example, I want to use a function from this plugin to move 3 faders simultaneously. I put function move_fader() to the first component and in the second I do this

    return function ()
        local commands = {'page 1.201 at 100 fade 1','page 1.202 at 70 fade 1','page 1.203 at 50 fade 1'}    
        for _,command in pairs(commands) do

    But it moves faders one by one, but not all together.

    Is there a way to make them move together?

    Selected exec page is a property of the User Profile, so we should hook CurrentProfile() object to capture page change.

    I think it can be done this way, but of course callback function will be recalled after any change of the user profile.

    Small plugin to delete fixtures from the patch by FID.

    Be careful - the output will be interrupted when the fixtures are removed!

    Limitation: you can use only one range in the input field, which means something like "1 thru 3 + 10 thru 12" is not possible.

    local fixture_name = ObjectList('fixture 101')[1].name
    local fixture_name = ObjectList('fixture 1')[1]:Get('name')

    Third argument for Get() is optional and allows you to get value in different "representations".

    So if we have some element (1) assigned to the layout 1, with X-coordinate -10, then with the regular

    local posx = DataPool().Layouts[1][1]:Get('posx')

    you will get "system" coordinate value 65526, but with

    local posx = DataPool().Layouts[1][1]:Get('posx',Enums.Roles.Display)

    you will get "-10", but as a string.

    Update: Reset button for each engine added; this description is slightly rephrased (generators are now called engines).

    Hello everyone,

    Here are my two new plugins that allow you to easily create busking layouts for position and dimmer effects.

    Everything is based on recipes and macros that modify recipe lines and MAtricks assigned to a recipes.

    My approach here is a bit different compared to the one in the latest StartShow version.

    Here you have two "engines" per layout and for each engine you can choose the involved groups, but MAtricks and all other settings (form, groups, blocks, mirroring, selection order...) are per engine.

    The top left switch is a sequence. This sequence is also assigned to executor 101 of the first free page in your show file.

    To the right of the sequence is the MAtricks object, which is assigned to the recipe lines of the sequence and is modified by the macros in the right part of the engine.

    Middle left - group activation macros. These macros assign and unassign groups to recipes of the sequence.

    Right side:

    • forms selection macros - pan sine, tilt sine, circle, eight (or infinity) forms (sin, snapin, snapout, pwm for dimmer phasers)
    • selection order macros (group order or shuffle), you can press the shuffle macro several times to get different shuffles
    • mirror macros - to get symmetrically mirrored phasers
    • phase macros - the phase_from setting is always 0, the phase_to setting changes according to the symbol text, the arrow macro changes the sign of the phase_to setting, so if the phase was 0 to 360, it will change to 0 to -360 and vice versa.
    • others are pretty obvious I think.

    Why two engines per layout? You can use them in two ways - create different effects for different groups and use them simultaneously, or use them for the same groups, prepare the second one while the first one is playing and then use the temp faders to "crossfade" between the two effects. Question - do we need more than two engines per layout?

    As some of the symbols I use are missing in the predefined symbols library, you'll need to import symbols into your show file manually. On the onPC stations you can do this by copying the contents of the "symbols" folder in the archive to "C:\ProgramData\MALightingTechnology\gma3_1.9.3\shared\resource\lib_symbols\symbols\" (if you're using 1. 9.3.3), on the console you'll need to put it on a stick to "D:\grandMA3\gma3_library\media\symbols\symbols" and then import it to the show using the import/export menu.

    To import the plugins themselves, you will need to copy the .lua and .xml files into the "C:\ProgramData\MALightingTechnology\gma3_library\datapools\plugins" folder or "D:\grandMA3\gma3_library\datapools\plugins" if you are using the stick to import plugins into the show file on a console.

    This is the first version of the plugin, so not everything is done yet (progress bar for example, but do we really need it?), so I'd be happy to hear your feedback on what can be changed/improved.

    Happy using/testing.

    No, it doesn't use Timer().

    I'm using coroutine.yield(0) for every fader position update. One coroutine.yield(0) takes 0.01 second for full cycle. I've measured it on different stations in different conditions. Seems it's quite constant.

    If entered fade doesn't match real fade, it can be adjusted with fadetime_fine_tune variable inside the plugin.

    Hi all,

    Another plugin from my side to move any non-sequence master with a given fade time.

    It is a workaround for the known gMA3 limitation that we can't apply a fade time for fader movement command for speedmasters, groupmasters and other non-sequence masters.

    With this plugin you can execute commands like "page 1.201 at 56 fade 1" or even "master 3.1 at BPM 14 fade 3.2".

    It works in two ways:

    1. You just run the plugin and put the command to the input field of a popup

    2. You can put the command "Plugin 'YB_movefader' 'master 3.1 at bpm 92.3 fade 5.3'" in a macro

    It should also work with several fades simultaneously.

    You can use gMA3 variables for Value and Fade.

    Known limitations:

    You can't stop the fader movement until the fade time is completed, unless you say Off plugin "YB_movefader"

    You must specify the fade time otherwise why are you using this plugin..?

    Feel free to test/use.

    Feedback appreciated.

    Hi all,

    Another generator - Position Picker Generator.

    Basically the same logic as in my Color Picker, but with some adjustments to work with positions.

    This plugin generates Selective presets and can use only Selective presets as predefined ones.

    A completely new thing - "Smart" Position Preset Generator. It creates position presets in relation to the positions of the fixtures in the 3D world, i.e. if you create presets for upside down and upright fixtures, the presets will be generated in such a way that the UP and DOWN positions will always be up and down for both groups.

    This can be disabled at the top of the main function by setting the smart_positions variable to false.

    Feel free to use/share.

    Feedback appreciated.