Exclusive bypass?

I’ve used radio buttons group for exclusive solo status in a Mixer. I would like to behave as exclusive bypass of the non used plugins to save cpu. Is there a way to do it?
I imagine it would be posible to doing it with scripting, but that’s too much for me i guess. …

You can bypass a plugin with widgets mapped to the plugin

Yes, I know that. But I would like to bypass the rest of the pugins, the same moment I make one of them “solo”.

Sure - no scripting needed. Actually, no solo needed either since bypassing the other plugins accomplishes that. Although you could certainly still add a mixer for volume balancing. Just need to create a widget per plugin, map to bypass (with reversed value so the plugin is “on” when the button is pressed), and add the widgets to the a radio group. Here is an example Gig that does it:

ExclusiveBypassExample.gig (55.9 KB)

Thanks, I’ll try it tomorrow.
By the way, if no solo, just bypassing the plugin stills pass the non processed sound to the mixer.

Ah - right - sorry. I answered without looking closely enough at your example to realize you were using plugins to process audio (guitar) rather than to generate it (midi/keyboard). In that case, I think you actually do need to write some simple script to do it since widgets can’t be both part of a radio group AND have a widget link in order to control more than one parameter. I may have a little time later to script an example unless someone else beats me to it.

Actually - I just adjusted it quickly now.

I used two radio groups - one for a set of bypass widgets, and one for a set of hidden solo widgets. You need to assign a GPScript Name in the Advanced tab for each widget. Here is an example for the first widget:

Then I used the script to set the corresponding solo widget value when the bypass widget is turned on. The radio groups take care of the “exclusive” aspects of both button sets. The updated Gig file is attached.

The script is in the Current Rack script section:

Var SGearOn, AmplitubeOn, ToneXOn, Solo12, Solo34, Solo56 : Widget;
On WidgetValueChanged(newValue : double) from SGearOn   
    If newValue == 1.0 then 
        SetWidgetValue(Solo12, newValue)

On WidgetValueChanged(newValue : double) from AmplitubeOn   
    If newValue == 1.0 then 
        SetWidgetValue(Solo34, newValue)

On WidgetValueChanged(newValue : double) from ToneXOn   
    If newValue == 1.0 then 
        SetWidgetValue(Solo56, newValue)

There are a few approaches you could take, but this was the most straightforward one to me. You could also just directly set the appropriate solo parameter on the mixer (and unset the others) in your script rather than using the second set of radio widgets. Hope this helps.

ExclusiveBypassExample-v2.gig (111.4 KB)

1 Like

If you are only ever using one of those plugins at a time, and the mixer isn’t being used to adjust input levels, then just put all the plugins in series and attach bypass of each to the radio buttons as mentioned. That way the audio will cascade through each plugin, but if it’s bypassed it doesn’t make a difference. That’s what I do all the time anyway.

1 Like

The script of @BryanD basically is exactly what is needed to get what you want.
Even though it could be a bit refined for further use (i.e. if you’d have to increase or decrease the number of buttons.
The steps to get there are quite the same, but i would recommend to use (in this case!) for your widgets a more generic naming pattern like “solo01, solo02…” / same for the bypass buttons (“bypass01, bypass02,…”).
The bypass buttons should either be locked or be hidden, just to prevent unwanted user interaction.
For the script i would recommend to use widget arrays and the On WidgetValueChanged() callback variant for multiple widgets at once… this will save a lot of code lines, and also make it easier to streamline the code if the number of buttons should change…

solo01, solo02, solo03, solo04, solo05, solo06 : widget
bypass01, bypass02, bypass03, bypass04, bypass05, bypass06 : widget

soloArray : widget Array = [solo01, solo02, solo03, solo04, solo05, solo06]
bypassArray : widget Array = [bypass01, bypass02, bypass03, bypass04, bypass05, bypass06]

On WidgetValueChanged (w : Widget, index : integer, newValue : double) from solo01, solo02, solo03, solo04, solo05, solo06
	SetWidgetValue(bypassArray[index], newValue)

Just make sure that the arrays have the same size and that the row of widget names in the callback definition will match the names in your array.
It works like this:
If any of the widgets in that callback changes its value, the callback will receive the name/handle of the regarding widget, the index of the widget in that row (which should match with the array!) and of course its value. Having these information index and value, you can simply set the value of the bypass-widget with the same array-index accordingly. That’s it… short and easy to maintain!

1 Like

These scripts are great but, as above - and if I am reading the requirement right - this only needs scripts if the plugins MUST be in parallel going through a mixer. If the requirement is just to only ever have one plugin active at a time, then all it needs is:

  • Connect all plugins in series (no mixer needed)
  • Assign the bypass plugin action to a widget for each action (and invert as noted above)
  • Assign all the widgets to a radio group

Job done. It doesn’t matter if audio passes through the plugin when bypassed as it just cascades to the next one down the line.

If the mixer is used for actually mixing, however, then the scripting above is great and is what you need.

thanks, but keep in mind the bypassed plugin let pass through the unprocessed guitar signal, wich will make a very different sound (not to mention the addition of several unprocessed signals…) you don’t want that :thinking:

thanks a lot! That did the job.

If all the audio-processing plugins are connected in a serial way, this will work too, since only one will be active at a time (thanks to radio buttons). So the audio will go unprocessed through your effects until it comes to the active plugin, then it will be processed, and after that this processed signa will pass all the bypassed plugins as if they weren’t there…
The only problem i see, is that separate volume adjustments had to be done within the particular plugins itself, which is something i personally always try to avoid!
So i guess the solution with using a mixer might be better.

1 Like

I’ll have to do my homework on studying GPscripting (even at the most basic level) :sweat_smile:

this forum is so helpfull! :pray:

1 Like

yes, my fault, I was thinking in parallell :person_facepalming:

sorry, I was thinking in paralell …my mistake.

Perhaps in a future update it’ll be possible to group the solo widgets to the radio buttons and not need any scripting.

yes, or just an “exlusive bypass plugin” group widget would be very heplful.

Was this not already available :thinking:
Link: [Leak] New Upcoming Radio Buttons Feature

As far as i remember, the grouping of radio buttons is (not yet) allowed, and this would be neccessary in the example above: grouping each bypass widget with the corresponding mute widget, where only one type (bypass or solo) had to be radio buttons - if only this was allowed at this point, but it isn’t :nerd_face: