Configure Ableton Live MIDI settings, APC40 and BMT

Hi Steve,

First of all, thank you for your videos, they really helped me a lot, especially the one that converts an absolute signal to a relative one and the one that explains how to switch presets when pressing a shift button.

Unfortunately, I'm experiencing trouble configuring Ableton properly. I digged a lot on many various forums and Ableton help, but I really can't find the explanation that I'm looking for. I'm pretty sure I miss something that will make everything clearer as soon as I get it.

So here is my setup :

I have an APC40 and a small keyboard. The keyboard just plays notes. I have the APC40 to play its native roles, except for some knobs/buttons that I want overridden and routed to BMT.

Here's my concrete need : I want the tempo button to stop changing tempo and be mapped to a knob in a MaxForLive patch I made for my needs. To change the tempo, I want to turn the tempo knob while pressing Shift. If I don't press Shift, I DON'T want the tempo to be changed. So, in order to do that, I mapped the tempo knob to a useless knob, and put two translators in BMT, using Shift to switch between two presets : the first reroute is for my M4L control when Shift is off, the second one to control tempo when Shift in on. In case, the original APC40 signal is CC13 on channel 1, the reroute when Shift on is CC0 on channel 10, and the the reroute when Shift off is CC0 on channel 11.

The thing is : while I successfully mapped to two rerouted MIDI signals to the proper Ableton controls, the tempo knob doesn't do anything when I turn it. Previously, I managed to make the knob do what I wanted, but I created problems in other places : my user mapping on the APC40 don't display lights anymore around them, and the Pan/Sends/User buttons don't work anymore either.

I read about feedback loops Ableton talks about in their help here —> https://help.ableton.com/hc/en-us/articles/209774205-Live-s-MIDI-Ports-Explained. I read this one hundred times, I can't understand it properly. So I just played with the MIDI settings around in Ableton, without any success. I want to understand exactly what they're about, because I feel that my problem comes from there. I'm pretty sure understand that would make all of this limpid in my mind.

Here are screenshots of my current configuration :

  • Ableton
    • MIDI settings
      • BMT1 input Remote off : Pan/Sends/User and user knobs work properly, but my Bome reroute doesn't happen (channel 3 CC13 —> ne reroute).
      • BMT1 input Remote on : Pan/Sends/User and user knobs don't work properly, but my Bome reroute does (channel 10 CC0, please see screenshot).
    • MIDI mappings
  • BMT project
    • When Shift is On
    • When Shift is Off
    • MIDI configuration

I tried to as clear as possible. Please tell me if I can add or precise anything.

Hope this will help others ! Cheers.


Attachments:
![](upload://87Vlg4tvW6XkkJ9GfhdzJz8yn6X.png)
![](upload://wQnTrob6M1InOGiWIgfDm7JdB5X.png)
![](upload://jmNJhnjmZMuqQXG0Qs7gkmReHYS.png)
![](upload://sKfH4tm6VaboB4f2WeF3RPT6JNY.jpeg)
![](upload://oXti5KvS4ZVlc7l4g6ZToYnTAfr.png)
![](upload://m3c0cqBNrPUwajASv7dlHhJcU0P.jpeg)
![](upload://kdugyDPkeq98ObbErQlhTrpXohg.png)

Hi,

Reading through this briefly, I think maybe change the approach. Instead of using the Ableton Live Script port for your extra features, use a different MIDI port and do manual mapping on that port.

So use BMT 1 for both input and output ports for your APC40 Script. Add a translator to suppress tempo on that port.

Use BMT 2 for your keyboard (no changes here)

Use BMT 3 for your modified tempo actions and put translators there for the modified tempo knob logic. Then map BMT 3 for use with your MaxForLive function.

 

This way you don\'t interupt any of the normal APC40 Remote Script Flow. It just never sees the tempo message because you have disabled it with a translator. Since there is no feedback from Live to your APC40 for this knob, no problem.

 

Hopefully this strategy will make sense to you.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

P.S. - Also the shift button may have it\'s own MIDI message recognized by the script so you might need to try and figure a different method to determine the alternate tempo send when shifted. If you can\'t find another button that is not used by the script, you could probably use a \"gesture\" such as double tap shift key. Do a search on gestures on the forum to find out how to do this if needed.

 

Thank you for your fast answer!

I'm not sure I understand your strategy properly.

Here are my questions :

- what are you calling Ableton Remote Script? 

- do you mean to remap everything for my APC40 from scratch? I think not, but I want to be sure I understood well, because if you meant that, that's not an option for me... Plus some functionality can't be reproduced exactly as is just by mapping stuff between Ableton and apc40

- how can I remove the tempo knob feedback from Bome's?

Thanks for your help! 

Here are my questions :

- what are you calling Ableton Remote Script?

SJC> When Ableton Live recognizes a controller type it knows about, it calls up what is called a \"MIDI Remote Script\" which defines the behavior of the controls and LEDs of that controller type. When using a script, this is shown in the top section of the Link MIDI settings page by the fields in the first column called \"Control Surface\"

 

- do you mean to remap everything for my APC40 from scratch? I think not, but I want to be sure I understood well, because if you meant that, that\'s not an option for me... Plus some functionality can\'t be reproduced exactly as is just by mapping stuff between Ableton and apc40

 

SJC> No, continue to use the existing MIDI Remote Script, however define the ports as BMT 1 instead so that you can change things in MT Pro. You will get and receive data from your APC40 and send and receiver data to Ableton Live through BMT 1. You set up static pass through routing in Bome MIDI Translator.

 

- how can I remove the tempo knob feedback from Bome\'s?

 

SJC> You then write one translator for Tempo with an output of None and Swallow set. This will disable the normal use of your tempo knob with the Script.

You then write additional translators that send to BMT 2 (without setting up a control script). Ableton Live will see this as a separate controller. (Set this up in the bottom section on the MIDI settings as Remote.) Then you can use separate translators in MT Pro to send to BMT 2. And set up manual mapping (using MIDI learn) for these few translators.

No change in how to set up your keyboard

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Thank for your this explanation ! Things are a bit clearer now. I totally understand the strategy now. I\'ll try this asap.

While we\'re at it, I have other questions :

- what is the difference between \"Bome MIDI Translator 1 Virtual Out\" and \"Bome Virtual Port 1\" ? You can see them on my previous screenshot showing my MIDI Routes in Bome\'s. I don\'t get it, they both seem to be MIDI ports that receive and send MIDI signals.

- same question for the input and outputs sections (see screenshot) : \"Bome Virtual Port 1 —> Bome MIDI Translator 1 Virtual In\" VS \"Bome MIDI Translator 1 Virtual In\" ?

- can you explain the difference between Track, Sync and Remote in the MIDI settings section in Ableton ? I think their explanation is not clear at all. Maybe you could give examples inspired from my case ? I\'m pretty sure that\'s something most people out there don\'t understand.


Attachments:
![](upload://py1mPymN6ect9hEdahfH681GkmT.png)

- what is the difference between "Bome MIDI Translator 1 Virtual Out" and "Bome Virtual Port 1" ? You can see them on my previous screenshot showing my MIDI Routes in Bome's. I don't get it, they both seem to be MIDI ports that receive and send MIDI signals.

 

SJC> Anything that has an arrow like this -> Means, the left side of the arrow is an alias and the right side of the arrow is the physical port. For virtual MIDI ports this is done automatically to maintain compatibility with older versions of Bome MIDI Translator Pro.

You can define your own aliases as well and instead of using the actual port name, use the alias. That way if your configuration changes, and you are using the alias, all you need to do is re-assign the alias in the MIDI menu and not go through and modify maybe hundreds of translators to the physical port. I recommend you always create aliases and use them exclusively in the project file. It will save you time if your configuration changes.

You can read more about aliases and other items we already discussed (global variable, local variables) in the user manual which you can get to from the help menu in MT Pro or press F1.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 

Hi again,

I did everything as you said. Everything seems to work perfectly. Thank you for your guidance.

Except ONE FUCKING THING. And it's realy driving me crazy, because it really comes from nowhere, and I can't figure out where the problem is.

It's the User knobs. After all my APC40 and Bome settings are done and working as expected, I want to make each user knob to a macro control in my channel's instrument rack. But it gets detected as ch1 CC47. Which it is NOT. Ch1 CC47 is pan control for channel 1, not user control for channel 1, which should be ch3 CC47. So why is it detected this way ? There must be some black magic or something I really miss out.

I tried every possible combination in the Live MIDI settings. None worked properly : they all give either ch1 CC47 or nothing. I even tried to swallow the input in Bome's, because I thought maybe it overrides the original. But no. If ch1 CC47 is swallow by Bome in BMT1, then nothing is detected by Ableton Live.

I hope you can help me clarify this odious situation because I'm really despaired. Since the Remote Script is not interrputed, it MUST work correctly.

Here are some screenshots of my new working config (except for this).

Thanks for your help


Attachments:
![](upload://vLzaJSwZjwWvaCw2OcK2jxKOWPt.png)
![](upload://z3tp7QL1NGV11qu1GPHrxKIZTn3.png)
![](upload://aRTvcXRawkdMQXpPUtmwLzaDe95.png)
![](upload://6pIh6IvaH0oAwZgsgYMFbpF76JR.png)
![](upload://eb6kGdd81vaJMEANgwqVd0vksA8.jpeg)

Probably the quickest way to figure this out is to open the log window. Check MIDI IN MIDI OUT Incoming and Outgoing. Clear the log and the try the mapping you want with the log file showing. You will likely see here that there are more than one MIDI message being sent to the same port and Ableton Live is probably picking up only the first. Post your log file and your project file if you can and I can look further.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Okay, here is my Log window output, and my Bome project file. Indeed, when I turn the channel 1 knob when User is on amongst Pan/Sends/User, three signals appear in Bome : APC40, BMT1, BMT2.

My Ableton project file is a bit heavy (11MB), but if you need it as well, I can send it too. If you just need to see screenshots, I think all the ones I already put show all the information you may need.

Thanks


Attachments:
![](upload://qBatlXHv6S7ebmKmMPdoY4BqF5m.png)
1587850156103_APC-40-—-Switching-with-Shift-V2-—-Select-and-Delete-Clip.bmtp

OK, you probably want to handle things going to BMT Port 2 only through translators. I suggest you delete the default routing shown. Remember this rule.

If you have a default path set, EVERYTHING will follow that path unless the following are true.

You have a translator for the incoming event that uses the same as the default path with an outgoing action as None.

or

You have a translator for the incoming event that uses the same as the default path with an outgoing action that executes AND has Swallow set.

Usually I only use default thru paths when everything or almost everything you want to send through that path. Then you set up specific translators for messages that you want to suppress.

If there are only a handful of messages you want to go through a given path, I don't use default paths and set up translators instead.

Also pay particular attention to the translator and preset level input and output ports. Unless you have overridden these in a translator, every translator within that preset will trigger on incoming messages from ANY of the incoming ports and send to ALL of the defined outgoing ports.

For example on your preset 2. The translators there will trigger on note 51 MIDI CH1-8 coming from EITHER BMT2 or APC40 and send Notes 101-108 on MIDI CH10 to BOTH BMT2 and APC40. I hope this is what you want.

 

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz


Attachments:
![](upload://mLPpRJ5nSoJB12e39HzIqtIafdw.png)
![](upload://koQ3NhpeVbBOHDtY8DCX7tSEtTG.png)

While reading your last post, I realised I didn't quite totally understand what the MIDI routing was all about. The two ways you mentioned (either route everything and mute just the few you want to remove or don't map anything and add mapping for what you want) explains everything.

Indeed, removing the route from APC40 to BMT2 was what solved my problem. I activated it to make sure the lights was synced with the knob state by Ableton, but the setting has to be made in Ableton, not Bome.

And yes, my 2nd preset with ch1-8 note 51 reroute was intentional, but both ways worked (routed to both outputs or only to BMT2). I'll explain : these 8 reroute on ch10 notes 101-108 are mapped to 8 buttons on a M4L device, that make something in M4L AND select the tracks. So I don't need them routed twice, but I doesn't kill, because the M4L buttons they are mapped to play the same role as their original duty anyway.

Anyway, thanks ! Provided I don't find another hidden bug soon, I think I'm ready to go live now :-) AT LAST.

Thanks for all your help, and maybe this post will help someone someday ! Cheers !

Glad to have been of help!

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Actually, as I feared, there\'s still one little problem, and this one is really absurd.

When I push the tap tempo button (which I actually mapped to delete clip in my m4l device), it makes the 5th clip on first channel blink (ch1 note 0). Wtf. It never happened before and nothing except triggering the record of something in the clip slot could make it blink (and the track is not armed for record anyway).

It\'s not such a terrible problem because it doesn\'t block anything, but it\'s annoying, and obnoxiously absurd. I want to understand where it comes from and solve it. There must be something wrong left on my setup.

I included a text file that says what the log window says.

Oh and yeah, another strange thing, even when I deactivate the tap tempo translator in shift off Preset, it seems to get mapped to ch11 even when I deactivate the translator. How is it even possible? There\'s literally nothing routing to there.

Any idea?

Here are the files :

  • the log window output that triggers the strange clip 5 blinking on ch1
  • the screenshot of the absurd mapping to ch11 on Ableton : says mapped to ch11 on the bottom, but shows mapped to ch1 !!!
  • my Bome project file with the modifications.

Attachments:
1587917769672_log_window.txt
![](upload://5Bf2FzYiq26K1X3kGJ043Ljavi8.png)
1587917846905_APC-40-—-Switching-with-Shift-V2-—-Select-and-Delete-Clip.bmtp

And here is the screenshot of the opposite situation : translator deactivated, and Ableton still seeing ch11 messages.

How is it possible ? It cannot be a reroute from anything, because NOTHING on the APC40 is related to ch11 anyhow. That's only for the reroutes I created. So how ?


Attachments:
![](upload://vUvIk98RaG6pYUjowVXtiQaT6SL.png)
![](upload://i5gaylRDzuhUDbofo4DaaQzf15X.png)

Also : how can you read the Log window outputs ? It's only hexadecimals... How can you see the channel, note number and signal type (note/CC) it's related to ?