Expression Pedal Postion HELP

I have 2 Expression Pedals, One that controls Acoustic and Electric volume and One that controls Synth volume. They are both mapped to the correct CC’s . I also have these cc’s mapped to the corresponding volumes in the mixer.

I have set the m all to ignore variations so that each variation uses the CURRENT position of the pedals. This works well.

I would also like when I switch rackspaces for the output volumes of the synth, electric and acoustic to be based on the CURRENT position of the pedal as well. I can’t figure out how to do this across rackspaces. What am I missing? If I use different rackspaces for song parts, I could cut out the volume of a part if I don’t address this.


Put those widgets in the global rackspace!


Hmmm. I’ve put the expression pedals in the global rack space as they don’t change (always send cc and value ) but the other audio output widgets for the respective outputs could change. As an example , on one rack space it could be controlling 2 different synth sounds based on heel/toe position and another one could be overall volume. So the output widgets can vary even though the expression pedal ccs are the same.

So if I’m making sense I guess the question is can a rack space take the CURRENT position of an expression pedal upon change? It does it within a rack space if you ignore variations but doesn’t seem to if you change rackspaces.



We don’t currently “remember” the last seen CC value globally and you can’t “interrogate” a pedal to see what is it’s current position. Right now, the only thing I can think of is something like use a Gig Script to keep track of these values and then interrogate the Gig Script from each rackspace using OSC messages or something.

On the other hand, if all you need to do is make sure that widgets don’t immediately jump when you switch to another rackspace, then set the widgets to respond to CATCH rather to JUMP. That way, they won’t change until your expression pedal CC value crosses over the current value of the widget

1 Like

Thanks @dhj. I really appreciate you always being so responsive and educational!!

I tried that but I don’t think catch solves it as it will still switch to the last saved backspace value and just won’t change it until the pedal crosses over it. It will not hold the current value of the pedal over to the next backspace (unless I’m missing something)

I’m thinking the best workaround would be for all song parts to be contained in the same rackspace. Then I’d only need to worry about it when changing over to songs which is much easier to deal with. Make sense?

Are you controlling synth volumes directly or are you using a GP Mixer plugin? You should be doing the latter, not the former.

Assuming you’re doing the latter, why not just have your mixer in the global rackspace, with those widgets there too, and then route your synths from your local rackspaces to the mixer in the global rackspace?


Thanks @dhj. I tried that and it didn’t seem to do it, And the 3 expression pedals I have are sometimes used for different things based on the song so perhaps better in the workspace.

It would be cool if there were a way to send values upon rackspace change if that is even possible. Or even if there is a way to write a script that moves each pedal say .1 to trigger the jump capability. Again no idea how to do this.

I think I’m to the point where I will begin to replicate my default preset for various songs.

Thanks for all the help


Sure there is - using GP Script you can respond to the Activate callback on each rackspace and set widgets to anything you want

Yes but can you set it based on the current position of the pedal. I was thinking to add .1 to whatever that is to trigger the jump function. But it wouldn’t be an initial value - it could vary…

And again, like so often before with other users too:
Please, please, please upload a gig file for us,
so we could easily see what you did and how you did it.

I guess it need not to be kept as “top secret”, and letting the whole community have a look on your gig file will help us to understand the issue and finally will help you to (hopefully) get your problem solved! :slightly_smiling_face: :beers:


GP Preset Default Final.gig (5.3 MB)

Sure. Some Background

Coming from a Brian Moore set up with an Axe FX and a GR55 to Gig Performer

The Piezo Side will use THU Globally for acoustic sounds and also triggers Midi Guitar

The Mixers in the Global Rackspace will just enable me to easily switch outputs if sound cards change or if I decide to use the Fractal for Electric sounds

My UM-One Midi is a Roland FC300 with 3 Expression Pedals and an added sustain pedal switch

I’ve only set up 3 Rackspaces so far as I want to get them right before replicating them for the various songs. (one includes Guitar, Piezo and Synth, one just guitar and synth, and one just acoustic and synth)

My guitar sound is Neural DSP Soldano 100 and I’ve set up all the widgets

I also have an ADA Flanger and THU for a Wah and Phaser.

The Synth Sounds are Sampletank and Zenology which should be all the flexibility I need.

The Electric signal splits so I can use expression pedal 2 as both a Wah and a Volume Pedal which is cool.

Depending on the prese/rackspace the Expression Pedals could have various uses (sometimes boosting drive as in the existing presets, and sometimes synth volume pedal could alternate between two sounds). This is why I have them in the regular rackspaces and by ignoring variations I can keep the pedal position current when switching within a rackspace - but not when I change rackspaces.

This is why i was trying to figure a way to keep the current pedal position when switching rackspaces but if I need to, I can self contain songs within an existing rackspace so not to cause drop outs.

Hope that helps. I plan to go this route and replicate the presets for each sound and song as necessary which is why I’m trying to get these as best I can.



1 Like

I had a look at your gig file and i must confess i don’t really know what you exactly wanted to do… there is a lot of stuff you put on your rackspaces with quite complex routing back and forth… multiple assignment of one controller to diffrent widgets and plugins at once… don’t be offended, but i think it’s quite a mess which makes it unnecessarily difficult to find a fault or to isolate an issue.
I would recommend you to set up a maximum simplified set of rackspaces to narrow down the issues you are facing and then (when all is ok) start to build your final rackspace around this.


I find that sending OSC back to GP is often a simpler option for this sort of thing.

However it won’t be suitable for using the expression pedal for something like Wah, where it needs to be extremely responsive. But for simple volume setting, it should be ok.

It involves using the expression pedal widget in the global rackspace as the master - where a GP Script sends OSC to the expression pedal widgets in the local rackspaces as the way to keep them in sync. It will also send the global expression widget’s value when the rackspace changes, which will sync up the local widget when you first switch to the rackspace.

Anyway, it will hopefully work - try it out! I have created new ‘Local Expression’ widgets in each rackspace as the test.

GP Preset Default Final R13.gig (5.4 MB)

The global rackspace script is:

    GLOBAL_EXP : Widget
    osc : OSCMessage

On WidgetValueChanged(newValue : double) from GLOBAL_EXP
   OSC_SendDoubleSpecific("/LOCAL_EXP/SetValue", newValue, "", OSC_GetGPListeningPort())

On Rackspace(oldRackspaceIndex : integer, newRackspaceIndex : integer)
    OSC_SendDoubleSpecific("/LOCAL_EXP/SetValue", GetWidgetValue(GLOBAL_EXP), "", OSC_GetGPListeningPort())

Hey thanks for looking and no offense taken (I just got the program two weeks ago so I’m sure you are right! :smile:

(My fractal set up includes 3 expressions (one for the synth, one for the acoustic/electric volume and one which changes based on the preset but is generally a boost that adds some delay mix which is why it is enabling multiple widgets).

I’ll take a look at it but the real issue is how to get an expression pedal to hold its current position across rackspaces like it does across variations when you see to “ignore variations”

Thanks for looking. I really do appreciate the extra set of eyes!


1 Like

Interesting and thanks!! I’ll have to educate myself a bit on this That’s intermediate level stuff for sure



Because I was curious, another way to achieve that is the global rackspace and some scripting.
The idea is this: The local widget sets a global widget and when the rackspace is switched the local widget reads the value from the widget in the global rackspace

Expression_Global.gig (57.0 KB)

An this is the rackspace script:

 var EXP   : Widget
     E_EXP : ExternalWidget
 on Activate
  if BindExternalWidget(E_EXP, "EXP", "GLOBAL RACKSPACE") then
 // Called when a widget value has changed
 On WidgetValueChanged(newValue : double) from EXP
  SetExternalWidgetValue(E_EXP, newValue)

@pianopaul confirming that your approach means that the midi controller needs to be mapped to the local widget in each rackspace? So the global widget is just storing the value in order to apply to the next local rackspace.

Yes correct.


Getting this message Warning: missing include file: /Users/WITELITE/Documents/Gig Performer/Scripts/$system$.gpscript
Warning: missing include file: /Users/WITELITE/Documents/Gig Performer/Scripts/$rig$.gpscript

I’m not familiar with scripts yet so not sure.

Where is the best place to learn about scripting or a good primer>? Thanks