Skip to main content

Input Controls

Button

PlainHost Styled

Button

Styled Button

Button is a momentary action trigger.

skin.xml Snippet:

<Button name="Defaults" title="Reset Defaults" width="120" height="24"/>

scriptname.js Snippet:

this.Defaults = context.parameters.addInteger(0, 1, "Defaults");
this.Defaults.value = 0;
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
iconOverlay icon image resource.identifier
imageNamed image resource.identifier
localizeLocalization toggle.flag
nameButton binding name.identifier
optionsVisual or layout options.token
sizePosition and size geometry.tuple
sizelimitsDefines size limits.tuple
styleStyle reference.identifier
titleDisplay title.text
titlenameTitle-binding name.identifier
tooltipTooltip text.text
widthExplicit width.number
optionsDescription
fittext-
focus-
hidefocusSuppresses focus chrome.
hidetextHide text area.
immediateImmediate action.
intermediate-
ignoreimagesizeIgnores image size.
leadingicon-
leftLeft visual segment drawing position.
middleMiddle visual segment drawing position.
needsoptionkey-
nocontextmenuDisable context menu.
passive-
rightRight visual segment drawing position.
trailingicon-
transparentTransparent button.
triggerSelf-retriggering action.

Notes

  • icon="ResourceName" draws a named image resource on top of the button face.

UpDownButton

UpDownButton is an automatic increment/decrement stepper paired with a bound parameter. Two buttons share the same name — one with options="decrement", the other with options="increment". Clicking them automatically adjusts the param's numeric value without any script handling.

skin.xml Snippet:

<Horizontal spacing="4" attach="hcenter">
<UpDownButton name="stepValue" options="decrement" width="40" height="40" style="Standard.Button"/>
<UpDownButton name="stepValue" options="increment" width="40" height="40" style="Standard.Button"/>
</Horizontal>

scriptname.js Snippet:

// Only need to create the param — buttons self-manage
this.stepValue = context.parameters.addInteger(0, 10, "stepValue");
this.stepValue.value = 5;
Attribute NameDescriptionType
attachLayout attachment.token
heightExplicit height.number
iconIcon resource for the button face.identifier
imageNamed image resource.identifier
nameBound parameter name (shared by decrement/increment pair).identifier
optionsButton behavior.token
sizePosition and size geometry.tuple
styleStyle reference.identifier
tooltipTooltip text.text
widthExplicit width.number
optionsDescription
decrementDecreases the bound param value on click.
hidefocusSuppresses focus chrome.
incrementIncreases the bound param value on click.
transparentTransparent button.

RadioButton

RadioButton

RadioButton is a mutually exclusive selector grouped by shared name.

skin.xml Snippet:

<RadioButton name="Mode" value="0" title="Option 1"/>
<RadioButton name="Mode" value="1" title="Option 2"/>
<RadioButton name="Mode" value="2" title="Option 3"/>

scriptname.js Snippet:

this.Mode = context.parameters.addInteger(0, 2, "Mode");
this.Mode.value = 0;
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
iconOverlay icon image resource.identifier
nameShared group binding name.identifier
optionsVisual and behavioral options.token
sizePosition and size geometry.tuple
sizelimitsDefines size limits.tuple
styleStyle reference.identifier
titleDisplay title.text
titlenameTitle-binding name.identifier
tooltipTooltip text.text
valueAssigned option value.number
widthExplicit width.number
optionsDescription
hidefocusSuppresses focus chrome.
immediateImmediate action.
left-
middle-
nohelp-
passive-
right-
toggleToggle behavior.
transparent-
tristate-

Notes

  • title always renders to the right of the radio circle.

CheckBox

CheckBox

CheckBox is an independent on/off toggle.

skin.xml Snippet:

<CheckBox name="Enabled" value="0" title="Enabled"/>

scriptname.js Snippet:

this.Enabled = context.parameters.addInteger(0, 1, "Enabled");
this.Enabled.value = 0;
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
imageNamed image resource.identifier
localizeLocalization toggle.flag
nameCheckbox binding name.identifier
optionsVisual or behavioral options.token
sizePosition and size geometry.tuple
sizelimitsDefines size limits.tuple
styleStyle reference.identifier
titleDisplay title.text
titlenameTitle-binding name.identifier
tooltipTooltip text.text
valueOn/off state value.number
widthExplicit width.number
optionsDescription
hidefocusSuppresses focus chrome.
immediateImmediate action.
momentaryMomentary state.
transparent-
tristate-

Toggle

Toggle

Toggle is an on/off button control.

skin.xml Snippet:

<Toggle name="Enable" title="Enable"/>

scriptname.js Snippet:

this.Enable = context.parameters.addInteger(0, 1, "Enable");
this.Enable.value = 1;
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
iconOverlay icon image resource.identifier
imageNamed image resource.identifier
nameToggle binding name.identifier
optionsVisual and behavior options.token
sizePosition and size geometry.tuple
sizelimitsDefines size limits.tuple
styleStyle reference.identifier
titleDisplay title.text
tooltipTooltip text.text
valueAssigned option value.flag
widthExplicit width.number
optionsDescription
directupdate-
fittext-
hidefocusSuppresses focus chrome.
immediateImmediate action.
invert-
leadingicon-
leftLeft visual segment drawing position.
middleMiddle visual segment drawing position.
momentaryMomentary state flag.
multiline-
needsoptionkey-
passive-
rightRight visual segment drawing position.
scaletext-
swipe-
transparent-
triggerSelf-retriggering action.

ToolButton

ToolButton

ToolButton is a segmented tool-style button control used for mutually exclusive selections and toggle actions grouped by shared name.

skin.xml Snippet:

<Horizontal margin="0" spacing="1" attach="left right">
<ToolButton name="Mode" value="0" title="Left"
width="110" height="29" options="hidefocus left"/>
<ToolButton name="Mode" value="1" title="Middle"
width="110" height="29" options="hidefocus middle"/>
<ToolButton name="Mode" value="2" title="Right"
width="110" height="29" options="hidefocus right"/>
</Horizontal>

scriptname.js Snippet:

this.Mode = context.parameters.addInteger(0, 2, "Mode");
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
iconOverlay icon image resource.identifier
nameToolButton binding name.identifier
modenameMode binding name.identifier
optionsButton behavior tokens.token
sizelimitsPosition and size geometry.tuple
styleStyle reference.identifier
titleVisible title text.text
tooltipTooltip text.text
valueAssigned option value.number
widthExplicit width.number
optionsDescription
hidefocusSuppresses focus highlighting.
immediateImmediate action.
leftLeft visual segment drawing position.
middleMiddle visual segment drawing position.
rightRight visual segment drawing position.
toggleToggle behavior.

Notes

  • Wrap in <Horizontal spacing="0"> to render it horizontally.
  • Left Middle Right draw buttons as left, middle, or right segments, visual only.

DialogButton

DialogButton creates a clickable button that returns a dialog result, used inside dialog forms. Unlike <Button> which dispatches script commands, DialogButton maps to the dialog's result system.

skin.xml Snippet:

<DialogButton result="okay" title="Confirm"/>
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
nameDialog button name.identifier
resultDialog result value.token
styleStyle reference.identifier
titleDisplay label. If omitted, auto-generated from result.text
resultDescription
okayReturns result equivalent to OK.
cancelReturns result equivalent to Cancel.
closeReturns result equivalent to Close.
applyApplies changes without closing.

Notes

  • DialogButton is a normal flow element — it must be inside a layout container (<Vertical>, <Horizontal>), not as a form-level orphan otherwise it renders overlaying earlier elements.

EditBox

PlainHost Styled

EditBox

Styled EditBox

EditBox is an editable text field that accepts typed text and commits its value back to script.

skin.xml Snippet:

<EditBox name="InputText" width="180" height="22"/>

scriptname.js Snippet:

this.InputText = context.parameters.addString("InputText");
this.InputText.value = "";
Attribute NameDescriptionType
attachLayout attachment/alignment.token
colornameColor-binding name.identifier
valueInitial field value.text
localizeLocalization toggle.flag
nameEditBox binding name.identifier
heightExplicit height.number
optionsVisual and behavioral options.token
placeholderPlaceholder text.text
sizePosition and size geometry.tuple
sizelimitsDefines size limits.tuple
styleStyle reference.identifier
texttrimmodeText trimming mode.token
titleDisplay title.text
tooltipTooltip text.text
widthExplicit width.number
optionsDescription
borderVisible field border.
dialogedit-
doubleclick-
emailEmail input field.
extendedExtended editing.
focus-
fittextFit text.
hidefocusSuppresses focus chrome.
immediate-
markup-
multilineMulti-line edit mode.
musthittext-
passwordPassword input field.
scaletext-
verticalEnables vertical overflow/scrollbar behavior.
transparentTransparent edit background.

Notes

  • EditBox text can be prefilled by setting the parameter .value before the dialog opens.
  • For multiline EditBox controls, apply a style alignment such as <Align name="textalign" align="left top"/>.
  • Use options="multiline vertical" with long overflow content for visible edit/focus-state scrollbar behavior.

TextEditor

TextEditor is a multi-line text editing widget for longer editable text content.

skin.xml Snippet:

<Style name="TextEditorStyle" textoptions="wordbreak">
<Font name="textfont" themeid="PresonusUI" size="14"/>
<Align name="textalign" align="left top"/>
<Color name="backcolor" color="#1A1C1D"/>
<Color name="textcolor" color="#FFFFFF"/>
</Style>
...
<TextEditor name="notes" options="small multiline autohidev" width="480" height="260" style="TextEditorStyle"/>

scriptname.js Snippet:

this.notes = context.parameters.addString("notes");
this.notes.value = "";
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
nameTextEditor binding name.identifier
optionsVisual and behavioral options.token
sizePosition and size geometry.tuple
styleStyle reference (required — crash without one).identifier
vscroll.styleVertical scrollbar style.identifier
widthExplicit width.number
optionsDescription
autohidevAuto-hide vertical scrollbar.
multilineMulti-line edit mode.
smallSmaller scrollbar thumb size.

Notes

  • A style attribute is required — omitting it crashes Studio Pro.
  • Text wrapping requires textoptions="wordbreak" on the style. Without it, text stays single-line with ellipsis truncation.
  • Two dialog systems available:
    • CCL:ParamList + Host.GUI.runDialog() (preferred — no auto-restore of previous values).
    • context.parameters + context.runDialog() (auto-restores cached values globally).

ValueBox

ValueBox

ValueBox is an editable value field that can accept typed values and can be written back from script.

skin.xml Snippet:

<ValueBox name="ValueText" width="140" height="22"/>

scriptname.js Snippet:

this.ValueText = context.parameters.addString("ValueText");
this.ValueText.value = "";
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
colornameColor-binding name.identifier
labelnameLabel-binding name.identifier
localizeLocalization toggle.flag
nameValueBox binding name.identifier
optionsVisual or behavioral options.token
sizePosition and size geometry.tuple
sizelimitsDefines size limits.tuple
styleStyle reference.identifier
tooltipTooltip text.text
unitsDisplay unit.identifier
widthExplicit width.number
xyeditingVertical drag sensitivity.number
optionsDescription
dialogedit-
doubleclickDouble-click behavior.
fittextFit text.
hidefocusHide focus.
hidetextHide text area.
inversewheelInvert wheel direction.
nodragDisable drag.
nowheelDisable mousewheel interaction.
scaletextScale text.
transparentTransparent rendering.

Notes

  • ValueBox can be prefilled by setting the parameter .value before the dialog opens.
  • It can display a user-facing unit while the script stores a different underlying unit; see Crossfade Tool.

Slider

PlainHost Styled

Slider

Styled Slider

Slider is a slider control.

skin.xml Snippet:

<Horizontal spacing="2" attach="left right">
<Slider name="TimeSlider" width="100" height="20"
options="horizontal" style="Standard.AddIn.Slider"/>
<EditBox name="TimeSlider" width="45" height="20"/>
<Label title="ms"/>
</Horizontal>

scriptname.js Snippet:

this.TimeSlider = context.parameters.addFloat(-1, 1, "TimeSlider");
this.TimeSlider.value = -0.25;
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
modeSlider interaction mode.identifier
nameSlider binding name.identifier
colornameColor-binding name.identifier
optionsVisual and behavioral options.token
sizePosition and size geometry.tuple
sizelimitsDefines size limits.tuple
styleStyle reference.identifier
titleDisplay title.text
tooltipTooltip text.text
widthExplicit width.number
xyeditingVertical drag sensitivity.number
modeDescription
relative-
optionsDescription
bargraph-
centered-
composited-
directupdate-
globalmode-
horizontalHorizontal slider.
passive-
thinhandleThin-handle
tickscale-
tooltipValue adjustment tooltip.
verticalVertical slider.
transparentTransparent slider.
xyeditingAllows vertical drag adjustment.

RangeSlider

RangeSlider

RangeSlider is a dual-handle slider used to control a start and end value.

skin.xml Snippet:

<RangeSlider name="RangeStart" name2="RangeEnd" 
width="240" height="14"
options="bargraph horizontal tooltip" attach="vcenter"/>

scriptname.js Snippet:

this.RangeStart = context.parameters.addFloat(0, 1, "RangeStart");
this.RangeEnd = context.parameters.addFloat(0, 1, "RangeEnd");
this.RangeStart.value = 0.25;
this.RangeEnd.value = 0.75;
Attribute NameDescriptionType
attachLayout attachment.token
namePrimary binding name.identifier
name2Secondary binding name.identifier
optionsVisual and behavioral options.token
sizePosition and size geometry.tuple
styleStyle Reference.identifier
widthExplicit width.number
optionsDescription
bargraph-
directupdateUpdates value directly while dragging.
horizontalHorizontal slider.
invertibleAllows inverted slider behavior.
tooltipValue adjustment tooltip.
xyeditingAllows vertical drag adjustment.

Knob

Knob

Knob is a rotary control.

skin.xml Snippet:

<Vertical spacing="5">
<Knob name="MyKnob" width="60" height="60"/>
<ValueBox name="MyKnobDisplay" width="60" height="20"/>
</Vertical>

scriptname.js Snippet:

this.MyKnob = context.parameters.addInteger(0, 127, "MyKnob");
this.MyKnobDisplay = context.parameters.addString("MyKnobDisplay");
this.MyKnobDisplay.value = String(this.MyKnob.value);
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
nameKnob binding name.identifier
optionsVisual or behavioral options.token
colornameColor-binding name.identifier
referencenameReference binding name.identifier
sizePosition and size geometry.tuple
styleStyle reference.identifier
tooltipTooltip text.text
widthExplicit width.number
optionsDescription
centeredBipolar / center-zero mode (use addFloat(-1, 1, ...) in script).
inversewheelInverted mousewheel scroll.
passivePassive knob adjustment behavior.
reverseReverse value direction.
tooltipValue adjustment tooltip.
vertical-

Notes

  • options="centered" enables bipolar mode. The knob sits at center (0) by default. Use addFloat(-1, 1, ...) for the script parameter. 1 = fully clockwise, -1 = fully counter-clockwise.
  • No custom style is needed — centered works with the default knob appearance.
  • colorname overrides hilitecolor on the knob. Use context.parameters.addColor("name") in script. Color format: 0xAABBGGRR.

ColorBox

ColorBox

ColorBox is a compound color picker that requires a nested SelectBox to render its popup and bound color value.

skin.xml Snippet:

<ColorBox name="Color1" width="120" height="18" attach="hcenter vcenter">
<SelectBox name="Color1" width="120" height="18"
options="border transparent hidetext hidefocus"/>
</ColorBox>

scriptname.js Snippet:

this.Color1 = context.parameters.addColor("Color1");
this.Color1.palette = Host.Engine.TrackColorPalette;
this.Color1.value = 0xFF2F4DE4;
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
nameColorBox binding name.identifier
optionsVisual and behavioral options.token
radiusCorner radius.number
sizePosition and size geometry.tuple
styleStyle reference.identifier
tooltipTooltip text.text
widthExplicit width.number
optionsDescription
borderVisible field border.
nowheelDisable mousewheel interaction.

ComboBox

PlainLocal Styled

ComboBox

Styled ComboBox

ComboBox is a dropdown selector for choosing one item from a list of script-provided values.

skin.xml Snippet:

<Styles>
<Style name="ComboColor">
<Color name="backcolor" color="#FFFFFF"/>
<Color name="textcolor" color="#000000"/>
</Style>
</Styles>

<ComboBox name="Choice" width="180" style="ComboColor"/>

scriptname.js Snippet:

this.Choice = context.parameters.addList("Choice");
this.Choice.appendString("Option 1");
this.Choice.appendString("Option 2");
this.Choice.value = 0;
Attribute NameDescriptionType
attachLayout attachment/alignment.token
editnameAssociated editable field binding.identifier
heightExplicit height.number
nameComboBox binding name.identifier
optionsVisual and behavioral options.token
sizePosition and size geometry.tuple
styleStyle reference.identifier
tooltipTooltip text.text
widthExplicit width.number
optionsDescription
borderVisible field border.
doubleclick-
fittextFit text.
hidefocusSuppresses focus chrome.
ignorekeysIgnore keys.
nowheelDisable mousewheel interaction.
stayopenonclickKeep popup open on click.
translucentTranslucent rendering.
transparentTransparent ComboBox.

Notes

  • Population uses addList() plus appendString().
  • See CCL:ParamList for addList() and appendString().

SelectBox

PlainHost Styled

SelectBox

Styled SelectBox

SelectBox is a taller dropdown selector than ComboBox, intended for list-style selection in dialogs.

skin.xml Snippet:

<SelectBox name="Choice" width="180" style="Standard.AddIn.SelectBox"/>

scriptname.js Snippet:

this.Choice = context.parameters.addList("Choice");
this.Choice.appendString("Option 1");
this.Choice.appendString("Option 2");
this.Choice.value = 0;
Attribute NameDescriptionType
attachLayout attachment/alignment.token
heightExplicit height.number
nameSelectBox binding name.identifier
optionsVisual and behavioral options.token
popupstylePopup style reference.identifier
localizeLocalization toggle.flag
popupPopup binding name.identifier
sizePosition and size geometry.tuple
sizelimitsDefines size limits.tuple
styleStyle reference.identifier
titleDisplay title.text
texttrimmodeText trimming mode.token
valueAssigned value.number
tooltipTooltip text.text
widthExplicit width.number
optionsDescription
borderVisible field border.
fittextFit text.
hidebuttonHides the dropdown button.
hidefocusHides focus chrome.
hidetextHide text area.
ignorekeysIgnore keys.
inversewheelInvert wheel direction.
leadingbuttonPlaces button at leading edge.
left-
nocontextmenuDisable context menu.
nohelp-
nomodifierSuppress modifier-key.
nowheelDisable mousewheel interaction.
offstate-
scaletext-
showtitle-
stayopenonclickKeep popup open on click.
trailingbuttonPlaces button at trailing edge.
transparentTransparent background.

Notes

  • Population uses addList() plus appendString().
  • See CCL:ParamList for addList() and appendString().

PopupBox opens a popup overlay when clicked.

skin.xml Snippet (form popup):

<PopupBox form.name="MyPopupContent" popup="right bottom">
<Button title="Options" width="60" height="30"/>
</PopupBox>

Popup content form (requires using controller="source"):

<Form name="MyPopupContent" attach="all fitsize">
<using controller="source">
<Vertical margin="10" spacing="8" attach="all">
<CheckBox name="myCheck" value="0" title="Enable"/>
<Toggle name="myToggle" title="Toggle mode"/>
<TextBox name="myNotes" width="200" height="40" options="multiline"/>
</Vertical>
</using>
</Form>
Attribute NameDescriptionType
attachLayout attachment/alignment.token
form.nameForm to open as popup content.identifier
heightExplicit height.number
nameParameter binding (for vertical slider mode) or popup identifier.identifier
optionsBehavior flags.token
popupPopup open direction/position.token
popupstyleStyle override for the popup window.identifier
sizePosition and size geometry.tuple
sizelimitsSize limit configuration.tuple
styleStyle reference.identifier
tooltipTooltip text.text
widthExplicit width.number
optionsDescription
nowheelDisables mouse wheel interaction.
sliderUses slider popup behavior (combined with vertical).
transparentRenders popup with transparent background.
verticalVertical orientation (used with slider).

Notes

  • form.name — opens a separate <Form> as the popup content.
  • For form.name popups, the referenced form must include <using controller="source"> for child element params to communicate back to the parent controller.
  • Popup form params are created on this.paramList (addParam, addString).
  • The options="vertical slider" pattern is a native built-in slider popup that binds via name to ranged parameter e.g. context.parameters.addFloat().
  • Popup style metrics are defined in <Style> and referenced by popupstyle.