Author Topic: ACT  (Read 18996 times)

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1706
« on: May 29, 2014, 09:53:20 AM »
Active Controller Technology (ACT) Dynamic mapping (the last is not always mentioned...) is Cakewalk way to map between Control Surface parameters and exposed parameters of VSTs and ProChannel modules.

For general description please search the inventor documentation. There are also quite interesting links and discussions in the official forum. Here I will just mention what was hard for me to understand from other sources.

ACT mapping is between logical controls inside MIDI Controller Plugin (like AZ Controller, Generic Surface, MIDI Controller) and VST/PC parameters. The mapping is done within SONAR (not within a plug-in!). Also it is not a mapping between you Hardware Controls and something within SONAR, at least not directly. Do not underestimate the meaning of these statements.

The following list is my personal opinion, and I am not pretending to be right:
The mapping within standard SONAR controlling plug-ins is partially "hidden" from the user, making the whole technology a bit more "magical" than it really is.

ACT parameters are divided into 4 types: Unknown, Rotor, Slider and Switch. Within each type parameters are counted from 1 upwards. Each such "type"+"position" combination has some unique identifier used by all standard plug-ins. But that numbers are not relevant for users. So, skipping "Unknown", we have: Rotor1, Rotor2, Rotor3..., Slider1, Slider2, Slider3..., Switch1, Switch2, Switch 3.... Within AZ Controller I use (R1,R2,R3... S1,S2,S3..., B1,B2,B3). "Switch" is "Button" (since the first character in word "Switch" is the same as in word "Slider").

How it works?
Let say some VST expose a parameter with name "Attack". SONAR than save a kind of statement: "VST X parameter Attack is mapped to ACT slider 3". If there was no mapping before, Sonar creates default mapping using automation parameter order and some extra rules. The mapping is saved in XML files (see this topic) and can be changed using "ACT Learn".

It is up to the controller plug-in to decide which Surface Control is which ACT control at every moment. Generic Surface plug-in just assign them in sequence, using the type information you specify. So, in case you change the ACT type of your first ACT parameter, the rest is shifted (and so remapped). ACT MIDI controller use types of controls it displays, counting using Banks and so the mapping is more "stable".

In AZ Controller you directly specify which ACT Control you want to modify. Making the configuration for each control independent from other and clearing the "magic".

Also within AZ Controller's "ACT" Tab remapping is an easy task. While learned mapping is Surface (really CS plug-in) specific, you can copy the mapping using AZ ACT Fix utility.
« Last Edit: May 23, 2016, 06:09:56 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1706
« Reply #1 on: May 31, 2014, 01:48:33 PM »
How to make ACT mapping working

!!! Essential step for all cases, not only for AZ Controller !!!
You can save your time and nerves by using AZ ACT Fix utility.

Simple method: close Sonar, run AZ ACT Fix, press "Save and exit", open Sonar.
Manual method:
1) You should locate the folder  "ACT Data". The one you need is in the user directory, there is another one in the system directory to make initial setup for another Windows user. Exact location is Windows version specific, for example it can be <User>\Application Data\Cakewalk\ACT DATA. "Application Data" (or such) folder is "hidden", you do not normally see it in Windows Explorer. Use search function (inside your user folder!) to find one of files genericpluginparams.xml and sonaract.xml or try to enter the path manually. Once located, put a link on your Desktop to this folder to simplify future operation.
2) With Sonar closed, delete all files except genericpluginparams.xml from this folder, especially SONAR1.., SONAR2.., *act.xml etc files.
I repeat, this step is essential. You will be unable to normally use ACT Dynamic mapping till you do this. It can happened that it somehow works for a while, but sooner or later it will stop working. There is a post,5.0.html which explains a bit more why that is necessary.

Original way, ACT Learn
Please note that it does not work with VST3 and has other problems till you use AZ ACT Fix (you can use the Manual method, sonaract.xml use case (2) ).

Follow CakeWalk documentation for "ACT Learn". But backup mentioned folder/file every time you are convinced everything is still working. So, before any "ACT Learn" backup the file. Do the learning. Restart Sonar (!). If the mapping is still as expected, backup the result. If not, revert previous files and try again.

Note that till you use "ACT Learn" these files will stay unchanged, independent from the project.

Manual editing the XML files
Edit genericpluginparams.xml using XML editor. If you want to use normal text editor, you can pre-format the file using AZ ACT Fix. It also adds user friendly information to sonaract.xml.

Note: modifications are noticed after Sonar restart only. If you open new plug-ins or use "ACT Learn", Sonar save both files on exist. To be sure your manual modifications are not discarded, save the file when Sonar is closed.

The method is working for remapping only. That means the plug-in and its parameters should be already known for ACT. To get initial configuration for plug-in, you should in Sonar focus it at least once. Close Sonar so the information is saved.  If you have messed up with ACT Learn or editing, you could make configuration for particular plug-in unusable. In this case manually remove such plug-in section and repeat initialization (open Sonar, visit plug-in, close Sonar, open file in the editor).

In "<plugins>" section all known plug-ins are listed with there known parameters. "paramindex" is the index in the list of automate parameter (in the order you see parameters in case you create automation in Sonar). "kontroltype" is ACT control to assign, can be "knob", "slider" or "switch". "paramname", while initially really the name of that parameter, is in fact ignored during matching, parameters are matched by "paramindex" only. That is good, since FX Chains could not be controlled otherwise (while different presets for FX Chain have different parameter, FX Chain has only one common ACT mapping).  I prefer to avoid identical "paramindex" in 2 or more listed parameters inside one plug-in. It is better keep "paramnames" distinct as well, but that is not critical (and in fact not always possible since many plug-ins have several "reserved" parameters without names).

The resulting order is from top to bottom, within one control type. For example "P1 knob", "P2 slider", "P3 knob" and "P4 switch" (in that order) define two knobs (P1, P3), one slider (P2) and one switch (P4). Moving "P2 slider" to the end of the list will not change resulting configuration, while moving "P3 knob" before "P1 knob" will switch the order of knobs to (P3, P1)

With sonaract.xml there are 2 variants to choose from:
1) Zero sonaract.xml . Open it in text/xml editor and delete the content. So, it should be "empty" but exist. Sonar will not update it then.
You still can use ACT Learn (except for VST3) using workaround at the end of,5.0.html. Also note that Sonar will reformat files every time it save them (on Sonar close).

2) Keep sonaract.xml. For example if you prefer "ACT Learn" method except cases when it does not work (VST 3). Just remove relevant section for the plug-in you have mapped manually in the genericpluginparams.xml. In sonaract.xml plug-ins are not named, you can find the section by UID - long alphanumeric string before 'name="..."' in the genericpluginparams.xml. This ID is equivalent in both files.

ACTEditor from MarKo
Note the result is as with Manual method with variation (1), the editor will zero sonaract.xml. So you can not use this method in parallel with "ACT Learn".

Install Sonar ACT Editor from MarKo. It is good to have AZ Controller configured (with any, inclusive empty, preset and any Input/Output settings, set to None both in case you have no other application for AZCtrl, do NOT set In/Out to the device you use with other plug-ins).
« Last Edit: May 23, 2016, 06:17:32 PM by azslow3 »