> For the complete documentation index, see [llms.txt](https://stage-precision.gitbook.io/grid/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stage-precision.gitbook.io/grid/controller/reference/reference.md).

# Reference

This page lists the properties, events, and editor controls of Controllers, buttons, encoders, and touch strips.

### Controller Properties

These properties belong to the Controller itself, shown in the Inspector.

#### Virtual Controller

| Property        | Description                                               |
| --------------- | --------------------------------------------------------- |
| **Columns**     | Number of button columns (1 to 32)                        |
| **Rows**        | Number of button rows (1 to 16)                           |
| **Encoders**    | Number of encoders in the row below the buttons (0 to 16) |
| **Open Editor** | Opens the Controller Editor for this Controller           |

#### StreamDeck

| Property        | Description                                     |
| --------------- | ----------------------------------------------- |
| **Connected**   | Shows whether the StreamDeck is connected       |
| **Device**      | The physical StreamDeck bound to this object    |
| **Brightness**  | Brightness of the device, from 0 to 100%        |
| **Open Editor** | Opens the Controller Editor for this Controller |

The layout of a StreamDeck is fixed by its model, so it has no Columns, Rows, or Encoders properties.

### Common Properties

These properties exist on every button, including encoders and touch strips.

| Property             | Description                                                                                                                          |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **Enabled**          | Activates or deactivates the button                                                                                                  |
| **Controller ID**    | Index of the button, encoder, or touch strip within its Controller. Each item on a Controller has its own number, counting up from 0 |
| **View UI Position** | Position of the button in the Controller Editor                                                                                      |
| **View UI Size**     | Size of the button in the Controller Editor                                                                                          |
| **Label**            | Text shown on the button                                                                                                             |
| **Color**            | Accent color of the button, used by widgets for lit elements                                                                         |
| **Highlight Color**  | Color used to highlight the button                                                                                                   |

### Button Properties

| Property          | Description                                                                                         |
| ----------------- | --------------------------------------------------------------------------------------------------- |
| **Type**          | Trigger, State, Value, Parameter, or Page                                                           |
| **State**         | Persistent on/off state, flipped on each press (Type: State)                                        |
| **Value Type**    | Bool, Integer, Float, String, Color, Point, or Vector                                               |
| **Value Mode**    | What a press does with the value. The available modes depend on the Value Type, see the table below |
| **Boundary**      | Clamp, Loop, or Ping Pong at the range limits                                                       |
| **Step**          | Amount per press, or per second while held. For Shift Hue, the amount of hue rotation               |
| **Step (Point)**  | Per-component step for Point values                                                                 |
| **Step (Vector)** | Per-component step for Vector values                                                                |
| **Range**         | Minimum and maximum for Float values                                                                |
| **Range (Int)**   | Minimum and maximum for Integer values                                                              |
| **Target**        | The parameter driven by the button (Type: Parameter)                                                |
| **Value**         | The current value, or the value applied on press for Set and Set and Release                        |
| **Release Value** | The value applied on release in Set and Release mode                                                |
| **Cycle Values**  | The list of values used in Cycle mode                                                               |

#### Value Modes by Value Type

| Value Type                                    | Available Value Modes                                                                                                                                  |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Bool**                                      | Set True, Set False, Toggle, Set and Release, Dialog (edit on press), None (display only)                                                              |
| **Integer**, **Float**, **Point**, **Vector** | Set, Set and Release, Increase (Per Press), Increase (Ramp), Decrease (Per Press), Decrease (Ramp), Cycle, Dialog (edit on press), None (display only) |
| **String**                                    | Set, Set and Release, Cycle, Dialog (edit on press), None (display only)                                                                               |
| **Color**                                     | Set, Set and Release, Shift Hue, Shift Hue (Ramp), Cycle, Dialog (edit on press), None (display only)                                                  |

See **Values** for what each mode does. **Dialog (edit on press)** is only available on a Virtual Controller.

#### Page Button Properties

These properties are used when the Type is **Page**. See **Page** for details.

| Property        | Description                                                                                            |
| --------------- | ------------------------------------------------------------------------------------------------------ |
| **Page Action** | Next Page, Previous Page, Jump To Page, or Current Page                                                |
| **Page**        | The page to switch to (Page Action: Jump To Page)                                                      |
| **Wrap Around** | With Next Page and Previous Page, wraps from the last page to the first and from the first to the last |

### Encoder Properties

| Property       | Description                                                                |
| -------------- | -------------------------------------------------------------------------- |
| **Mode**       | Value (internal value pushed to the widget) or Parameter (drives a target) |
| **Value**      | Current value of the encoder                                               |
| **Target**     | The parameter changed by the encoder (Mode: Parameter)                     |
| **Step**       | Change per detent                                                          |
| **Range**      | Minimum and maximum                                                        |
| **Boundary**   | Clamp, Loop, or Ping Pong                                                  |
| **Push Type**  | None, Fine, Set Value, or Reset                                            |
| **Fine Step**  | Change per detent while the encoder is held (Push Type: Fine)              |
| **Push Value** | Value applied on push (Push Type: Set Value)                               |

### Touch Strip Properties

| Property   | Description                                                   |
| ---------- | ------------------------------------------------------------- |
| **Source** | Parameter, Encoder, or Label only                             |
| **Target** | The parameter mirrored by the touch strip (Source: Parameter) |

### Events

| Button                        | Events                                                    |
| ----------------------------- | --------------------------------------------------------- |
| **Trigger button**            | Down, Up                                                  |
| **State button**              | Down, Up, True, False, Changed                            |
| **Value or Parameter button** | Down, Up, Changed                                         |
| **Page button**               | Down, Up                                                  |
| **Encoder**                   | Turned, Left, Right, Push, Release                        |
| **Touch strip**               | Tap, Long Tap, Swiped, Swiped Left, Swiped Right, Changed |

### Controller Editor Controls

| Control               | Location  | Description                                                                                           |
| --------------------- | --------- | ----------------------------------------------------------------------------------------------------- |
| **Lock**              | Top left  | Locks the view to a specific Controller                                                               |
| **Down arrow**        | Top left  | Swaps to another Controller                                                                           |
| **Load current page** | Top right | Forces the Controller (and a connected StreamDeck) to load the current page                           |
| **Page management**   | Top right | Lists the pages of the Controller to jump between, plus Create New Page, Rename Page, and Delete Page |
| **Play / Stop**       | Top right | Switches between play mode and edit mode (shortcut: **V**)                                            |

In play mode: click to press a button, click and hold to press and hold, click an encoder to push it, **SHIFT** + scroll wheel to turn it, and click or click and drag a touch strip to tap or swipe.
