Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

In most situations, simple menus are well suited to select a parameter value from a list of strings, for example, a filter type selector that contains various filter types. If the number of available values gets too high, it can be helpful to create substructures inside the menu, for a better overview and usability. To implement such a nested menu, you need to deliver the menu entries as a stringlist parameter with strings in the following notation:

/Folder/Subfolder/../Menu Entry

Please see the example below for details.


This example shows how to build multi-level menus using the generic graphics of the operating system. If you want to create menus with customized graphical elements, please refer to Custom Multi-Level Menus and Custom Popup Menus.


On this page:

Table of Contents

Related pages:


  • A macro page with a menu, text, and label control (optionally combined as a template)
  • A MIDI or UI script that provides parameter definitons and functions

Defining parameters for the menu

The following code example shows how to create the menu entries and the resulting display string.


Code Block
 -- Create tables for menu entry strings and display output strings
entry_and_output = {
	{ "/Folder1/Entry1", "Value 1" },
	{ "/Folder1/Entry2", "Value 2" },
	{ "/Folder2/Entry1", "Value 3" },
	{ "/Folder2/Entry2", "Value 4" },
entries = {}
outputs = {}
for i,v in ipairs(entry_and_output) do
 entries[i] = v[1]
 outputs[i] = v[2]
-- Define the parameter "Entry" to be connected to a menu control and the parameter "Output" to display the selected menu entry
defineParameter("Entry", nil, 1, entries, function() Output = Entry end)
defineParameter("Output", nil, 1, outputs)

In the example VST preset below this was implemented as UI script. The UI script is attached to the macro page.

The template parameters Text Output and Menu Entries must be connected to the parameters Output and Entry of the UI script.

In this example the Output parameter is not connected to a physical parameter. To set the value of the desired parameter, the Output parameter must be connected to the respective parameter in the program.

Example VST Preset