AZSlow

AZ Controller plug-in for Cakewalk SONAR => Discussions => Topic started by: Victor on July 01, 2019, 01:42:34 AM

Title: How to switch the mapping of ACT dynamically in AZ COntroller
Post by: Victor on July 01, 2019, 01:42:34 AM

Hi,

I'm learning your plugin.

I'm using a Behringer X-Touch Compact/Sonar 22.8.r0.b29/AZ Controller Version 0.5.r6.b380

I managed to map the volume sliders/pan/solo/mute/rec.arm even Send Vol/Pan/Enable/Pre-post for the selected track also with feedback for the motorized faders and encoder rings.

The problem I have is making AZ Controller work with ACT. I read a lot of posts/tutorials on your website but I could not find the answer.

I have been able to map "hardcoded" some rotaries to one plugin like this:

In the Logical Control for that encoder I have in Action List

Action configuration=ACT / ACT Type=Rotary,15 (I found the value 15 as Rotary for the control i want to map in the ACT TAB)
Action configuration=Value/Direct/Linear

The same for other 3 encoders, the only difference is the rotary number I have taken from the ACT TAB, so that I can map other controls.

This works wonderful but of course when I change to another plugin this assignment stays fix, so I have the same assignment for the other plugin as well.

My question is : How can I have a dynamic configuration, so that when I put the focus on another plugin, the mapping also changes?

How can I define different mappings for different plugins and also a mapping for the Tracks(Volume/Pan...etc) that does not conflict with the mapping of the plugins?

You said in this post that this is possible.

http://www.azslow.com/index.php/topic,300.0.html

Thanks in advance for your help.


Title: Re: How to switch the mapping of ACT dynamically in AZ COntroller
Post by: azslow3 on July 01, 2019, 09:57:46 AM
Dynamic Mapping is dynamic by its definition, so it controls currently focused plug-in.
The plug-in which is in focus you can see in the "Overview" tab, it should change when you change the focus (you can click on FX/ProChannel/Synth for that or use focus changing Actions, that works with FX GUI closed). If you do not see the mapping is switched on focus, check you do not have "ACT Lock" activated (Function action in AZ Controller). You can also assign "ACT Lock toggle" to some button.

ACT Dynamic mapping is 2 ways mapping. You map some control to ACT parameter, f.e. ACT R15. But you can map ACT R15 to any parameter of particular plug-in, once that plug-in is active that mapping will be used. The second mapping is called "ACT Learn" in Cakewalk, the first is fixed in AZ Controller preset.
Please start ACT Learning from scratch, after removing all XML is %appdata%\Cakewalk\ACT Data. And use "AZ ACT Fix" for backups/cleanups (or at least manually backup XML files after learning new plug-in).

To switch between Dynamic Map and normal parameters (Volume, Send, etc.) you need to use Software States and Conditions. Check "ACT MIDI Explained" Shift button definition for the explanation, as an example you can use "Startup preset" (do not forget to save your current preset before loading/generating other!).
Title: Re: How to switch the mapping of ACT dynamically in AZ COntroller
Post by: Victor on July 01, 2019, 03:39:36 PM
Hi,

Thank you very much for your answer.

ACT MIDI Controller in Sonar(Cakewalk) is crap. This is why I switched to your plugin.

I was hoping not to have anything to do with AMC anymore and use entirely you software which is extremely reliable and flexible.

The second mapping is called "ACT Learn" in Cakewalk

But form what I understand from your information, your plugin does not handle the switching of the mapping all by itself, but relies on information stored in the genericpluginparams.xml and sonaract.xml from  %appdata%\Cakewalk\ACT Data.

After many trial and errors I found a solution which hopefully excludes Sonar from the process. Please correct me if I'm wrong.

1. Clean %appdata%\Cakewalk\ACT Data.(as you said)
2. Start Sonar(Cakewalk), create a project and insert some plugins. This will create the necessary entries in the 2 above mentioned files that later can be edited with "AZ ACT Fix".
3. Start "AZ ACT Fix", select in the second combo-box "AZ Controller". The list of the inserted plugins should be on the left side.
4. Select one plugin from the left and configure with the software which from the exposed controls of the plugin will be Knobs/Sliders/Switches and also the order you want to map it on your control surface.
5. Save and Exit
6. Load the created project in Sonar(Cakewalk)
7. In AZ Controller, for each hardware control that has a Logic attached to it, define in the Logical Control the following Action configuration List:

a. Action configuration=ACT, ACT Type=Rotary or Slider or Switch depending on the control on the surface and the number is the number of the ACT Rotors/Slider/Switch you see in the ACT TAB once you have clicked on an opened plugin. It is the same order you have defined with the "AZ ACT Fix" utility. Normally Slider 1 from your console will go to ACT/Slider/1, Encoder 1 from your console will go to ACT/Rotary/1  a.s.o.

b.  Action configuration=value/Direct/Linear

If you have a surface which supports feedback(motorized faders, encoder rings etc), you need to define the feedback so:
c. Action configuration=Monitor/Monitor parameter value/Ultra/priority 1
d. Switch to Feedback TAB, search in the combobox for your controller::Parameter Value Monitor
Action configuration=MIDI/<Use Ctrl MIDI>, value=Value

Now when you shift the focus from one plugin to another, the controls on the surface will reflect that and control the plugin in focus. If you have feedback, the faders will jump to the position of the controls in the newly selected plugin.


With this approach, there is no need to instantiate the ACT MIDI Controller or to try to define some mapping using it. I assume Sonar(Cakewalk) will read the genericpluginparams.xml and sonaract.xml files and tell AZ Controller which plugin has the focus and what is the mapping. And there are no bugs in that part of reading the files and telling AZ Controller the mapping, as there are in defining the 2 files using AMC.

The first test I have done with 2 plugins have proven successful with this method. Maybe someone else finds this useful. The main thing is: no ACT MIDI Controller involved at all :)

Title: Re: How to switch the mapping of ACT dynamically in AZ COntroller
Post by: azslow3 on July 01, 2019, 05:08:16 PM
There are several confusing terms...
"ACT":
a) the name of Cakewalk API for controllers, in that definition AZ Controller is ACT plug-in (!).
b) "Cakewalk ACT MIDI" one of the ACT plug-ins, written by Cakewalk. It is not crap, just quite limited.
c) Dynamic Plug-in Mapping part of ACT API is called "ACT" at many places. Dynamic Plug-in Mapping learning button is labeled as "ACT", the folder with maps called "ACT Data". Related action in AZ Controller is also called "ACT".

An advise to read "ACT MIDI Explained" is not an advise to real "Cakewalk ACT MIDI" documentation, but by documentation http://www.azslow.com/index.php/topic,107.0.html.
It explains in details how you can re-build "Cakewalk ACT MIDI" functionality as a preset for AZ Controller. You have asked how to switch from controlling plug-ins to strip parameters,
there you can learn how that can be done.

!!! Do not run "AZ ACT Fix" while Cakewalk is running!!! They will "fight" accessing the same files.

Yes, you can define the whole mapping in "AZ ACT Fix". But it is more convenient to "ACT Learn" them inside Cakewalk, using the device on in "ACT" tab of AZ Controller (the later is a bit buggy with CbB, it no longer updates the mapping after learning, you will have to switch plug-in in focus... I guess something was changed on Cakewalk side, it was working in older Sonar) the result is the same.

One comment on your actions list (d). When parameter is not available, MIDI Action <value> does not work, since the value is unknown. you can add (after d):
(e) Last action: failed - Send MIDI 0.
 So, if Send Value was unsuccessful, this action (with condition) will send "0". F.e. fader will move to zero when there is no related track/parameter, the same for encoder ring.

Not sure you have implemented that: Compact faders are touch sensitive. You can define touch controls using "Touch" action (specifying corresponding Fader control). Do not forget to define "Release", with "Note:off" condition. And check "Value" Action for the fader, it should have "Manual touch" option.
That allows overwrite automations in Touch mode.