shift/ modifier button

Flamusic

2016-07-29 00:24:59

I already found a thread with the same question but couldnt follow the instructions.
Maybee its possible to get a little more detailed instructions on how to set up one
button on my midi controller as shift/ modifier button.
So that if the button is preseed i can use my knobs for a second layer.
And if depressed im back on layer one to have some more assignments.
Thx

DvlsAdvct

2016-07-30 18:34:15

Hi Flamusic

You need to use rules and global variables to do this. Your Shift button would need a translator that changes the value of the global variable. Then you would have a translator that changes the output message of your encoder based on what the global variable is.

Code: Select all

Translator 1: Shift Button
Incoming Message: MIDI Message
Channel: 1
Note On
Note: whatever note you are using
Velocity: any velocity
	Set variable to velocity: g0
Rules
None
Outgoing Message: None

Translator 2: Knob
Incoming Message: MIDI Message
Channel: 1
CC Message: //whatever CC message you are using
Value: Any
	Set variable to value: qq
Rules: if g0!=0 then pp=0x20 //put the CC message you want when Shift is pressed
if g0==0 then pp=0x40 //put the CC message you want when Shift is NOT pressed
Outgoing Message: MIDI Message
Channel: 1
CC Message: pp
Value: qq
Does that make sense?
Jared

Flamusic

2016-07-30 19:30:58

Sorry but i cant follow you.
Same as in the other posts.
Dont know what you mean with .. whatever note your using ...is this my midi controller shift button ? whatever cc your using.. is this my controller button ?
I will use one button.

florian

2016-08-01 12:30:05

Hi Flamusic,
have you ever set up any translations in MT Pro? If not, it's probably a very good idea to work through the introductory chapters in the users manual.

In general, the best idea is to use the Capture button in the Incoming MIDI setting for a translator. Press the button on your control surface which you want to map. You will see MIDI messages appearing. Select one of those lines. It will then fill the settings for the MIDI action, which you can still edit. THAT is "whatever note you're using".

"Whatever CC you're using" is which controller you want to map to a different channel. CC is MIDI slang for "Continuous Controller", i.e. the controller message being sent from the control surface.

Thanks,
Florian

florian

2016-08-01 12:48:16

Here's another way to map a SHIFT button:

Code: Select all

[x] Preset 0: Shift Button Handler
 Default MIDI IN ports:   From Controller

[x] Translator 0.0: Init 1
Incoming: on activation of this preset
Outgoing: activate preset "Normal Mappings"

[x] Translator 0.1: Init 2
Incoming: on activation of this preset
Outgoing: deactivate preset "SHIFT Mappings"

[x] Translator 0.2: Shift Button pressed
Options: swallow
Incoming: Note On on ch. 1 with note:109 (0x6D) and any velocity
Outgoing: activate preset "SHIFT Mappings"

[x] Translator 0.3: Shift Button pressed
Options: swallow
Incoming: Note On on ch. 1 with note:109 (0x6D) and any velocity
Outgoing: deactivate preset "Normal Mappings"

[x] Translator 0.4: Shift Button released
Options: swallow
Incoming: Note Off on ch. 1 with note:109 (0x6D) and any velocity
Outgoing: activate preset "Normal Mappings"

[x] Translator 0.5: Shift Button released
Options: swallow
Incoming: Note Off on ch. 1 with note:109 (0x6D) and any velocity
Outgoing: deactivate preset "SHIFT Mappings"


[x] Preset 1: Normal Mappings
 Default MIDI IN ports:   From Controller
 Default MIDI OUT ports:  To Application

[x] Translator 1.0: Example Mapping: controller 7 from channel 1 to channel 4
Options: swallow
Incoming: Control Change on ch. 1 with CC#:7 (0x07) set 'pp' to value
Outgoing: Control Change on ch. 4 with CC#:7 (0x07) and value:pp


[ ] Preset 2: SHIFT Mappings
 Default MIDI OUT ports:  To Application

[x] Translator 2.0: Example Mapping: controller 7 from channel 1 to channel 8
Options: swallow
Incoming: Control Change on ch. 1 with CC#:7 (0x07) set 'pp' to value
Outgoing: Control Change on ch. 8 with CC#:7 (0x07) and value:pp
There is one "Shift Button Handler" preset, which will do this:
  • when project is started, enable "Normal Mappings" preset and disable "SHIFT Mappings" preset
  • when you press down the shift button on the control surface, one translator "Shift Button pressed" will be triggered and deactivate "Normal Mappings", while the second "Shift Button pressed" translator will enable the "SHIFT Mappings" preset.
  • once you release the shift button on your control surface, the opposite happens in the "Shift Button released" translators.
Now you can put any mappings into the "Normal Mappings" preset which you want to happen without Shift. And put any mappings for use when the SHIFT button is pressed into the "SHIFT mappings" preset.

As for Jared's (more typical) solution, you need to adapt the incoming MIDI message in the "Shift Button pressed" and "Shift Button released" translators to match the MIDI message which the button (which you want to use for the SHIFT function) on your control surface sends. In my example here, the button uses note 109.

As an example, I show how to map controller 7 from channel 1 to channel 4 if not shifted, and to channel 8 if SHIFT is pressed. You can put in any kind of mappings in the respective presets.

In the attachment, you can find the full project.
Thanks,
Florian
Attachments
Shift with Presets.bmtp
(2.84 KiB) Downloaded 214 times

Flamusic

2016-08-01 21:07:55

I think i got everything working.
But i have a lot of controllers to map.
Is there any way that if Preset one is active all incoming data
are send to one midi channel and on preset two all incoming data are send to an other midi channel ?
I think i have about 60 controlls with LED feedback.
So to make two translators for evry controller is a lot of work.

florian

2016-08-07 23:28:51

sorry for the late reply. Yes, it's easy to map all controllers:

Code: Select all

Translator: Example Mapping: all controllers from channel 1 to channel 4
Options: swallow
Incoming: Control Change on ch. 1, set qq to CC#, set 'pp' to value
Outgoing: Control Change on ch. 4 with CC#:qq and value:pp