this post is to share my brand-new X-Touch MIDI Remote script: It serves as a replacement for the traditional Mackie Control remote device setup while retaining most of the functionality and enhancing it with X-Touch specific features (colored scribble strips etc.). I maintain the script in a GitHub repo where you can read up on and download it.
I hope it proofs useful to some of you! If you have any questions or suggestions, feel free to open a discussion or an issue over at GitHub or simply post here. And if you enjoy it and would like to do me a favor, consider giving the repository a star or buying me a coffee
Exactly, the colors are updated on push encoder mOnColorChange events. That is, they follow the track color of the track that the controlled value belongs to. For the EQ, Send, Plugin-In, and Instrument assignments that means all encoders share the color of the corresponding track. Sadly, the LEDs can not be dimmed, hence there are only 7 colors + black. I do a nearest-neighbor search based on the CIEDE2000 color difference algorithm to choose the color that matches the track color most closely.
Couldn’t detect any In this regard, I try to declutter MIDI output messages where possible (only sending fader values when the fader is released, only sending meter updates every 125 ms, …).
Finally!! I love what you did to shift the XTouch to the next level! Thank you so much for your work and for sharing it!
There’s just one very important option I’m missing: I’d like to disable auto select when I touch a fader. Is there any way to switch auto select off like in Mackie Control?
I’ve been trying this with my X-Touch one, and I’ve found that interestingly, a lot of it works - in fact, it’s much better than the standard Mackie use - particularly as I can select any track in a project and the XT1 follows it (which is the main reason I love my Presonus Faderport). This is such a fantastic piece of work and I can see from the github repo that a lot of work has gone into it.
Obviously there’s a lot of extra functionality in there that isn’t appropriate for the XT1:
Buttons in the master section - there are quite a few less on the XT1, and they’re in a different order
Faders (obviously!) - there’s only 1, but that follows OK at the moment
Any mode with multiple encoders being used
But that aside, it mostly works out of the box when I just change the MIDI device driver name to “X Touch One” at ~line 4083.
I have found one issue which I think may be a problem with the X Touch (i.e. the hardware you have) - and that’s the time display. It works perfectly in Bars/Beats mode, but when I put it into seconds, it works initially, and then the numbers turn back to the bars/beats representation (typically as they change dynamically as the track is played back). Unfortunately I don’t have a ‘full’ X-touch to compare this to, so I can’t tell if that happens on the ‘supported’ hardware, but I’d suspect it does as they are both Mackie Control compatible? (or it could be an issue in the XT1).
I’ve forked the code on github and will look to modify it to remove the unneeded code and try to get the format correct (although it’s only a cosmetic issue, I think it would be confusing for anyone else), but I’m not a JS developer and haven’t had much time to get started.
Thanks again for this, it’s meant my XT1 has finally got dusted off and is being used!
@Darren.Jones Well, this is funny. I would never have expected this to work, but thinking about it, I guess the X-Touch One in MC mode just simulates a full MCU/X-Touch’s behavior to work with the Mackie Control protocol. Searching the forum, I found multiple users struggling with this when writing MIDI Remote scripts.
Is the scribble strip colored? The full X-Touch in MC mode only accepts one joint SysEx message to send colors for all 8 displays, so I assume the X-Touch one “intelligently” maps the one channel to one of 8 “virtual” channels. There’s definitely some hacky magic involved
How do you assign encoders without the six Encoder Assign buttons? More magic!
Oh, the bundled script, so many lines? I guess most lines come from corejs polyfills. The original thing is here.
It works with the X-Touch, but I really can’t explain why it wouldn’t work with the X-Touch one. The relevant code is here.
Assuming that the X-Touch One in MC mode is one very sneaky impostor, I fear there’s not much unneeded code in there, except for some buttons and button bindings
Maybe you can also enhance the encoder assignments to better suit your needs.
Given you’re not used to JS development, you might need some help with the dev setup. If so, let me know (maybe via PM) and I’m happy to explain some things
The scribble strip is not coloured on the XT1 when using this script. I know it can be altered via MIDI (I did some of this when mucking about with it when I first got it), but not sure if it uses the same protocol as the XT. Would be nice for this to work, but definitely in the ‘nice’ rather than ‘necessary’ category.
As far as I know, it only works in Pan mode - certainly that’s all I’ve seen, and the overlay for Cubase says the same - turn for pan, and press for monitor on/off - both of which work.
Yes, I did take a look at that, and before I noticed the many differences I created a config option to select the XT1 and change that variable accordingly. But then I noticed the layout and other things, and thought it would become a bit over-complex (for me, anyway)…
OK, I shall take a look and see what’s happening in there - thanks for pointing me in the right direction! This is probably the main area of functionality I’d like to get sorted on the XT1 as most of it is already pretty much as I’d want it - I’ve been using it all morning and it’s been really good (particularly as the FaderPort has always had a bit of an issue with the record button debouncing).
TBH I’m happy with it just being pan; what I liked about the Faderport was that the fader was always the fader, and the pan was always the pan, so I don’t have to think about what mode it is in at any given point.
Thanks - I managed to get node and dependencies installed, and it builds OK on macOS, but errors out on Windows, so I may take you up on this, as I’d prefer to work on this on my Windows machine.
Oh, this one is actually my fault – I misunderstood the button’s default use: Currently, it toggles the channels “Solo Defeat” and reset’s all channels’ solo status by shift-pressing it. I realize the default mapping resets solos without shift and resets mutes with shift. Going to fix this soon. The only thing that’s not going to work with this due to current API limitations is the button’s LED reflecting the global solo/mute state.
@Kaushik - I will do soon! I’m not a JS developer, and as a result I spent a few hours on Friday slowly getting my head around the parts of the script that I need to modify - which is doubly complex as it’s JS whose syntax I find unnatural, combined with it having lots of definitions and API calls to look up and understand.
The first release will probably just have the basics changed so you can get up and running with it, and ignore the incorrect layout on screen, as this was a big head-scratcher for me - each time I thought I’d made an improvement, I broke the script! So far I’ve managed to move the undo buttons to the correct row for the XT1 and remove the shifted pages, but the rest will have to wait until I have more free time.
I’ll let you know when there’s a release available.
@Darren.Jones I’m guessing that makes sense, given that the XT1 needs all 8 channels in MC mode. If you plan to put more work into this and get rid of the extra channels, maybe dropping the Mackie Control protocol and switching to Standard MIDI Mode is an option? You may still be able to base it on my script then if you rework the MIDI binding a bit. Happy to help (don’t own an XT1, but we could set up a hacking session via Live Share at some point).