change midi channel on button press

eddev

2011-11-12 16:32:21

Hi there, this is a simple question I know but I'm not getting anywhere fast trying to figure it out.

Here's what I want to do: press a button on my MIDI controller (a Livid Instruments DIY controller), which will do two things
1. In ableton live, turn on a chain of effects of instruments in a rack, turning off the currently selected chain (there will be two or more chains per rack).
2. In Bomes, when that button is pressed, some selected controllers on my controller will change midi channel, so that I can map controls on channel 1 for one chain in Live, and channel 2 on another rack. Of the 60 or so controllers on my controller, which are set by default at channel 1, I will only want to reassign midi channel on about 10 controls.

I've got as far as having one preset select the next preset as an outgoing action. A note on event from a button turns on a preset which changed the midi channel of a controller but leaves other data the same, but I don't know how to reverse that. I basically want the button to act like a toggle - if there are two options, A and B, with A currently selected, a button press will change to B. Press the button again and it will return to B.

How do I get one button press to change a few presets at the same time, and how do I get it to reverse the command (A-B, B-A etc.)?

Any hints greatly appreciated...

Thanks

-ed.

florian

2011-11-17 12:36:06

Hi eddev,

many questions! Some hints:

1) to execute multiple actions with one incoming action, use multiple translator entries with the same Incoming Action.
Create a translator (Incoming + the first Outgoing action). test it. Then duplicate it and replace the Outgoing action with the second Outgoing action to be executed. Since they have the same incoming action, they will both be executed when triggered.

2) MIDI channel mapping, this can be done simplest in a static way:

Code: Select all

Incoming: B0 01 pp
Outgoing: B1 01 pp
This will map controller CC01 from MIDI channel 1 to MIDI channel 2.
Check "swallow" if you use the MIDI Router so that the original message (on channel 1) is not routed.

3) toggles
The advanced way is to use a global variable (e.g. "ga") to 1 in a rule to switch a toggle, and reset it to 0 to untoggle.
Most often, however, it is sufficient and easier to use different presets and activate/deactivate them. E.g.:

Code: Select all

PRESET 0: "No channel mapping"
Translator 0: toggle with CC 02 (activate other)
Incoming: MIDI B0 02 7F
Outgoing: Activate Preset "Channel Mapping"

Translator 1: toggle with CC 02 (deactivate this)
Incoming: MIDI B0 02 7F
Outgoing: Deactivate This Preset

Translator 2: pass through CC 1
Incoming: B0 01 pp
Outgoing: B0 01 pp

PRESET 1: "No channel mapping"
Translator 0: toggle with CC 02 (activate other)
Incoming: MIDI B0 02 7F
Outgoing: Activate Preset "No channel Mapping"

Translator 1: toggle with CC 02 (deactivate this)
Incoming: MIDI B0 02 7F
Outgoing: Deactivate This Preset

Translator 2: Channel map CC 1
Incoming: B0 01 pp
Outgoing: B1 01 pp
Hopes this helps you some!
Florian

eddev

2011-11-17 14:16:45

Nice one Florian, much appreciated - I think that should solve it. I presume I can have multiple translators to change midi channel for many different CC's per preset? I'll try it out this evening anyway.

Cheers

florian

2011-11-17 15:11:33

yes, you can add as many translators as you want for different CC's to be translated.
Also, you can translate all CC's with one translator:

Code: Select all

Incoming: MIDI B0 qq pp
Outgoing: MIDI B1 qq pp
Translate all controllers from channel 1 to channel 2.

Or use rules to restrict qq...

Florian