How to map a shift button on a controller in Ableton?

blow

2016-09-08 22:15:50

Hi guys, Im still mapping my Numark Mixtrack Pro 2 controller to work in Ableton.
I've nearly finshed it but i would like to add a second layer to the pads, so i can use them to trigger fx and by holding down SHIFT and use them to trigger the looping feature. Apperantly Ableton dosent offer this in their mapping. :(

So is there a way to make a shift button that when held down changes the midi message thats sent when you hit a pad or any button on the controller? To give the pads a extra layer, like most controllers have.

I've seen some other posts on here about a similar thing but im using the Classic version, can it be done using that?

Sakis

2016-09-09 01:21:25

Make 2 presets. Preset A and B
Preset A is the first layer
On the beginning of Preset A add a translator,where on Preset A activation ,Preset B is deactivated
Add a translator on the end ,where key SHIFT-down activates Preset B

(Currently I am not on PC)

Preset B is the second layer.
On the beginning of Preset B add a translator,where on Preset B activation ,Preset A is deactivated
Add a translator on the end ,where key SHIFT-UP activates Preset A

Hope it helps :)

blow

2016-09-09 17:04:16

Thanks for your reply Sakis but i dont know to much about this, can you please explain it step by step.
I dont understand this bit:
On the beginning of Preset A add a translator,where on Preset A activation ,Preset B is deactivated
Add a translator on the end ,where key SHIFT-down activates Preset B
How do i do that?

lanz_the_joiner

2016-09-11 14:55:14

blow wrote:So is there a way to make a shift button that when held down changes the midi message thats sent when you hit a pad or any button on the controller? To give the pads a extra layer, like most controllers have.
You should be able to set up a shift key (also known as a 'modifier') without too many problems.

It would be helpful if you could tell me about your situation and what you have tried: how comfortable you are with different functions of Bome MT; do you know roughly how it works; do you know how to use MT's Log Window; do you know about the basics of MIDI messages; is most of your mapping constructed in Ableton or are you intending to use Bome MT for other functions as well as the shift key?

Sorry if that sounds like a lot to ask... I'm quite new to this (I also find the other threads on this question hard to understand)... I just want to know what I'll need to explain and what you know already.

blow

2016-09-11 18:11:34

Hi thanks for your reply m8, yea ive been messing with it for a few weeks mapping my Mixtrack Pro 2 controller:

Code: Select all

https://www.bome.com/forums/viewtopic.php?f=3&t=12121
I've done most of the mapping directly inside ableton, it's just the few keystroke buttons in my thread that i've used Bomes for.

I havent used the logs Window yet, but i can follow simple instructions. :D

At the moment ive mapped the first layer of the pads (inside Ableton) to make this work will i have to use Bome's to map the first and second layers. Or can i keep the first layer mapped inside Ableton?

I've downloaded the preset file that florian has provided from another post, maybe you could help me get this working?

Code: Select all

https://www.bome.com/forums/viewtopic.php?f=3&t=12091&p=23835&hilit=shift#p23807

lanz_the_joiner

2016-09-11 18:42:24

blow wrote:At the moment ive mapped the first layer of the pads (inside Ableton) to make this work will i have to use Bome's to map the first and second layers. Or can i keep the first layer mapped inside Ableton?
As I said I'm quite new to this... so we might be figuring this out together lol. If you've done your mapping in Ableton, then I'll try to help you come up with a solution that won't mess with your existing mapping, and will allow you to continue assigning controls there.

Do you want your shift key to alter the message sent out by ALL the controls on your controller, or do you want it to alter ONLY the messages sent out by the pads?

See if you can get the Log Window working. It's in the View menu. I use it mostly with all its boxes unchecked except for MIDI IN so that I can see which messages are being sent by the different buttons and knobs on my controller. To make sure all the messages are being displayed, I set up a translator with an incoming Raw MIDI / System Exclusive message of "pp qq ww".

blow

2016-09-11 19:15:53

That'll be great if i can keep my orignal Ableton mapping and just use Bomes for the shift.
Do you want your shift key to alter the message sent out by ALL the controls on your controller, or do you want it to alter ONLY the messages sent out by the pads?
I think only the pads if its easyer, thats all i need more layers of.

The log screen is just blank, theres nothing there. I think i've used somthing similar called midi-ox where you push a button/pad on your controller & it shows you all the midi information. Is that what it's for?

EDIT-
I set up a translator with an incoming Raw MIDI / System Exclusive message of "pp qq ww".
Yes after doing this i can now see the midi messages being sent when i move somthing on my controller.

lanz_the_joiner

2016-09-11 20:11:17

blow wrote:I think only the pads if its easyer, thats all i need more layers of.

[...]

Yes after doing this i can now see the midi messages being sent when i move somthing on my controller.
Okay, great. I'm gonna try to figure out which notes the controller uses for what. Since there doesn't seem to be a user manual for the device with a list of the MIDI messages, I'd like for you to find out what they are for me.

Now, with the Log Window open, hit the "Clear" button to wipe away all the old messages. Then hit all the pads in order so I know which notes they send, like this:

Image

Copy and paste the text from the log window into a text file, and post it to me in your next reply.

Next, clear the log window again and go through and hit, move, rotate, all the rest of the controls on the unit, and then copy and paste all that text into a text file and post that in your next reply as well. The order in which you hit the rest of the notes doesn't matter so much, although if you can do it fairly systematically that is better than doing it in a random order.

blow

2016-09-11 20:51:00

Ok m8 i've just done that, making shore ive got them in the right order.

Here's the files;
Pads:
Pads in order.txt
(1.53 KiB) Downloaded 197 times
All the other midi messages:
all other mappings.txt
(21.53 KiB) Downloaded 181 times
Thanks a lot for taking to time to help me with this m8, i appreciate it :D

lanz_the_joiner

2016-09-11 22:06:04

No problem, m8. (I take it you're also from the UK :wink: )

I think I'll be able to set something up with the info you've given me... I'm just testing out some ideas on my Xone K2 for how it might work.

blow

2016-09-11 22:13:57

Ok great, i suppose it's better messing with this than watching xfactor :D

Yea from the uk...

lanz_the_joiner

2016-09-12 00:04:36

Thanks for annotating the MIDI data so well, it's very informative.

I'm still trying to figure this out but I'm learning a lot! Often when I try to solve a problem with Bome's MT, I end up discovering that something I thought was very simple, is actually complex and powerful. This is one such occasion.

I'm going to bed now and have work tomorrow but I'm off the day after that. If I don't have a solution figured out by tomorrow evening I should manage to get one done on my day off.

blow

2016-09-12 14:57:01

Ok thanks again m8

Sakis

2016-09-14 20:41:14

Check the attached project.Leave the project as it is and don't delete anything.
If you hold the shift key you will notice that preset B is activated and A deactivated.
As soon as you release the key then it returns to previous state.

In preset A you add the translators for layer A and for layer B (when holding the shift key) add the rest.

Hope it helps :)
Attachments
Preset Shift Toggle.bmtp
(1.08 KiB) Downloaded 145 times

blow

2016-09-14 20:59:41

Thanks for helping with this Sakis, but are we talking about the same thing?
I mean a shift button on my controller. Not the shift key on a keyboard.

Sakis

2016-09-14 22:02:59

I guess I missed that tiny detail :lol:
Sorry for the messing :)

Sakis

2016-09-14 22:09:29

Which button is the shift on your controller? And is it momentary or toggle?
I mean ,if it sends different message when pressed down and other message when it is up you could replace my wrong keyboard input translators with the corresponding midi message.

blow

2016-09-14 23:00:58

Its ok, just so were on the same page :D

This is the midi for the shift button:

Code: Select all

IN 3.0: MIDI 90 61 7F,  pp=0x90 qq=0x61 ww=0x7F
IN 3.0: MIDI 90 61 00,  pp=0x90 qq=0x61 ww=0x00

Sakis

2016-09-15 10:42:35

I am not in a PC right now but I insist on trying
Replace (on my patch) the incoming key actions .
Instead of keyboard shift key pressed down use midi message 90 61 7F (on preset A) and then replace
the incoming keyboard key shift up with midi message 90 61 00 (on preset B)

Give it a try!

blow

2016-09-15 17:52:26

Thanks m8 i've done that, but its not changing the midi message comming from the pads.

Heres what i get from pad 1 when i press it:
IN 2.0: MIDI 90 59 7F, pp=0x90 qq=0x59 ww=0x7F
IN 2.0: MIDI 90 59 00, pp=0x90 qq=0x59 ww=0x00
Heres what i get when i press the new shift button & press pad 1:
IN 0.1: MIDI 90 61 7F
IN 2.0: MIDI 90 61 7F, pp=0x90 qq=0x61 ww=0x7F
OUT 0.1: activate preset "B"
Activated preset: B
IN 0.0: activate preset "B"
OUT 0.0: deactivate preset "A"
Deactivated preset: A
IN 1.1: MIDI 90 61 00
IN 2.0: MIDI 90 61 00, pp=0x90 qq=0x61 ww=0x00
OUT 1.1: activate preset "A"
Activated preset: A
IN 1.0: activate preset "A"
OUT 1.0: deactivate preset "B"
Deactivated preset: B
IN 2.0: MIDI 90 59 7F, pp=0x90 qq=0x59 ww=0x7F
IN 2.0: MIDI 90 59 00, pp=0x90 qq=0x59 ww=0x00
Have i edited your file right?
Preset Shift Toggle2.bmtp
(619 Bytes) Downloaded 178 times

lanz_the_joiner

2016-09-15 20:57:25

I think what Sakis has provided is the basis for making your shift-key setup. So it's the basic translator-based tool you'd use to build the rest of your stuff on top of; all of the stuff you want your keys to do when they have the shift key applied to them.

On the other hand, what I've been trying to produce is a complete solution... so that you could activate one translator and then forget about it, and go back to mapping in Ableton using your shift-key. I've been finding it pretty difficult to get the solution finished. But that's mostly due to my poor knowledge of the MIDI protocol, and because I've been working at my job every day.

Sakis

2016-09-16 00:21:40

@blow:
lanz_the_joiner wrote:I think what Sakis has provided is the basis for making your shift-key setup. So it's the basic translator-based tool you'd use to build the rest of your stuff on top of; all of the stuff you want your keys to do when they have the shift key applied to them.
It really helps to write down to a piece of paper a draft summary of the translations you need to do. A simple logic diagram
The previous project you uploaded was correct :D .But it doesn't translate anything! I thought you only needed an example.
But it will help you in the future when you have too many translators and organize them easier.

Let's make it simpler and make a new project(I'll help you now and maybe in the future you help me or others :) )

A pad in the left side is

Code: Select all

90 59 7F
0x90 means Channel 1 of the Note 0x59 with Velocity 0x7F
Notice that I use 0x59 ,because BMTpro logs in hexadecimal values.

A simple approach is to change the midi channel of the note when shift is pressed . So fist a make a simple translator capturing the Left shift

Code: Select all

90 61 pp
If it's pressed then pp=0x7F(127) so I make a rule and say that a global variable "ga" is 0x90 but if pp=0x7F then ga=0x91
Then I make sure all events are going thru such as midi CC "B0 oo pp" and all Notes(buttons):

Code: Select all

90 qq tt
except the pads.

Based on the txt you uploaded, I know now that the pads ("qq" Notes) are between 83<qq<100 value (in decimal)
So I make sure that in the translator ,if qq is not in that area there is no need to translate anything

Code: Select all

if qq<83 then exit rules, execute Outgoing Action
if qq>100 then exit rules, execute Outgoing Action
and my outgoing message is

Code: Select all

pp qq tt
. It remains unchanged .

If a pad of the left side is pressed then I route it to the appropriate midi channel "ga" ,according to the shift button condition.

Code: Select all

if qq==0x59 then pp=ga
and my outgoing message is "ga qq tt" .

I am sure you will have many questions and maybe I made some mistakes...
Attachments
SimpleShift.bmtp
(1.82 KiB) Downloaded 115 times

lanz_the_joiner

2016-09-16 07:54:53

Sakis wrote: A simple approach is to change the midi channel of the note when shift is pressed .
This is what I was trying to do... but every time I wrote the rule it would turn red.

Sakis

2016-09-16 09:33:07

lanz_the_joiner wrote:
Sakis wrote: A simple approach is to change the midi channel of the note when shift is pressed .
This is what I was trying to do... but every time I wrote the rule it would turn red.
What do you mean?( I don't have the controller)

blow

2016-09-19 21:56:06

Thanks to both of you for all the time you put in this, but it's way to complated for me so i'll have to leave it... :(

Sakis

2016-09-19 22:40:55

Totally understand. Maybe you could try making a very simple project and search the forum ,it is full of examples.
Never give up :wink:

florian

2016-09-22 20:56:24

Hi blow,
a shift function by activating/deactivating presets does not require much setup! The general idea is:

Preset: SHIFT Switcher
Translator 1: On shift button press down
Incoming: MIDI <MIDI message when pressing down>
Outgoing: Preset Change: activate "With Shift"

Translator 2: On shift button press down
Incoming: MIDI <MIDI message when pressing down>
Outgoing: Preset Change: deactivate "Without Shift"

Translator 3: On shift button release
Incoming: MIDI <MIDI message when releasing>
Outgoing: Preset Change: deactivate "With Shift"

Translator 4: On shift button release
Incoming: MIDI <MIDI message when releasing>
Outgoing: Preset Change: activate "Without Shift"

Preset: "With Shift"
...all your mappings in SHIFT mode...

Preset: "Without Shift"
...all your mappings in regular mode...

Make sure to never check the "stop processing" flag in the translators.

Of course, you can define arbitrary MIDI buttons as SHIFT. With the Pro edition, there are even more possibilities like a toggle shift, etc.

Best,
Florian