> 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/overview/virtual-controller.md).

# Virtual Controller

A Virtual Controller is an on-screen control surface. It is made of Pages, and Pages hold Controller Buttons, including encoders. It is the most general form of Controller in Grid Studio.

<figure><img src="https://1089527861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1lzYXYTbE4lxMSWTSQTM%2Fuploads%2Fw4FNWOhi0aoFeNX4FOX1%2FController%20View%20Sample.png?alt=media&amp;token=f4913a60-0639-4b8a-8b34-ed44236c48c3" alt=""><figcaption></figcaption></figure>

Other Controllers build on the same concepts and add something specific. The **StreamDeck**, for example, is a Virtual Controller that can also be connected to a physical device. Understanding the Virtual Controller therefore also explains how a StreamDeck is set up.

## Creating a Virtual Controller

Add a virtual controller into your project tree.

<figure><img src="https://1089527861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1lzYXYTbE4lxMSWTSQTM%2Fuploads%2FuTTRrZS0ZoXHTqFSITFj%2FAdd%20Virtual%20Controller.gif?alt=media&amp;token=86bc0e2b-9cec-46f4-9887-7602fb5ab4c7" alt=""><figcaption></figcaption></figure>

## Layout

The layout of a Virtual Controller is defined in the Inspector:

* **Columns and rows:** set the number of columns and rows of buttons.
* **Encoders:** add a row of encoders below the buttons, and set how many encoders the row contains.

<figure><img src="https://1089527861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1lzYXYTbE4lxMSWTSQTM%2Fuploads%2FNqsIJ0SmyVHFEmjNT2Ey%2FVirtual%20Controller%20Inspector.png?alt=media&amp;token=bd01e61a-30d7-4a13-9a08-6670137273d3" alt=""><figcaption></figcaption></figure>

This makes it possible to size the control surface for the task, from a small pad with a few buttons to a large grid with a row of encoders underneath.

{% hint style="info" %}
A Virtual Controller offers buttons and encoders. It does not offer touch strips, which are only available on supported StreamDecks.
{% endhint %}

## Opening the Controller Editor

Select the Virtual Controller in the Project Tree and click **Open Editor** in the Inspector, or by manually opening the Controller Editor view from the top toolbar.

<figure><img src="https://1089527861-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1lzYXYTbE4lxMSWTSQTM%2Fuploads%2Fy7pRa7uB7o6VFN9avCX1%2FOpening%20Controller%20Editor.gif?alt=media&amp;token=92031343-af8c-4eb2-b219-27b206b10cde" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The Virtual Controller can currently only be displayed in the Controller Editor inside Grid Studio. The grid of buttons cannot be shown in any other view.
{% endhint %}

## Next Steps

* To learn how the editor works, continue with [**Controller Editor**](/grid/controller/controller-view/controller-editor.md).
* To learn how to build and program the buttons, continue with [**Controller Buttons**](/grid/controller/controller-buttons/controller-buttons.md).
