AZSlow

General => Control Surfaces/ACT => Topic started by: babelfish on October 26, 2017, 10:06:52 PM

Title: ACT - more than 8 rotaries
Post by: babelfish on October 26, 2017, 10:06:52 PM
Hi,

I'm new to midi based automation, but I have experience some experience with programming and you, AZSlow, seem to be the go to guy so maybe you (or anyone else listening) can help me!

Here's my setup: Sonar X2, Arturia MiniLab keyboard, with 16 rotaries and 8 buttons.

Here's my goal: Control a Parameteric 4 band EQ plugin using ACT, where 12 of my 16 rotaries control each of the Freq, Gain, Q of the eq, and the buttons control e.g. HPF switches

Here's what I have managed to do: Right click on ACT to map a rotary to some of those parameters

Here's my problem: Some of the rotaries appear in Bank 1 of R1-8 and some in Bank 2, but for convenience I would like to be able to map both banks at the same time so that my 16 rotaries can approximate the layout of the 4 bands as you might see in the plugin. It seems that I can only have one bank active at a time.

Possible solutions:
- Can I map two banks at once?
- As I understand it, the process consists of 2 mappings: the plugin to the ACT window, and the ACT window to my midi controller, which is mapped by the midi learn feature. Can I change the plugin parameter to ACT mapping, so that I can choose which 8 are on the same bank, if I can't map two banks at once?
- Would your software help in this situation if neither of these things are possible?

Somewhat separately: Can I automate the pro-channel controls? I have managed to map mixer pan/faders, and also plugins if I open them up, but I haven't seen anything to indicate I could automate the generic channel EQ if I so choose.
Title: Re: ACT - more than 8 rotaries
Post by: azslow3 on October 26, 2017, 10:58:17 PM
Welcome to the forum!

Quote
Here's my goal: Control a Parameteric 4 band EQ plugin using ACT, where 12 of my 16 rotaries control each of the Freq, Gain, Q of the eq, and the buttons control e.g. HPF switches
Possible, not only with Dynamic Map, but also directly (so you can have some other plug-in in focus and even controlling it from another device, while your MiniLab is fixed as focused track EQ).

Quote
Here's what I have managed to do: Right click on ACT to map a rotary to some of those parameters
From that and the following, you are using "Cakewalk ACT MIDI" plug-in.

Quote
Here's my problem: Some of the rotaries appear in Bank 1 of R1-8 and some in Bank 2, but for convenience I would like to be able to map both banks at the same time so that my 16 rotaries can approximate the layout of the 4 bands as you might see in the plugin. It seems that I can only have one bank active at a time.

Possible solutions:
- Can I map two banks at once?
In your case, a kind of... ACT MIDI plug-in support 8 knobs (not more). But it also support 8 faders. So you can map upper row of encoders as knobs and lower row and faders. 16 controls in parallel.

Quote
- As I understand it, the process consists of 2 mappings: the plugin to the ACT window, and the ACT window to my midi controller, which is mapped by the midi learn feature. Can I change the plugin parameter to ACT mapping, so that I can choose which 8 are on the same bank, if I can't map two banks at once?
Taking the first answer in account, that is no longer relevant. But you are right at first part, you map encoders to controls in ACT MIDI, which in turn are mapped to parameters, taking banks intro account. So, with 2 banks you can control 32 parameters. 16 per time. You will need some buttons to switch between banks.


About encoders (can be used with ACT MIDI). If you "Ctrl+Click" cell in ACT MIDI, advanced dialog appear. Here you can select encoder mode. You will need to configure MiniLab to use that (page 22 in the Arturia manual, check which from Relative 1-3 work correctly/better). With encoders, you do not need to "catch" current parameters and they will never just on first move. That is way more convenient that default absolute mode (when supported by software).

About ACT mapping. Check "AZ ACT Fix" utility and use it after every session when you have mapped something... the reason is explained there:  http://www.azslow.com/index.php/topic,297.0.html A nasty bug exists in all Sonars prior 2017.1. You ACT mapping is probably already broken, or it will be broken later.

Quote
- Would your software help in this situation if neither of these things are possible?
AZ Controller has ultimate power compare to ACT MIDI. As a consequence it is much more difficult to configure.
But for dedicated ProChannel EQ control, there is a preset: http://www.azslow.com/index.php/topic,274.msg1246.html#msg1246
It is for different device, but after "Quick start" tutorial you can understand how to re-learn controls.
If you put encoders into relative mode, you will need to modify all "Value" actions for encoders to "Endless" (may be "reversed", try "accelerated") to make them work correctly.

Quote
Somewhat separately: Can I automate the pro-channel controls? I have managed to map mixer pan/faders, and also plugins if I open them up, but I haven't seen anything to indicate I could automate the generic channel EQ if I so choose.
If you enable Write Automation for the strip ("W" button in the Track Inspector, such command can be assigned to button of MiniLab and/or keyboard shortcut), all parameters, including pro-channel EQ, are ready to write automation. Does not matter how you change them, with mouse or with controller, the change will be written.

I hope that helps.
Title: Re: ACT - more than 8 rotaries
Post by: babelfish on October 29, 2017, 09:38:18 PM
Thanks for your very detailed reply AZSlow!

As it turns out, there are some things I've learned that may be helpful to others since reading your post, so I'll state them here and you can feel free to correct me if I'm wrong.

1) ACT is really Cakewalk's API for exposing certain software controls that can then used by their own and 3rd party plugins (i.e. you, I haven't seen too many other ones) which map these ACT parameters to control surfaces.

2) Cakewalk has 2 solutions for mapping to any controller, plus a collection of specific controller mappings that is far from exhaustive. Chances are high, therefore, that you will need to use one of these two solutions: Either the ACT MIDI Plugin, or the Cakewalk Generic Control Surface.

3) If you find that you can manage to understand how to use the ACT MIDI Plugin, you are probably OK using AZSlow's plugin as well. The concepts are the same, and this tool is far more powerful. But there is one catch: if a parameter does not have an ACT mapping, you're out of luck using any of these methods.

4) You don't have to use ACT or any of the plugins to map a controller, you can also use direct automation as described previously. The drawback of this approach is that it doesn't scale nicely, because one parameter of one channel will use one control of your controller, so unless your controller itself has many clever ways of switching the midi output you will be left needing to map every parameter of every plugin of every track if you want to control everything. By comparison, the ACT method has a built in concept of context (i.e. which channel and which plugin are in focus right now) so you only have to make that plugin visible and click on it to select it, and then define just the parameter mapping of the controller to complete the control scheme. There is a plus to the direct automation method: because each parameter is mapped individually, you do not need to click on the track or plugin to change that value - the mapping is global.

Out of these options, I tried your plugin and found it works well for what I have wanted to do - I think it's a really great effort and a huge amount of thought has gone into it!

I've still got a few questions, and I was thinking that when I'm finished I'd write my own getting started guide, but just a very basic tutorial based on lessons I found by reading in between the lines but non-software people might struggle with.

My main questions now are
1) I'm using two actions for each rotary encoder: an ACT action, which selects the parameter, followed by a value which sets the value for the parameter. I'm using a MiniLab MkII, just to be clear, not the original. I'm struggling a little with the phenomenon where the value jumps when I first touch the control. So I understand the following
- My Arturia control is set to absolute, so it will send whatever value the knob last ended up as. If this is different to the current value, the value suddenly jumps to that value. My value action is using direct control, linear. It works fine once you get over the initial jump.
- I've tried a little setting my Arturia to Rel#1, which I believe makes 63/65 alternating messages that communicate the speed and direction of encoding, and then set my value action to endless. But that hasn't resulted in much luck either. It seems to get stuck in incrementing or decrementing the parameter, even when I start turning the knob the other way. Any ideas?
- Could I use the direct method, but somehow read the current value as a step before setting the value?
- I think I could also use the ribbon method, but it would stop working when I max out the absolute value being sent

2) I saw the thread about ProChannel EQ and it helped me with the concepts, but I couldn't work out where/how to load the .spp file?
Title: Re: ACT - more than 8 rotaries
Post by: azslow3 on November 01, 2017, 09:16:00 PM
Thanks for your very detailed reply AZSlow!

As it turns out, there are some things I've learned that may be helpful to others since reading your post, so I'll state them here and you can feel free to correct me if I'm wrong.

1) ACT is really Cakewalk's API for exposing certain software controls that can then used by their own and 3rd party plugins (i.e. you, I haven't seen too many other ones) which map these ACT parameters to control surfaces.
More precisely, that is an API which opens a way to control some parameters inside Sonar. It is supposed to be used for Control Surfaces, but it does not really has much to support that except giving a plug-in incoming MIDI messages (in raw format) and sending messages back to the device. 

Quote
2) Cakewalk has 2 solutions for mapping to any controller, plus a collection of specific controller mappings that is far from exhaustive. Chances are high, therefore, that you will need to use one of these two solutions: Either the ACT MIDI Plugin, or the Cakewalk Generic Control Surface.
That is correct. Till surface correctly implement Mackie Control Protocol, in that case MackieControl plug-in can be used.

Quote
3) If you find that you can manage to understand how to use the ACT MIDI Plugin, you are probably OK using AZSlow's plugin as well. The concepts are the same, and this tool is far more powerful. But there is one catch: if a parameter does not have an ACT mapping, you're out of luck using any of these methods.
AZ Controller is conceptually different from ACT MIDI. ACT MIDI works with many assumptions about the hardware in use, assuming MIDI (only) controller with limited number of controls, with only 3 types of controls (buttons, finite knobs/faders and encoders) and quite limited in possible MIDI messages used for that controls (my ACT MIDI plug-in mod extends/fix that). Only small part of ACT API is exposed. Only strait fixed logic is supported ("Shift" for buttons and 4 banks for all controls).
AZ Controller does not have all that limitations. It can work with any MIDI, subset of OSC and Game Controllers protocols. Any number of controls. Arbitrary logic. Almost complete ACT API is exposed (except surround).

Quote
4) You don't have to use ACT or any of the plugins to map a controller, you can also use direct automation as described previously. The drawback of this approach is that it doesn't scale nicely, because one parameter of one channel will use one control of your controller, so unless your controller itself has many clever ways of switching the midi output you will be left needing to map every parameter of every plugin of every track if you want to control everything. By comparison, the ACT method has a built in concept of context (i.e. which channel and which plugin are in focus right now) so you only have to make that plugin visible and click on it to select it, and then define just the parameter mapping of the controller to complete the control scheme. There is a plus to the direct automation method: because each parameter is mapped individually, you do not need to click on the track or plugin to change that value - the mapping is global.
Correct.... if I have correctly understood what you mean  ;)

Quote
Out of these options, I tried your plugin and found it works well for what I have wanted to do - I think it's a really great effort and a huge amount of thought has gone into it!
Thanks. The plug-in is several years old and in continuous development. And yes, it is internally way more complicated then any other Cakewalk Surface plug-ins...

Quote
I've still got a few questions, and I was thinking that when I'm finished I'd write my own getting started guide, but just a very basic tutorial based on lessons I found by reading in between the lines but non-software people might struggle with.
That can help new users. I understand that my tutorials and documentation are too technical in many places. Also my English is far from perfect.

Quote
My main questions now are
1) I'm using two actions for each rotary encoder: an ACT action, which selects the parameter, followed by a value which sets the value for the parameter. I'm using a MiniLab MkII, just to be clear, not the original. I'm struggling a little with the phenomenon where the value jumps when I first touch the control. So I understand the following
- My Arturia control is set to absolute, so it will send whatever value the knob last ended up as. If this is different to the current value, the value suddenly jumps to that value. My value action is using direct control, linear. It works fine once you get over the initial jump.
For "Absolute" more, in AZ Controller there are several modes: Direct (what you have tried), Catch, Instant and Step.

Quote
- I've tried a little setting my Arturia to Rel#1, which I believe makes 63/65 alternating messages that communicate the speed and direction of encoding, and then set my value action to endless. But that hasn't resulted in much luck either. It seems to get stuck in incrementing or decrementing the parameter, even when I start turning the knob the other way. Any ideas?
with 63/65, Endless should work correctly... but better select some other Rel on Arturia, so values are "1"/"64" (when you turn slowly...).

Quote
- Could I use the direct method, but somehow read the current value as a step before setting the value?
Try Catch, Instant or Step...

Quote
- I think I could also use the ribbon method, but it would stop working when I max out the absolute value being sent
Ribbon is for ribbon controllers (only).

Quote
2) I saw the thread about ProChannel EQ and it helped me with the concepts, but I couldn't work out where/how to load the .spp file?
In Sonar Utilities menu, Cakewalk Plug-in manager. My YouTube video "Installation and OSC setup" show that in details.