Posts by Andreas


    I agree that the user plugin path very well could be included in package.path as default.

    check out the API function GetPath to simplify your script.
    - these few lines seems to do the job for me:

    local userplugins = GetPath('plugins')
    if not package.path:find(userplugins) then
      package.path = package.path .. ';' .. userplugins .. '/?.lua'  

    1) I merely assume that it has changed, as I expect that if this function when initially created, had the currently observed functionality, then it would have been created with a different name and description.

    2) use a fixed name

    local pv = PluginVars('StorageContainerForMyGreatPlugin')

    (assuming you want copies/duplicates/imports of the plugin to use the same/existing container)

    2.a) use the string representation of the plugin's handle as name:

    local componentHandle = select(4, ...)


    local uniqueName = HandleToStr(componentHandle:Parent())


    To my understanding, the main/initial purpose for this function is to preserve settings of the internal/UI plugins (Menu keyword), as the Menus have a fixed name, and the preferences and vars are not only userprofile, but also screenconfig specific:


    the actual functionality has changed for this function

    maybe this "bugfix" can be helpful

    Hi Lukas,

    to my knowledge:

    as you mention, HookObjectChange will trigger by changes to objects and its properties.

    Playback does not make any "change" to the object.

    Here's another approach, without using constant polling:

    a gma3 plugin is handled as a Lua coroutine.

    you need to include the generic Lua function coroutine.yield(seconds), e.g. coroutine.yield(0.1) the places in your code where you want to allow other plugins (and the UI) to resume their code.

    "Is it possible to set LinkPhaser to AtFilter using the command line or a macro?"

    please look at the commandline history window after operating the LinkPhaser button, e.g:

    Set UserProfile 1 Property "EncoderLinkPhaser" "AtFilter"

    in the later versions, a starting MAtricks keyword is used to reference MAtricks pool objects.

    to set the matricks of your current selection try:

    Lua "Cmd([[Set Selection MAtricks 'XWidth' '%.f' 'Y' '0']], SelectionCount()/2)"

    possible but not trivial...

    Set ScreenContent x.y."LayoutViewSettings" Property "Layout" "a.Layouts.b"

    x = screen number

    y = window number

    (window number depends on the creation order of each window and may change if you add or delete windows)

    a = datapool name/number

    b = layout name/number


    Set ScreenContent 1.5."LayoutViewSettings" Property "Layout" "Default.Layouts.4"

    I would use different functions for each group of buttons:

    tblOptions[x].Clicked = "Group1Click"


    AnotherTblOptions[x].Clicked = "Group2Click"


    signalTable.Group1Click = function(caller)
    Echo("ButtonGrp 1 Button " .. caller:Index())


    signalTable.Group2Click = function(caller)
    Echo("ButtonGrp 2 Button " .. caller:Index())


    be aware that the commandine syntax e.g.

    Width 10

    will apply to the single currently Selected Attribute (bright yellow font in Fixture Sheet column secondary headline),

    while the Phaser Editor Window checkboxes doesn't select attributes, but rather filters attributes, by operating the AtFilter.

    Only if "Link Phaser" is set to AtFilter, will the syntax above propagate the width value from the selected attribute to other attributes (that are not disabled by these filter checkboxes)


    My edit dialog shows 0 - 3200%, don't know why yours show only value 0