Can Bome assign solo to particular channels with LED toggle working?

Hi. I’m trying to find a way to make Behringer X-touch with Studio One be programmed to have a few LED buttons of X-touch be hard assigned to SOLO of particular channels in Studio One, so that LEDs of these buttons properly reflect status: LED ON when solo selected, LED OFF when solo is off. For example: “INST” button assigned to Bus 1 solo, “Plug-In” button to Channel 32 solo, etc. And LEDs properly reflect the solo status.

Is that possible with Bome products?

Also, if I assign a fader in X-touch to a particular channel, will moving that channel by mouse in DAW make motorized faders of X-touch to follow accordingly?

Thanks!

Hi and welcome to the Bome community!

This might be able to be done if Studio One actually sends MIDI information back to the controller. We could see what Studio One sends and then modify it as needed and the forward the new message on to your X-touch Controller. The key would be to assign an incoming Virtual Port to MT Pro as the outgoing port of Studio One and then on the DAW press the solo button and see what MIDI comes in.

I believe the X-touch has both MCU mode and HUI mode, so we would need to know what mode the X-touch is in so that we properly process the incoming message from Studio One to what the controller understands to update the LED. In general the MCU mode is both easier to set up and more fully features so that is the Mode I would choose.

The same is true with fader updates. If Studio One sends something, we could use MT Pro to manipulate the MIDI message and then update the X-touch faders.

This could all be tested as a proof of concept using the free trial version of Bome MIDI Translator Pro before you decide to purchase it. The trial version is fully functional but times out every 20 minutes.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Thanks. Can anyone confirm please whether Studio One transmits MIDI back to X-touch?

By default, when using MCU, all programming of X-touch and Studio One is done via MackieControl.xml which I have no idea how to use. In this mode MIDI Learn is unavailable in Studio One. In Ctrl mode though, X-touch faders/encoders can be assigned by MIDI Learn, but not buttons! And it gets me mad…

In HUI mode MIDI Learn collects some gibberish information and is unusable (without software like yours?). That’s all I know so far.

Hi,

Indeed, it seems you cannot learn MIDI Notes on Studio One. However it does learn MIDI CC.

In Bome MIDI Translator, set up so that when you press Inst on your X-touch that it sends a CC on MIDI CH 2 rather than a note on MIDI CH 1.

In this case I set up my X-touch as a Generic MIDI controller and not Mackie MCU. Of course this requires setting up other mappings such as faders which are Pitch Bend in MCU to CC for generic assignment in Studio One.

I’ve set up The solo for Inst and two faders in the attached using Generic Controller Mapping in Studio One.

In this case, I’m converting Note 45 (Inst) on MIDI CH 1 to CC45 on MIDI CH2 to Studio One and have mapped that control to Solo on MIDI CH 4. I convert back when pressing solo on Studio One, (Control1)

I’ve also mapped fader 0 and 1 to Control 1 and to respectively converting pitch bend on given MIDI CH (1-8) to CC 0-1 and MIDI Ch1 (Control 2 and Control 3)

image

I manually mapped them to the control I wanted and then used Transmit Value, so that the feedback from the control goes out.

image

image

Unfortunately, you will likely need to map all of your controls this way if you intend to use as a ‘Generic Controller’.

Right now I have the port aliases set up as follows. I have an X-touch Compact.

image

Now it might be possible to set up the first virtual port as a MCU controller and then another virtual port as a Generic Controller. With this you could just pass through all commands using the MIDI router for your X-touch as MCU and then send custom commands and mappings to your second virtual port (set up on Studio One as a generic controller).

Here is the project file I used for a generic example using one Virtual MIDI port.

Mackie-MCU-Generic-Studio-One.bmtp (2.3 KB)

Again, you will need to map the 3 controls in Studio One as I have mapped them. I’m not sure how to export the Studio One Mapping as I’m not that familiar with Studio One.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Thank you very much, Steve! So let me know if I got that right and collect some additional pieces of the puzzle.

  1. So, when Transmit Value is selected, Studio One will then always transmit the selected controller’s midi to the output, is that right?

  2. Does Bome software have to run alongside Studio One all the time? Is it really stable? I hope that it’s lightweight… But is it stable?

  3. Will your software work (with Studio One) when using rtpMIDI or ‘USB over IP’ solutions to connect to X-touch to Studio One over the internet just as well as locally?
    My setup will be as follows: Remote PC with X-touch → internet → DAW PC with Bome into Studio One, and back?

  • or

Remote PC with X-touch and Bone → internet → DAW PC with Studio One, and back?

If the answer is Yes, then which of the above ways is preferable?

Is that the Xctl mode? There are MCU, HUI, Xctl modes in X-touch and different combinations of these. Is the Xctl generic? Or do you mean that X-touch was in MCU but you created a Generic controller in Studio One?

For that to work, X-touch must be in MCU mode. Will translation of notes to CC (which you described above) work when X-touch is in MCU mode?

Also, what you refer to as the MIDI router is a function of Bome software, or is it a third party software? Can Bome pass through MCU to Studio One and back?

I believe so, but not 100% sure as it is a Studio One thing and as I said, I’m not that knowledgeable on how Studio One works. I just figure this out by trial and error.

Yes, if you are using Bome MIDI Translator Pro, it always has to be running and is placed in between your controller(s) and application.

It should but, I think (as a user) that Bome Network Pro is easier to use as it generally requires no setup (uses self discovery) where rtpMIDI usually requires manual session connection setup.

I would not recommend trying to do MIDI over internet as the latency would be much too unpredictable where on a LAN (local area network) there is usually more stability.

Well I have a X-touch Compact and it has a programmable mode. This might be what your cals Xctl, but I’m not sure. I just left mine in MCU mode (The X-touch Compact does not support HUI). In Studio One I just set it up as a generic controller and did MIDI learn to map a few things.

Yes, you can translate MCU message just like any other MIDI message, they are just pre-defined standard MIDI messages (except for the the LCD display updates which are SysEX messages).

Bome MIDI Translator has within it MIDI routing functions. That is what I used to just use MT Pro as a ‘middleman’ between the controllers and Ableton Live.

As I said, MCU are just pre-defined standard MIDI messages so you can use your X-touch in any mode you want. The decision is primarily dependent on how much stuff you wan to just pass through and how much stuff you want translations.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Thanks, Steve.

I MUST use it over the internet, that’s the whole point of my setup. Do you know a robust tool to stream MIDI over internet bidirectionally?

This is what sounds promising and I’ll try your project file in a few days. But in this case I’ll have the same button triggering two functions: one via MCU, another via Bome in Generic Mode. This is likely to cause problems… Is there a way to filter-out the commands sent via MCU with Bome so that only Generic translated commands go through?

Here is the thing. You cannot control the latency of packets over the internet as the routing can be handled by multiple routers and paths that are really completely random. For one way streaming it is easier because latency matters less as long as the relative time between packets is somewhat consistent. However getting even more the 10ms in MIDI feedback could be quite confusing and frustrating for a performer. I’ve tried and it is really hard to play music when you don’t hear what you are playing with latency of more than 10ms. If you find an application that can reliably lock in a round tri[p latency of less than 10ms, let me know. It would probably require a dedicated network route and extremely fast. Maybe someone is doing it but it is likely not very cheap if achievable at all.

As for Bome Network, it will only self discover within the same network so you would have to set up routing to a foreign network to make it work (which is possible with the Bome Network tool and proper router setup). But I can imagine latency may still be an issue if you have more than just a few hops from the target to the destination network.

Yes, you can direct different MIDI commands to different ports from the same controller. This is quite simple. You can make one controller look like two or 3 to an application or visa versa by using different MIDI ports and routing the messages accordingly. You can also block messages using MT Pro.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

The MIDI over internet will be used only for X-touch controlling Studio One, not for playing instruments. Does that change your opinion regarding whether it’s going to be usable in term of latency?

And routing specific commands to a port that’s not assigned to a device in Studio One? For example: UNDO button’s MIDI notes are routed to a non-existant port, while they are also translated to CC and routed to a port with Generic Controller in Studio One?

Can specific MCU commands from particular buttons be intercepted and blocked while also translated to different commands (or notes translated to CC) and passed to a Generic Controller in Studio One?

Also, the way MCU is setup by default is that channel pan, solo, mute etc are automatically routed to a respected channel within selected fader banks. For example: 1st fader bank automatically assigns all channel controls to channels 1-8. Next fader bank reassign them to channels 9-16, etc.

Is it possible to achieve the same automatic assignment within generic midi controller using Bome software? In other words, can I make so that all channel pan encoders are translated into gain controls for respected channels with selected fader banks?

Yes, if you can occasionally live with some delay in the control’s action. Mileage may vary depending on the overall traffic and demographics of internet packet routing.

You can route to an unused port or simply block the message completely.

Yes

Probably not as I’m pretty sure most DAWs use scripting to achieve this type of behavior.

On the other hand, perhaps we could calculate bank numbers when doing bank up and down and then send different MIDI commands to the DAW depending on the current bank. We would calculate the outgoing MIDI command based on the current bank and we would have to monitor bank movement from both the DAW and controller to keep things in sync.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Thank you very much, Steve! Can you please point me to easiest tutorials on how to do what we discussed above?

I don’t think there are any tutorials that in depth. The below diagram might give you a better visual of what is going on. Each application basically sees the messages sent to it as a different device. If it is the same application looking at two different ports then it should see each port as a different device as well.

There are over 50 tutorials of basic functions and capabilities but nothing really to describe various user end solutions as they are so widely varied, we would probably never get to them all. Each user situation seems pretty unique.

There are also a lot of posts on various issues and questions and you can certainly search the forum for keywords to try and find something similar to what you are trying to do.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like

Steve,
So I followed your tutorial and was able to assign solo function to any X-touch button, but that button’s LED did not illuminate on X-touch. Did it toggle ON and OFF in your X-touch Compact when you tried it?

Then I added Translators to receive the same CC from Studio One back into X-touch by converting it into note - that enabled X-touch LED to go ON/OFF following a command from Studio One when Solo is clicked there by mouse. But LED on X-touch still didn’t toggle when X-touch button pressed.

Then I added Translators to pass note On and Off commands from X-touch back into itself on the same channel. That enabled LED ON. But not LED OFF. I think that is because LED OFF is velocity 0, but in order to get into zero, that button must be pressed first (vel 127).

Example:
X-touch 1, Ch 1, note 45, Velocity 127 passed to
X-touch 1, Ch 1, note 45, Velocity 127. That toggles LED ON.

But:
X-touch 1, Ch 1, note 45, Velocity 0 passed to
X-touch 1, Ch 1, note 45, Velocity 0. That does not turn LED OFF. I assume that’s because in order to transmit Vel 0, that button must transmit Vel 127 first when pressed. I assume that’s the reason, do you have other suggestions?

I’ve also played with “Note Off” instead of “Note On” in the last command, but that didn’t help.

Is there a way to add a Rule so that every other Vel 127 be inverted to Vel 0? Like toggle? For example, when Note 45, Vel 127 is pressed once - it passes unchanged. But when it’s pressed second time - it’s Velocity would be translated into zero. Then 127 again, then zero. Is that possible with a Rule or by other means?

Otherwise I don’t see a way to make LEDs toggle when buttons pressed. Any other suggestions, please?

I read through some of the forum posts and tried to mess around with Rules not knowing what I was doing. So I added this Rule:

ga=ga^127

…and I set Outgoing Velocity to “ga”.

  • and it seems working. Can you please check if that’s all that’s needed and whether this can cause issues in some circumstances that I’m not aware of? Can you suggest a more “robust” rule?

Here’s the project:
Test-2 Rule-1.bmtp (3.8 KB)

Also, I set the Router to pass through “X-Touch 1” to “Bome MIDI Translator Virtual Out 1” (and same in the other direction). Now I can use both original MCU and my custom generic controller in Studio One as you’ve suggested. But how can I add filtering to filter-out particular commands within the MCU to: a) block them or b) route them to unused channels? Can you please explain both ways of doing so?

Router can’t be used for that, can it?

Thanks.

Hi,

I modified as follows

I created Aliases for the two ports being used in Studio One. Both in and out. Then I routed the thru paths for the Mackie Alias. Using aliases makes it easier if later you want to use different configurations.

image

image

I created additional presets and grouped them by their routing. Again, doing this makes the project easier to maintain as you move things around. See this tutorial.

I deleted local feedback translators since the DAW should handle feedback to the controller directly. It will be more reliable and always in sync.

I added, blocking translators to handle the messages that you don’t want to send via Mackie. I put those in separate presets (with routing) with incoming of the appropriate incoming message and outgoing as “None” with the option “Swallow” set. This is how you can block translators that also have MIDI thru path. The blocking translators will take priority over the through path in this case.

I did not test it since I don’t have your configuration loaded up, however it should be pretty close. Let me know.

Test-2 Rule-sjc-2022-08-08.bmtp (3.5 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Many thanks, Steve.

Forgive me for a stupid question but how can I create Aliases? I saw that screen (your first screenshot) upon the first start of BMT but couldn’t find it later on. And should the Aliases (as in screenshot that you provided) be applied to Global or Preset level?

This part I don’t understand completely but I’m away from my computer now, maybe seeing your project would help me understand.

After an alias is created you can edit it in the MIDI menu.

image

Which will take you to the screen that I showed you.

You create aliases on the right side with a preset

ice_screenshot_20220808-141837

I hope so. If your DAW provides MIDI feedback, it is generally more accurate to let it do so and that way you don’t have to worry about your DAW being in Sync with local feedback used in Bome MIDI Translator Pro. Of DAW feedback only works if the DAW provides it.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Steve, in your project I’m getting no LED when the buttons are pressed. ‘Transmit Value’ is still selected in Studio One’s generic controller. That’s why I tied to create that toggle rule:

Could you please modify your last project to include a proper rule for LED toggle (my rule was probably cumbersome but it worked). Apparently X-touch requires a separate incoming MIDI command to lit a pressed button’s LED, and same command with vel 0 to the LED to dim it.

Also, in your Presets number 1, for both translates outgoing messages you selected velocity qq. Why qq and what does it do?

Also, I modified your Preset number 2 to block note C1 (90 00 7F) (REC button on Ch1) with any velocity. How can I instead set a range of notes from 90 00 xx to 90 07 xx to include all 8 channels’ REC buttons blocked in one translate?

And lastly, after we setup above mentioned functions, then I’d need to add one more: a rule to make so that only 1 of two (or three or four…) buttons gets engaged (and illuminated) at once such as with ‘Radio Solo’ mode when only one channel can be soloed at the same time. For example: There are 2 solo buttons: F6, F7 and F8. I need pressing any of these to deactivate previously engaged one. I need this rule not only for solo but other functions as well. I’d appreciate if you add that to the sample project for me.

Thank you!!!

Hi, this will indeed work if you don’t use the global variable ga for anything else.

Studio 1 should send the right command based on what the X-touch sends. For X-touch it will be a note on with the command note and velocity 127 for on and 0 for off. You may need to use raw MIDI data as output

So for example if you want to light the LED with 90 00 7F, you would turn it off with 90 00 00.
If you use a local variable (like qq), so you could do this

Incoming 90 00 qq from Studio One

You should not need to toggle it as the function on Studio One would already do that but if it.

Outgoing 90 00 qq

The value from studio 1 should be 7f and then 00 if it behaves like a normal solo.

qq is a local variable placeholder which will contain the value coming from the input device or Studio One depending on the preset or translator defined ports.

If coming from Studio One, it will normally toggle between 7F (127) and 0.

Yes it would look like this

Incoming: 90 pp qq

Rules:

if pp>7 then exit rules, skip outgoing action

Outgoing: None

Radio buttons are a bit trickier as you have to track their state with global variables. While free support does not include creating a complete solution for you, I can find an example where I helped another user with radio buttons here. You would need to examine it and learn how it is used and then apply the principles to your project.

If you want me to build a solution for you, it falls outside of free support and I’m available as an independent contractor to help. Please PM or email me if you are interested in purchased support.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Well, it does not lit up the LED and I don’t understand why. Are you saying that when X-touch button pressed, it sends the command to Studio One which should in turn send the LED ON message back to X-touch? For some reason it doesn’t work… The X-touch LEDs lit up when Solo is initiated from Studio One, but not from X-touch.

Can you please assist me with a proper rule to set LED toggle from X-touch back to itself to control LED state? I don’t see any other workaround…