How to map different PC Parameter values to Switch-ButtonWidget?

So I read the manual which says I can use a Blue Knob Widget to control PC Parameter Values. OK, this works. But shouldn’t it also be possible to map different PC Parameter Values to different Switch Button Widgets? The screenshot shows what I mean: The problem is that if I have for example two switch buttons they don’t send different values. Both buttons always send the same value. What am I doing wrong? The first button has widget value 3.0, the second for example 5.0. So theoretically the second button should send a different program change, but it doesn’t. It is also sending the value 3.0. When I say each button should use the last saved value. And the two buttons have two different values then it would seem to me logical that they should send different values, but they don’t. At the end of the day what I want is pretty simple. Sending different Program Changes by clicking on different buttons :wink: And I want to do that without using different rackspaces or rackspace variations if possible.

It’s not as straightforward with buttons. A button will send a value on switch on and off. You then must use the widget scaling curve to set the appropriate Max value for each button - so the appropriate PC number is sent when the button is on.

I think Radio Buttons will be the best option here, as they have a setting to only send a value when the button is On e.g. it will prevent each button from sending a PC message when it is changed to the Off state.

Have a look at this.

PC Radio Buttons.gig (52.0 KB)

To set the correct Max value in the widget scaling curve, you can use the special “m” syntax to enter a specific PC number e.g. enter “5m” in the Max field will change the value to the correct widget value needed for PC number 5.

1 Like

The widget value is not the one that is going to be sent. It is the scaled value that’s being transmitted. Button Widgets themselves only have two values: Off → 0.0 and On → 1.0.

Easiest way to solve this (using GP 4.7): Place the buttons in a radio group and ‘Momentary Touch’ off:

Adjust the scaling curve (the whole range 0->100 maps to the PC you want - see below) and disable ‘Send on Radio Button Off’. Do this for all buttons. Of course, the used PC values will differ.

To get the right PC value, use the expression editor:


Create two points:

  • x := 0, y := <PC value>
  • x := 100, y := <PC value>

You must enter the value on a scale 0 → 100, but the MIDI value it corresponds to, is shown below the value, in this case it says 74 M


PC by button.gig (52.7 KB)

I hope this helps :slight_smile:

Edit: @rank13 You were faster than I was. Sorry :beers:

1 Like

Thank you very much!

Thank you very much!!!

I have tried your Gig Files, once again. Thank you, but is there no easier way?

In my example, you just have to add extra radio buttons and set the Max value in the scaling curve to the PC number you need. I’m not sure what could involve less clicks (if you need do to this with buttons).

Easier is rather personal: I think scripting is easy, but when it comes handling it via the gui this is the easiest.

Let me sleep on it. Maybe I can devise a way that makes this easier.

I am using in the moment the Gig File form Frank 1119 because the problem with your Gig File is that the MIDI Monitor shows no activity when I use it.

On the one hand I am happy that this basically works, on the other I am manually copy and pasting every button and for every button I have to do the mapping again because only the button is copied but not the mapping. And after the mapping I have to click into the curve window in order to get the scaling to the desired value. So it is really nice to learn something here with your help, but if you imagine you would have to do 128 buttons for 128 presets with this method then its gonna be a long weekend :wink:

It does work. You might have to update the Midi Out block in the wiring view. Otherwise, it can also depend on what the Global Midi options allow for received PC messages/ports - particularly if you are sending to a virtual midi port (like the IAC). I assume your aim is to send these messages external to GP, not have them be received by GP?

You can’t copy the mapping, but when you select multiple widgets and right click to access the context menu, you have at least the possibility to select the right plugin (but not its parameter).

You could wait for the weekend summer time goes to winter-time, but that would only buy you an hour just once a year and doesn’t help with the stress on your fingers :slight_smile:

You could do it by scripting:

    MapWidgetToPlugin(wdgt1, plug, 1)
    MapWidgetToPlugin(wdgt2, plug, 1)

but then you have to give all the widgets a handle, so that’s also a lot of work…

So, that’s it for today. :grinning: I hope I can make this rackspace to be a default rackspace for all my Gig Files.
This covers my most important Switcher Presets I for my PCB10 and PCB6.

1 Like

Free of charge :slight_smile:: 128 buttons mapped to PC 0 → 127. You will have to adjust the captions.

The mappings and curves are created with scripting, and it has to run once every time you load the gig.

Maybe this helps somewhat…

PC by button generator.gig (1.6 MB)

1 Like

Oh, you saved my weekend, thanks a lot! :blush: