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