Improve the integration between any Mackie Controller and your DAW

Jan 24, 2019 | DAW

If you are a mixing engineer and use any Mackie Control Protocol device (like Behringer X-Touch or the original Mackie Controller), you may have wondered at some point if the device could do something different, or if it could work this way, instead of that way, right ? Me too and that’s the reason I was hunting for a solution to improve my controller and my workflow.

When I bought my X-Touch and the Extender to use in Cubase,  I mostly used it to control pan and volume because editing plugins, channel strips or other things is way too much pressing buttons and rotating knobs so I always ended up using the mouse for those things just because it was faster.

Someday I had the idea to use Pure Data/Max to manipulate the information that my device was sending to cubase and then I started building this patch and now my workflow is WAY faster.

I’m explaining in detail in this video what I have done in the patch to customize my controller.

In short, what I did in Max was:

  • Every time I click on the Next Bank/Prev Bank buttons, Cubase also selects the channel so the screen can scroll to the same channel I’m seeing on the controller.
  • Every time a click on Sends, it will press FLIP for me, because I like my sends on the faders and not on the knobs. And everytime I leave the Sends page, it will FLIP back.
  • Customize the wheel to do whatever you want, like clip gain, call macros, fade in time, fade out time.
  • Editing plugins now is a breeze, you just have to click the corresponding knob to open the window and you are ready to tweak the plugin. You don’t need to press the Plug-In page button anymore, select the correct slot (IFX Slot) and then press the page button. Max is doing this automagicaly (HUGE time saver and fun).
  • Same with channel strips. To add a channel strip module you just have to press a button, same thing to edit a particular strip module, just press a button. No more rotating knobs until you find the correct strip you want to edit.

I have not tested this with another Mackie Controller, but it should work ok, since they are sending and receiving the same information.

The patches (for Max and PD) are a bit different from the video because I fixed some bugs right after I made the video, but they work exactly as shown.

If you are on windows, be sure to make the link to forward the MIDI data from Port B (the Main unit) to Port E (if you are on Max) or Port 1 to 4 if you are on PD, as I explain in the video.

You will notice that the PD Patch is more complex than the Max patch. It’s because in PD I have to disable some note off for some notes but not for others. In general, I had to make more things in PD to achieve the same result I had in Max.

If you are not Cubase user, I think you can take the same idea here and modify the patch to do whatever you want in your DAW. The basic idea behind this whole patch is to make Max press some buttons when you press others, or rotate some knob X times to do something.

Let me know in the comments if it worked for you or what you did to customize it to your DAW.

These are the softwares I used in the video:

If you are using PurrData (which is an “extended” version of PureData) instead of the Vanilla PD you will need to use the -legacy startup flag otherwise you will have problems with the pitch bend (channel faders).

And here are zip files with all the files needed: PG_EnhancedMackieControl_FILES

These are the files inside the zip file:

  • Enhanced Mackie Controller Patch – Puredata Version
  • Enhanced Mackie Controller Patch – Max Version
  • Cubase – Generic Remote 2 XML file
  • Cubase – Generic Remote 3 XML file
  • TouchOSC CMC – Clone Template

My Social Networks:

Need a mixing Engineer ?

Are you looking for a mixing engineer for your next project ? I’ve been mixing for a long time and have experience in different genres. It will be a pleasure to talk to you about your upcoming project or if you want just to say hi!

Contact me


  1. Jose Galdran

    Hi. I’m trying to setup my X-touch + x-touch extender following your youtube video. Everything seems to work fine, but there is something i’m not doing right. Every key I press, beside doing the function is supposed to do, I hear a piano note. Sometimes a chord. I guess is something simple but I can’t find what it is. Any idea of what I’m missing? Thanks for your work.

    • admin

      If i’m not mistaken, this happened to me at some point. Are you on macOS or Windows ? Max or Puredata ? I think that in my case, what happened was that in Max, in the MIDI Setup, the output “AU DLS Synth 1” had the same letter as one of my controllers (don’t remembter if it was the Main unit or the extender) so, everytime Max was sending information to cubase, it was also sending information to this apple synth. Try to uncheck it and change it’s letter to “-“. Let me know if it worked!

  2. Jose Galdran

    Thanks Paulo! Now it works as it should! Let me tell you what I did.
    I work on Mac/Cubase 9.5 and use Max. When I checked midi setup on Max there was no letter assigned to AU DLS Synth 1.
    What I tried is to assign it to letter “e”, and then change it to “-“.
    It worked.
    A couple of questions more if you don’t mind.
    Do the Function keys on the right side of X-Touch work for you? I can’t make them work.
    Otherwise I have my first generic remote created. Insert editor opens, but some of them don’t react to edition. Although they all react to bypass, some of them don’t follow the encoders. It does work in the other way. If I tweak them with the mouse encoder lights follow. I assume is a problem of some plugins.
    As for the jog wheel. I works…sometimes. I created a second generic remote. Input “IAC Bus 3”, output, as I don’t have any Steinberg controller, I assume is X touch Int…?? I spin the wheel and it works two or three bars, then it stops working. If I wait 5 seconds or so it works again. Same with the scrub button. Seems to be kind of “accumulation of data” thing… Maybe the problem is I don’t have the Steinberg CC Controller?
    Anyway thanks again for your work and your attention.

    • admin

      Hi Jose,
      The function keys works perfectly here.. I just had to setup it inside the Mackie Controller window to do whatever I want. Strange that it’s not working with you. The Plugin editor works with me all the time.. The only thing that sometimes happens is that it not always open the plugin window which is a cubase buton.. I have to go to the Generic remote and press “RESET” and now it works. For the plugins I use, the remote control with the knobs works everytime. What are the plugins that are not working for you ? Did you try using the “Remote Control Editor” to customize the plugin parameters on the X-Touch ??
      And regarding the scrub, I think you can leave the Output as “Not Connected”. Give it a try.!

  3. Darren Tansley (Moonhare Studio)

    Well I think I have it working on Cubase 10, Windows 64bit, using Puredata and an Icon Qcon ProX and Qcon ProX extender. So that is almost entirely the opposite setup to Jose above which I hope proves it will work cross platform.

    I should say that I had exactly the same issue with the piano note sounding when I had a midi channel selected. Whatever function I used (eg transport buttons, dedicated save and mixer buttons etc) sounded a note several times. However I have dealt with this problem in the past when I first installed the Qcon so I wanted to pass on my solution as it may help others and is entirely different to the one above. This is a common problem with the Maxkie protocol and is without a doubt the most watched video on my YouTube channel! . This is addressing the general issue but the specific explanation for LoopMidi is as follows:-

    Go into Studio > Studio setup > Midi Port Setup.
    Scroll over to the last colum “All Midi In” and uncheck all the new ports created in Loop Midi
    Click OK to save

    Now everything should work without triggering random notes or fader detunes etc.

    • admin

      Thanks for this tip Darren!!!

  4. spencer

    Can this work for other DAW’s such as SONAR?

    • admin

      To make it work in other DAWs (like Sonar) you have to customize the script. Each DAW implements the Mackie Control Protocol differently so It won’t work out of the box in other DAW, Unfortunately. 🙁

  5. Francisco Cuadrado

    Hello PG,
    First, congratulations. What an impressive job you’ve done!

    I’m thinking on buy a Behringer X-touch or an Icon Q Control, and your configuration will help me to maximize the work with the unit.
    I have a couple of questions:

    1. Can the program be configured to send cc controllers to midi tracks? I want to use the faders to send modulation and expression messages while I’m composing, and switch later to use these same faders as volume control for audio tracks. Is it possible?

    2. I’ve read that Behringer has launched a tool to midi map the X-compact, and I suppose it should also work with the X-touch. Have you explored it? Do you think it could be used instead the max software to simplify the configuration?

    Thanks in advance

    PD: Any advice to choose between Behringer X-touch or Icon Q Control? Thanks

    • admin

      Hey Francisco! Glad that you liked!
      Regarding your questions:
      1- There is no way to configure (without messing .A LOT with MAX or PD) X-Touch to send MIDI CC data. You can take a look at X-Touch compact that im almost sure you can do that with it.
      2- I don’t think that this software will work on X-Touch. The compact version has a MIDI mode that the X-Touch doesn’t.

      I never used the Q- Control but it seems to be better built and more beautiful (and should work the same way as X-Touch) but it’s way more expensive!


  6. lesslyrics

    Hi PG, many MANY thanks for the effort you have put in this! You very much helped me understanding the principles behind this ‘remote controller mystery’.

    I have a question – is the following scenario possible (X-Touch button PLUG-IN is active):
    – Display under rotating knob 1 shows IFX 1.
    – Pushing that button opens the currently used IFX 1.
    – Choosing a different plugin slot, let’s say 7.
    – Now pushing knob 1 opens plugin of slot 7.

    If at all, could this be done with an F-Key so I could even avoid using Max? I don’t think so…

    Since Cubase has 16 inserts I don’t want to use 16 ‘hard coded’ buttons for every insert.

    By the way, I’m running X-Touch (without extender) on Cubase 10 with Windows 10.

    An answer would make me very happy 🙂

    Best regards

    • admin

      Hey man.. glad that you liked!

      I don’t think that it is possible to do that (at least in a simple way) because there is no way to know what’s the current IFX that is showing on the display. Maybe with some max/pd patching you can accomplish that, but no idea come to mind right now 🙁

      • Rob

        Thank you anyway! So far I found out that in Cubase 10 it is possible to assign X-Touch input and output to the Mackie Control as well as to a Generic Controller. There seems no conflict/exclusion so far and I don’t see a need for LoopMIDI. I can open plugins in slots 1-8 with knob buttons 1-8 and plugins 9-16 with F1 to F8 for example.

        I had to find out how you assigned ‘Ins. 7 Edit’ and ‘Ins. 8 Edit’. I realized, you’ve put plugins there, assigned the values and removed them afterwards. The plugin name will be removed but ‘Edit’ stays 🙂


  7. KrisK

    I’m thinking about using a control surface with Cubase, and I’m so glad I found this! It looks like you really did a great job.

    I’m wondering if your patch (Max or Pure Data?) could be adapted to fix the problem between Cubase and the X-Touch ONE. When clicking on a channel strip that is outside the current (8-channel) bank of the X-Touch One, it doesn’t synchronize automatically. You have to use the Bank buttons to go to the correct bank.

    I’m familiar with Cubase Generic Remote XML, I know Python scripting and have used other languages, so I guess I could make sense of Pure Data (or Max?) quite rapidly. What do you think?

    • admin

      Hey man… happy that you liked!
      In my setup, today, I my X-touch does “auto banking” … so, everytime I click on a channel, my x-touch changes to the correct bank that has this selected channel. It should work on your X-Touch one.
      It’s a BIGGG workaround to make it work, but it works. Unfortunately I was only able to do this in Max.. I didn’t have time to do that in PD. The workaround is to add a WK-Audio controller and send it’s info to Max. This is the ONLY controller that send (via Sysex) the current channel number … so if you click in the channel 120, it will send this information (in text) to the controller.. and in max, we grab this 120, convert it to integer, do the math to find out the correct bank and then “press” the bank button X times. I’ll post here later my updated max script.

      • Ole

        How do you do this?

        Best Regards


  8. Dmitry

    Hi Paulo, thank you for your time and great work, while choosing the controller between two I watched your video and decided to buy X-Touch, because now I know it’s configuration potrential:). I’ve just received device and now I try to arrange averything.
    Could you please answer some questions?
    1. I’m on Windows, do I understand correctly that in all Generic Remotes and Mackie Controls inputs should be loopMiDI port XTouch and all outpoots as X-Touch?
    2. Does your scheme work if I have oly one device X-Touch or I should change something? I use Max buy the way.

    • Dmitry

      Regarding 2 question, I mean will it work in cases where only the main device is involved?

    • admin

      Hey man.
      1. Yeah.. all the Inputs should be LoopMIDI and Outputs should be X-Touch.. because Max will send the commands to loopMIDI and that’s where cubase should be receiving.
      2. This patch, the way it is is only if you have both the Main Unit and the Extender. You have to do some (small) adaptations if you only have 1 unit (like removing the 16 channels bank size, for example).

  9. Paul

    It appears that you have done a great job with this. I am considering purchase of the x-touch and extender. Could you please answer a few questions from a “non-programmer”? I see in the video a lot of instructions on programming Max, etc.. Is this just showing how you built the patches? Or must I actually do everything you did in the video? I guess what I’m asking is what is exactly the procedure for applying the patches you have built. Do I download loop and max and run the patches? Not sure of the exact procedure. Please forgive my ignorance.

    • admin

      Hey Paul..
      The video is just how I made it just in case someone wants to improve or adapt. But with the files I provided, you should be ready to use. You don’t need to program anything!

  10. Ken

    Hello, I really appriciate your work! You are very kind to provide us with such a geat info.
    I have x touch one and i would like it to follow the channel I click on without banking all the time.
    Could you please help me with setting the WK audio ( I have downloaded wk audio ID) with cubase (8) and max/pd? How should I set up the ports? Which script should I use? And is it very different when setting it up in max/pd than in your video?
    I am very new to this but i would really like to get into it. Thanks a lot for your help!

    • admin

      Hey man.. The WK Audio thing is a huge work around and need some scripts from Max (I didn’t have time to even try this on PD).
      I’ll make another post soon explaining the WK Audio thing and i’ll upload the files.

  11. Martin

    Dear PG, I’m deeply thankful to have found your patch, as I also was unhappy with some implementation issues of my QCon Pro G2. I have 2 extenders, so I edited the patch for one more extender and deleted some functions I don’t want to use as well as edited some points I like to have. I‘m wondering, why my jog wheel does not react anymore (it didn’t with your original patch as well) but I can live with that, considering the massive improvement of usability of the controller. So thank you again for doing this and sharing it with rest of the world.

    • admin

      Hey Martin,
      Glad that you liked the patch! It’s very useful indeed! Regarding the wheel it’s weird. It should work. Inside Max (or PD) are you able to see the Buttons that receive the Wheel midi info turning on and off ?

      • Martin Sauer

        Hey PG, unfortunately I have a lot of work to do in other studios during the next weeks, so I won‘t see my own studio to check it out. Making the patch work was the last thing I did last week and I was so happy to see it running, maybe i‘ missed something. However, as soon as I’m back in the studio, I will check it again and let you know. Best regards, Martin

  12. Alvaro

    Hi Paulo.
    Thank you very much for this f…ng great job! By the way. I’m using cubase 10 and XTouch + Extender. I’m on windows. I tried to follow your explanations step by step and unable to make it work. I have configured 2 mackie controllers with Loop Midi 1 as input an XTouch as output and LoopMidi 2 as input and XTouch Ext as output. As weel, I configured two generic controllers (in the files there is only the XML for one of them)
    When I tested it on MAC it worked flawlessly. Now I don’t know which steps may Ï skipping.
    Can you help me please?

  13. Sunda

    Hi there,

    As a noob with mapping writing script, you really put in the effort o make it work.
    Don’t know if you or anybody on here is familiar with FL Studio’s patcher/control surface,
    will that work the same as max or puredata?
    Greets from the netherlands.

    • admin

      I’ve never used FL so i don’t know if it will work 🙁

  14. Alvaro

    Hi Paulo. I finally made it work. Only one question. I have Max and Pure Data. With PD the wheel works as expected configuring LoopMidi Port 3 in windows. In Max there is a loopback error with a lot of data being receiving once I move the wheel and the port mutes in loop midi. Do you know what could be causing the issue?
    Many thanks


Submit a Comment

Your email address will not be published. Required fields are marked *

Share This