As covered in the Dynamic X-Control and X-OSC assignments topic in the Addendum section of the manual, it's possible to create dynamic assignments for X-Controls and X-OSCs by using Macros. However, that approach only works for one X-Control or X-OSC at a time. If you wanted to have multiple layers of functionality for a variety of X-Controls or X-OSCs that you can switch between via a set of mode selection buttons, that approach won't work very well. But, it could if we leverage the power of User Actions.
I've created a User Action that does that called XMODE. To use it, close Live, download _user_actions.zip (1.22 KB), unzip it, place the folder it contains (_user_actions) in Live's MIDI Remote Scripts directory and relaunch Live. Note that if you already have a _user_actions folder in Live's MIDI Remote Scripts directory, just copy the file named XModeAction.py from the folder you downloaded and place it in your existing _user_actions folder.
Here's where you'll find Live's MIDI Remote Scripts directory:
On Windows: ProgramData\Ableton\Live x\Resources\MIDI Remote Scripts
On OS X, go to Applications, find Live.app or Ableton Live x.app, Control-click or right click on it and select Show Package Contents and then go to: Contents/App-Resources/MIDI Remote Scripts
Note that this approach will work just as well for X-OSCs, but here I'll just describe how to do it for X-Controls. In X-Controls.txt, first define the buttons you'll be using for selecting modes. You can define as many as you like. For example:
mode_1_button = note, 1, 8, 0, 127, xmode 1 mode_2_button = note, 1, 9, 0, 127, xmode 2 mode_3_button = note, 1, 10, 0, 127, xmode 3 So, mode_1_button will trigger xmode with a value of 1 to select mode 1, mode_2_button will trigger xmode with a value of 2 to select mode 2 add so on.
Next, define the X-Controls you want to have multiple layers of functionality. Each should look something like this:
b1 = note, 1, 0, 0, 127, $b1$ So, b1 will trigger the Macro named $b1$. To keep things simple, the name of the X-Control and name of the Macro it triggers should be the same and should both be of the form bx where x is in any whole number.
Note that the User Action I created will work for up to 99 X-Controls. If you want to use more than that, in the _user_actions folder, open the file named XModeAction.py, find the line that reads:
For each X-Control, you'll define one Macro with the same name as the X-Control and then one Macro for each mode. For example, for 3 modes, your Macros would look something like this:
$b1_mode_1$ = mute $b1_mode_2$ = solo $b1_mode_3$ = arm $b1$ = $b1_mode_1$ The naming scheme here is important. Above are the names we would use for the Macros related to the X-Control named b1. These define that $b1$ will be assigned to $b1_mode_1$ by default and when mode_1_button is pressed, to $b1_mode_2$ when mode_2_button is pressed and $b1_mode_3$ when mode_3_button is pressed.
Post by cliffhanger on Apr 10, 2019 17:57:44 GMT -5
Would/ Could midi output values of MidiActions store their last value when switching between modes ?
(Thanks so much for adding this functionality, which I'd been meaning to request for a while & for many uses.)
One use would be to convert my Beatstep into the multi-program controller I thought it was when I bought it..it seems the knobs transmit their previous value EVEN when switched to a different program with different CC assignments. It seems there is NO memory to store the knob values of each program .
So I wondered if I could use this new MODES functionality to build "the internals " of my own truly Multi-program BeatStep controller : so using the physical knobs & buttons of the Beatstep as my X-controls with each Mode assigning an array of ClyphX pro midi actions . However to overcome the same seeming limitation of the original it would need ClyphX to store the midi values in each array to avoid parameter jumps when switching between MODES. Is this possible currently or could it be added to the MODES functionality for X-Control > Midiaction assignments ? thanks .
Sorry, I'm not entirely sure what you're looking for here. Can you give me a bit more info? If the knobs in question could result in parameter jumps though, that would typically mean that they send absolute values and so couldn't be properly used as X-Controls. You'd use the bindings accessory for those. In that case, the knobs would be sent the proper value any time the parameter they were bound to changed.
Post by cliffhanger on Apr 11, 2019 10:20:33 GMT -5
sorry for lack of clarity - I was hoping to improve multi - BANK midi note/cc output of BeatStep , so sending ClyphX Midi Action midi output data to control midi hardware ( rather than bindings) . You are supposed to be able to assign different parameters to e.g knob1 in the 16 different banks , but ( at least with absolute values as you deduced ) , switching banks & turning knob 1 produces a jump from previous value in previous bank . As a user also of Novation hardware I know the firmware includes value storage & pickup algorithms for each template so you can switch between them without parameter jumps . I was hoping the new MODE functionality would or could ? have last value storage & pickup functionality included for the midi values . I hope the explanation is clearer , & it could be possible ?
Not sure how you're using knobs as X-Controls to send Midi Actions. Anyhow, you could use Midi Racks for that instead and use the binding accessory to bind your knobs to the macros of those Midi Racks. In that case, Live would handle takeover.
Also, you wouldn't switch between banks on the controller. Instead, you'd set up some buttons as X-Controls to trigger BIND actions to bind your knobs to different Midi Racks.
If that isn't clear enough, please create another thread on the topic as it's a bit different than the topic of this thread.
Post by rickywander on Jul 24, 2019 8:52:45 GMT -5
For shure I have a lack of knodledge about Clyphx, I am trying to improve. :-) Hope this question make sense.
Is it possible to trigger an XMode from an already used for binding XClip instead of a button?
I would like to recall some bindings and XModes at the same time by pushing just one button.
I am buildin a MultiFX with store/recall preset and morphing function. I'll try here to explain the way I am building it.
In my project right now I am using only bindings but, as I need to trigger some Actions from XClips with the newly binded Knobs, I inserted into the project a MAX device which turns controls into Xclip playing status. I would like a more "elegant" solution and dont want to use such a Max device.
Let'assume that I have four button 1-2-3-4. and 4 knobs in my controller. Let's also assume that my Multi Fx has 16 exposed parameter (2 banks of 8 each). Button 1 and 2 goes up and down the 4 possible binding (4 bindings x 4 Knobs, total 16 remoteable parameters). At the same time the button 3 and 4 (also binded) will remote the preset up and down scrolling of the choosen Fx (presets are all Snaps on certain tracks) with the use of a Max device which turn controls into Xclips playing status.
I cannot use only Xmode for all the tasks because I am using OSC external display to show the binded effect on Touch OSC which is fantastic.
If you want I could attach the project itself if this will not take to you too much time to you to open it and check.
I'm not sure that I follow what you're asking. In general though, the macros that you set up for use with XMODE can trigger any actions you want including BIND actions. Would that suit what you're looking to do here?