X-Touch Universal Midi Remote (Native Mapping)

[Attatchment removed as there’s a newer version further in the tread]
I’ve been working on this for a few days. It’s 90% of the way there, and most stuff is working, but I’m pretty burnt out so need to just post the thing, and take a breather!

It’s an (almost) complete mapping for XTouch Universal, which uses Ctrl Mode, so coloured scribbles, and the vuMeters work (both super fun).

There’s a few keys not mapped, because I don’t really know what to map them to - suggestions welcome (I primarily got the XTouch to use with an XR18 so haven’t used the MCU mode much). Function keys are deliberately left unmapped, as they’re perfect for user mapping to suit your workflow.

Input channels do work, but the scribbles for them don’t so it looks like they’re not there.

The only big thing (I think) not working is the encode assign doesn’t work yet - I’ve got a pretty good idea how it will work, but there are few niggles with getting the scribble strips to follow along, and I just need a break before jumping into it.

Let me know how you get on, and any suggestions for better mapping are welcome.

1 Like

[Attatchment removed as there’s a newer version further in the thread]

Here’s an updated version Midi Remote for Xtouch. It’s a bit of a monster - its about 8 times the size of most of the other scripts I have!

While I’m sure it’s not going to satisfy the hardcode Mackie Remote users, all of the core stuff is done, including track filters, and encoder assigns (getting them to play nice was a real puzzle, though the final solution was actually simple). I wasn’t intending to create an MCU clone - I just wanted a simple, clean script that worked in Midi Remote.

Set XTouch to Ctl or XCtlCtl mode.

Everything is mapped to something sensible apart from Replace and Flip. Function keys are deliberately unmapped - They’re actually paged with the Modify keys, but the GUI editor doesn’t play nice with sub-page mappings. Modify’s don’t actually do anything else so they’re currently a bit pointless but open to suggestions.

Smpte/Beats is unmapped as its used to switch between DAW/X-control modes.

Marker, and Nudge modify the ff/rw behaviour. Scrub modifies the jog wheel.

There are still a few mappings that need improved, feedback welcome.

1 Like

Just downloaded and tried your script and want to congratulate you and thank you for a fantastic job.

I have been looking for a script like this for 6 months to get my XTouch working properly.

Only comment I would make is that I would like to see the meters displaying all the lights rather than just the highest otherwise it is perfect.

Again many thanks for this and keep up the good work.

1 Like

This is fantastic, really nice to see a working script doing some of the heavy lifting big thanks and massive well done!

So far, I’ve only done light testing, I plan to get a touch deeper into it.

As someone who’s immediately fresh to this script, what’s the best way to open a plugin UI on a given track? So far if I pop open the UI a whole bunch of controls are already assigned to the encoders which is awesome as it updates to whichever is currently on top. However I wondered if there’s a way to get to it directly from the X-touch?

The same would go for say the channel editor page, or stock EQ’s panel, I can see how to access them, but I’m just struggling a touch with the logic of how each band on the stock channel EQ is controlled / how those controls are picked up?

On the flipside the autobanking is fantastic, able to select tracks back and forth 1 track at a time or banks of 8 again amazing work! it all follows properly even including hidden tracks, it’s an absolute breeze, I was borderline giggling seeing all the scribble strips light up in their channel colours.

A couple of suggests if I may, and I’m fully open to accepting I’m a noob hehe, maybe there’s a way of getting the zoom pad to behave, offering vertical and horizontal zoom in the arrange window? Or contextual zoom depending on mixer, arrange, editor etc

A small tweak / modifier button which allows the adjustment of the speed of the jog wheel, say a toggle “follow quantize”, “1 beat”, “1 bar”, “4bars”, “16bars”? Also have it affect the scrub speed, slow medium and fast operation?

Another cool idea I had was the ability to place either the locators, or say a current point of automation at the point of the cursor (on the selected track if required) would be handy setting up loop points, scroll, add left locator, scroll add right locator and then press loop button and we’re off and away.

I’ll have a think about other questions (is there a quick mapping page or workflow you might have to hand, might save a few of the questions? Worth a shot asking hehe) and carry on testing but really massive thanks for sharing this so far, definitely worthy of a beer or two!

1 Like

Thanks for the encouragement.

The weird single LED’s are the way they’re mapping in Ctl mode. I’ll have a bit more of a poke around and see if there’s an undocumented way to get them to all to light up, but for some reason that’s the way behringer wanted it to work…

Great to hear it’s working for you. All comments are appreciated, and there’s a lot to pull apart there. It’s all really helpful.

The issue of opening the plugin UI comes down to two things - WHICH plugin to open, and what button to map it to. For some uses it’s going come down to adding a user mapping, so you assign a plugin you love to one of the function keys. One think I’ll defintiyl look at (now you’ve mentioned it) is that I can probably open the instrument panel, when you second press the instrument assign. Other plugins could perhaps be bound the fx sends on a channel.

colour scribble strips are awesome… Suddenly you can see what everything is mapped to! Don’t know if you noticed but colours follow plugins, and other encoder assigns, so if you EQ a blue track then all the EQ’s are blue!!! That’s really nothing to do with me being clever - its just how the API works.

Zoom button I’ll revisit. I wasn’t really sure what it should do but its a basic button, so remapping is easy.

jog wheel speed could be tricky as there’s already a complex mapping for that to switch between scrub and jog, but I’ll see what I can do. Scrubing is done with a key command so (as far as I know) it’s not possible to do it any different.

Setting locators is easy, so it’s a question of how they should be mapped. they should probably be linked to the marker button somehow.

I’ll try and do a write up of all the mappings…

All the feedback is really great - some stuff I can fix, some I need to think about, but it all goes into the. pot…

Behringer_X-Touch.midiremote (16.9 KB)

Here’s an update with a few of the requested improvements:

After you’ve selected Instrument in the Encoder Assign, pressing it a second time opens the Instrument Window

Zoom now… Zooms. Press Shift, then Zoom to zoom out.

In Marker mode stop and play set the left and right cycle markers respectively (this sounds odd but feels pretty neat in practise).

There’s also a few minor internal fixes/changes. Hopefully I didn’t break anything.

I experimented with the jog and nudge speeds. Try adjusting the snap and grid settings in your project, and it should follow along with those. You can set these to “follow zoom”.

1 Like

Hi bud thanks for the reply!

Firstly, this is an older video and it utilises some 3rd party software, it’s also all over the place in terms of how he shows the workflow but there is some very interesting concepts that may (most likely may not) offer new ideas / concepts / ways to implement?

I mean hands up I’m not at all code minded, this script is wonderful and I couldn’t be more grateful, as I wouldn’t know where to start making one as complete as this.

With regards to the plugins, I was wondering if a compromise such as pressing the “plugin” button, then maybe enable the “function” buttons to access insert slot 1-8, something along those lines, or have the first 6 functions assigned to opening the UI on the first 6 inserts and having the last 2 functions to be able to page / scroll across to more plugins say 7-12 in this instance?

With regards to the mapping of the plugin parameters itself, it could be switched back and forth between the 1st 8 available parameters (maybe bankable to be able to scroll past more than 8) or to the currently assigned quick controls, the former being quicker to just get cracking, the latter would require a touch more user input / influence.

I hadn’t noticed the parameters followed the colour of the UI, that was a nice touch, albiet unintentional but silly things like that add up and it will stealthily be part of my visual workflow.

With regards to the zoom, I would just have it so you hit the zoom button in the centre of the D pad, and then all subsequent D-pad buttons act as a zoom horizontal zoom in / out and vertical zoom in / out, press again and it goes back to the default navigation behaviour

Again major props for taking the time and for sharing, if there’s anything you need help with testing or want to jump in a voice call to chat sometime I’m more than happy to offer my help if I can be of assistance :slight_smile:

Oh lol, you posted yours I was literally typing my response!

I’ll go and do some testing now, exciting times my friend!

Just a quick update, the zoom doesn’t seem to have a way of zooming back out again, if I press the magnifying glass / zoom button, it’ll keep zooming in but no matter the key combo I need to go back to Cubase to zoom out again.

I think the direction buttons move you around the project as expected but those same buttons but with the zoom button depressed / toggled should control the zoom in / out on the horizontal / vertical feels a touch more intuitive but again I’m not a coder so I have zero idea the implications or the difficulty doing this route :slight_smile:

Another quick update, the zoom is now working as you mentioned, for whatever reason the usual restart solved it.

I’m still unsure how to open any VST / VSTi UI’s my natural course of action would be the press the plugin or inst button on the encoder assign, but it’s only when I select a plugin the assignments update.

Again, everything else seems to be running absolutely perfect, I’m still testing and getting a feel for it, but already I can see it starting to replace so much more of the mouse that was original possible.

Behringer_X-Touch.midiremote (45.6 KB)

It’s been a busy week or so but I finally got some time to make some fixes/updates.

Zoom now works as suggested (yes - that’s definitly the right way for it work!), so the central button toggles between zoom and move modes.

Most of the reworking is on the EQ setting. Now when you’re in EQ mode, pressing the EQ button again will toggle the on screen channel settings window (Ins has a similar feature).Use the first encoder to select which EQ band you’re working on.

A more minor fix is the the read/write automation buttons now light up!

An perhaps best of all there’s now an info pdf with all of these mappings explained.


Hi @dctsys,

thanks for sharing this! I was in the process of doing the same thing until I just discovered this thread. I based my script on the MCU mode which – undocumentedly, as it seems – supports scribble strip colors too. I did put more time into an accurate surface layout than I’d like to admit (:sweat_smile:) and already completed the MIDI mapping. Now I was working on the host bindings, until I found your preset. I had only looked for something like this at Steinberg’s GitHub repo (steinbergmedia/midiremote-userscripts), but admittedly didn’t search the forum.

Right now, I have some time available and hence I was wondering if you’d like to join forces with me and put this up as a GitHub repo (I’m bjoluc on GitHub)? I’m happy to set things up and merge our scripts accordingly, so we could focus on tweaking it and making it even more awesome! Oh, and I should mention that I set up TypeScript to stay on top of things… Let me know if you’re interested :slight_smile:



Hi @dctsys,

I took a slightly different route now as my first priority was to build a replacement for the tratidional Mackie Control remote device setup. Hence, my mapping has become an enhanced clone of the Cubase MCU mapping. I published it on GitHub. If you’d like to collaborate on a native mapping mode based on your mapping (maybe something that can be activated via a flag), feel free to contact me.

Kind regards,

1 Like

Hi, just come across this. Sounds interesting, do you have any posts on youtube showing the x touch working with cubase?

Hi! I can’t get my X-Touch to work in Xctl or XCtlCtl mode. The channel one’s scribble shows “MIDI: No Link” message. My X-Touch is connected to my iMac using a USB cable. It works normally in MC mode. Do I need to use standard MIDI cables to make it works using your script?

Thanks !

Hi all.

Sorry I’ve been tied up with other stufff…

@bjoluc I’ll put the code up on GitHub… happy to have anyone work on the mapping. I’ll post a link when I get a chance.

@Maax Don’t have a video but there’s a pdf bundled in the package that explains what all the buttons do.

@stratquebec sounds like its trying to connect oner the network. You need to use Ctl mode (NOT XCtl) which can work over usb, or ethernet, but ethernet needs a lot more set up. Put it into setup mode, and you can select which interface it uses.

Has anyone seen a weird bug where some of the controls stop working after 10minutes or so? It seemed ok on my dev machine, but when I put it on my studio Mac some things stopped working after. a while. My only guess is that it’s something to do with JavaScript garbage collection, deleting the non-selected sub-pages? I hate to blame it on the run-time when it could be my fault, but the way the api works, once you set everything up, then it should keep working.

I was trying your script with the 1.15 x-touch firmware which do not support USB in ctl mode. Now that I updated to 1.22, I see that USB is indeed supported in ctrl mode, so, my bad!

I’ll try again your script a little later and report back.


Update: It works as expected now under 1.22! Great midi remote script you’ve done for the X-Touch! Congratulations!

1 Like

This can be the lost block https://www.youtube.com/watch?v=5J3JjWTXi64

If you agree, I would integrate your host mapping into my script then, so the MIDI and surface stuff only has to be maintained once, you get extender support “for free”, and we can collaborate on it in my repo. I’m thinking of a useNativeMapping flag in the config options. Personally, I’m used to Cubase’s MCU mapping and I already have an overlay installed for it, so I don’t really need the native mode, but I can imagine folks without overlays would be happy to have the buttons do what they state they do, i.e., to use your mapping.

If you’d like to keep maintaining your script separately instead, that’s more than fine as well. Just thought it might be desirable to deduplicate the redundant parts which I’ll maintain anyway :slightly_smiling_face: