Notifications
Clear all

Behringer X-Touch Midi Controller file?

21 Posts
4 Users
2 Reactions
1,944 Views
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  

Hey,

I thought I'd ask here first if any lovely Unify user has already created a midi controller file for the Behringer X-Touch. Are you that lovely Unify user? If not then I'll be receiving mine tomorrow so I'll try and have a go at creating one over the weekend.

 

Cheers,

Toby


   
Quote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4452
 

@jdtobes

Please keep us posted with your progress! I'll be here to answer any questions.


   
ReplyQuote
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  
Posted by: @getdunne

@jdtobes

Please keep us posted with your progress! I'll be here to answer any questions.

Will do Shane & thank you, but a quick update for you. The vendor that I usually buy from in the UK kept promising me that it was about to be available for shipping. That wasn't true. So I've cancelled that order, bought it from another vendor that did actually have it in stock! I'll now be receiving it on Monday as I've had the dispatch information so it'll be next weekend now, just so you know!


   
getdunne reacted
ReplyQuote
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  

Hey @getdunne here are two questions for you! One for standalone, one for DAW.

Q1 - Standalone

What's the command for the controller text file for pitch bend? Reason being, the faders on the X-Touch send out "pitch bend" information when you push a fader up and down. Also how can I add midi channel data, let me explain...

cc 0 inst/1/mixLevel 0.8 - is the standard midi CC command for the first instrument volume level slider right?

I need

MidiChannel 1 Pitch wheel inst/1/mixLevel 0.8

MidiChannel 2 Pitch wheel inst/2/mixLevel 0.8

and so on, whatever those midi channel and pitch wheel commands for the text file are what I need to know, makes sense? Well, if that's even possible of course! The great news is that I know how to do everything else thanks to your wonderful little MIDI Monitor utility 🙂 - The knobs to control the macros, the 'sliders' (hopefully), the solo and mute.

Q2 - DAW

The X-Touch uses the Mackie protocol in Logic Pro X. It just works! Here's the thing though, imagine I choose an instrument plug-in, say Massive X for example. All of the "macro" parameter knobs just instantly map to the X-Touch as if by magic, and the name displays on the little screens, it's just awesome! I'll attach a picture to show you what I mean. This works for every plug-in including effect plug-ins, all of the parameters just instantly map.... apart from Unify I'm afraid! Any ideas as to why that might be? What it does map are the macro knobs but they are all kinds of wrong, I mean Macro 2 is Macro 2 but the first macro knobs that you want to actually use, 1-8, are four 'pages' down on the X-Touch to get to, also Macro 1 just simply doesn't display at all. I'm curious as to how every other plug-in I've tested so far maps perfectly apart from Unify, does the above explanation make sense to you mate?

I look forward to your genius replying Sir 🙂 

Cheers,

Toby

 
EDIT: Ah! Wait a moment! For the fader/sliders look at what MIDI Monitor showed me...

 ... fader one...

Ch01Note on G#6 nn 104 vel 127

Ch01Pitch wheel 548

... and fader two...

Ch01Note on A6 nn 105 vel 127

Ch02Pitch wheel 1184

 

So it looks like I can utilise the 'MIDI Note w/ Params' OSC feature right? Something like

no 104 (whatever I need to put here extra in order to use pitch bend data) inst/1/mixLevel 0.8 - - - So what's that something extra I need mate? 😉

Also, it gets trickier for the second fader/slider, notice the midi channel is now 2? Maybe I won't need to do anything and it'll just work no matter what midi channel the second fader/slider is sending out data on? Or maybe I can add convChannel 1 in the file?

What do you think fella?

EDIT 2: The macro knobs are working in standalone but are jumping from zero to max, with no smooth in-between! Any ideas bud?


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4452
 

@djtobes

I'll need more time to study everything you've written here, but for now I can give a few simple answers.

  • There is no support for pitch-bend in Unify's MIDI Controller files yet. I'm adding functions one by one (when I get time between higher priority issues).
  • The design of Unify's MIDI Controller files currently assumes that each controller device sends MIDI messages on only one channel. If the Behringer X-Touch indeed uses multiple channels, I'll have to expand the design.
  • Logic Pro X's MIDI controller support is very extensive, having been developed over many months by a very capable, well-funded team at Apple. It will be a long time before I can approach that level.
  • The Mackie protocol is not well documented; see https://www.midi.org/forum/3958-the-mackie-control-protocol.

   
ReplyQuote
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  

Hey @getdunne

First things first, a disclaimer of sorts! I don't ever want to come across as being 'that guy'! Y'know what I mean by that, the 'I'm always right, do this do this' type. Nothing could be further from the truth I assure you, hand on heart. I'm just a delighted Unify user that's offering a suggestion for a future version I guess. With that out of the way, here I go mate...

 

I've been doing some research this evening, and I believe I've discovered what the Unify AU DAW 'mapping' issue could be, potentially how to easily remedy it, and why it would be a useful thing to fix for all Apple users in a future version of Unify, maybe around number 739 on your list of things to even consider or do 🙂

It's impossible for the Logic devs at Apple to map every single plug-in, so how does it do it I thought to myself? I found out. It does it by simply reading the "AUViewController" data (created within X Code, but bear with me on that point), then looking for the 'knobs' 'sliders' 'buttons' and any other user editable parameter functions, and from top to bottom, left to right as you look at the GUI, that's what it's sending out via midi data to the Control Surface (CS). Logic is doing the translation and sending it out to whatever CS the user has plugged in. Now, this is where it gets cool! If it's a NanoControl like what John uses, it maps the knobs and sliders to that knowing what that CS is capable of receiving. If it's a larger CS like what I have it'll send knobs, sliders, screen display name data etc etc instead.  Even when my X-Touch is in Mackie Control mode, as soon as you press the 'Instrument' button on the X-Touch it changes into normal standard midi CS mode. No Mackie protocol whatsoever.

I thought to myself again...but other JUCE created AU plugins can map this data, like Vital for example, so what might be the reason? I'm not a JUCE guy but I do know how to read code, and scripts so the following is pure conjecture on my part based only on the basic research I've done this evening. It might point you in the right direction somehow, it might be nonsense, but hey, I'm trying to help, promise!

It appears that when an AU plug-in is created from JUCE, you may use some script as an AU wrapper, you might not of course but I found this script - LONG URL SCRIPT LINK - and right at the very bottom it has the following...

JUCE_VIEWCONTROLLER_OBJC_NAME (JucePlugin_AUExportPrefix) : AUViewController<AUAudioUnitFactory>

Might the fix be something as simple as a checkbox somewhere around the JUCE_VIEWCONTROLLER_OBJC_NAME parameter data settings? If that is the case then, hooray! Because no audio plug-in developer has the time or inclination to bother to code data just for CS midi output users right‽ That's why I think it might be something to do with the above fella. It makes logical sense as well to me as the CS data on my X-Touch shows (from memory, forgive me) something like 'macro 108' as the first thing it is capable of controlling, all the way down to page 4 and then 'macro 2' etc. That makes sense right? As the macros in Unify are at the bottom of the GUI and all the buttons, sliders etc before that are CS capable parameters that it can 'see' but not know what they are or what to do with them.

 

And with that, I'll quietly go away I think. Again, I really must stress, I'm only trying to assist, nothing more nothing less. I adore Unify, I use it every single day, and if I can help, suggest, or... something useful in some way to enrich the product then I'll try to, that's all this very lengthy post is about Shane. Honestly.

Thanks for reading,

Toby


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4452
 

@djtobes

Unify exposes only its Macro1, Macro2, ..., Macro32 parameters for automation, using what I believe are the usual conventions. I can't imagine why the X-Touch's parameter-mapping software doesn't map these to its controls in a rational way.

The JUCE_VIEWCONTROLLER_OBJC_NAME macro is only used when generating AUv3 plug-ins, e.g. for iOS. Not applicable.

This post I found on VI-Control suggests it may not actually be possible to set up a Unify MIDI Controller file for the X-Touch, because it doesn't transmit MIDI CC messages. See also this thread on the Cockos Forum.


   
ReplyQuote
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  

@getdunne

Thanks man. Look, bottom line, all of this is absolutely NOT important in the grand scheme of things whatsoever... but it's an interesting problem I'll agree with that 🙂

When you wrote about mapping & controls, that got me thinking. For the live streams John uses his Korg NanoController to control Unify. I wonder if he set his up his own Control Surface parameters in Logic manually (as you can do of course) in order to control Unify whilst streaming? If so, it would be interesting to see what would happen if he set the Logic Control Surface prefs to 'auto' instead right? His Korg is one of the preset controllers that Logic knows about as standard. I wonder what the Nano would receive via CC automatically then, worth a test maybe at some point in the distant future as all the X-Touch is doing is receiving and sending midi CC data as well. Those web links above are incorrect as far as I'm aware. In my own testing your own Midi Monitor utility clearly showed me the the output of the X-Touch CS when I was discovering what the midi CC output of the X-Touch was per knob & fader, as written about in an earlier post up above in this thread. 

My apologies, you're 100% correct. I'm tired is my lame excuse! For an AU (not AUv3) plug-in I believe it should be

JUCE_COMPONENT_ENTRY (JuceAUView, JucePlugin_AUExportPrefix, ViewEntry)

Anyway Sir, forget about it, it really isn't no big thing to be even remotely concerned about y'know! 😀

 


   
ReplyQuote
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  

Hey @getdunne - 

I hope you are keeping well & not too stressed out! One little thing I came across this evening that might shed some light... it might not of course, I might be typing utter nonsense but I only offer the following idea/s as merely 'trying to help', I promise you, really. You're the genius, I'm not y'know‽!

Matt Tytel has open sourced Vital, I know right‽ So I thought I'd take a little looksie at the source code. What I did notice of interest was in the Vital/plugin/JuceLibraryCode/AppConfig.h file, this part in particular...

// juce_audio_plugin_client flags:
   
  #ifndef JUCE_VST3_CAN_REPLACE_VST2
  //#define JUCE_VST3_CAN_REPLACE_VST2 1
  #endif
   
  #ifndef JUCE_FORCE_USE_LEGACY_PARAM_IDS
  //#define JUCE_FORCE_USE_LEGACY_PARAM_IDS 0
  #endif
   
  #ifndef JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE
  //#define JUCE_FORCE_LEGACY_PARAMETER_AUTOMATION_TYPE 0
  #endif

 

We both know that it's something to do with Logic (in my personal situation) working out what it can do with all of Unify's parameters when it loads in & 'reads' the AU dot component file, so I wondered if it might be something to do with the above audio_plugin_client flags when the Unify code is actually being 'built'. Also, I did spot in Matt's code a section confirming for the Juce build, what to do with 'midi mapper' and parameters as well. I promise you Shane, hand on heart, I'm genuinely not trying to annoy you, if I am albeit unintentionally, then I sincerely apologise. It's just information that I've discovered that might switch on a light bulb in that huge genius coding brain of yours! 🙂

 

If you would like the URL to have a nose through it's - HERE 


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4452
 

@djtobes

Thanks, I have the updated Vital source code already.

Those #define's don't mean what you think. Nothing to do with AU parameters.


   
ReplyQuote
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  

Oh bottoms 🙂 

You are too kind even indulging my feeble attempts at trying to make the best audio plugin ever, even more perfect! I assure you, I'll go away quietly now Shane, many many thanks for all you continue to do for us Sir. 


   
getdunne reacted
ReplyQuote
sonyroc
(@sonyroc)
Trusted Member
Joined: 4 years ago
Posts: 49
 

Hello @Shane, following John's announcement, during the last LiveStream, concerning the new option which consists in making certain layers inactive using sending of MIDI messages, do you plan in the near future to extend your design to take into account controllers (eg APC40 mkII) which use multiple channels?

I imagine it must be a lot of work and the fastest would be to buy a Korg NanoKontrol for $ 35.

Good weekend to all


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4452
 

@sonyroc

I hope to implement this new feature in a sufficiently generic way, so it can be used with any MIDI controller.

I'm not familiar with the APC40 mkII, and I don't have one, so if you can provide any details about what MIDI output it produces, please do so.


   
ReplyQuote
(@erik-van-wees)
Trusted Member
Joined: 4 years ago
Posts: 70
 

@djtobes Found the thread, first of all I have X-Touch Mini and have enabled 8 rotary knobs 8 buttons and 1 volume slider.

Use the X-Touch Editor to set the CC's corresponding to the enclosed file xtouch1.txt (i have 2 layers of controls A and B the knobs are on A but the buttons I put on B (to be able to later implement mute/solo if need; but with the midi layer on/off in Unify that does not seem necessary anymore.

Good luck, Its bedtime here, will see response in the morn ..


   
ReplyQuote
(@erik-van-wees)
Trusted Member
Joined: 4 years ago
Posts: 70
 

and the controller config ...


   
ReplyQuote
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  

Cheers Erik,

For any other Unify users that have an X-Touch I've finally got it working!

Almost completely anyway 😉

 

INSTRUCTIONS

You need to update your X-Touch to the 1.21 Firmware if not at 1.21 already.

Once at Firmware version 1.21, switch on your X-Touch whilst holding the Select button on the channel one fader.

Then on the channel one's rotary knob, turn it until you see 'CTRL', then on rotary knob two turn it until it shows your required connectivity, in my case it's USB for example. Then press the Select button on fader one again to confirm the start up mode change. Turn the X-Touch off, and after a second or two turn it on again. If you need to go back to Mackie (MC) mode for use in your DAW then repeat the setup, selecting 'MC' instead of 'CTRL'.

Then place the attached 'X-Touch INT.txt' MIDI Controller File in the correct Unify folder. Consult the Unify manual if you need help with this part.

Launch Unify... success 🙂

 

I can't find out how you can turn off the touch sensitivity of the faders though, this will result in a 'midi note on' playing whenever you move the fader. If you know how you can 'ignore' some incoming MIDI CC data in Unify (via an extra setup command line in the MIDI Controller File config @getdunne maybe ‽!) then please let me know!!

The other issue I'm having is that whilst you can turn on Solo & Mute.... I can't turn them off again via the X-Touch, again, any ideas please let me know.

 

Hope this helps you,

 

Tobes


   
ReplyQuote
(@erik-van-wees)
Trusted Member
Joined: 4 years ago
Posts: 70
 

@djtobes

You have been busy, Toby 🙂 ;

with regard to buttons: maybe the BEHAVIOUR needs to be set to TOGGLE (in X-Touch Editor); will test this afternoon

 

Some remarks on your controller mapping file

You use e.g.:

no 24  unify/mute/1

Q: what's the "no"  ...not CC? @getdunne : your thoughts please ... sorry if newbie question.

 

I use (as recommended by Shane) for layer MIDI muting (Note: is not the same command as audio mute)

cc 64  unify/midiEnable/1

 

P.S. some forums have rumours about X-Touch not sending CC, don't think that's true (at least not for the compact version which has the same editor as my mini, I can simulate the Compact side ... 😉

 


   
ReplyQuote
(@getdunne)
Illustrious Member Admin
Joined: 5 years ago
Posts: 4452
 

"no" instead of "cc" in a MIDI controller file means "note-on". See https://pluginguru.net/unify/manual/doku.php?id=midi-controller-files#no_line

Also, the unify/midiEnable function can be difficult to use with "no" or controller buttons that send e.g. value 127 when button pressed and 0 when released. In such cases, use unify/midiToggle instead.

I'm sorry all this isn't written down in a lovely detailed manual section yet, but it's very new, and not final yet. I appreciate everyone who is brave enough to struggle with it as-is, and your feedback is very helpful.


   
ReplyQuote
(@djtobes)
Trusted Member
Joined: 4 years ago
Posts: 36
Topic starter  

@erik-van-wees

You have the X-Touch Mini - the editor works with that and the Compact models, not the original X-Touch model.

The "no" refers to midi notes - it's explained in the Unify manual. The X-Touch's buttons are mapped to notes, the faders & knobs are CC.

Those must be old forum posts. You can send MIDI CC out in CTRL mode as mentioned in my post above.

I'll try the MIDI layer mute, nice idea.


   
ReplyQuote
(@erik-van-wees)
Trusted Member
Joined: 4 years ago
Posts: 70
 
Posted by: @getdunne

"no" instead of "cc" in a MIDI controller file means "note-on". See https://pluginguru.net/unify/manual/doku.php?id=midi-controller-files#no_line

Also, the unify/midiEnable function can be difficult to use with "no" or controller buttons that send e.g. value 127 when button pressed and 0 when released. In such cases, use unify/midiToggle instead.

I'm sorry all this isn't written down in a lovely detailed manual section yet, but it's very new, and not final yet. I appreciate everyone who is brave enough to struggle with it as-is, and your feedback is very helpful.

@getdunne The manual is more than adequate, thank you very much. It was more a case of RTFM 😀


   
ReplyQuote
(@erik-van-wees)
Trusted Member
Joined: 4 years ago
Posts: 70

   
ReplyQuote
Share: