Multi-Plugin Preset Selector

Inspired by the script that @rank13 shared in Can I script a rotary knob to change plugin preset? - #34 by rank13 , I created a multi-plugin preset selector for my global rackspace with some extras.

Added features:

  • single script allowing to map multiple preset-control-widgets to multiple plugins
  • filter selectable presets by an optional prefix (e.g. “show presets beginning with SEND”)

Setup: Refer to the comments within the script

My personal usecase:
Within my global rack, I have some fixed send effects.
This script allows me to select different presets for each of them.
Some plugins are used both as insert as well as send FX, for this situation I prefixed some presets with “Send” and configurated the script to filter/exclude these.

image

Multi Plugin Preset Selector.zip (2.2 KB)

6 Likes

That’s a very sophisticated script - good job!

1 Like

A brilliant solution that works wonderfully with my global VST instruments. The only thing I can’t figure out is how to display the value of the Preset selector (the name of a gpp preset) in the local rackspace. I have Global parameter assigment for the widget, but It just displays a number instead of text. Can I ask you for help please?

To be honest, I also don’t have a simple answer.
Afaik with parameters, you can give a value back (double 0.0 to 1.0), so that would not be enough for a string (preset name).

You could make a constant array and put all your preset names, and using a number to map a double to the preset name, but that means you have to manually maintain the array.

Another possibility could be to send it from the global rackspace via an OSC command, read it in the local rackspace and display it.

I also made a script, but I have all preset names (and much more) inside a text file that is read in the global rackspace (and no need to have it accessible in the local rackspace).

Hi @Orien , happy to hear you find it useful! Unfortunately, no simple solution is available.
Broken down situation: No sophisticated global<>local rackspace communication is possible, global parameters will only transfer the numeric value. Text labels are either written into the label widget configuration by user, or Gig Performer will look up what the widget is controlling and render a more informative text.

Right now, the only option available to set a label text accross global-local rackspace gap is to enable OSC. I’ve changed my own setup several time since then, current setup doesn’t use it anymore but it should work roughly like this:

  • setup OSC in configuration
  • configurate the Preset Label Widget’s oscHandle so that it can receive OSC messages
  • in global script, send an OSC message to GP itself and address it to the widget:
PORT : integer = OSC_GetGPListeningPort()
HOST : string = "127.0.0.1"
SendOSCMessage { "/<widgetOscHandle>/SetCaption", "DISPLAY NAME" } to HOST:PORT

Documentation on all supported OSC messages can be found here:

However, be aware that OSC is much slower because it essentially means that GP will open a network port to send text messages to itself. Also it may fail if the chosen port is already in use by a different software.

I’m kinda working on a GP plugin that allows to send some basic commands to plugins and widgets without relying on OSC, however it is currently on halt because the current SDK API is missing one function that is essential for me to make any use of it. Maybe soon.

1 Like

@Frank1119 has created an extension that allows GP Script variables to pass values between the global and local rackspace.

I used it to display the selected preset on the local rackspace panel.

GlobalVar

4 Likes

oh that’s awesome! I saw the extension some time in the past, but I was assuming it would only handle numeric vars, similar to the built-in global parameter system. Thanks for letting us know!

1 Like