Component
Component objects allow access to Named Components in the design. Create a Named Component by typing a unique, non-default name in any component block.
 Component.New()
Component.New()Create a Named Component reference in your script.
Syntax
Component.New("named_component")
Example
In this example, we have two Named Components in a design, "gain a" and "gain b". We are watching the gain of "gain a" and muting "gain b" if "gain a" goes above 0 dB.
gainA = Component.New("gain a")
gainB = Component.New("gain b")
gainA.gain.EventHandler = function( ctl )
 if gainA.gain.Value > 0 then
  gainB.mute.Boolean = true
 else
  gainB.mute.Boolean = false
 end
end Component.GetComponents()
Component.GetComponents()Returns a table of all Named Components in the design and their properties.
Syntax
Component.GetComponents()
                        Examples
 Example 1: Get all named components in the design
Example 1: Get all named components in the design
                            In this example, we have a Gain component named MyGain in the design.
Components = {}                                  --Create a table called Components
DebugOutput = ""                                 --Build string to be displayed in the Debug Output window
Components = Component.GetComponents()           --Set Components table equal to the table returned by Component.GetComponents()
--Loop through all table entries in the Components table to display their values--------------------------
for _,v1 in ipairs(Components) do   
  DebugOutput = "\nName: "..v1.Name              --Add the component name to the DebugOutput string
  DebugOutput = DebugOutput.."\nType: "..v1.Type --Add the component type to the DebugOutput string
  DebugOutput = DebugOutput.."\nProperties:"     --Add Properties text to the DebugOutput string
  for _,v2 in ipairs(v1.Properties) do           --Add the list of properties to the DebugOutput string
    for k3,v3 in pairs(v2) do 
      DebugOutput = DebugOutput.."\n      "..k3.." = "..v3
    end
    DebugOutput = DebugOutput.."\n"
  end 
  print (DebugOutput)                            --Print the DebugOutput string     
endDebug Output
2021-01-04T16:27:53.786	
Name: MyGain
Type: gain
Properties:
      Name = max_gain
      Value = 20
      PrettyName = Max Gain (dB)
      Name = min_gain
      Value = -100
      PrettyName = Min Gain (dB)
      Name = enable_stepper
      Value = False
      PrettyName = Enable Ramp Controls
      Name = step_mode
      Value = 0
      PrettyName = Mode
      Name = num_steps
      Value = 8
      PrettyName = Number of Steps
      Name = multi_channel_type
      Value = 1
      PrettyName = Type
      Name = multi_channel_count
      Value = 8
      PrettyName = Count
                             Example 2: Another example
Example 2: Another example
                            comps = Component.GetComponents()
  -- iterate components
  for _,comp in pairs(comps) do
    print(string.format("Component '%s' of Type '%s'", comp.Name, comp.Type))
    -- iterate properties
    print("---- Properties")
    for _,prop in pairs(comp.Properties) do
      print(string.format("  %s ( %s ) : %s", prop.PrettyName, prop.Name, prop.Value))
    end
end Component.GetControls()
Component.GetControls()Returns a table of all controls in the specified Named Component.
Note: You can also use Tools > View Component Controls Info to see a list of all controls for a selected component, including a named component. See Viewing Component Control Information.
Syntax
Component.GetControls("named_component")
Examples
 Example 1: Get all controls and their properties
Example 1: Get all controls and their properties
                            In this example, we have a Blinking LED component named "led". We want to obtain a list of all its controls and their properties.
blinker = Component.New("led")
b_ctrls = Component.GetControls(blinker)
print("Component GetControls: ")
for _,b_element in ipairs(b_ctrls) do
  print("Name: "..tostring(b_element.Name))
  print(".\tValue:     "..tostring(b_element.Value))
  print(".\tString:    "..tostring(b_element.String))
  print(".\tPosition:  "..tostring(b_element.Position))
  print(".\tType:      "..tostring(b_element.Type))
  print(".\tDirection: "..tostring(b_element.Direction))
  print(".\tMinValue:  "..tostring(b_element.MinValue))
  print(".\tMaxValue:  "..tostring(b_element.MaxValue))
  print(".\tMinString: "..tostring(b_element.MinString))
  print(".\tMaxString: "..tostring(b_element.MaxString))
endNote: b_element.Boolean, RampTime, and Index are omitted from the request since they do not apply in this context.
Debug Output
2019-10-28T18:48:10.938Starting Script 2019-10-28T18:48:10.938Component GetControls: 2019-10-28T18:48:10.938Name: blink 2019-10-28T18:48:10.939. Value: true 2019-10-28T18:48:10.939. String: true 2019-10-28T18:48:10.939. Position: 1.0 2019-10-28T18:48:10.939. Type: Boolean 2019-10-28T18:48:10.939. Direction: Read Only 2019-10-28T18:48:10.939. MinValue: 0.0 2019-10-28T18:48:10.939. MaxValue: 1.0 2019-10-28T18:48:10.939. MinString: false 2019-10-28T18:48:10.939. MaxString: true 2019-10-28T18:48:10.939Name: duty.cycle 2019-10-28T18:48:10.939. Value: 50.0 2019-10-28T18:48:10.939. String: 50.0% 2019-10-28T18:48:10.939. Position: 0.5 2019-10-28T18:48:10.939. Type: Float 2019-10-28T18:48:10.939. Direction: Read/Write 2019-10-28T18:48:10.939. MinValue: 10.0 2019-10-28T18:48:10.939. MaxValue: 90.0 2019-10-28T18:48:10.939. MinString: 10.0% 2019-10-28T18:48:10.939. MaxString: 90.0% 2019-10-28T18:48:10.939Name: enable 2019-10-28T18:48:10.939. Value: true 2019-10-28T18:48:10.939. String: enabled 2019-10-28T18:48:10.939. Position: 1.0 2019-10-28T18:48:10.939. Type: Boolean 2019-10-28T18:48:10.939. Direction: Read/Write 2019-10-28T18:48:10.939. MinValue: 0.0 2019-10-28T18:48:10.939. MaxValue: 1.0 2019-10-28T18:48:10.939. MinString: disabled 2019-10-28T18:48:10.939. MaxString: enabled 2019-10-28T18:48:10.939Name: random 2019-10-28T18:48:10.939. Value: false 2019-10-28T18:48:10.939. String: disabled 2019-10-28T18:48:10.939. Position: 0.0 2019-10-28T18:48:10.939. Type: Boolean 2019-10-28T18:48:10.939. Direction: Read/Write 2019-10-28T18:48:10.939. MinValue: 0.0 2019-10-28T18:48:10.939. MaxValue: 1.0 2019-10-28T18:48:10.939. MinString: disabled 2019-10-28T18:48:10.939. MaxString: enabled 2019-10-28T18:48:10.939Name: time 2019-10-28T18:48:10.939. Value: 10.0 2019-10-28T18:48:10.939. String: 10.0s 2019-10-28T18:48:10.939. Position: 1.0 2019-10-28T18:48:10.939. Type: Float 2019-10-28T18:48:10.939. Direction: Read/Write 2019-10-28T18:48:10.939. MinValue: 0.1 2019-10-28T18:48:10.939. MaxValue: 10.0 2019-10-28T18:48:10.939. MinString: 100ms 2019-10-28T18:48:10.939. MaxString: 10.0s
 Example 2: Get the properties for a single control
Example 2: Get the properties for a single control
                            In this example, we know that a Custom Controls component (named "cc") contains a control called time.1. We want to obtain the properties only for that control.
cc = Component.New("cc")
local ctl = cc["time.1"]
cc_ctrls = Component.GetControls(cc)
print("Properties for time.1 :")
  print(".\tValue:     "..tostring(ctl.Value))
  print(".\tString:    "..tostring(ctl.String))
  print(".\tPosition:  "..tostring(ctl.Position))
  print(".\tBoolean:   "..tostring(ctl.Boolean))
  print(".\tRampTime:  "..tostring(ctl.RampTime))
  print(".\tIndex:     "..tostring(ctl.Index))
  print(".\tType:      "..tostring(ctl.Type))
  print(".\tDirection: "..tostring(ctl.Direction))
  print(".\tMinValue:  "..tostring(ctl.MinValue))
  print(".\tMaxValue:  "..tostring(ctl.MaxValue))
  print(".\tMinString: "..tostring(ctl.MinString))
  print(".\tMaxString: "..tostring(ctl.MaxString))Note: ctl.Name is omitted since it does not apply in this context.
Debug Output
2019-10-28T19:45:52.318Starting Script 2019-10-28T19:45:52.318Properties for time.1 : 2019-10-28T19:45:52.318. Value: 80.200004577637 2019-10-28T19:45:52.318. String: 00:01:20 2019-10-28T19:45:52.318. Position: 0.72000002861023 2019-10-28T19:45:52.318. Boolean: true 2019-10-28T19:45:52.318. RampTime: 0.0 2019-10-28T19:45:52.318. Index: -1 2019-10-28T19:45:52.318. Type: Time 2019-10-28T19:45:52.318. Direction: Read/Write 2019-10-28T19:45:52.318. MinValue: 1.0 2019-10-28T19:45:52.318. MaxValue: 111.0 2019-10-28T19:45:52.318. MinString: 00:00:01 2019-10-28T19:45:52.318. MaxString: 00:01:51
