6.4.12. Parameters and Creating UI

In its current form, RNBO’s H9000 support does not allow for the same level of advanced UI creation that is possible in VSIG. While VSIG includes several unique UI modules and an intuitive menupage system, UI customization in RNBO occurs entirely within the [param] object. While this may seem like a limitation, the [param] object’s extensive list of optional attributes makes it much more capable than one might expect at first glance.

Download the maxpat file here: Parameters and Creating UI.

6.4.12.1. Param Arguments/Attributes

When exporting any RNBO patch to the H9000, all [param] objects are represented with knobs, or switches in some cases, by default (the switch is a special case, which will be explored later in its own section). There is currently no way to have [param] objects represented by other UI objects, such as faders or text boxes. Despite this limitation, [param] arguments/attributes allow for great customization over how UI objects behave in Emote.

Arguments – arguments are required when instantiating an object, and must be entered in the proper order:

  • Name – name of the parameter

  • Value – set initial value

Arguments may be specified with the argument name followed by an @ sign, but this is not required. Either of the below examples is a valid instantiation of the [param] object.

../../../_images/basicparams.png

Fig. 6.114 Two valid instantations of a param object, using no optional attributes

Attributes – like arguments, attributes tell the [param] object how to behave; unlike arguments, however, they are not required and may be specified in any order:

  • Min/mininum – minimum value

  • Max/maximum – maximum value

  • Steps – divide the output into a number of discrete steps

  • Displayname – a more readable name for the parameter in Emote

  • Displayorder – order in which parameters will show up in a list of parameters and in Emote; order can be numeric or symbolic (‘first’ and ‘last’)

  • Unit – symbol to describe the unit of the parameter in an Emote

(The above attributes are not an exhaustive list of every [param] attribute; rather, they are the most important attributes for menu creation in Emote/H9000. For an exhaustive list, see the RNBO reference files.)

Let’s dive a little deeper into a [param] object which utilizes all the attributes listed above. The following comes from Delay Tutorial #3 – Stereo Flanger with Crossfeed.

../../../_images/param2.png

Fig. 6.115 Param object utilizing several optional attributes

This parameter controls the amount of delay feedback for the right channel. Looking into the attributes, we can predict how the corresponding knob should look in Emote:

  • Initial knob position should be at 0 when loading the algorithm.

  • Knob can access values as high as 100, and as low as 0.

  • Knob can only access values in 101 discrete steps. In other words, output is limited to whole numbers.

  • Knob will be labeled as “Feedback R,” as opposed to the parameter name “fdbkR”

  • Percent sign (%) will appear after the numeric value associated with the knob (“%%” is seen by H9000 as a single percent sign. VSIG syntax uses % sign elsewhere, and will not recognize a single % sign if specified as a unit)

  • From left-right and top-bottom, knob will be the 8th

Upon exporting the patch to the H9000, the following is shown in Emote:

../../../_images/emoteparams.png

Fig. 6.116 Notice the “Feedback R” knob, and how its attributes affect its properties and behaviors

Through the use of attributes, we have created a more organized and user friendly UI than if no attributes were specified. While the “max” and “steps” attributes are not demonstrable in a screenshot, rest assured the “Feedback R” knob can access values only up to 100, in whole number increments.

6.4.12.2. Special Case - Switches

If and only if a [param] object is instantiated such that it can only access two different values, it will be displayed in Emote as a binary switch. Such an instantiation would look like so:

../../../_images/switch.png

Fig. 6.117 After exporting to Emote, the above [param] is displayed as a switch

By limiting the values accessible by the [param] object to only 0 and 1, it will be displayed as a toggle switch in Emote:

../../../_images/switchemote.png

Fig. 6.118 UI object in Emote corresponding to [param] shown above, representing a toggle switch

This is currently the only way to display a non-knob UI object in Emote using RNBO.