Author Topic: Cakewalk ACT MIDI Controller Explained. Only $40, for short time!  (Read 42023 times)

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
About money first. You have 2 options (it is nice to have an option):
  • you can PM me, and then transfer me the money
  • you can visit next shop and get some good wine, may be cheese as well

Why so? In the first case you will read till the end since you have paid for it. In the second case you will read till the end because you can enjoy good wine during that time.

In case you have not understood my Russian humor, that was a joke! The rest is serious, I promise  ;)

This post is about my own AZ Controller and about Cakewalk ACT MIDI Controller. Once you  finish reading, you understand how both are working.
For this tutorial, I recommend to have both AZ (AZC) and ACT MIDI (AMC) plug-ins configured as Control Surfaces in your SONAR. AMC is normally installed with Sonar. Be sure not to use the same controls for both! Lets cleanup presets so you see the same picture as me:
  • Save current AMC settings in preset: type "Current" in "Presets:" box and click "Save" (Disk like) button.
  • Switch to Options tab of AMC and press "Defaults" and "Clear MIDI Learn".
  • Replace "Current" with "AZ" in the presets box and press "Save" again. Use the preset for this tutorial and reload the "Current" for other work.
Switch to AZC window. Before you click "Reset configuration" in the Options Tab, you can try to cleanup manually:
  • Switch to AZC "Logic" tab. For each item in the "Logical Control", select the first action in the Actions list and press "Delete" button till the list is empty. So, at the end you should have no defined Actions in any Control. You can check that by selecting some Logical Control and then using cursor navigation keys (on your normal keyboard) to quickly go throw the whole list
  • Switch to AZC "Hardware" tab. For each context (so for each context of each hardware control) click on "Detach" and "Delete" buttons for corresponding "Logical Control" (if attached) and then on "Delete context" button for the context itself. If "Delete context" is not enabled, you should set all Hardware states conditions to "Any" first. The context name is blank once there are no Hardware states assigned to it.
  • Still in the "Hardware" tab, go throw all "Logical controls" (there still can be some "Detached") and "Delete" them
  • Switch to AZC "Options" tab. Press on all "Delete" buttons until they are grayed.
If you still have something inside AZC after all that, you was not careful. Recheck starting from the "Logic" tab. But you can always just press select "Reset" to cleanup everything.

Save that (empty) configuration under "AZ" preset for use with this tutorial.

  • 9.4.2015 - parametric shifts/strip types are used in encoders definition. That has reduced the number of actions from 25 down to 10.

Continued in the next post...
« Last Edit: June 08, 2016, 03:27:08 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #1 on: June 07, 2014, 07:01:49 PM »
Hardware configuration
Hardware configuration in ACT MIDI Controller (AMC) is preconfigured. Easy?! Not really. The hardware configuration exists and it is fixed. That is why it is not "Cakewalk Generic Surface" (which is generic in that respect).

AMC assumes the following hardware configuration: 8 rotors, 8 sliders and 9 buttons.

You can see "Shift Bx" in the interface and also "Bank" switch for all control types. Both are internal software switches inside plug-in. "Shift-Bx" is just the command "Bx" executes when used with "Shift", the button is still "Bx". The same is true for different "Banks", you can not assign separate control let say for "S3 Bank2", it is still "S3".

Buttons for AMC.
Physical Buttons which produce Note or Control Change (CC) events once you press them can be used. For first 8 buttons only the first (press) event is used. Warning: at least in version delivered with X1,  when some button triggers "Note Off" event, this event is "leaking" to your MIDI recording, do not be surprised or configure your controlling buttons to use CC and not Note. Theoretically, any other MIDI codes (even SysEx) should work for buttons. But practically Program Change (PC), while can be successfully learned, is not working (bug? the source code is published now, you can try to fix it).

One (9th) button is special. The "Shift" button. It should produce an event when it is depressed, and that event is used (to "Unshift"). If not all you physical buttons have that property, reserve the one which can for that function. In case no of your buttons can produce "Off" events, you can not use "Shift-B" row of AMC and so you loose one half of assignable Logical command controls.

As a Button you can also use Pads (velocity is ignored), but if you try to use your rotors/sliders, they will "press" that button many times per second. That is not what you want.

Sliders and Rotors for AMC
The difference is logical only. So you can use 8 rotors and 8 sliders, 16 rotors, 16 sliders, etc. The value is used, so the information sent should be recognizable by the plug-in. Most natural event type to configure is Control Change (CC).

Names for your controls.
You can rename all controls by clicking on the name (R1,S3,B3...etc). But in this tutorial I use unchanged names.

Map what you have to what AMC assume
If you have 9 buttons (from which at least one produce on/off events) and the sum of your rotors and sliders is 16, you have perfect match. But what to do if you have more or less controls then expected?

Some controllers have "mode" switches. In different modes (presets, banks) the same physical control generate different MIDI events. Plug-in can see only these events, and since there are different it assumes controls are also different. In such case from plug-in point of view you can have more controls than directly physically touchable.

In case you have less buttons then 9 it is not problem at all. Each button action is assignable individually, so you can put required actions on what you really have. If you use AMC for ACT, small number of sliders/rotors is also not a problem. You can reassign actions on ACT level. For console mode there is only one problem: AMC assumes you are able to control exactly 8 channels per time. "Next Track Bank" and "Previous Track Bank" commands will move WAI by 8. Also you will have less sends controls in "Channel Strip" Rotaries mode. As you can see, AMC is still quite useful in this case.

But what to do in case you have more controls? One instance of AMC can not use more. No way. You can put more instances of AMC as separate Control Surfaces and assign the same Controller to the input. Unfortunately, current implementation of AMC is not ready for that. There are many bugs, instances share some information (and they should not). I recommend an instance of Cakewalk Generic Surface (CGS) plug-in to use the rest of your hardware controls.

CGS is completely different plug-in, so that works fine. CGS has close to zero logic, each control does exactly one operation (no banks, context, mode except "use/do not use ACT"). It can control Track parameters (but not buses), ACT and transport. For tracks it has more options than AMC and you can configure the width of your Track Bank (unlike fixed to 8 in AMC).

If your controller support Mackie compatible mode, you better use it for console.

But since you are on this page, you already know - an alternative exists!

Controls in AZC.
AZC makes absolutely no assumption how many controls you have. Just after installation you have Zero. But you can configure as many as you have, to control what you want and the way you want.

For this tutorial I configure 4 buttons and 4 rotors (my MPK Mini has no sliders). I skip Hardware States configuration in this tutorial, so I assume all these controls are physical and there is no Hardware Mode Switches used on your controller (see Documentation section for more information).

Freedom is complicated. I do not want to go into philosophical aspects there, but the freedom is not for free. You are forced to work more. The same with plug-ins.
  • Switch to the AZC "Options" tab. You will see "Hardware Controls" section. "<New control>" is selected (since you should have no controls at the moment).
  • Enter "R4" just right of it. Change type from "Unknown" to "Rotary". Press "Save" button in the same row (not in other!)
  • Select "<New control>" in the first box (where you see "R4" now)
  • Repeat (2) and (3) for R3,R2,R1,B4,B3,B2 and B1. For buttons set the type to "Pad".

I have entered controls in the reverse order for a reason. The last you enter will be the first in the list. And this order can not be changed. That is the way AZC provides. The order is not important so it does not limit what you can do. Some important functionality is still not there, so "User friendliness" stays very low in my TODO list. Sorry.

Continued in the next post...
« Last Edit: July 07, 2014, 03:00:39 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #2 on: June 08, 2014, 10:42:18 AM »
MIDI Learn
Hardware Controller send MIDI events when you operate it's Controls. Till now both plug-ins only have an idea how many Hardware Controls we have. ACT MIDI Controller (AMC) always assume that number is fixed and we have defined some controls for AZ Controller (AZC).

Now we are going to say plug-ins which control send which MIDI sequence.

Warning: Create new Project in sonar before you touch any controls. Till the configuration complete, MIDI input from your controller is interpreted by SONAR directly. That can unexpectedly change some hard to find parameters.

For the reason I have explained before, we better check that the event types are going to be recognized. There are several ways to see what each Control sends. But we have AZC opened, lets use the simplest option. Press/turn/slide controls you are going to use and watch the upper part of AZC.

If you see (as I do) something like "Ch:4 CC:7 Value:38" or may be "Ch:4 N:72 Value: 127 OFF" for every control, everything is ok. If you see "Ch:4 PC:5", "Unrecognized ...", or nothing is changing there at all, you should find some way to reconfigure your controller (by switching hardware mode or using special software). If you see "Ch:4 N:..." for buttons, I recommend change it to "CC" if possible.

For the "Shift" button, check it generates On and Off events. Press the button and keep it pressed, check what is reported.
Now take your finger off. Does you see some other event? If yes, the button is suitable to use for Shift. Try with other buttons otherwise. For example: I see "Ch:4 N:72 Value: 83 ON" when the button is pressed and "Ch:4 N72 Value: 127 OFF" when depressed. Other example: "Ch:4 CC:1 Value:21" when pressed and "Ch:4 CC:1 Value:0" when depressed. Both buttons can be used as Shift. "Ch:4 PC:2" and it stay the same when depressed. Such button can not be used as Shift (or any other button in AMC since PC is not supported).

Do not mix that with "ACT Learn". It is completely different function.

For the "shift":
  • Press "Shift learn..." button. All assignments for other controls are no longer displayed, indicating "Shift learn" state.
  • Press the button you want use as the Shift on your controller. If the assignments are shown again, the plug-in has learned your shift.

For all other controls:
  • Click inside lower colored boxed (there are 2) under the control name (for example, on box under "RTZ" for button "B1", on the box with "Off" for "B4").
  • You should see "MIDI Learn..." for that control
  • Press/turn/move your hardware control. If "MIDI Learn..." disappear, the plug-in has learned the control.

If "MIDI Learn..." is still there (no assignments displayed for Shift learn) after engaging the control, you have some problem to fix. Check that your controller is still specified as "In Port" for the Plug-in. SONAR can loose that setting under some conditions (for example if the controller was not ready during SONAR startup). If your controller is also specified for AZC, check that the control still produce the event. If still no luck, check documentation, official forum, CAKEWALK support. This post is too short for all (known) possible problems.

When you have learned something by mistake, simply relearn it correctly. In case you have learned some AMC control you do not want to use, you can clean the assignments. For example you have only 4 sliders, and you have learned you slider "1" as "S5" by mistake. After learning "S1", you can see that your first slider controls "S1" and "S5" simultaneously, bad idea for most cases. "Ctrl" click (Keep Control key pressed and Click with mouse) on the box you use for MIDI Learn. Enter "00" into "Status:" and "00" into "Nubmer". Click "Ok".

You can ask AMC "forget" everything learned by pressing "Clear MIDI Learn" in the "Options" tab.

It can happened that you have learned 2 different controls to 2 different slots, but you see that any of them change parameters in both slots. In this case both your physical control trigger the same MIDI event, for this (and any other) plug-in these event are not distinguishable. From plug-ins perspective you have only one control. Reconfigure your controller such a way that each physical control produce different MIDI Event.

You should have all controls learned by AMC by now. We proceed with AZC.

It is a bit more complicated here. AZC understand that several physical controls can producing the same MIDI Event and one physical control can produce many different Events. We are not going to use that here, but that is why we can not just assign things with one mouse click.

We should not assign the same MIDI event to both plug-ins. Please find some way to avoid that. You can use 2 separate controllers or 2 different "Programs/Presets" of your hardware controller with different settings for each control. If your hardware controller is so simple that it has only one preset and not many controls, to compare AMC with AZC side by side you are forced to switch "In Port" in SONAR Control Surface configuration every time you switch between plug-ins. If there is no choice (you have no other MIDI input devices in the system), you can install some "MIDI Loopback" driver (search the Internet, some are free).

For AZC "B1" please select the button which generate Note On/Off or CC On/Off. But if you do not have such button, do not worry. You will see possible solutions later.

  • Switch to AZC "Hardware" tab
  • Press the button you want to be B1 on your controller
  • Select "B1" in the "Hardware Control" section
  • Select "<New context>" right of it
  • Select "<New control>" in the "Logical Control" section
  • Press the physical button again. Is "Logical Control" changed? If yes, this MIDI event is already used by some other control (you should see which one in the "Last MIDI Event", after the event information). You should not use it again in this tutorial.
  • If the event is not yet in use, "Attach" and "Assign MIDI" buttons should be enabled by now, press them both (in either sequence). "Attach" connects Logical Control to Hardware Control Context (and so to the Hardware Control). By "Assign MIDI" the Logical Control learn the MIDI Event (the last event registered)

Repeat the procedure for each Hardware Control ("B1".."B4", "R1".."R4").

When you touch any of your learned Hardware Control, you should see its name in the Last MIDI Event, also Hardware and Logic tabs switch to the corresponding Hardware/Logical Control.

Continued in the next post...
« Last Edit: June 10, 2014, 10:49:56 AM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #3 on: June 08, 2014, 04:35:48 PM »
The Logic of Control Surface plug-ins.
Till that point ACT MIDI Controller (AMC) and AZ Controller (AZC) have learned what we send from our Hardware Controller. When we press "Button 1", they know that we have pressed "Button 1". But we have not discussed what to do once it is pressed.

When you move Volume slider on Analog Mixer, you physically change the volume on that strip. But when you move some slider on your DAW Hardware Controller, it just send a message: "I am moved". It is up to software to decide which parameter should be changed, that can be volume, pan, threshold for compressor, etc. When your are using some plug-in with completely predefined logic (like Mackie), you can just learn what it does. You can not change the behavior, more or less like with the Analog Mixer. With ACT MIDI Controller, Cakewalk Generic Surface and AZ Controller you define what should be changed (or use some preset, defined by other).

The logic can be quite simple. You can just say "When I move Slider 1, I want to change the volume of the First track", "When I press Button 2 I want Return current Time cursor to Zero (RTZ)". Cakewalk Generic Surface does just that.

But even in tiny project with 1-2 tracks, 2-3 FXes on each, plus some buses, you then need big studio Hardware Controller with hundreds of controls to have everything "in the hand" directly. Some hardware controllers have build in switches to change what each control trigger (these switches are called banks, programs, presets, modes, etc.). For example my MPK Mini, while it has only 8 pads and 8 rotors = 16 physical controls, can be seen from the software as having 8x4 + 8x4x2x3 = 224 different controls! But that is still not sufficient for normal project.

Plug-ins can implement additional "switches",banks,shifts, etc. in software to extend the number of controllable parameters. For example, AMC using 9+8+8=25 input controls can trigger up to 8x2x4x2+8x4x2+8x4x3 = 288 actions. I think you have already notices this article is "biased".... yes, AZ Controller can control virtually unlimited number of parameters using just 2 physical controls!

DAW can "help" as well. Cakewalk has defined ACT. SONAR provides some useful information about its current status to plug-ins.

Let see how available in SONAR and plug-ins "multiplicators" work:
  • Bank and shift work the same way as in hardware controller. If plug-in think that "current bank is bank 2" it executes one command, but if "current bank is bank 3" it executes another one. The event which trigger that it the same. AMC has 4 banks for sliders, rotors and buttons. The "current" bank can be different for each category. Shift affect buttons only.
  • AMC also has "Rotaries Mode", which can be seen as yet another "Bank" switch with 2 banks
  • ACT. When some VST(like) plug-in (not MIDI Controller plug-in!) has the focus, its parameters are exposed throw separately configurable (individually for each VST) mapping to the virtual set of controls "ACT R1", "ACT B1", etc. Only one such VST can be controlled per time with such approach. In AMC we can define either some control participate in ACT (when ACT enabled) or not. So that is yet another "Bank" switch with 2 positions.
  • "Current strip". SONAR expose current selected strip number to plug-in, so plug-in can make use of it. Again, only one strip in time can be controlled with that approach.
  • Strip ranges. We can declare that we control only several strips simultaneously (8 in AMC), but we can switch the type of strips we control ("Control Group" in AMC) and move this "block" across our strips ("Next/Previous Track Bank" in AMC). In SONAR that technology is called WAI ("Where Am I").
  • In AZC you can defined any number of build-in bank sets with any number of banks (called "Software States", to make it distinguishable from "Hardware State", corresponding to hardware banks/shifts/programs/modes of your controller, and "Banks" in MIDI ). SONAR expose current Context (Console, Track or Plugin) and that can be used in AZC (AMC knows that, but uses it for "ACT follows context" option only).

Continued in the next post...

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #4 on: June 08, 2014, 05:29:12 PM »
What plug-in can do
SONAR has special API (a set of functions and definitions) plug-in can use to change something inside SONAR or your project.
You can find my interpretation in the post or (in case you understand IDL) in the source code provided by Cakewalk (they have publish the latest version on github recently).

In short, plug-in can:
  • read/set strip parameters
  • read/set values of ACT parameters
  • ask to execute commands defined by SONAR
  • execute several additional actions which does not fit well into other categories (switch ACT mode for example)

If plug-in has some logic (as explained before), several Actions are not reaching SONAR at all and serve plug-in internal purpose.

How AMC shows what it will do
In AMC you can see what is going to happened once you use some control. In "Controllers" tab under each Control name there are 2 boxes: the first indicate the parameter to change or the command to execute and the second display the current value for parameter in question (if make sense). Long strings are "compressed" and sometimes hard to read. Most such strings are command names. In the "Options" tab the third combo for "Buttons:" list all possible commands without the "compression". It is normally more or less clear which command has compressed form you see in the "Controllers" tab.

To see what will be done if some bank is activated you should switch to that bank first, either with controls or by "Bank" combos. The same is true for "ACT Enable" mode.

Note: "Bank" combo near "Shift B1" specify the bank for all buttons, also not shifted. In default configuration not shifted buttons have the same actions in all 4 banks. But that can be changed.

How AZC shows what it will do
Unlike AMC, you can define arbitrary complicated Actions list on each event. And it is hard to predict the result. The only way to find that is actually execute the Action list and see what happens. That can keep your computer busy all the time just to show what can happened, when configured wrong.

AZC has "Internal Display" for the purpose. To make use of it, there should be definitions of Monitors (Parameter name and value). That is an advanced topic, please read "Using AZ Controller Internal Display" to understand it.

You can see all defined action lists in the "Logic" tab. After the list is executed, you can see the result in the "Overview" tab. Note that only the last list is shown. For example, you want to see the result of "Shift + B1" action. You press "Shift", then press "B1" and then depress "Shift". And you will see only "Shift->Off", since the last event was "Shift depress"! Keep Shift pressed to see what "B1 press" has done.

Continued in the next post...
« Last Edit: April 19, 2018, 07:08:36 AM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #5 on: June 08, 2014, 07:59:50 PM »
AMC default actions and how to change them
Create new project. Make 15 sound tracks and 2 buses. Add "Channel Tools" and "LP-64 EQ" to FX of the first track. Also add 2 sends from the first track to 2 buses. Add some material to the first track (you can record silence).

"Active Controller Technology" section is used to either enable or disable ACT for AMC. When ACT is enabled, all controls not explicitly excluded from ACT will work as ACT parameters. Click on the "LP-64 EQ" in FX chain of your first track. Enable ACT in the plug-in (check "Enable" box). The color of all controls used for ACT will change. Please note that for all control types it can be Bank dependent.

By default, all Rotors, Sliders and the last 4 Shift-Buttons in all 4 banks are used for ACT. Not shifted buttons and first 4 shifted buttons in all 4 banks are excluded from ACT.

You can exclude control from ACT in the "Options" tab. For each button and shifted button you can do this individually. Switch to the options tab. In "Buttons" select "Bank 1", "Shift B5" and set check into "Exclude this button from ACT". Change back to the "Controllers" tab and select "Bank 1" for buttons. Now you should see "Shift B5" from "Bank 1" is no longer in ACT. Include it into ACT again (go back to the "Options" tab and uncheck  "Exclude..." for "Buttons":"Bank 1":"Shift B5").

For rotors and sliders you do not have "fine control", you can only say either the whole Bank is excluded or included. Go to the "Options" tab and for "Rotaries":"Bank1" check "Exclude this bank from ACT". You can now see in the "Controllers" tab it is really excluded. Revert the change (in the "Options" tab) so we have default settings again.

In ACT section there is "Lock" check. If you check it while some VST is controlled, ACT will continue to control the same plug-in even after you change context or open another VST. Try that (check "Lock" and open "Channel Tools", as you can see the Surface is still controlling "LP-64 EQ"). Return to default (unchecked) position afterwards.

In the "Options" tab there is "ACT follows context" option. When checked, ACT mode will be used only when the plug-in has focus. As soon as you change the focus, for example select some track in the track view, ACT will no longer work (in case it was not "Lock"ed before). If that option is unset, you will always stay in ACT mode when it is "Enable"d (after you select some VST for the first time). Try that (while in ACT mode, unset the option and click on some track, ACT mode will not disappear), return to default (checked) afterwards.

How ACT works.
There is a map between each plug-in parameters and a virtual set of controls. This map is global for SONAR (so, the same for AMC, AZC and all other). You can see this map on AZC "ACT" tab or in XML files. Select "LP-64 EQ" and go to AZC "ACT" tab. You can change which controllers displayed by the "Range" combo. "Rotors", "Sliders" and "Buttons" are not your Hardware Controls (like "Slider 1") and not Bank/Shift multiplied Logical Controls (like "Bank 3:Slider 1") in AMC. That are just "ACT Rotor 1", "ACT Slider 5", etc.

But that is not all. When Surface Plug-in want to use ACT, it declare which ACT controls it has. So "My ACT Rotor 5", "My ACT Slider 2" etc.  That controls are mapped by SONAR to the mapping of "ACT Rotor X", "ACT Button Y".

Each Surface Plug-in has its own way to map between Logical Controls and "My" ACT Controls. Here is the way AMC is using.
It looks for used for ACT banks of "Rotors" and assign them to "My ACT Rotors" in sequence. Let say we use "Bank 1" and "Bank 3" for ACT (and do not use "Bank 2" and "Bank 4" for ACT). Then "Bank1:Rotor1" is mapped to "My ACT Rotor 1", "Bank1:Rotor2" is mapped to "My ACT Rotor 2",..."Bank1:Rotor8". And then (watch out!) "Bank3:Rotor1" is mapped to "My ACT Rotor 9" up to "Bank3:Rotor8" mapped to "My ACT Rotor 16".

The same is done for mapping "Bank X Slider Y" to "My ACT Slider Z".

With Buttons it is more complicated, each button can be included/excluded separately, so AMC scan ACT enabled Buttons individually in "Bank1 B", then in "Bank 1 ShiftB", then in "Bank2 B", then in "Bank2 ShiftB" and so up to "Bank4 Shift B8".

So, in default configuration, we have: "My ACT Rotor 1"...."My ACT Rotor 32", "My ACT Slider 1"..."My ACT Slider 32" and "My ACT Button 1"..."My ACT Button 16". For example, "Bank3:Shift B7" is "My ACT Button 11". Do you understand why?

Mapping between "My ACT" and "ACT" (is done by SONAR). In my installation, all 83 parameters of "LP-64 EQ" are mapped to ACT Rotors in SONAR (you can have different mapping, check AZC "ACT" tab). So, first 32 "ACT Rotors" are mapped directly to 32 "My ACT Rotors". But there is no more rotors reported by AMC! But there are some sliders... Next 32 "ACT Rotors" are mapped to 32 "My ACT Sliders" (for example, "ACT Rotor 33" is "My ACT Slider 1" (which is "Bank1:S1", do you remember?). But there are still some "ACT Rotors" left, so they are mapped to "My ACT Buttons". And so, "ACT Rotor 67" is mapped to "My ACT Button 3", which is "Bank1: Shift B7".

I want to repeat that: "Hardware Button B7" when in "Bank1" and "Shift" is pressed, trigger action for "Bank1:B7" which is "My ACT Button 3" which is "ACT Rotor 67" which is "EQ 16 Q" parameter of "LP-64 EQ". Nice, is not it?

But we are not done yet. Let say we have decided to exclude "Sliders Bank2" from ACT. What you will see for "Bank1: ShiftB7" then? "ACT Rotor 59"! Really, 8 controls have gone and 67-8=59. But that means that our mapping is shifted now. If you have learned that your B7 controlling "EQ 16 Q", you can forget it now. You should start remembering what is what from scratch. Is it not nightmare?

In AZC things are simpler. It claims you always have 100 ACT rotors, 100 ACT sliders and 100 ACT buttons. You can directly configure "My button B2 controls ACT Slider 31" and that will not depend on other controls configuration. Also "100" is just arbitrary number, I can change it to "500" if required (that continuously takes some CPU cycles and the impact is not yet measured, that is why it is not "1000" now).

To understand how to change ACT mapping, please read this post.

Continued in the next post...
« Last Edit: April 19, 2018, 07:09:14 AM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #6 on: June 09, 2014, 01:34:02 AM »
AMC Rotaries and Sliders
I have written everything I want about ACT in AMC, so from now on please disable ACT (remove check form ACT "Enable").

I have already mentioned "Strip Groups" before. AMC always control a block of exactly 8 strips (in sequence). That can be either 8 Tracks, 8 Buses or 8 Mains (not 4 tracks and 4 buses simultaneously). Current strip type is set by "Control Group" position in "Controllers" Tab. Strip type can be switched either in the window or by "Previous/Next Group" commands assigned to some buttons ("B6" and "Bank1: Shift B6" in default configuration).

If you have more then 8 tracks, you can use "Previous/Next Track Bank" commands ("Bank1: Shift B7" and "Bank1: Shift B8" in default configuration) to shift controlled block to the Pevious/Next 8 Tracks. There are also "Previous/Next Track" commands (not assigned in default configuration) to shift the block just by one Track. Please note that AMC will not allow you shift the block "outside" available tracks. So if you have 15 tracks and currently control first 8, "Next Track Bank" will start from the Track 8 and not from Track 9. That can be inconvenient if you have more than 16 tracks but the number can not be divided by 8, for example 17 tracks since when you have reached the limit, going back will not return you to the same tracks (in example with 17 tracks, you go "right" with 1-8,9-16,10-17 but then move "left" with 10-17,2-9,1-8).

There are no such commands for Buses and Mains. If you have less then 8 sliders, "Track Bank" command are useless as well (they will skip tracks you could not control). But you can always use WAI to set the first  strip in block (for all types). You do that right clicking on WAI color bar of the strip (from the left side of tracks in track view, at the bottom in console).

One bank of Strips and Rotors (in "Multi Channel" "Rotaries Mode") control the same parameter for strips in the current block. Which one can be specified in the "Options" tab. Select the "Bank" and set "Parameter" for that bank to change the default. The third parameter there is the "Capture Mode" (it is also per type/per bank specific). Jump will just set the current value you have on your rotor/slider. It can really produce badly "jumps" in volume, be careful. In "Match" mode you first have to match current parameter value with your control, and only than you start to change the parameter. I remember it was not working reliably for me before, but it works pretty good in my test now. So, "Match" mode can be recommended, especially for Volume.

The list of possible parameters is not very long: you can control Volume, Pan, Input Trim (Gain) as well as Volume and Pan for each from 8 Sends. Default assignments are: Volume (Track,Sends 1-3) for Slider Banks and Pan (Track, Sends 1-3) for Rotor Banks. I do not know how to set  Pan to the Center exactly, it is always "a bit" left or right when my Rotor is in the middle.

Rotaries can be switched to the "Channel Strip" mode. In this mode, all Rotaries control parameters for the Current Channel : Pan, Send1 Volume,Send1 Pan, Send2 Volume, Send2 Pan ... Send 4 Volume. That is fixed (not configurable) and not Bank depended. The mode can be switched by "Rotaries Mode" command ("B5" in default configuration).

Since I have mentioned Current Strip. That is the strip you select in Console or Track View. You can also use "Previous/Next Selected Track" commands to move it ("Bank 2 Shift B7" and "Bank 2 Shift B8" in the default configuration). The commands are working for Tracks only (not for Buses or Mains).

In the "Options" tab there is an interesting option "Select highlights track". When it is set, the current track in SONAR and the current track in AMC are the same. But when not set, they are not the same. "Move Selected Track" commands will move only AMC internal current track and you can control sends on one track while selecting other tracks in SONAR. But I have not found the command to change that option quickly.

There are several parameters for the Current Track which you can control with Buttons.

AMC Buttons
Buttons can trigger 2 types of command: Internal commands and SONAR Commands. In the "Options" tab you can define what each Shifted or not Button in each Bank should do. Select the "Bank", the Button (by name) and make a choice from the list of possible commands.

SONAR Commands are defined by sonar (names and results) and are common for all plug-ins (you can find the same set in AZC). SONAR Commands are all commands from "File | New" downwards. What all that commands do you can find in SONAR documentation, so I am not going to describe them here (that can make this thread as long as SONAR User Guide).

Other commands (before "File | New") are AMC specific:
  • ACT Enable and ACT Lock are equivalents of check boxes with the same names, described in the ACT section before.
  • "ACT Learn" enters ACT learning mode. See my other posts for information how to use it reliable. Since you are forced to use you mouse for learning (to touch controls inside plug-ins), you can switch that mode in the ACT Doc module. I do not know for what it is good as separate Controller Button
  • Rotaries mode, Move Track and Track Bank, Strip Groups and Moving Selected Track was explained before
  • Several next commands toggle switches for Selected Track (Mute, Solo, Rec., Automations Read/Write)
  • Next group switch Banks. Separately or combined for different control types
  • Property Page commands Open/Close/Toggle ACM property window. The window displays current assignments, but it takes significant screen space. Fast way to show/hide it without mouse can be practical
  • The last group Select, Open and Close Plug-ins. The focus also change ACT. Please note that these commands are working across strips, "Next" plug-in after the last one in FX chain will move focus to the first plug-in in the next strip.

There are still some buttons in the default configuration which I have not mentioned. But since you know everything about possible commands, I will stop there.

Thats it for ACT MIDI Controller. It is time for step by step guide how to "simulate" it inside AZ Controller.

Continued in the next post...
« Last Edit: June 09, 2014, 11:32:11 AM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #7 on: June 09, 2014, 01:37:55 AM »
The Logic of AZC.
At the beginning I have mentioned Software Banks, Shifts, Switches and you could see that the functionality is near the same. In AZC they all are represented by named Software States. I have not used word "Bank" because it means something fixed in purpose. AZC Software States can be used broader: as Banks, as a Shift, as a Temporary Variable and even as a Track Name.

Software States are organized in named Software State Sets. And there is always one "Current" State in each Set.

Since I am not going to touch Hardware States (and Sets) in this tutorial, I will skip the word "Software" to reduce the text. Every time I mention State or Set, I mean Software State or Software State Set.

Here is the list of all such Sets we are going to define to mimic AMC:
  • "Bank":"1","2","3","4". I will not create separate banks for different control types to keep the text short. So every time we switch Bank, we switch it for all controls (we have defined Buttons and Rotors, but I will use also "Shift Rotor" in place of Sliders)
  • "Strip":"Track","Bus","Main". For "Control Group" in AMC
  • "Rotaries":"Multi","Current". For "Rotaries Mode".
  • "ACT":"Disabled","Enabled". For "ACT Enable" switch.
  • "Shift":"Off","On". For "Shift" implementation.
  • "Touched":"No","Yes". We are short in buttons. I will use the "Shift" button as a Next Bank switch in case I press Shift without touching any other control.

Important note: the last entered State in Set will be the first in the list (as with Hardware Controls) and you can not change that later. Also the last entered State (so, the first in the list) is the Default State, which is set on AZC startup or preset load.

We start with "Bank" Set:
  • Switch to the "Options" tab in AZC
  • We are going to work in Software States section only, do not mix with Hardware States
  • Select "<New set>" in the first combo
  • Type "Bank" in the edit box and click "Save".
  • "Bank" will be selected and you see "Default" as the only State in this set.
  • Replace "Default" with "4" and click "Save"
  • Keeping "Bank" Set selected, select "<New state>" in the next combo (where you see "4" now).
  • Enter "3" and click "Save".
  • Repeat last 2 steps to define "2" and then "1"
  • If you pull down second combo now, you should see "<Edit set>", "<New state>", "1","2","3","4". Exactly in that order
  • If you typed something wrong, you can edit the Set name by selecting "<Edit set>" and any State name by selecting this state and replacing the name. Do not forget "Save" after editing each Set/State name.
  • "Delete" button delete currently selected State. If that State is the only State is the Set, the Set will be removed (Set should always have at least one State)

Please define the rest of required Sets/States I have mentioned. Watch out the order! You should put states in the reverse order, so the first state is the first in the list. For example for the "Shift" Set, first put "On" (as replacement for "Default") and then "Off" (we want "Off" is default for "Shift").

Once you have defined all required Sets switch to the "Overview" tab. In the "Current Software State" section, if you pull down the first combo (the Set list) you will see all Sets with current States.

You can see that the Current State in each Set is the first you have entered. But that is not future Default one. Once we created each Set, its current State was set to the only defined State. We have added more States, but the current was not changed. If you save and then load preset, you will see default states.

But let us change it manually. Select some Set, for example "Shift". Its current state is "On". Select "Off" from the second (States) combo. The current State is immediately changed. We will use that way to change Current States till we define our controls doing that.

Continued in the next post...
« Last Edit: June 09, 2014, 10:10:12 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #8 on: June 09, 2014, 10:23:06 PM »
The Shift in AZC
We are going to define what to do when you press "Shift" button. Let say it is our "B1". In case your button generates Note On/Off events (please read throw if not, I will not go so deep for other variants described later):
  • Change to the "Logic" tab.
  • Press your button again (just to be sure). You should see its name in the Logical Control. We have not used Hardware Contexts, so every Hardware Control has exactly one Logical Control defined.
  • You should see empty "Action list" now. Press "New" 4 times. You should see 4 "Undefined" actions in the list.
  • Created too much Actions? Select one and press "Delete".
  • You can select an Action and then move it in the list with "Move Up" and "Move Down" buttons (the effect is not really visible now since all our Actions are "Undefined"). Remember, Actions are executed in sequence. Later Action can use the results of previous actions (you will see later).
  • Select the First Action. Change it type from "Undefined" to "Set State" (in the "Action Configuration" section). Change the Set to "Touched" (first combo) and the "set to" combo to "No" (do that in the "Action configuration" section, you can also see "Touched" in the "Action Conditions" section). Every time we press "Shift", "Touched" will be set to "No". In case something else is touched while we are pressing Shift, it should set "Touched" to "Yes" and we can detect that. You can think that it will be set to "No" before we can check, but it is not true. Click on the first combo in the "Action conditions" section. The last line should be "Note (On)". "Note" is one of the internal Sets, if the last event was "Note Off" AZC set "Note" to "Off" before executing any actions. "Note (On)" is a condition to execute the Action. It is interpreted as "Execute that Action in case the Current state of "Note" is "On". And only in case it is true.
  • Select the Second Action. Change the type to "Set State", the Set  to "Shift" and "set to" to "On". That means: "If "Note" is "On", set "Shift" to "On"" ( "Note (On)" condition is in every Action by default).
  • Select the Third Action. In the "Action conditions" select "Note" and change condition to "Off" (next combo). Now you should see "'Note:off'-Undefined" in the action list. I just suppress  "Note:on" because it is default, but "Note:off" is important!
  • Change the action to "Set state" "Shift" "Off" (I hope you have already learned how). You now see 'Note:off' - Shift -> 'Off'.
  • Select the Forth action. Set "Action Conditions" to "Note (Off)" and  then "Touched (No)". Set the Action to "Set State" "Bank" "<Next state>" and check that "Loop" is checked. Now you should get "'Touched:No' 'Note:off' - Next Bank (loop)"

That was the whole definition of our "Shift". Let revise what this Action list does:
  • If "Note" is "On" (we have pressed the button), set "Touched" to "No". I repeat, if you do not see "Note:off" that means there is "Note:on" conditions. Always.
  • If "Note" is "On", set "Shift" to "On"
  • If "Note" is "Off" (we depressed the button), set "Shift" to "Off"
  • If "Touched" is "No" AND "Note" is "Off", select next State in "Bank", looping from the last State to the First.

The effect is the following. When we press "Shift", that is remembered (in "Shift" Set), if something else is touched (it could use "Shift" or not, does not matter), it indicates that in the "Touched" Set. When we depress "Shift", we switch to the next bank in case (and only in case) nothing was "Touched".

When you have 2 or more Conditions, the meaning is always "AND". The Action is executed only in case ALL conditions specified are met. If at least one condition fails, the action is not executed.

You could notice while selecting a State for Condition that you can select  "<Any>" (for all sets except "Note"). The meaning is "if "Set" is in Any state...". But each Set always has some Current State. So that Condition is always satisfied. That is default condition for each set you have not specified explicitly. Selecting "<Any>" you effectively Remove the Set from the condition list.

The Shift with CC
In case your "B1" generates CC Value/CC 0 (as your see in the Last Event Monitor) you still can use the same Action list. Just check the type of "B1" hardware control is the "Pad" since for Rotors and Sliders, value 0 has no special meaning.

In case "B1" generates CC Value/CC X, so X is different from 0, the Action list should be different. We no longer can use "Note: on/off" internal Set, since "CC 81" and "CC X" are the same event, just the value is different. So we should "convert" value into state. Possible solution:
  • - "Set state" "Shift" "On" . With any CC, "Note" is always "On", so this Action is always executed
  • "Value":"17" (for X = 17)  - "Set state" "Shift" "Off". Internal Set "Value" map current Event value to States. CC Button send "CC 17" when depressed, so we write "In case the value is 17, we have depressed the shift key". Note that Actions are executed in sequence. This Action overwrites what previous actions has set.
  • "Shift":"On" - "Set state" "Touched" "Off". The same as for Note, but the condition is different.
  • "Touched":"Off", "Shift":"Off" - "Set state" "Bank" "<Next>" (loop). Bank switching.

If Shift is not possible, we can define CapsLock
If your button in question generate no "Key off" event at all, we can not use it as a Shift. But we can define CapsLock! We loose Bank switching functionality in this case, but we can use dedicated Button for it. The definition of CapsLock is simple:
  • "Set state" "Shift" "<Next state>" (loop)
Our "Shift" is a Set with 2 States ("On" and "Off"), so "<Next state>" just switch between them, like with "Bank".

Please check your "Shift"/"CapsLock" now (use the "Overview" tab). You should see that the "Bank" is switching every time we depress our shift.
Or "Shift" is switching every time we press "CapsLock". To check pure Shift functionality, we need to define some other control first.

In case that was the first program in your life, congratulations! Yes, that was a program. And we are going to write more of them (and more complicated).

May be you think now: "That was too complicated... In AMC I just had to click on "Shift learn" to do the same". But do not forget the following:
  • In AMC you could not see either some button is good for Shift or not. And in case some button does not work, you just have "bad luck". You can find such case in the official forum.
  • In AMC the Shift button does the Shift function only. When you press the Shift, you normally want use something shifted. In AZC we have "saved" one button by double function. In case you do not have many, that can be valuable.
  • Someone has decided there should be no Shifted Rotors and Sliders in AMC. Here you decide yourself.
  • We can define "fall back" to CapsLock in case normal Shift does not work

Continued in the next post...
« Last Edit: July 07, 2014, 03:10:28 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #9 on: June 10, 2014, 04:42:15 PM »
Rotaries in AZC
We have learned 4 rotor. We have 4 banks. We want "Shift Rotor" function as a "Slider" (so 4 banks of sliders). We have ACT mode. We have Rotaries mode. And we have Strip Type in addition. Lets count how many function each our Rotor is going to perform:
4(banks for rotors)*3(Strip types)+4(banks for sliders)*3(Strip types)+4(banks for ACT)*2(Rotaries and Strips)+1(Strip Rotarie mode, as in AMC without banks)*3(Strip types, AMC has it for Tracks only) = 35 different functions! And we have to define them all since the plug-in can not read our mind.

In AZC, Strip parameters are not set in one go. You first define which Strip to use. If parameter is not for Strip itself (Send,FX) you need additional definition. Finally you define how to set this parameter. So, for each function we are going to define 3 actions:
  • "Strip" or "ACT" to select the Strip or ACT parameter
  • "Send" to select Send parameter (if we want that)
  • "Value" to set selected parameter to the value of our Hardware Control.

Since we are always going to use "Value" at the end, we can save time by using only one at the end (in case we do not want different mapping for different cases, and we do not in this tutorial).

Please touch your rotor "R1" and switch to the "Logic" tab. You should see "R1" in the "Logical Control" combo and empty Action list. If you remember "AZ logic", when you add something it comes first. We can move Actions, but that can be time consuming in case the list is long. We start from the last action (create it with "New" button):
  • Change the Action Type from "Undefined" to "Value". You can also change mapping style from "Direct" ("Jump" in AMC) to "Catch" ("Match" in AMC) or to the "Instant". Select "Timeout touch" (it works better than "Auto" for automations, SONAR feature). We always want to set some value, so this Action has no conditions.

Lets define what we do in ACT mode:
  • Add new Action. Change the Action type to "ACT".
  • For ACT we always should add "ACT:Enabled" condition. We also add "Shift:Off" (means Rotaries) conditions
  • Rotor 1, ACT mode in default AMC means "My ACT Rotor 1+(Bank*N)". So let set "ACT Type" to "Rotary" and "ID:" to 1. We change "<no shift>" to "Bank" and multiplier from "x1" to "x4". We have 4 rotors in bank, so we want control ACT R1 in the first bank, ACT R5 in the second, and then ACT R9 and ACT R13. The settings are going to do the trick. Out "Bank 1" has position 0 (states positions are calculated from ZERO!). So, it will be 1+0*4 = 1. "Bank 2" has position 1, so 1+1*4=5. And so on.
  • Now you should see "'Shift:Off'  'ACT:Enabled' - ACT R1 + (Bank)*4". The first 4 actions complete (4 banks for rotors!), 30 to go...
  • Keeping this action selected, press "Copy" and then "Paste". You get it duplicated.
  • Change "Shift" to "On". I want Rotors with "Shift:on" function like Sliders, so change ACT Type to "Slider".

We have now all 8 combinations for ACT mode defined. Let continue with Rotaries in Channel mode:
  • Add new Action.
  • We have 3 conditions this time: 'Shift:off','ACT:Disabled','Rotaries:Current'. We could skip 'ACT', in case this action is executed in ACT mode, it will be overwritten by ACT Actions (before "Value" change the parameter). But that adds clarity.
  • In AMC that should control Pan of the Current track. Select Action type "Strip", change Strip type from "Track" to "Strip" (that is our Software Set!), Reference "<Current>", and parameter "Pan". You should get "Selected Strip Pan" in the Action list.
  • For "Strip" "Main" it looks like  a problem. Main has no "Pan" and has no "Current" Main. So the control is going to control nothing. But we have "Main"/"Strip"/"Pan". SONAR does not support that, so it does not work.  Not really a problem.

35-11=24 functions to go...
  • All other actions work with the same Strip, which depends from the WAI position and the Strip type we want. We can select the strip once and then change required parameter depending on conditions.
  • Add new Action. Add 'ACT':'Disabled', 'Rotaries':'Multi' conditions to it.  We should set "Strip" with parameters "Strip" (our Software state):"<First in WAI>":"+0":"Volume". "<First in WAI>" means the first track in WAI block. WAI block in AMC always has 8 strips. In AZC that is just a reference point. You can say "<first in WAI>" "-1" to control one Strip before this block. We will set visible "width" of WAI later, when I explain Button commands (I will define "Next/Previous Strip Bank" there). The Parameter selected in this Action is the "default", we are going to overwrite it in next Actions.
  • Since we are going to overwrite the parameter, our next Actions should appear after the strip selection. We define them first and move strip selection to the top later.
  • Copy Strip selection Action. Add 'Bank':'1' and 'Shift':'Off' conditions. So as conditions we have: 'Shift':'Off', 'ACT: Disabled', 'Rotaries: Multi', 'Bank: 1'. We define "R1 in Bank 1, Multi mode, not ACT".
  • In default AMC configuration, it is Pan for the First Strip in Group. So for "Strip" Action we set "<No>":"Pan". Remember, we assume the Strip is already preselected
  • We define other Banks. Copy Bank 1 Action and remove (!) Bank condition.
  • We should control "Send Pan" there, so we use action "Send" instead of "Strip". Change Action  to "Send -1 + Bank Pan". Select "Send" as the Action Type, Send number  "-1", change "<no shift>" to "Bank". Set Parameter "Pan".
  • We could define "Banks" 2,3 and 4 explicitly. But we use State shifting to get the desired effect in one Action instead of 3. For example, "Bank 2" should control Send 1. So, we just subtract 1 (so "-1"), and we get it. Easy? Not really... In AZC Sends and Shifts are counted from zero. It will take Position of "Bank 2", which is 1 (second from zero!), add "-1" resulting Send 0 (which is Send 1 in SONAR). Software State Names are used in AZC only for Named Strip lookups and complicated MIDI sends, which are not covered in this tutorial. In all other cases, current state position is used. So, we can rename our Bank "1" to "First" (literally) or "Erste" but the logic will continue to work as expected (without translator from English or German into numbers).
  • In Bank 1, this action will select not existing "Send -1". But that is ok since for this bank we select Strip Pan explicitly after.
  • We are done with Rotaries. We define Sliders now.
  • Copy Action for "Rotaries: Multi", "Bank 1".
  • For Sliders, we need "Shift:On" and we remove "Rotaries" (set it to "<Any>") since that state should not influence Sliders. We have now 'Shift:On','ACT:Disabled','Bank:1'.
  • Select "Volume" as parameter (S1 in Bank 1 control Strip volume).
  • Copy Send action for rotaries, apply the same changes to conditions and  Replace "Pan" with "Volume".
  • It is time to move our global strip selection. Select "WAI Strip Volume" action and move it to the top (with "Move Up" button).
  • Add one more Action without conditions. Configure as "Set state" "Touched" "Yes". Do you remember why we need it? For our "Shift"/"Bank switch" Button to work correctly.

Done! Save your preset (you do not want to repeat that procedure... for other Rotaries we will just copy the whole list). Test it now for every single function, look at "Overview" to see what is going or (do not forget not depress "Shift" too early). Correct mistakes, I hope you are able to do that now. You can switch "ACT" and "Strip" states on the "Overview" page till we define buttons for that. To "debug", add "Undefined" Action without conditions, but set "Final" flag for it. The processing always stop on that Action, so you can move it around to localize the problem.

10 Actions in the list. But we have defined 35 different parameters we can control with this one rotor. Not so bad I think (original tutorial had 25 there since there was no parametric strip type and bank shifts. Still not bad but I prefer shorter version).

Continued in the next post...
« Last Edit: April 09, 2015, 06:33:02 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #10 on: June 10, 2014, 08:37:24 PM »
Other Rotaries in AZC
Change to the "Logic" tab. Turn your Rotor 2. And then again Rotor 1. We want to see Action List of Rotor 1 but without any Action selected. Press "Copy". Turn Rotor 2. Press "Paste". Your Rotor 2 should be a copy of your Rotor 1 now.

We should change:
  • In the Actions with "WAI", set "WAI"+1 (second strip in WAI)
  • Copy Action with "Rotaries:Current" Condition. "Move down" to the same position
  • In the lower instance, change Action to "Send +0 Volume". Previous action still needed to define which strip to use.
  • Adopt R and S numbers in ACT Actions. Just add 1 to each (so S2 and R2)

Copy this second Rotor, for Rotor 3. Do the same modifications. You will already have "extra" action for "Rotaries:Current" taken from Rotor 2. Here you set "Send +1 Pan". Then copy Rotor 3 to Rotor 4. All the same again, except "Send +1 Volume" for our Channel Mode.

We are done with Rotaries. But before we can check that everything works fine, we better define buttons.

Buttons in AZC.

We start with "Next/Previous Strip Bank" commands for our B2 (in all Banks, add "Bank:1" condition for all Actions if you want it in one bank only). I hope you no longer need "step by step" text. That is for "Track Bank" switching only (as in AMC), duplicate it (for the same B2) and replace Track with Bus everywhere to get "Bus Bank" switch as well (and "Main" bank switch, if you have many Mains). I list in the order you should see in the Action List, you should enter in the revers order (or move to the correct position afterwards).
  • - "Set state" "Touched" "Yes"
  • 'Shift:On' 'Strip:Track'  - "Strip" "Track" "<First in WAI>" -4 Volume
  • 'Shift:Off' 'Strip:Track'  - "Strip" "Track" "<First in WAI>" +7 Volume
  • 'Shift:Off' 'Strip:Track' 'Selection:Valid' - "Strip" "Track" "<First in WAI>" +4 Volume
  • 'Shift:Off' 'Strip:Track' 'Selection:Invalid' - "Strip" "Track" "<Last>" -3 Volume
  • 'Strip:Track' 'Selection:Invalid' - "Strip" "Track" "<First>" 0 Volume
  • 'Strip:Track' - "WAI" "Track(old)" "Bus(old)" "Master(old)" Final
Several features we have not used yet: 
  • "WAI" command start WAI at the currently selected Strip with specified width (in our reduced AMC configuration, we have width 4). But we keep the width unchanged, we just move WAI here.
  • "Final" means stop there in case the Action was executed (conditions was ok) and the Action itself was successful (Action specific).
  • "Initial" for WAI means that the width will be unconditionally set on preset load. I will set in in strip mode switching WAI actions
  • "Selection" internal set is "Valid" when selected Strip and Parameter are valid

What this "program" does:
  • For "Shift-B2" we want "Previous Track Bank". We try select new starting Track (current WAI - 4)
  • For "B2" we want "Next Track Bank". We first check that the "next" block completely fit inside existing tracks. The last track in the next block is Current WAI+4+3
  • If that last track is valid, we select normal starting track (WAI + 4)
  • If "full" block does not fit (Action before, in case it is called, can not produce 'Invalid' selection, +4 is less then +7), we set WAI to the last 4 tracks (last one "-3", you can check on fingers it is not "-4")
  • If still no valid selection (for both commands!), start with Track 1 (First +0)
  • Finally set WAI

Two tips:
  • To copy complete Action list into the same Control (handy there, to support Buses), copy it first to some other control (B3) and from there back into the original Control.
  • To change block moving such way that "Previous" always return to the same strips as before, also for the last strips, just remove the Actions with "+7" and "-3".

Now we define B3, all Banks to switch "ACT" and "Strip mode" (when Shifted):
  • - "Set state" "Touched" "Yes"
  • 'Shift:off' - "Set state" "ACT" "Next state" loop
  • 'Shift:on' - "Set state" "Strip" "Next state" loop
  • 'Shift:on' 'Strip:Main' - "WAI" "Track(0)" "Bus(0)" "Master(4)"
  • 'Shift:on' 'Strip:Bus' - "WAI" "Track(0)" "Bus(4)" "Master(0)"
  • 'Shift:on' 'Strip:Track' - "WAI" "Track(4)" "Bus(0)" "Master(0)" initial

Only 2 first Actions are doing something useful. The last 3 are hiding WAI indicator for Strip Types other then the current. Do not forget the "initial" flag, when we load the preset we want to see 4 tracks WAI (since initial "Strip"  State is "Track").

And finally B4, all Banks to "Play" and "Channel mode" (when Shifted):
  • - "Set state" "Touched" "Yes"
  • 'Shift:off' - "Command" "Play/Stop"
  • 'Shift:on' - "Set state" "Rotaries" "Next state" loop

You can test that everything works as expected now. We have finished our reduced AMC configuration.

May be you want modify something, no problem, that is now your Surface Logic. I prefer "Bank switch" by dedicated Rotary with "Set state":"Bank":"<Map MIDI value>", I can see which bank I have on the surface that way (and can use more that 4). You can also prefer just fix one Slider/Rotor for Main and exclude Main from "Strip" types. For using ACT, please check so named thread in the documentation, at least for me the default mapping is not acceptable.

Continued in the next post...
« Last Edit: April 09, 2015, 06:44:55 PM by azslow3 »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: ACT MIDI Controller Explained. Only $40, for short time!
« Reply #11 on: June 10, 2014, 11:15:05 PM »
Final words.

If you have managed to come here, your bottle of wine is empty...

I hope you have found something interesting in this text.

Please report any bugs with AZ Controller in case you use it. Any comments, corrections and ideas are welcome.


Offline Linzmeister

  • Jr. Member
  • **
  • Posts: 89
Re: Cakewalk ACT MIDI Controller Explained. Only $40, for short time!
« Reply #12 on: April 19, 2018, 03:04:29 AM »
Hi Alexy,

in reply #4, there is a broken link

What plug-in can do
You can find my interpretation in the post or (in case you understand IDL) in the source code provided by Cakewalk (they have publish the latest version on github recently).


I think it should be:

In reply #5 there is another broken link at the end..

Feel free to delete my comment after it is fixed.
« Last Edit: April 19, 2018, 04:33:25 AM by Linzmeister »

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1703
Re: Cakewalk ACT MIDI Controller Explained. Only $40, for short time!
« Reply #13 on: April 19, 2018, 07:10:10 AM »