Routing Channel Translations within MT

CENTRIC

2014-06-12 06:44:55

I'm trying to figure out a way to have a translator pick up the new midi channel of a previous translator, and not to use the original channel of the incoming midi controller. Here's the scenario:

8 button midi controller running into MT

Button 1 (midi channel 15): activates preset to change all CC midi to channel 1
Button 2 (midi channel 15): activates preset to change all CC midi to channel 2
Button 3 (midi channel 15): activates preset to change all CC midi to channel 3
Button 4 (midi channel 15): activates preset to change all CC midi to channel 4

Then I want to have buttons 5, 6, 7, 8 on the controller perform other translations on all four midi channels, depending on which of buttons 1-4 are engaged. The point of this is that rather than having four buttons (5,6,7,8) that do four things, you now have 4 buttons that can do 16 things (4 buttons X 4 channels), depending on whether button 1,2,3 or 4 is engaged to toggle the midi channel.

Getting buttons 1,2,3,4 programmed to change midi channels is easy. But when I try to have buttons 5,6,7,8 pickup the new translated midi channel, they just keep picking up the original midi channel (15) from the controller input.

So how can I make a new preset use the new translated midi channel as the input, and not pick up the original midi channel from the controller? I thought using swallow or virtual midi ports might do it but no dice.

DvlsAdvct

2014-06-12 15:56:54

Hi CENTRIC

If you are going to use Presets then you need to make sure you have disabling the other presets so only your MIDI CHannel 1 Preset is active, and not your MIDI Channel 2, 3 or 4 presets. What you would do is have five presets total, one which is always active, we'll call it the "Select Channel Preset" and then one preset for each channel 1 through 4. The Select Channel Preset will have 4 simple translators, each activating an individual preset for channels 1 through 4. Within each Channel preset, however, you will have three translators, each deactivating the other three presets. So, for example, Preset for Channel 1 will have:

Code: Select all

Translator 1: On Activate
Incoming Message: Preset Change: On Activation of This Preset
Outgoing Message: Preset Change: Deactivate Preset Channel 2

Translator 2: On Activate
Incoming Message: Preset Change: On Activation of This Preset
Outgoing Message: Preset Change: Deactivate Preset Channel 3

Translator 3: On Activate
Incoming Message: Preset Change: On Activation of This Preset
Outgoing Message: Preset Change: Deactivate Preset Channel 4
And then you will add your translators for your command buttons with a different outgoing channel as needed. :)

That make sense?
J

CENTRIC

2014-06-12 17:37:28

Thanks for the response. I'm well familiar with using presets to switch midi channels, and unfortunately the problem I'm trying to solve is more complicated then that. I am in fact using the scenario you described below for the initial channel changing. I have it programmed exactly as you mentioned so that when you press one button, all the knobs send on channel 1, you press button 2 and all the knobs send on channel 2 etc. The tricky part is I want to be able to toggle multiple presents which are contingent upon a variable midi channel. Its really hard to explain so I'll try to break it down with an example:

- the default channel for my controller is ch. 15 for everything
- The plan is to have the first four buttons of my controller change the channel that it sends on, and the last 4 buttons of the controller toggle between presets relative to the present channel
- I press button one on the controller and now MT has it sending everything on channel 1
- My MT presets A, B, C are all set to respond to channel 1 only, so I can now switch between those presets using buttons 5,6,7 on my controller
- Additionally, my MT presents D, E, F are all set to respond to channel 2 only, so when I press button 2 on the controller, MT has it now sending all midi on channel 2, and I can toggle between presents D, E, F using the exact same buttons (5,6,7) as I did to toggle between presents A, B, C. Presets A, B, C have no effect at this time because they only work when the controller is in "channel 1 mode", and presently I have it in "channel 2 mode".

So the first four buttons of the controller select the channel, and the last four buttons toggle between 16 different presets, four presets for each channel that is activated with the first four buttons.

make sense? Possible?

DvlsAdvct

2014-06-12 17:53:37

Hi CENTRIC

It sure is possible. You need to think of your presets in sections. Your channels are designated by buttons A-D (Channels 1-4) and each section has 4 sub-sections 1-4 for button functions controlled by E-H. So when you select Channel 1 you want to toggle to its relative Group E-H, depending on where you were. You'll do this using global variables. So you still need that core Channel Select preset and four presets for channels 1-4. Underneath Channel 1, for example, you will need a Bank Select Preset, using buttons E-G. You can do this a number of ways, but we'll stick with the preset example for logic's sake.

So you will have 5 presets to start: Channel Select, and then channels 1-4. Under the channel 1 preset you will want four more presets, one for each mode you want to use. We will call these Modes 1-4. You will want to have activation management in each preset like in the others to make sure only one of these presets is active at a time. To keep this remembered when you switch modes you will want to assign each one a value of a global variable. For example, channel 1 will use ga, channel 2 will use gb, etc. After all of the Deactivate Preset Channel translators you will want something like

Code: Select all

Translator 1: Activate Mode 1
Incoming Message: 90 00 7F
Rules: ga=1
Outgoing Message: Preset Change: Activate C1 Mode 1

Translator 2: Activate Mode 2
Incoming Message: 90 01 7F
Rules: ga=2
Outgoing Message: Preset Change: Activate C1 Mode 2

Translator 3: Activate Mode 3
Incoming Message: 90 02 7F
Rules: ga=3
Outgoing Message: Preset Change: Activate C1 Mode 3

Translator 4: Activate Mode 4
Incoming Message: 90 03 7F
Rules: ga=4
Outgoing Message: Preset Change: Activate C1 Mode 4
These presets will allow you to switch between presets within the Channel 1 Preset. Within each Mode Preset you want to make sure to deactivate the other presets as we did below. Then, what you want to do is create 4 translators to control which preset is automatically activated when you switch from, say, Channel 2 Preset back to Channel 1. You need four more translators, each referencing the value of ga, it would look like:

Code: Select all

Incoming Message: Preset Change: On Activation of this Preset
Rules: if ga!=1 then exit rules, skip outgoing action
Outgoing Message: Preset Change: Activate C1 Mode 1

Incoming Message: Preset Change: On Activation of this Preset
Rules: if ga!=2 then exit rules, skip outgoing action
Outgoing Message: Preset Change: Activate C1 Mode 2
And on and on, so that when Channel 1 Preset is activated it will go to where it was before. And you also want to create deactivation translators, so when Channel 1 Preset is deactivated for Channel 2 Preset all of the C1 Mode Presets deactivate. That should be self explanatory:

Code: Select all

Preset Change: On Deactivation of this Preset
Outgoing Message: Preset Change: Deactivate C1 Mode 1
and have one for each of the four presets.

That make sense?

There is an easier way to handle this using global variables and translators which we can go over as well if you'd like to have less presets.

Thanks
Jared

CENTRIC

2014-06-12 18:00:59

This sounds EXACTLY like what I'm looking for. You rock! Its gonna take me a minute to digest all this but I'll let you know how it turns out. In case you're interested, the purpose of all this is to control an entire live electronic rig using only an Arturia Minilab controller that has been set up for 8 different modes of functionality. Mode one is instrument mode and switches between controlling 8 different instruments, mode 2 is mixer mode and all the buttons and knobs control the mixer in ableton, mode 3 is drum mode, and now all the buttons and knobs control drum VTS. Mode 4 is DMX mode and controls lights, and so forth...

DvlsAdvct

2014-06-12 18:04:16

Good luck. It's a lot of work but once you get it moving it just runs itself. If you get comfortable with it I can walk you through a more streamlined process using only translators.