GP with X-Touch mini q's

Just bought and programmed up an X-Touch mini. Seems like it will be good, however two things…
When I open up my GP file, it will send all midi settings to the current layer on the X-touch only - ie A or B not both. Every controller is fully ‘Sync’, but it seems to ignore the non active layer of the X-touch - Anyone made a way - like a widget that can send a midi all?

The other problem is that I have set up a row of buttons PC 0-7, to select racks 1-8, which it does, but the button lights stay on, and have to turn off before selecting a new rack or else the whole row ends up being lit. Any solutions?
Thank you

I think this is a bug with the X-Touch Mini, as the editor only shows type ‘Momentary’ when you set the buttons to send PC, but they act as toggle. I worked out that the buttons take on the behaviour of whatever you had them set to PRIOR to changing the message type to PC e.g. if you change the message type to ‘CC’ then set the button type to ‘Momentary’, if you then change the message type to ‘PC’ the buttons will act correctly as momentary (and won’t stay lit when you press them).

So, the question is - would you actually prefer the toggle behaviour to see which PC/rackspace is lit? If you do, then a GP Script can help turn the other buttons off when you press a new one.

GP does send all messages back to the X-Touch Mini - the issue is with the X-Touch Mini ignoring those not on the active layer.

Thanks. Thats great info. And yes ideally to have one button lit and not having to refer to the mac to see whats live would be best, but I wouldn’t really know how to do that with a script - especially for rack changes. I have a scripts (not mine) for radio buttons of other widgets, but rack changes?


Try this in the Gig script (Window > Show Gig Script Editor).

You will need to assign an alias for the X-Touch Mini in the Rig Manager. The example below mine has an alias of XTOUCH_MINI (it needs to be a single word). You shouldn’t need to change anything else.

// Radio button behaviour for the 8 top-row buttons in the X-Touch Mini
// This script assummes they are configured to send PC messages e.g. to swith to rackspaces 1-8

    XTOUCH_MINI : MidiInDeviceAlias
    XTOUCH_GLOBAL_CH : Integer = 16

// Updates the button state/LED for the 8 top-row buttons via note numbers 0 to 8 (velocity 1 is lit)
Function UpdateXTouchButtons(index : Integer)
    Var i : Integer
    For i = 0; i < 8; i = i + 1 Do
        If index == i Then
            SendNowToMidiOutDevice(MIDIOUTDEVICE, MakeNoteMessageEx(i, 1, XTOUCH_GLOBAL_CH))
            SendNowToMidiOutDevice(MIDIOUTDEVICE, MakeNoteMessageEx(i, 0, XTOUCH_GLOBAL_CH))

//Called when a program change message is received
On ProgramChangeEvent(m : ProgramChangeMessage) from XTOUCH_MINI
    Var PC : Integer = GetProgramChangeNumber(m)
    InjectMidiEventViaRigManager(XTOUCH_MINI, m)

// Called when you switch to another rackspace
On Rackspace(oldRackspaceIndex : integer, newRackspaceIndex : integer)

// Called when a gig file has finished loading
On SystemEvent Matching GigLoaded

Thank you - I’ll give it a try

Is it possible then to have a widget button to do a ‘send all’ so that it will auto load layer A, then I can switch to Layer B, and press the send all button, then both layers are upto date ready to play?

I think that would be possible. Because you can send the X-Touch Mini a PC message to switch layers, it may be possible to automate the whole thing.

Hi, unfortunately this is not working for me. I copy and pasted the script in the show gig script editor. X-touch buttons are sending PC 0-7. Rig manager midi device alias is copy and pasted XTOUCH_MINI to X-Touch Mini device.

Did the script compile without any errors? I didn’t mention it, but you must click the compile button at the bottom of the script window (not sure how familiar you are with GP script?).

Can you also check the name shown in the Options > Midi Ports to confirm the controller is listed in all capitals “X-TOUCH MINI”

No errors on compiling
Options : Midi Ports is listing in and out “X-TOUCH MINI”
Currently, the PC buttons are behaving as toggles - should I change them to momentary (with the bug you found?).
Also XTOUCH_GLOBAL_CH on your script has “16”, my PC are currently set to chan 11.

When I open the X-Touch Mini editor, channel 16 is listed as the global control channel to change the LEDs and switch layers.

Are your PC buttons on Layer A?

Working - I didn’t see the global channel setting on the X-TOUCh editor. Thank you for your help. Much appreciated.
Now if I can get layer B synced up - its all pretty perfect :slight_smile:


@V27RJH here’s a gig file to test the layer A/B syncing.
When you change rackspaces, I’ve set it up to quickly switch to Layer B and sync the LEDs, then switch back to Layer A and do the same. So you will always end up on Layer A when you switch rackspaces.

For this to work, you need a Midi Out block on each rackspace for the X-Touch Mini (with the script handle). Every knob widget also has a specific script handle/name in the widget Advanced tab.

X-Touch Layer Sync.gig (746.9 KB)

1 Like

Wow - thank you. I’ll try that this weekend sometime and let you know.

Hi, apologies but I’m knew to this and not getting anywhere (not understanding mainly).
I’ve copied your script into the ‘current rackspace script editor’ (?)
In the ‘wiring’ tab for that rackspace I have added a midi out (to X-touch mini). But what connects into it?
Also is this script just for the knobs or buttons too?

Nothing. It just needs to be there for the script to work, as it sends messages directly to it. You need to add a script “handle” for the midi out block (right click on the block and you’ll see this option in the menu). Name it the same as I’ve done in the example Gig file.

It only syncs the knobs. I’m assuming at least one of the layers is using the buttons as PC messages to select rackspaces, so they are covered by the other Gig script.

1 Like

Making limited progress on this working however, my requirement is so much simpler, in that the encoders on layer B on the x-touch are also controlling my global widgets, just 4 buttons aren’t (that exist in one rackspace only - Hammond Organ). So all I really need is to select the Hammond rackspace, switch to layer B and press a widget button to send all (to the x-touch). Layer A is already in sync from initial start up.

So I just need to find out to ‘send all’ from a button (to include global widgets). Any advice?

The script I created was effectively doing a send all. If reviewing/adapting the script is too much for you, you will need to upload an example Gig file that has at least one rackspace plus the global one. It will make it much easier to understand your setup.

RJH GIG Performance(2).gig (3.0 MB)
This is my rack.

I have 6 encoders on layer B adjusting the 4 Rhodes pots and 2 String pots on my Global Rack. Plus I use 8 lower buttons of X-Touch layer B ( 3 global for the Rhodes, and 5 for the Hammond rack). Layer A is all from the global rack so is perfectly in sync - The upper buttons switching racks via PC messages. The upper buttons on Layer B selects one of the 8 Hammond Presets. So I think like I said I just need to select Hammond rack and update/sync layer B and I’m ready to go. Sorry if I’m a bit slow in getting this.