grandMA3 User Manual Publication

GetPresetData(handle[, boolean[, boolean]])

grandMA3 User Manual » Plugins » Lua Functions - Object-Free API » GetPresetData(handle[, boolean[, boolean]])
Version 2.2

Description

The GetPresetData Lua function returns a table with the preset data based on the preset handle.

The returned table is quite complex and has tables inside the table.

Arguments

  • Handle:
    The handle of the preset from which the data will be collected.
  • Boolean | nil (optional):
    This boolean determines whether the returned table should only contain phaser data. The default value is "false".
  • Boolean (optional):
    This boolean defines if there should be an extra object in the returned table. The default value is "true". The extra table object has the key "by_fixtures", and it contains the same table content as the returned table, but the keys are the fixture ID number instead of the UI Channel Index.

Return

  • Table | nil:
    The returned table contains the preset data. It has multiple levels of tables.

Example

This example prints information about the first level table in the preset data and the first level of the first fixture in the preset. It uses dimmer preset 1, which must exist.

Lua
return function()
    -- Get the handle for the first Dimmer preset.
    local myPreset = DataPool().PresetPools[1][1]
    -- Get the Preset Data of the handle.
    local myPresetData = GetPresetData(myPreset, false, false)
    -- Check if the GetPresetData returns something. 
    if myPresetData == nil then
        ErrPrintf("Dimmer preset 1 does not exist. Please create one and try again.")
        return
    end

    -- Print the myPresetData table.
    for Key, value in pairs(myPresetData) do
      if type(value) == "table" then
        Printf("Key: " .. Key .. " ; Value type is: " .. type(value))
      else
        Printf("Key: " .. Key .. " ; Value type is: " .. type(value) .. " ; Value: " .. value)
      end
    end

    -- Create a table object to hold all the integer keys in the myPresetData table.
    local myIntegerTableKeys = {}
    -- Fill the table.
    for key,_ in pairs(myPresetData) do
        if type(key) == "number" then
            table.insert(myIntegerTableKeys, key)
        end
    end
    -- Sort the table
    table.sort(myIntegerTableKeys)

    -- Print the elements of the fixture with the lowest ui_channel_index in the preset.
    local tableIndex = myIntegerTableKeys[1]
    if tableIndex ~= nil then
        Printf("=============== TABLE CONTENT START - Table Key: " .. tableIndex .." ===============")
        for Key, value in pairs(myPresetData[tableIndex]) do
          if type(value) == "table" then
            Printf("Key: " .. Key .. " ; Value type is: " .. type(value))
          else
            Printf("Key: " .. Key .. " ; Value type is: " .. type(value) .. " ; Value: " .. tostring(value))
          end
        end
        Printf("================ TABLE CONTENT END - Table Key: " .. tableIndex .." ================")
    end
end