Cool, that’s good to know. I hope it comes to fruition some day as it would be really useful.
It’s useful to know, as Len pointed out, that this isn’t a deficiency with either Ardour or the X-touch. I guess it’s by design – it’s a blank canvas for the user to customise to their heart’s content, which is really, really useful.
I configured some of the function buttons as soon as I got my X-touch a few years ago. Looking in the settings, I’ve just discovered that I’d mapped far more things than I had remembered!
The raw F-keys I have doing timeline-related things: go to Start, go to End, go to previous marker, go to next marker etc.
Using the modifiers I’ve got a load to toggle on/off the visibility of things like the monitor section, editor mixer, track list, summary etc, all useful for maximising screen estate (I also have maximise editor space and maximise mixer space!).
Resizing/fitting track height(s) are useful controls I’d forgotten I’d mapped. I can even launch the online user manual and this forum from my X-touch!
The possibility that I really hadn’t fully appreciated though, is not just that the function keys can be used with modifiers, but all the other “right-hand side” buttons as well, meaning that there are massive capabilities for shortcuts – if only I could remember that many! And because of the way Ardour is, it’s all completely customisable
Um, yes… but not in mcp mode. Having control of the plugin controls is something that wants doing in mcp mode but has not been done yet. In generic midi it should be possible to have a knob control a plugin parameter but once that knob is set using a midimap that is all that control would be able to do. That is banking would just change it to the same numeric plugin on the new strip. This may not be of much use because the new strip may not have any plugins or at least a different plugin that may not have that parameter.
I don’t know if mcp will get plugin parameters for 6.0 or not. Only that so far as I know, no one is working on that right now.
Thanks for the answer. I’ll play the waiting game then as the xtouch (the big one) is only mcp (and hui) and no midi.
But out of curiosity: could the midimapping be changed using a lua script? That is, could you ‘cache’ or store a current mapping, change the mapping to a particular plugin, and later restore the original binding using lua scripts?
OK, I want to get this to work: I want to have a basic plugin surface support with the xtouch. I found this blog post http://www.pgaudio.com.br/site/improve-mackie-controller-xtouch-integration-daw/
which contains some neat tricks that might help me to get it done. In the blog, Paulo describes how he “intercepts” the xtouch midi commands using puredata and Max to send out varied commands to his DAW. Now my idea is to use the xtouch as a Mackie device (as intended and supported by Ardour) but also as a generic midi control to which I manually bind some controls of specific plugins (like a-eq). I want to use the “Encoder Assign” buttons on the X-Touch (like EQ and Plug-In) to switch between the two modes (Mackie vs Generic Surface) in puredata.
Using JACK, the following is quite simple to achieve:
Set up puredata to have 1 midi in and 2 midi outs
In puredata, receive all system calls and midi in commands and relay them to midi out. I will vary the port depending on “EQ” being clicked or “Pan/Surround” being clicked. The first out port (when “Pan/Surround” is active) will be the untouched X-Touch signals, and I will use the second out port as the generic midi control.
In JACK connect “X-Touch MIDI 1” to “Pure Data In”.
Connect “Pure Data Midi-Out 1” to (ideally) the mackie control in from ardour.
However, that is not working, as Ardour for some reason does not give me the Pure Data ports to select as midi in or out as control surfaces. I would like to know why. Aside from the X-Touch, I can only select the system’s “Midi Through” ports.
Continuing, if I route “Pure Data Midi-Out 1” my system “Midi through In”, and then select “Midi Through Out” as the Control Surface’s Midi In, everything works fine; that is, I can use the X-Touch exactly as if I selected “X-Touch MIDI 1” as Midi In. This last point confirms to me that what I want to do basically works.
Now why aren’t the puredata ports showing up for me to select as control surface Midi In and Out? Can anybody share some insight?
I now have a patch which allows me to control a-EQ with my Xtouch. It’s a hack at many levels because it involves routing the unit through puredata and intercepting the signals. I basically route the signals through different ports depending on whether I want is a mackie control or a generic midi controller, and for the latter I have a mapping created for the 8 pots, for which I also switch the channels so that I can control more than 8 controls in the a-eq plugin. To top it off, it only works if a-eq is in the position where the mapping file points to.
In case anyone is interested in the files and setup, I can provide it. But at this point, I decided to clone the code repo and have a look at the code to see if I can get it to control the plugins the way it is configured for Cubase (there are YouTube videos showing that - it’s pretty cool).
EDIT: This is how I envision it: https://app.moqups.com/jccHoCmVbR/view/page/a08352fea. Please click around and leave comments there. Feedback is very welcome! Also, if the devs could have a quick peek, they could let me know if this is in line with what they may have thought of already, or if there is a reason this can not be done in code.
@lenovens: did you do some coding for the mackie control surfaces? I’m deep in the code and have some ideas (also fluent in C++). Is it best to discuss code ideas in issues in the tracker?
I have, but it was two years ago now. I have been working on OSC since then. In this case, rather than changing the MCP code, it may make more sense to set up route to populate the well known eq ports. Then eq would just work for MCP (mackie control) OSC and any other surfaces that use them.
I was actually thinking about working on that. I would like to support at least a-eq, but it looks like eq10q and x42-eq as they look like they follow a reasonable pattern for port names. So look at plugins as they load in a route. If they are tagged eq, look at their port names to see if there are channel numbers. If so and there is not yet an eq, set a variable that points to this plugin. If the plugin is removed, check if there is another plugin that fits as eq and if not set empty.
This would use the eq control code already in the mackie control code.
My main problem is that my development computer stopped working this morning… power went off and now it won’ start. So I need a new power supply it seems.
Yeah, that would be a good feature for the EQ button. I actually want to tackle the Plugin button. I also have some ideas on how to clean up the code. Should I make an issue in the tracker to discuss this or just do it and see if my pull request gets accepted?
I think a PR would be fine against the github repo. Plugin would be great. The main thing there will be setting up paging but as Paul pointed out There is already paging code in some of the other controller modules that can be copied.
One really good reference is: midibox on this page look at the “The old manual” for the logic control. Chapter 13 gives a MIDI map for all the buttons, faders and encoders as well as displays. Chapter 11 has some good information about how logic envisioned the surface being used. Ardour does not use it exactly that way but using the arrow keys for paging makes sense. I think Paul has limited the modifier keys to only use the shift key… except the setup in 5.12 still shows them all there. Maybe ask on irc if you are thinking of using alt left to page by single parameters or whatever. Probably just paging full pages is of the most use though.
To anyone still reading this: I am so pumped that my PR containing the code to make Plugins controllable was merged! Now we can all merrily control our Plugins using our Mackie controllers starting from version 6.0!
This is my first contribution to an OS project ever, so forgive my excitement over this.
Not at all, that’s totally justifiable excitement Brilliant, I can’t wait to try it, that will be so, so useful! Many, many thanks for doing that and congratulations.
Umm. This is a bit embarrasing. But how do you get the x-touch connected again? I was out of the game for a long time and I just recently upgraded to ubuntu 20.04. I installed ardour 6.3 through the official ppa (rev 6.3.0~ds0-0ubuntu0.20.04.1).
But I can’t get the x-touch to cennect. I am using jack if that helps. But I would also try ALSA. Can someone give me a step-by-step or at least what configurations I have to make?
Edit: the jog wheel works and the transport section. But not the faders and the scripts. What os going on?