Use GPScript to bypass plugins automatically when volume is off

Use GPScript to bypass plugins automatically when volume is off

Gig Performer is pretty efficient in terms of CPU cycles but sometimes plugins use up a lot of cycles even when they’re (apparently) not doing anything. In a traditional channel strip model, it’s pretty straight forward to automatically bypass plugins when the channel strip fader goes to 0 (well, -infinity) because it’s immediately obvious what to bypass since the channel strip “owns” the plugins.

In the Gig Performer world, you can of course connect a single plugin to an arbitrary collection of other plugins and so there is no implicit ability to bypass a plugin. However, with a little bit of GPScript (Gig Performer’s proprietary scripting language), it’s very easy to tailor this behavior to suit your specific needs.

Let’s see a simple example:

Aalto plugin is using 27% of CPU in idle mode

So in this brand new gig, we have inserted a plugin called Aalto. It’s not connected to anything yet but our CPU monitor (which specifically monitors total audio processing) is showing that Aalto is using around 27% even though no audio is being processed or produced from it.  (NB – normally when you insert a new plugin, the quiescent CPU utilization might go up by 1 – 2%, but that’s all.

Anyhow, let’s finish connecting this up so we have a working example.

Aalto plugin in Gig Performer, audio plugin host

Now we have a synth, controlled from an incoming MIDI keyboard, with audio going through a gain control and finally to output. So what we’d like to do now is arrange for the Aalto to be completely bypassed when the gain is sufficiently low so that the sound is no longer audible. To do this, we have to make the Aalto plugin and the Gain/Balance plugin accessible to GP Script. We do this by right-clicking on each of the plugins and assigning them GPScript names.

Let’s start with the Aalto: right-click on the Aalto plugin and navigate to OSC/GPScript->Set name…

Aalto plugin, completely bypassed when the gain is sufficiently low, GPScript name

Now you will see a new dialog.

Aalto plugin, use in GPScript, defining a GPScript name in Gig Performer

Type in a meaningful name (which can be composed of only letters and numbers), check the “Use in GPScript” box and then click OK

Aalto plugin displays its GPScript name, indicator on the right {S}, GP scripts.

The plugin now displays its GPScript name on the top left and there’s also an indicator on the right {S} indicating that this plugin can now be used in Gig Performer scripts.

Do the same thing for the Gain/Balance plugin, for example:

Gain and Balance plugin displays its GPScript name, indicator on the right {S}, GP scripts.

You can see that the Gain/Balance plugin now also has a GPScript name, SynthVol

Now open the Script Editor window (Window -> Show Script Editor)

You should see a new empty window that looks like this:

Window --> Show Script Editor opens the Script Editor window in Gig Performer, GPScript

You’re now ready to write the script – but don’t worry, we have a few tools to help you.

First, right-click inside the editor and select the menu item, “Auto declare blocks and widgets”

GPScript in Gig Performer, Auto declare blocks and widgets

After you do this, the contents of the Script Editor window will change:

GPScript in Gig Performer, Auto declare blocks and widgets, GPScript code

Don’t worry if you don’t understand this right now — we are telling the scripting system what plugin blocks it can now access. As you become more proficient with scripting (if you so desire, you don’t have to use scripting), you will start to write these lines manually.

Next, right-click again inside the editor and select “Plugin block parameter changed callback”. A callback is a chunk of code that will be called automatically when something happens. In particular, we are going to configure this callback so that it responds whenever the gain of the Gain/Balance plugin changes.

GPScript, Insert a code template, Widget, plugins and OSC callbacks, Plugin block parameter changed callback

This will insert some new lines into the script:

GPScript in Gig Performer, Code called when a plugin block parameter value has changed

The items surrounded by < and > are hints to tell you what has to be changed by you. First, we’re going to indicate that this callback should be triggered from the Gain/Balance plugin. If you recall from earlier, we gave the Gain/Balance plugin the GPScript name SynthVol. We don’t need any local variables so we will also delete that <Local variable declarations> section. Now this section of the code looks as follows:

GPScript in Gig Performer, Code called when a plugin block parameter value has changed, delete local variable declarations

Note the two variable names, parameterNumber and parameterValue that are part of the callback declaration. All plugins that support host automation have unique parameter numbers associated with each item of the plugin that can be controlled from the plugin host. Gig Performer makes it easy for you to find the parameter number simply by moving the desired parameter.

Here’s a picture of the Gain/Balance control plugin editor window right after I moved the fader. Notice at the top, there’s a line that says, Param# 0. That means that the parameter number for the fader is 0

A picture of the Gain/Balance control plugin editor window in Gig Performer

The parameterValue variable will always be a value between 0.0 and 1.0

So now we can complete the script by checking the parameter number and we will bypass (or unbypass) based on the value of the fader.

Bypass or unbypass, based on the value of the fader, Gig Performer's GPScript code

So whenever the fader value is less than 1% from the bottom, we bypass the AaltoPlugin, otherwise we unbypass it.

Now press the Compile button and if all is well, you will see a nice confirmation:

GPScript code in GPScript editor, compile code, Gig Performer

Let’s take a look at this in action:

Notice that as you move the fader towards 0, the plugin automatically bypasses and the CPU utilization falls instantly.


Related topics:
The most flexible MIDI processing
How to control multiple parameters with a single widget? (GPScript example)
GPScript Documentation

Scaling Curves

Scaling curves allow you to control the shape of the output of a widget or convert an incoming note velocity to a new velocity. Various predefined curves are available and they can be tweaked as necessary. You can also just draw your own curve as well to achieve the effect you require.


MIDI File Player Plugin

You can load up to 128 MIDI song files in a single plugin instance. Switch from one song to another, mute tracks and/or change their channel numbers. Tempo can be controlled by individual songs or you can use the global tempo and tap tempo to control the BPM interactively.


Favorites and Presets

Create a sound by placing and interconnecting your desired plugins, such as a synth, some effects and perhaps a mixer. Select them all and then save the selection as a named favorite. The favorite will subsequently show up in all plugin insert menus, making it easy for you to recreate that configuration whenever you need it again. This feature is also very powerful for creating your needed sounds on your studio computer and then transferring them to your touring laptop.


Probabilistic Sound Designer

Parameters you select in an open plugin are captured into the Probabilistic Sound Designer dialog window. When you click Randomize, you're only adjusting those selected parameters. Each entry in the PSD dialog has a curve but unlike widgets where the curve controls scaling, in the PSD the curves are used to define the probability of particular values being selected. Make sure the filter cutoff never gets too slow so as to block all sound. Perhaps adjust the max range of the VCA attack parameter so that the sound doesn't have too much delay. Constrain the octave ranges of the oscillators, perhaps ensuring that 1/3rd of the time we select 8' and 2/3rds of the time we select 4'. The possibilities are endless.


More Widgets

Numerous new widgets are included in Gig Performer - a new sustain pedal, plastic knobs, drum pads and more colored sliders. Shapes can be colored with different borders and fill colors and morphed from rectangular to circular. Your creativity is now the limit to creating fabulous front panels in Gig Performer.


MIDI Message Helper

Select MIDI devices by name. Choose the MIDI message type and adjust the appropriate parameters for the specific type



Layout management

Gig Performer supports arbitrary resizing. Layout your widgets the way you want - resize the main window and the widgets will grow or shrink as necessary to maintain the same interrelationships. No matter what size screen you have, your front panels will still be neat and usable.


Undo Support

If you move your widgets around and/or resize them, or even delete them by mistake, the Undo facility will correct your mistake. Minor moves to a widget by mistake will no longer spoil your design


Plugin Channel Count

Some plugins support a large number of outputs and they depend on the traditional channel strip to control how many ports should be available.   When you only need a stereo pair, it is convenient not to have a large horizontal block. In Gig Performer, the number of available ports  is controlled by the channel count override, which can be applied to individual plugins and will be remembered when the gigfile is reloaded or if the plugin is saved as a favorite.


Input muting and output fading

Rather than a single audio length tail, Gig Performer 4 gives you the ability to control input muting and output fading separately. Input muting controls how much time it takes for audio input to be silenced when you leave the rackspace. Output fading controls how much time will be taken for audio to fade out when you leave the rackspace.


Faster Plugin Finder

Instead of searching through menus of perhaps hundreds of plugins (you know who you are!), the Quick Plugin Finder makes it easy to find the plugin you need by simply typing partial strings. For example, as shown here, to find the Modartt Pianoteq 7 plugins, it's enough to type pia mod 7 (in any order, by the way)  to restrict the list of available plugins to those matching your query. The Quick Plugin Finder also knows about manufacturers, presets and favorites.



Touch Friendly Input

Any entry field can be changed by either dragging your mouse (or finger) up or down, or by using the large popup touchpad where you can just tap on the squares to enter a value. The large popup keypad also does validation so you can't enter an invalid value. You can also just tap the BPM field to pop up a larger view where you can quickly change tempo, tranpose, trigger Tap Tempo and enable Ableton Link, the last allowing you to synchronize Gig Performer with any other application that also supports Ableton Link.


New Tuner Display

The tuner view makes it easy for guitarists to quickly check and adjust their tuning. You can toggle into the tuner view from any other view and toggle right back as soon as you're done. All output will be silenced automatically while you're in tuning mode. You can adjust the concert reference pitch from its default of 440 Hz to suit your own needs. The tuner view fills the entire screen so you can easily see it from a distance.