AZSlow
AZ Controller plug-in for Cakewalk SONAR => Discussions => Topic started by: norfolkmastering on May 12, 2020, 10:19:17 AM
-
Good day Alexey
I am designing a digitally controlled analogue mixer which I want to remote control from Cakewalk via MIDI. So I will use a Cakewalk project which will mirror the external audio mixer in terms of numbers of channels and groups etc. I move a fader in Cakewalk and it controls the external mixer channel level (via a VCA). The external mixer will not have its own hardware control surface.
I hope to use the AZ Controller as the control interface. So I want to feedback Cakewalk fader positions, mutes, solo etc by MIDI which will be decoded by a PIC processor to provide the necessary control signals for my external audio mixer.
I have two questions:
1. Assuming I programme a 'dummy' external MIDI controller into AZ Controller, does Cakewalk require any basic handshaking so that it will begin to send feedback messages via MIDI? These feedback messages reflecting the current position of control elements within the Cakewalk project, e.g. faders, solo and mute status.
2. How does Cakewalk (using AZ Controller) feedback the initial status of all settings when a session is started?
Regards
Robert
-
Hello Robert,
First of all, AZ Controller was used successfully for syncing DM settings and Cakewalk project. Mostly for mirroring mixer settings into projects (to use a mixer as control surface), but also in other direction (to control mixer settings from project). Till some degree it can even control FXes (f.e. EQ) of the mixer. So you are on the right way.
It is important to have sufficient throughput, so MIDI over USB is better option than MIDI cable. Also try to prepare hardware side for heavy traffic (f.e. quickly buffer incoming messages instead of trusting your PIC will be able to do everything in time).
For your questions: the logic of initial transfer is up to you. If you program some "query - response" handshake in the mixer, AZ Controller can be instructed to delay sending feedback till the device is "online". Otherwise it assumes that you switch the mixer on before starting Cakewalk, which in general must be the case for USB-MIDI (Cakewalk does not like MIDI "hot-plug"). Finally, you can program some button (f.e. labeled "Sync") to resend all information from AZ Controller (in well build preset, that should automatically work with a single "Reset all monitors" action).
I can help you with some test preset once you define the protocol. AZ Controller supports (N)RPNs in case you want good precision for parameters, but that increase the traffic 4x times.
Finally, if networking is an option, I strongly recommend using OSC for communications. You will have less problems with programming and simpler hardware design ($1-2 ESP chips have whole hardware/software stack ready to open WLAN connection and send/receive arbitrary protocol, including OSC). AZ Controller supports OSC.
Cheers,
Alexey.
-
Hi Alexey
Thanks very much for the really useful information. I wanted to establish that it would be feasible to use the AZ Controller before I started any big design work. It does look feasible.
Your comments about OSC are interesting and I will explore that option. I have no particular reason to use MIDI as the audio mixer control system will be an entirely new design.
If I get to the next stage, I will contact you again to discuss progress and testing.
Very best regards
Robert
-
Hello again Alexey
Sorry, one more question for now:-
I have installed AZ Controller on my PC and I have it working with Cakewalk and a Nektar LX88 keyboard which has some sliders, knobs and buttons to work with. No problem so far.
I need to find some way of monitoring the feedback messages which I will configure in AZ Controller and then will be sent out via MIDI port. I mean I want to view the 'raw' MIDI messages.
I tried monitoring the outgoing MIDI port using MIDI-OX but it does not support monitoring of a MIDI port which is also being used by another application (which is strange but that's my interpretation of the error message which MIDI-OX is displaying).
Can you suggest a way to monitor the feedback messages being sent to the MIDI output port?
Regards
Robert
-
MIDI-OX is the tool to use. But you need some "MIDI loopback" to use it for monitoring, so AZ Controller -> MIDI Loopback -> MIDI-OX ( -> Nektar).
That is rarely needed in practice, just in case you want RE device with unknown protocol or to find a bug in AZ Controller...
Note that you can use checkbox "loop" in AZ Controller MIDI sending actions, the message will be visible in "Last MIDI event" then. If it is the same as assigned,
that can trigger infinite loop, so be careful with this option. I just select slave or other MIDI channel before setting "loop" for testing feedback.
Another approach is 2x AZ Controllers + MIDI loop, one instance imitate "the device" and another is normal.
Finally, to evaluate possible logic, you can use some OSC app like TouchOSC. So you construct the "surface" you want, configure AZ Controller preset and check
it really works. F.e. that changing volume in Cakewalk move corresponding control.
You will need to learn ideas behind AZ Controller "feedback" (there are tutorials and examples), but for your particular case I suggest:
1. Use (fixed) Track names in preset. You will be able to use your "Mixer" project as a template then, so adding extra normal tracks will not influence the functionality.
Using WAI or numbered tracks can be more problematic (you will need to remember to keep mixer tracks at particular place in projects).
2. If you have some mixer parameters not existing in Cakewalk track, you can define some dummy FX Chains. Map
parameters you need to FX chain parameters and rename them to whatever you need on the mixer. So you will have "dedicated channel strip" for your mixer. Plug-in
parameters will be used just to preserve values in project, since no audio is routed plug-in will not do anything. So plug-in(s) inside should be lightweight.
-
Hello Alexey
Thanks for the advice. I got it working using MIDI Loopback. So now I can read the "feedback" messages which I programme in AZ. Just tried programming one slider knob on my external controller to a track level in Cakewalk and then programmed a feedback of that track fader position to the MIDI output and can read the MIDI CCs in MIDI-OX. All good!
Yes I plan to create a fixed project template in Cakewalk to work with. Most controls (for my needs) look straightforward. Biggest challenge is to find a way to map:-
1. Cakewalk track to groups and mains routing in Cakewalk back to my (still to be designed!) digitally controlled analogue mixer.
2. Cakewalk track to aux send routing.
3. FX bypass.
Any ideas for how to 'grab' these would be welcome.
Best regards
Robert
-
Hello Robert,
Question 1. and 2. I do not understand, sorry.
3. in general there is no known way to bypass individual effects with anything else except mouse. VST3 has "Bypass" parameter which is always the first. Some VST2 have individual bypass.
Cheers,
Alexey.
-
Hello Alexey
Let me try to clarify all three points (and sorry for the longer explanations!);-
Points 1. and 2. My digitally controlled analogue mixer will have track to group, track to master and track to aux routing. On a traditional analogue mixer, there would be buttons to control this routing. So if we consider a traditional analogue mixer with 24 channels, 8 groups, 1 master stereo buss and 4 aux buses, each channel strip would have routing buttons for:-
Group 1
Group 2
Group 3
Group 4
Group 5
Group 6
Group 7
Group 8
Main 1
Aux 1
Aux 2
Aux 3
Aux 4
Cakewalk does not work exactly like that, in that (in Cakewalk) it is only possible to route a channel (track in Cakewalk speak) to one group or main stereo bus at a time. I am happy to place the same restriction on my digitally controlled analogue mixer.
So remembering that my digitally controlled analogue mixer will be entirely controlled by Cakewalk, I need to find some way to implement the channel to group and main (master) bus routing (and also for the channel to aux routing).
If we focus in on Cakewalk for a moment:-
If I route e.g. Track 1 to Group 1 (Group 1 being a Stereo Bus), then this is indicated by a routing 'label' at the bottom of the track display on the Cakewalk Screen. I want to 'read' that routing information and use it to mimic the same routing in my digitally controller analogue mixer. So really my question is whether there is any theoretical way which the AZ controller can read that routing information for each channel? Even the routing name (in my example, that would be a 'O Group 1' displayed at the bottom of the track strip), would be enough for me to control the analogue console routing.
If I cannot find a way to do this, then I would need to build a hardware panel to control the routing and that defeats the elegance of what I am seeking to do; that is a digitally controlled analogue mixer, 100% controlled from Cakewalk.
3. FX Bypass. I was specifically referring to the track FX button which (in Cakewalk) allows you to bypass all 'FX' effects allocated to that track. It is one of the few Cakewalk buttons which does not have 'standard' Cakewalk Remote Control capability. It is a bit strange because the track 'ProChannel' bypass switch is capable of remote control. I want to use this 'FX' bypass button to remote control my analogue channel insert bypass function.
I hope this is enough clarity for you to consider what might be possible on the above points. If you have the time for a Zoom (or similar) video chat, I can explain further.
Best regards
Robert
-
Hello Robert,
1. and 2. Cakewalk mimic original analog consoles. I am not sure what you mean by "Groups", but Main is Main and Aux is Bus in Cakewalk. For controlling purpose, you need "Mixer main" bus to which all controlling tracks are pointing (since you want control it separately from Cakewalk "Main", that will influence the volume from Cakewalk). And additional buses "Aux 1", "Aux 2", etc. Each controlling track will have 4 sends to this auxes. Each such send has all parameters (on/off, volume, pan, pre/post), so I guess that is more then sufficient for controlling mixer routing.
In case by "Groups" you mean something like extra Auxes, that can be done the same way as with Auxes. Just note that initialization should set all parameters, remember throughput and processing speed comment (you can overseen the issue testing just one channel, I recommend testing with complete AZ Controller preset for final number of channels even when testing smaller number of physical channels). Otherwise the solution can be like for 3.
3. See my previous comment about FX Chains. You can define "dummy FX chain" with parameters like "Bypass insert", "Group X", etc. and map corresponding values to the mixer. You can not put extra controls on the channel strip or in the track view (unlike in REAPER...) and you can not use ProChannel for that (too buggy design in control surfaces API), so you will need to open "FX GUI" to set/change these parameters. That is a bit less convenient then "Bypass FX" button, but I think still more usable than related procedure on some real DMs (first select the channel, then special parameter page, then parameter...).
Cheers,
Alexey.
-
Hello Alexey
Sorry for the continuing confusion about my routing control needs. I created a project in Cakewalk and taken a screenshot which I hope will clarify.
You can see in the the screenshot, a configuration with 12 tracks, 4 group buses and 1 master bus. (Groups and Master are all stereo mixing buses).
Tracks can route to any one of the groups or to the master. Groups can route to any other group or to the master. This is typical set up in Cakewalk for mixdown.
It is this type of routing information which I need to read using the AZ Control interface and then use to set the routing identically on my external analogue mixer.
Does this help clarify?
Regards
Robert
-
You need to define Sends from tracks to buses.
-
Okay thanks Alexey. Are you saying this is possible to do in AZ Controller?
Best regards
Robert
-
You add Sends in Cakewalk (I do not think someone seriously using Cakewalk without sends... how you can send an instrument to let say reverb bus otherwise?). AZ Controller support all parameters for sends (you first select strip then select send, the rest will be the same).
-
Thank you! I will check out the send configuration in the morning.
Best regards
Robert
-
Hello Alexey
I tried your selection instructions for sends but I could not get it to work.
For my test, I created "Aux 1" send from Track 1 in Cakewalk. Then I tried to configure a slider from my nektar keyboard to control the Aux 1 send volume from Track 1.
For AZ configuration, I tried:-
1. Added a hardware slider from my nektar keyboard and named it "Rotor 2" in the option Tab
2. Attached and Assigned MIDI for Rotor 2 in the Hardware Tab
In the Logic Tab (having selected "Rotor 2"):-
3. Created an action configured for "Strip", "Track" and "Output"
4. Created an action configured for "Send", "send number 1" and parameter "Volume"
5. Created an action configured for "Value", "Direct", "Linear"
Can you please tell me what I am doing wrong in the test configuration and it should help me a lot.
Best regards
Robert
-
Try Send number 0... Its "programmers" world ;)
-
Hello Alexey
I tried send number 0 but still not working.
I have attached three screen shots showing the three actions programmed for Rotor 2. Could you have a look please.
(and just to assure you that Rotor 1 - which I programmed before to control the Track 1 fader is working, so the MIDI between my nektar keyboard and AZ/Cakewalk is working okay)
Regards
Robert
-
Hello Robert,
Do NOT use Cakewalk AUXes for your purpose, use Buses (name them AUXes if your want).
Cakewalk has "hacked" AUXes into original engine as the way to record soft synthes and FXes live. When someone really "play" soft instrument live, the sound can be significant different from re-play of recorded MIDI. That is the only reason to use them.
From the beginning, this "hack" was quite buggy. On of the bugs you have just hit yourself: sends to them can not be controlled by surfaces :)
-
Hello Alexey
Thanks for the advice. I was able control bus sends from tracks, so that is a big step forward.
Can I check one more point with you for now please:-
Could you explain how to achieve a latching function for buttons please. One example:-
I can programme a button on my nektar keyboard to operate a track SOLO function, but when I release the button then the SOLO is also released. So it provides a non-latching action which is not what is required.
Can you please tell me how to achieve a latching action for the button? So I PRESS and RELEASE the button, and the SOLO function changes state. I mean:-
If the SOLO was "OFF" then it switches to "ON".
If the SOLO was "ON" then it switches to "OFF".
I have many requirements for this type of latching button, so your advice would be appreciated.
And I have to say that the AZ Controller is amazing! Yes it will take me some time to learn but the very deep level of control and feedback is incredible.
Very best wishes
Robert
-
Hello Robert,
What you call "button latching" is reaction on button press only. Some surfaces just send "button", but more "smart" devices send "button is pressed" and "button is released".
If the code does not take that into account, it does not distinguish between "pressed" and "released" and so toggle f.e. Solo when pressed and when released.
Press and release send different value (you can see that in the "Last MIDI event"). Normally press is value 127 and release is value 0.
AZ Controller tries to help you with processing that. In case you look precisely, there is "Note:On" condition on every action by default. So no action is executed when "Note:Off" (Note Off MIDI event or Note On with Value 0 MIDI event). But in case a button send not Note MIDI event but something else, what to do is not obvious. F.e. when you turn a knob which sends CC you want Value 0 is processed as any other value.
The solution in AZ Controller is explicitly declare a hardware control as a "Button". In the Options tab select button control as set its type from "Unknown" to "Button", do not forget to press "Save" near that combo box. In this case CC with value 0 will be interpreted as "Note:Off" and so there will be no reaction on release (till you change Note conditions for particular actions, useful f.e. to implement modifier keys like Shift).
-
Hello Alexey
Thanks for the advice. Changing the button type to "pad" (which I think was your reference to "button") provided the require action.
For information, I am experimenting with a Microchip PIC demo board to map out the structure of how the MIDI commands sent as feedback actions from AZ Controller will control the hardware control elements of the analogue mixer. These are mostly VCAs (level) and FETs (switching).
I am building a small two channel analogue audio mixer to check out the basic hardware control elements. After that, I will look to design the full size mixer. Current plan is:-
24 channels (tracks)
8 + 2 + 1 stereo group buses (8 groups, 2 "auxes", 1 master).
The mixer will receive its audio for mixdown from a 24 track analogue tape machine also under remote control and sync from Cakewalk.
I will study the use of OSC for the communications between AZ and my hardware controller. It looks like a good solution.
I will be in touch again once I have decided on the protocols.
Again, thank you for your good advice to date.
Regards
Robert
-
Hello Alexey
As I will be controlling a digitally controlled analogue mixer from Cakewalk via AZ controller, using Feedback actions, the monitor refresh frequency is important for me.
When I set the Cakewalk controller refresh frequency to 50ms and the Parameter Value Monitor to Ultra (let us use the example of track volume monitoring) then I get a maximum of 20 track fader values per second (corresponding to the 50ms refresh setting). This is as expected.
Here is my question please:-
It is possible to set the Cakewalk controller refresh frequency below 50ms by editing the Calkwalk.ini file. I tried setting to 25ms in Cakewalk.ini and the value appears to be accepted; i.e. 25ms is displayed in the preferences/MIDI/controller surfaces display.
However it does not increase the frequency of monitor messages output on to my MIDI stream.
Can you tell me if this is due to a configuration setting in AZ Controller? So I mean is the 'ultra' setting limited to 50ms? Or do you think that Cakewalk is ignoring any setting below 50ms?
For my unusual application, I want to try to increase the controller refresh frequency if it is possible.
Regards
Robert
-
From what I know, that comes from Cakewalk.
Note that values can not update faster then the buffer length... Which settings you use in Cakewalk for the audio device?
Also I think that 50-100ms is faster then you may need for any purpose. Everything you want to be "smooth" (motor fader movements, volume automations, etc.) should be implemented inside your device by inter/extrapolation.
Note that some digital mixers I know (RME, Behringer) do not do this. If you ramp up volume you can easily notice that happens in "steps". And real reaction of the device on parameter changes seems like much slower then 100ms. For some purpose not nice, but that is by design. You can try to make it better, but that is a challenge. It is easy to have "usec" frequencies inside a chip, but it is not easy to keep that on a wire (Shannon and other slow us down...). F.e. you will need to communicate through USBv2 (or later) and forget about WiFi in case you need something with stable reaction under 50ms.
-
Hello Alexey
I was running Cakewalk on a buffer length of 23.2msec.
So I tried reducing the buffer length to 5.8msec and setting the controller refresh frequency to 25msec in Cakewalk.ini
Again the Cakewalk preferences display seems to accept the 25msec value but it makes no difference to the actual refresh rate.
I will check with Cakewalk (Bandlab) if this is a restriction they place on the system.
The control voltage (linear voltage derived from DAC converter) applied to analogue gain control elements (VCAs) will have a time constant of around 7ms to help smooth the step transitions but it would be valuable to get as much control resolution from Cakewalk as possible. Part of that resolution comes from the refresh frequency.
I understand your point about using inter/extrapolation to smooth control inputs. It should be possible to do this within my microcomputer but of course it introduces some delay as I have to buffer MIDI values in order to make the calculations. If it was feedback to motor faders then that would not be an issue, but in my application it delays the control signal to the audio mixer which is not desirable.
Once I have built the small demo analogue mixer, I will experiment to see what is practical.
Again, thank you for your advice on this project.
Best wishes
Robert
-
Hello Alexey
I have been in communication with the development team at Bandlab concerning my digitally controlled analogue mixer design.
They have agreed to change the minimum refresh frequency from 50ms to 10ms in the next Cakewalk software update.
They also suggested I check out a few points with you regarding the AZ Controller:-
Assuming I use the 'Ultra' priority for a Parameter Value Monitor, will AZ Controller be able to perform its operations with the 10ms window?
Two situations I want to consider:-
1. Let us assume that the number of Monitor action messages within the 10ms refresh window is low, so that there is sufficient MIDI transmission time to output all the MIDI messages within a 10ms window (let's assume 1ms per 3-byte message). Will AZ Controller be able to process within this 10ms window? So I mean, what additional latency is likely to be introduced by AZ Controller?
2. If the total number of Monitor action messages within the 10ms refresh window exceeds the number of MIDI messages which could be outputted within a 10ms window, does AZ Controller have any processing functionally to deal with this? e.g. a FIFO buffer? So that the MIDI messages could be output when there is capacity on the MIDI output.
If AZ Controller does not have any coping mechanism for message volumes which exceed the available MIDI transmission time (per 10ms window), what happens to the MIDI messages which cannot be output within the 10ms window?
Of course there is the possibility to have multiple instances of AZ Controller and more MIDI links between Cakewalk and my PIC Controller but first I want to understand better how AZ Controller handles the Monitor action messages as above.
Once I receive messages at the PIC Microcontroller, there should be no problem processing within the 10ms refresh window. I am writing the programme in C and onward transmission to the digitally controlled analogue circuitry will be a combination of I2C and SPI. Data rates of at least 400kbps will be a available for both of these serial protocols.
Thanks for your continued support with my project.
Regards
Robert
-
Hello Robert,
What will happened is really up to Cakewalk (and your preset). I have developed AZ Controller under Linux/Wine, on Centrino based notebook. And my major desktop was CuoDuo/Celeron. Both could barely run 2 synth without freezing. And so I have tried to hit CPU as little as possible (down to the level of lookup tables and precalculated maps, to avoid any "hash" calculations and reduce floating point math...). But that is on my side only, I have to call Cakewalk to get the information. Still, I do not remember any significant performance penalty even with most demanding presets (when I was hitting some slowness I was implementing workarounds). So I think modern computer can handle all that with 10ms cycles.
MIDI is sent to Cakewalk, so how that works is now known for me. From what I know, they handle it correctly. I mean probably they throttle when required, but I am not sure. There was at least one device which had problems handle everything sent, but I have just reduced the speed of corresponding monitoring without digging too deep.
In case you do not have your MIDI implementation yet, just test with any MIDI hardware loop. I mean draw sufficient number of envelopes and check what comes out (record output MIDI stream).
Alexey.
PS. One example what is not working without manual throughput control is Novation Nocturn + Linux + REAPER MIDI output API (for surfaces). The device itself is rather slow (10ms rate, 8bytes packets). 16 short MIDI messages sent in burst (with REAPER API) and the whole device is randomly illuminated. Sending just two messages every 10ms works reliable.
Not sure who is responsible: dummy Linux MIDI driver for the device or REAPER. I mean there can be some troubles along your way as well.
-
Hello Alexey,
Thank you for the information and advice.
Once the next Cakewalk version is released, I will set the refresh time to 10ms and try the loop test as you suggest.
I will test:-
1. Response time from Cakewalk event, e.g. automated fade, to MIDI data output.
2. What happens when the number of monitor action messages (within a 10ms window) exceeds the MIDI capacity (so about 10 x 3 byte messages).
I will report back when I have findings.
Best regards
Robert
-
Hello Alexey
I have just downloaded an advance version of the next Cakewalk release which now supports 25ms refresh time via the Preferences\MIDI\Control Surfaces setup and 10ms by updating the Cakewalk.ini file
I have confirmation from the Bandlab team that 10ms is now supported.
I can get the 25ms setting to work but not the 10ms setting.
Let me explain how I did the refresh time test:-
I draw a single track fader volume automation which goes from -INF to +6dB within a 500ms time window.
I then use the AZ controller app to output the fader volume as CC control messages and monitor these via MIDI-OX.
When I set the refresh time to 25ms, then I get 21 CC values within the 500ms window, which is what I would expect.
When I set the refresh time to 10ms (by changing the Cakewalk.ini) then I still get only 21 CC values within the 500ms window, when I should be seeing 51 CC values (500ms divided by 10ms plus one).
I have asked the Bandlab team to double check, but could I please ask you to confirm that AZ Controller (with a Parameter Value Monitor set to 'Ultra') does not have a minimum response time programmed in to the software?
Kind regards
Robert
Hello Alexey,
Thank you for the information and advice.
Once the next Cakewalk version is released, I will set the refresh time to 10ms and try the loop test as you suggest.
I will test:-
1. Response time from Cakewalk event, e.g. automated fade, to MIDI data output.
2. What happens when the number of monitor action messages (within a 10ms window) exceeds the MIDI capacity (so about 10 x 3 byte messages).
I will report back when I have findings.
Best regards
Robert
-
I do not limit anything.
But please check your buffer length in smaller then 10ms. You have mentioned one test with 5.8ms, but in case you have reverted settings to 20+ms that can explain the behavior.
Cheers,
Alexey.
-
Hello Alexey
I tried reducing the buffer length down to 2.9ms but I still get a measured refresh time of 25ms when the .ini is set to 10ms.
Thanks for confirming that AZ Controller is is not limiting the refresh time.
I will report back to the Bandlab team.
Regards
Robert
I do not limit anything.
But please check your buffer length in smaller then 10ms. You have mentioned one test with 5.8ms, but in case you have reverted settings to 20+ms that can explain the behavior.
Cheers,
Alexey.
-
Hello Alexey
I am currently mapping out the MIDI control protocol which I will use to allow Cakewalk (via AZ Controller) to control my analogue mixer.
I need to be able to monitor the audio source which is selected to each track in Cakewalk. I will use this data to control a source select matrix in my analogue mixer.
As a test, I set up a rotary control from my nektar MIDI keyboard/controller to select the audio source for Track 1 in Cakewalk.
Under the Logic tab, I have created three actions for this rotary control:-
- Track Input
Action Configuration 'Strip'
Track
Select Input
- Direct Linear, timeout touch
Action Configuration 'Value'
Direct Linear
- Parameter Value Monitor
Action Configuration 'Monitor'
Monitor parameter value
I can select the track input by moving the rotary control.
Next, I set up an Action for this control under the Feedback tab:-
- Ch7 CC:7 Use Value
But when I monitor this Feedback output using MIDI-OX, I get a constant CC value of 00 irrespective of the track source which has been selected.
Could you tell me if I have made an error in this configuration please?
Kind regards
Robert
-
Hello Rebert,
I do not think someone has ever tried to use it... So that was in fact inconsistent. Please download b404, MIDI action should be fixed there.
Note that the value sent is (current input)/(max number of inputs)*127. "0" means "No input". So the last possible input is "127", no input is "0" and other inputs are in-between.
Since the number of available inputs in concrete setup can vary, that is rather meaningless value...
I would recommend to use:
1) separate from Cakewalk Input parameter (as I have written before for all parameters which do not have equivalent in Cakewalk)
or (if for some reason you want Cakewalk Input)
2) (a) define Friendly Names for inputs in Cakewalk preferences and enable use of them
(b) define Software Set with "Unknown" + all possible input names
(c) in the monitor, first use Text Value action to get the name of input, then use State By Text to find correct state in the set (preset with Unknown, just in case...) and then use State conditions to send predictable MIDI messages for particular inputs.
Cheers,
Alexey.
-
Hello Alexey
I downloaded B404 and the MIDI action is now working, thank you.
I agree that this is not a good method to achieve an output monitor of the track source selection, for the reason you stated.
Yes I do need to monitor the selected Cakewalk track inputs because I will use these selections to control the external analogue record matrix. (This is partly for convenience of having source selection control from Cakewalk and also because I will record on to my analogue tape machine and to Cakewalk simultaneously).
So I tried to set up the parameters you suggested in point 2) of your reply but I cannot get it to work. Here is what I did:-
1. I defined friendly names for my inputs in Cakewalk and enabled their use.
2. Under the 'Options' tab, I set up a new Software State called 'FriendlyNames' and added 'Unknown' plus all the friendly names (as they appear in the track source selection) - see Image-1
3. Under the Logic Tab, I added two additional actions to my remote control of Track 1 source selection:-
a. Text Value action - see Image 2
b. Set state by Value action with FriendlyNames set to <By text> - see Image 3
4. Under the Feedback tab I added different MIDI output values for some of the FriendlyNames - see Image 4
When I change the track 1 source select, I get no MIDI values outputted, so I must have made a mistake in the set up.
Could you tell me how to correct please.
Regards
Robert
Hello Rebert,
I do not think someone has ever tried to use it... So that was in fact inconsistent. Please download b404, MIDI action should be fixed there.
Note that the value sent is (current input)/(max number of inputs)*127. "0" means "No input". So the last possible input is "127", no input is "0" and other inputs are in-between.
Since the number of available inputs in concrete setup can vary, that is rather meaningless value...
I would recommend to use:
1) separate from Cakewalk Input parameter (as I have written before for all parameters which do not have equivalent in Cakewalk)
or (if for some reason you want Cakewalk Input)
2) (a) define Friendly Names for inputs in Cakewalk preferences and enable use of them
(b) define Software Set with "Unknown" + all possible input names
(c) in the monitor, first use Text Value action to get the name of input, then use State By Text to find correct state in the set (preset with Unknown, just in case...) and then use State conditions to send predictable MIDI messages for particular inputs.
Cheers,
Alexey.
-
Sorry, there are some mistakes:
1) set "Monitor Parameter Value", not "Monitor Parameter Name" for the monitor: you want the name of value, not the name of parameter (which is always "Input"...)
2) remove "Set state" (last action) from Logic, everything happens in the Monitor (Feedback tab)
3) prior your actions in Feedback, add:
(a) Text Value
(b) Set state (as you did in logic)
-
Hello Alexey
I have tried to update to your instructions but still no MIDI outputs, so there still must be mistakes.
Please see Image-5, Image-6 and Image-7 attached.
Thanks for your help to get this sorted.
Regards
Robert
Sorry, there are some mistakes:
1) set "Monitor Parameter Value", not "Monitor Parameter Name" for the monitor: you want the name of value, not the name of parameter (which is always "Input"...)
2) remove "Set state" (last action) from Logic, everything happens in the Monitor (Feedback tab)
3) prior your actions in Feedback, add:
(a) Text Value
(b) Set state (as you did in logic)
-
6+7 looks ok, but they are for "Knob 1" feedback... in 5 you have other control, without monitor (btw with Text action at the end, make no sense).
-
Hello Alexey
I found my mistake. Because I had configured the logic tab - Parameter Value Monitor incorrectly, that control did not show at all under the Feedback tab and so I accidentally programmed the wrong Feedback control!
So now I corrected the mistake and it is working.
See images 8, 9, 10 and 11 for working configuration.
Can I ask a question please ...
Is there any way to get the source selection 'None' (i.e. no source) included? so I can output a unique code for this. I tried including it in the Software Set. Although I can select 'None' using an external rotary, I cannot get the feedback MIDI to work. Any ideas?
Best regards
Robert
6+7 looks ok, but they are for "Knob 1" feedback... in 5 you have other control, without monitor (btw with Text action at the end, make no sense).
-
Check which "Name" Cakewalk gives to None, in German version it is "--- Keine ---" (spaces and hyphens including).
To do this, use f.e. build-in AZ Controller display to output text (from monitor).
-
Hello Alexey
Yes the English version had the same format "--- None ---"
So I entered this as the state name and it is recognised correctly.
Thanks for your help with this.
Regards
Robert
Check which "Name" Cakewalk gives to None, in German version it is "--- Keine ---" (spaces and hyphens including).
To do this, use f.e. build-in AZ Controller display to output text (from monitor).
-
Hello Alexey
I have been able to map most of the required functions from Cakewalk for my remote controlled mixer project, using AZ Controller.
First to say what a flexible controller app you have created, thank you!
I have two functions which I need your help with.
1. There are a number of 'all track' functions which I can programme for remote control but I cannot figure out how to programme their feedback actions?
Example is the Cakewalk button called 'Solo (UnSolo) all tracks'
I have been able to assign this Cakewalk button to an external control but I cannot figure out how to derive a feedback from it?
See my attached screenshot (Image-12)
Could you help me with the correct Monitor action please.
2. I need to find a way to monitor the state of the track 'FX (Bypass Rack)' pushbutton. I will use this to switch my analogue mixer insert points. I remember you mentioned there are issues with remote controlling the FX chain but my need is much simpler. I only need to monitor the state each track FX button. Can you help with this? It is a core element in my analogue mixer so I need to find a way!
Best regards
Robert
-
Hello Robert,
1. Some 'all track' functions are controllable and have feedback, "Strip" action has "Rude ..." parameters for this. Exact strip selected does not matter in this case.
2. For Bypass Rack you will need to make future request to Cakewalk, that information is currently not available. Write on the forum, in case Mark (msmcleod) notice your post and reply, there is a chance such parameter is added...
-
Hello Alexey
Thank you for your continued support.
1. I was able to get feedback working for 'all track' Solo, Mute and Arm. I also want to get feedback for 'Exclusive Solo' and 'Dim Solo'. These have no 'rude' feedback. I tried using action Monitor Command feedback (see Image-13) but this does not work. Is it possible to get feedback for these two functions?
2. Thank you for your advice regarding 'Bypass Rack'. I will post in the new Cakewalk forum today.
May I ask two questions about presets please ...
I will be using two instances of AZ Controller in my project. One instance to communicate between Cakewalk and my Analogue Tape Machine, and a second instance to communicate between Cakewalk and my Analogue Mixer. Each instance will have its own MIDI port.
3. My intention is for each instance of AZ Controller to have its own preset but I cannot get both presets to work at the same time. To further explain:-
For AZ Controller-1, I have created a preset called 'TC1'
For AZ Controller-2, I have created a preset called 'TC2'
My problem is that I can only get one of the preset to function at any time. Could you tell me how to get them both working at the same time please?
4. Could you tell me if AZ presets are loaded automatically when Cakewalk is started? Or do I have to load presets manually, each time I start Cakewalk?
Best regards
Robert
Hello Robert,
1. Some 'all track' functions are controllable and have feedback, "Strip" action has "Rude ..." parameters for this. Exact strip selected does not matter in this case.
2. For Bypass Rack you will need to make future request to Cakewalk, that information is currently not available. Write on the forum, in case Mark (msmcleod) notice your post and reply, there is a chance such parameter is added...
-
Hello Robert,
1. What is not there is not provided by Cakewalk, so the same advise as was for (2).
3. http://www.azslow.com/index.php/topic,384.0.html
4. In general yes. But current latest version of CbB has a bug, there is a workaround but it does not work well when you creating presets. So use previous version or wait for the next release, the bug will be fixed there.
Alexey.
-
Hello Alexey
1. and 2. Understood.
3. Working now.
4. No problem, I will wait for the next release.
Best regards
Robert
-
Hello Alexey
I am beginning to look at mapping some VST plug-ins so they can be used to control the same function in my MIDI controlled analogue mixer.
As a first test I want to map the controls in the Waves SSL Compressor plug-in. I have attached a screen shot of that plug-in.
My objective is to generate a Feedback MIDI output for each control in this plug-in.
As it is possible to have the same plug-in used in multiple tracks, I need the Feedback output to be strip related, if this is possible.
Could you tell me if this kind of feedback mapping is possible using AZ Controller and if it is possible, some guidance as to how to do the feedback mapping.
Best regards
Robert
-
You will need quite some (well, really huge number of...) parameters. Each of kind:
Strip <number>
FX <name> <parameter number>
Monitor value (in which you do the same as for volume and other parameters).
Yes, one control for each parameter for each plug-in in question for each track on your mixer...
-
Hello Alexey
Thanks for the advice
I got SSL Compressor to map to MIDI Feedback values using the actions in my attached 'Image-15'
I have one problem to solve ...
The controls which are rotary switches e.g. 'Ratio' (which can be switched between 2, 4 and 10) are giving out inconstant feedback values.
Is there a way to correct this problem?
Regards
Robert
You will need quite some (well, really huge number of...) parameters. Each of kind:
Strip <number>
FX <name> <parameter number>
Monitor value (in which you do the same as for volume and other parameters).
Yes, one control for each parameter for each plug-in in question for each track on your mixer...
-
Some plug-ins report inconsistent values, especially for switches. Values are always "normalized" by Cakewalk to 0..1 range. Translation to MIDI done by AZ Controller and it tried to be accurate (so reported MIDI value when used as input produce value in 0...1 range which when converted back to MIDI produce the same value, sound like obvious but most software I have observed does not have this property). So, I do not think something can be done on AZ Controller or Cakewalk side.
-
Hello Alexey
Thank you for the explanation.
I have contacted the Waves support team and asked them to have a look at the values being reported for the rotary switches for this plug-in.
Best regards
Robert
-
Hello Alexey
I got a response from Mark McLeod regarding the Bypass FX function. Here is what he said:-
'I think it's already there.
Setting MIX_PARAM_FX to a value less than 0.5f should bypass the fx bin...
Although within ControlSurface.idl, it claims to be a read-only parameter, there's definitely a handler for setting it within Cakewalk.'
Does this provide a means to hook into the Bypass FX function with AZ Controller?
Regards
Robert
Hello Robert,
1. Some 'all track' functions are controllable and have feedback, "Strip" action has "Rude ..." parameters for this. Exact strip selected does not matter in this case.
2. For Bypass Rack you will need to make future request to Cakewalk, that information is currently not available. Write on the forum, in case Mark (msmcleod) notice your post and reply, there is a chance such parameter is added...
-
IDL mention fx# as parameter for MIX_PARAM_FX, so I was interpreting it more like "bypass particular fx" (also not supported by AZ Controller, I had no need for it). But may be it support some "-1" parameter, I will check.
-
Thank you Alexey.
-
Hello Alexey
I wanted to check if you were able to make any progress on the FX Bypass function? It would be great if you can offer this function within AZ Controller.
Best regards
Robert
IDL mention fx# as parameter for MIX_PARAM_FX, so I was interpreting it more like "bypass particular fx" (also not supported by AZ Controller, I had no need for it). But may be it support some "-1" parameter, I will check.
-
Hi Robert,
I have thought you are monitoring Cakewalk thread... mentioned parameter can bypass particular FXes, but not FX rack. So bypassing rack is not possible to implement on AZ Controller level.
If you want bypass particular FXes, that I can implement.
Cheers,
Alexey.
-
Hi Alexey
Yes I followed the Cakewalk thread but I did not understand most of the technical details.
So yes, it would be great if you could implement Cakewalk bypass of particular FXs. This would solve one of the issues I have (some of the VST plug-ins are not correctly reporting their Host Bypass so I cannot use that to monitor bypass status).
I will test the Cakewalk bypass of particular FXs when I hear from you it is implemented.
Best regards
Robert
-
Hi,
Try just uploaded test version (b405), it has "Enabled" parameter (before 1 - xxx) in FX Action. I have checked it for "Set" and "Monitor value" in X2, seems like work.
Cheers,
Alexey.
-
Hello Alexey
I downloaded test version b405 and the FX enable is working fine. Thank you very much.
Question -> what would you need from Bandlab/Cakewalk to make the global FX enable possible in AZ Controller?
Best regards
Robert
-
Hello Robert,
First of all, you will need to mention required feature correctly :)
"Global FX bypass" (so for all strips) exist as a command and available as such in AZ Controller (without feedback).
"FX bin enable" (for one strip) exists as a button in Cakewalk, but does not exist in Control Surface API (at least I have not found the way to use it, note it was not available at least till 2015)
"FX enable" is possible and now work in AZ Controller.
Note that I can kind of imitate the effect, by enabling/disabling all FXes in specified bin. But that is NOT the functionality of Cakewalk button, it works independent from particular FXes enable status. So, when you disable FX bin and re-enable it, enable status of particular FXes is preserved in Cakewalk (but will not in imitation).
Cheers,
Alexey.
-
Hello Alexey
I understand your explanations, thank you.
So I have added another message to the Cakewalk forum thread asking Mark to add the API hook for "FX bin enable".
I'll pursue that request.
Regards
Robert
-
Hello Alexey
I've just read Mark's latest reply about the -1 error issue. It looks like you will be able to implement the FX bin bypass once the next CbB release is available. Hopefully good news!
Regards
Robert
-
Hello Alexey
Bandlab have included support for the FX bin bypass in the latest Cakewalk release. Here is the note from the update log:-
----------------------------
Allow track FX bin to be bypassed via control surfaces rather than just individual FX
In addition to individual effects, entire track FX Racks can now be bypassed via control surfaces.
Passing an FX index of -1 (65535) will bypass the entire track FX Rack.
The Mackie Control surface has been updated to use M1+Select button to toggle track FX Rack bypass.
------------------------------
Do you need to do any update to AZ Controller for this to work?
Regards
Robert
Hello Alexey
I've just read Mark's latest reply about the -1 error issue. It looks like you will be able to implement the FX bin bypass once the next CbB release is available. Hopefully good news!
Regards
Robert
-
Yes, I have to update AZ Controller for this. I am currently busy, at least till the next week.
-
Okay, no problem. Let me know when you have done the update and I will test.
Kind regards
Robert
-
Hello Alexey
I am mapping out the full AZ Controller setup for my Cakewalk controlled analogue audio mixer.
At the moment I am focusing on the control information which is outputted when:-
a. Cakewalk is loaded
I observe that a full status of all AZ mapped controls is output to MIDI
b. A Cakewalk project is loaded
I observe that a full status of all AZ mapped controls is output to MIDI
I have four questions please:-
1. Is this the expected behaviour of the current AZ Controller version?
2. Is there anyway to prevent the duplicated status output, e.g. could the output at the loading of Cakewalk (before a project is loaded) be suppressed?
3. Is there any theoretical limit to the number of controls status which can be output during this start-up phase? ( I noticed that some control status information is lost if the buffer length is too long, so I am concerned about any limitations once I have a full AZ mapping of my mixer in place). So I am trying to understand how this start-up status is working?
4. I need to understand the order in which the control status is output. This is really important because in my application I must output all 'track interleave' status before the rest of the control status information. I use the track interleave status (mono or stereo) to set up control pairing of analogue mono channels (in my mixer) when they are being used as a stereo pair. This affects how all of the other controls (e.g. track level, pans, routing) are controlled in my PIC's C programme.
e.g.
Cakewalk
T1 Mono
T2 Mono
T3 Stereo
T4 Mono
I must translate to
Cakewalk T1 map to Analogue Channel 1
Cakewalk T2 map to Analogue Channel 2
Cakewalk T3 map to Analogue Channels 3 and 4
Cakewalk T4 map to Analogue Channel 5
Thank you for your continued support for my project.
Regards
Robert
-
1. yes, the behavior is expected. Monitors are triggered when (a) they was never triggered before (Cakewalk+AZ Controller+Preset are loaded) and (b) when parameter OR value changes (so, even in case let say current track has volume 0dB and you change current track to another with 0dB, volume monitor is triggered. Sure, on Project load everything is changed and so triggered).
2. possible but not easy. In case you do not want send anything till there is some project, you can put "Context:NoProject Undefined (final)" in every monitor which sends something. If you do not want send the same value, you will need to organize that yourself (f.e. save proposed value as a State and send MIDI in State monitor, so if the value stay the same in Value monitor, it will not trigger State monitor).
3. AZ Controller sends everything it wants in "one go". I have not noticed any info skips, but I have not tried to abuse the system as you do (I was using controllers only, so the max number of info was approximately the number of physical controls, which in turn is 100-200 at max).
4. each monitor has "Priority". Within one priority the order is undefined, but higher priority monitors will be triggered before lower priority monitors, assuming both have "ultra" speed.
-
Hello Alexey
Thanks for answering my few questions. It helped a lot to clarify.
With reference to 4. I have been able to use the monitor "Priority" to ensure that the 'track interleave' status is output first.
Let me know when you have had the chance to update AZ Controller for the FX bin bypass function so I can test.
Regards
Robert
-
b406 should be able to bypass FX Bin (strip parameter "FX Bin enabled", since API define logically revered to "bypass" value, so "1" means enabled and "0" disabled").
-
Hello Alexey
Thank you for adding the "FX Bin Enabled" functionality. I checked it out on the latest version of Cakewalk and it works perfectly.
Right now I am assembling the prototypes of my digitally controlled analogue mixer which I will use with Cakewalk and AZ Controller. I'll send you a couple of photos once the boards are tested.
Again thank you for your continued support!
Regards
Robert
b406 should be able to bypass FX Bin (strip parameter "FX Bin enabled", since API define logically revered to "bypass" value, so "1" means enabled and "0" disabled").
-
Hello Alexey
First, to thank you again for all your help in getting my project to the successful prototype stage. I have attached an image of my prototype set up showing a two channel audio card, a twp stereo bus mixer card and my PIC computer card which talks to Cakewalk and AZ Controller via MIDI.
I am now beginning to build the AZ Preset for the full 24 channel 8 bus mixer and have noticed that there does not appear to be AZ control of the bus input pan control? If this is missing could I please ask if it could be added.
Best regards
Robert
-
Looks complicated ;)
Bus input pan is not exposed to CS, from what I know. Technically speaking input controls for buses are "redundant" in DAWs, since there is no "one to many" sends and so input controls make sense only for FXes of that bus. And since adding buses is not a problem, no one will ever miss that feature.
I understand that for hardware the picture can be different..
-
Hello Alexey
Yes, for my hardware mixer I have included bus input pan in my design. I had not realised it was not exposed in CS.
If I can get Bandlab to expose bus input pan in Cakewalk would you be willing to look at whether implementation is possible?
Regards
Robert
Looks complicated ;)
Bus input pan is not exposed to CS, from what I know. Technically speaking input controls for buses are "redundant" in DAWs, since there is no "one to many" sends and so input controls make sense only for FXes of that bus. And since adding buses is not a problem, no one will ever miss that feature.
I understand that for hardware the picture can be different..
-
If that parameter is added (or already exist), I will add it into AZ Controller.
BTW I have really hard time to imagine when that parameter can be useful. Even in case you have EQ/Comp on that bus, I don't think the result (EQ+Pan vs Pan+EQ) is going to be different. Pan+Comp vs Comp+Pan for sure will react on implemented Pan law and so harder to control. Pre-FX volume (input gain) I can understand, as a "pure man" send level VCA master, but pan...
-
Thank you Alexey.
If you could please check and let me know if I need to approach Bandlab to have the parameter added in Cakewalk.
Regards
Robert
-
If that was not clear: yes, you need to ask Bandlab. There is no such parameter in IDL I know, so they have to implement it first.
-
Okay thanks Alexey, I will ask Bandlab.
Regards
Robert
-
Hello Alexey
I followed your previous advice to set up predictable MIDI monitor values for each Track Input
--------------------------
I would recommend to use:
1) separate from Cakewalk Input parameter (as I have written before for all parameters which do not have equivalent in Cakewalk)
or (if for some reason you want Cakewalk Input)
2) (a) define Friendly Names for inputs in Cakewalk preferences and enable use of them
(b) define Software Set with "Unknown" + all possible input names
(c) in the monitor, first use Text Value action to get the name of input, then use State By Text to find correct state in the set (preset with Unknown, just in case...) and then use State conditions to send predictable MIDI messages for particular inputs.
---------------------------
This works fine.
I now need to use those MIDI values to control other track input sources within Cakewalk.
My Software Set is called "FriendlyNames" and I have allocated MIDI values to each Track Input Source.
Let me give you a specific example:-
Track 1 Feedback output uses MIDI Channel 1 and CC0 and MIDI values () for FriendlyNames sources:-
--- None --- (0)
Left input 1 (1)
Right input 1 (2)
Stereo input 1 (3)
Left input 2 (4)
etc
So now I want to control Track 25's input source to follow Track 1.
I set up a Hardware Control named "T25Source" and assigned it be controlled from MIDI Channel 1 CC0 (i.e. the Track 1 feedback output)
Then I set up a Logic Control for T25Source as shown in the attached image.
But I cannot figure out how to configure the additional actions so that T25Source input source will be set according to the received MIDI value.
Can you advise if this is possible and if yes, the format of the additional actions.
Regards
Robert
-
So, you want set Cakewalk track input to something absolute. In other words a kind of "reverse" operation to what I have described before.
Sorry, not supported by AZ Controller. May be some lucky day I add that, but I am not sure...
-
Hello Alexey
Thanks for getting back. Can I check some more please:-
I am able to control the track source selection by using an external MIDI controller to 'scroll' through the available Cakewalk 'friendlyname' sources.
What is the barrier to mapping each source to a specific MIDI code?
Regards
Robert
-
It was possible to map current value to "friendlyname" and so to MIDI, as i have described before (and you has confirmed it works).
The "barrier" to do reversed operation was the luck of such function.
Well, check current test version. There must be "Set IO from Text" Function. It does that. So, you need set current text to the name (with Text Action) and select input/output (as on your screenshot), then call this function. If the input with such name is found, that input is selected.
The problem... that part of Cakewalk is historically buggy... And I had too much frustration dealing with that bugs before. But for hardware inputs it should work.
With "software synth" input there are already some glitches, in my tests "mono" inputs for some reason are reported as "stereo", even on mono tracks.
Once you insert plug-ins with side chains, "Send output" goes crazy. And so on. That is why I have recommended to use some unrelated parameters to control IO on your device.
Please don't say I have not warned you (now twice) in case you observe some strange effects with IO parameters.
-
Hello Alexey
Thank you for helping me with this.
I downloaded the latest test version and found the "Set IO from Text" function, thank you!
I tried to follow your instructions to set up the correct actions but I could not work out how to set the current test to the name (with Text Action)?
In my example, (T25 input follows current T1 input), I don't understand how the looped backup MIDI value (which is derived from the T1 source name feedback) is applied to the text action for T25.
I have attached five images:-
Image-17 shows the T1 Feedback actions. Each input name outputs a unique MIDI value (this works!)
This MIDI output (using Ch:1 CC0) is looped back into Cakewalk and is used as the Logical Control for T25Source (Image-18)
Image-19, Image-20 and Image-21 show the Action List for T25Source. (I need to send Image 21 as a separate post)
Hopefully you will be able to see what error I have made in configuring?
Best regards
Robert
-
Image-21 is attached (referred to in my previous post)
-
It is better attach SPP files (preset)...
A. If you want to make T25 input follow T1 input (for the reason I don't understand...):
1. you need to monitor T1 input (which you do) and "loop" send midi/OSC from it. Just to execute some control when it is time to resync.
2. In that control you do
* Select T1 input
* Text <Parameter value>
* Select T25 input
* Function Set IO from Text
B. If you want control T25 input from something on your side, so by sending MIDI from your device:
1. make control which react on that MIDI
2. translate that MIDI into FriendlyName set
4. if (and only if) it could be mapped, then
* Text <FriendlName>
* Select T25 input
* Function Set IO from Text
Note: the text should be exact. Obviously "Text <Parameter value>" form some track input always produce usable for Set IO text (when both track are of the same kind, f.e. audio). With FriendlyName you should be careful and only react on its change (the reason for "if" in (4))
-
Hello Alexey
Thank you for a very clear explanation of options A and B relating to the control of Input Source Selection.
I got Option A (simple follow of T25 from T1) working from your instructions.
However it is option B which I need for my application.
I want to give you an explanation as to why I need this control facility, so that you can see I have some rationale behind what seem to be rather a very unusual applications for AZ control!
In Cakewalk, I have two 'sets' of tracks:-
Set 1
Cakewalk Tracks 1 to 24 are allocated for the control of my analogue mixer (although Tracks 1 to 24 can also record audio if required)
Cakewalk Tracks 1 to 24 can be a mixture of mono and stereo sources. THIS IS IMPORTANT
Set 2
Cakewalk Tracks 25 to 48 are allocated to 'mirror' my 24 analogue tape machine tracks (both for backup purposes and to provide 'rehearsal' mixdown tracks (via DACs into my analogue mixer).
Tracks 25 to 48 are always mono (because analogue tape machine tracks are always mono!)
So the mapping of source selection between Cakewalk Tracks 1 to 24 and Cakewalk Tracks 25 to 48 is not a simple one to one mapping but instead depends on the mixture of mono and stereo audio sources allocated to tracks 1 to 24. This will change from session to session (so it is dynamic not fixed).
Here is one partial recording session example:-
Cakewalk Tracks 1 to 24
T1 Mono Vocal 1
T2 Mono Vocal 2
T3 Stereo Piano
T4 Mono Bass Guitar
T5 Stereo Drums
etc
This will be mapped to my analogue tape machine Tracks 1 to 24 (via the MIDI feedback outputs we have working already) as follows:-
T1 Mono Vocal 1
T2 Mono Vocal 2
T3 Stereo Piano LEFT
T4 Stereo Piano RIGHT
T5 Mono Bass Guitar
T6 Stereo Drums LEFT
T7 Stereo Drums RIGHT
etc
And the mapping to Cakewalk Tracks 25 to 48 as follows:-
T25 Mono Vocal 1
T26 Mono Vocal 2
T27 Stereo Piano LEFT
T28 Stereo Piano RIGHT
T29 Mono Bass Guitar
T30 Stereo Drums LEFT
T31 Stereo Drums RIGHT
etc
In summary, the idea is that all allocation of audio sources into my hybrid digital/analogue recording system will be controlled using Cakewalk. Cakewalk tracks 1 to 24 provide the control elegance of being able to work with mono or stereo tracks. Cakewalk Tracks 25 to 48 and Tape Machine Tracks 1 to 24 are always mono and so this mapping of source selection (which I described above) is required.
I will use my PIC controller to do the mapping. For Cakewalk Tracks 1 to 24, the PIC receives the input source selection feedback via MIDI from Cakewalk and also the mono/stereo status of Cakewalk Tracks 1 to 24. So the PIC has the required information to do the mapping. This affects a large amount of the level control and signal routing within my analogue mixer.
Returning to your option B: Controlling Cakewalk Track Input Source selection from something on my side, so by sending MIDI from my device (PIC). That is EXACTLY what I need to do.
I need your help please to understand how the MIDI I send from the PIC to AZ/Cakewalk (which represents required input audio sources for Cakewalk Tracks 25 to 48) can be translated into a FriendlyName set and so control the input sources for Cakewalk Tracks 25 to 48. Is this possible within AZ Controller?
As always, I am so grateful for your help. Please add my support to the 'Flowers from community' cause and please add my thanks to your wife for her enormous understanding of all you give to the audio community.
Best wishes
Robert
-
Ok, so the only problem is converting MIDI from your PIC into FriendlyName.
You can do this 2 way, both use MIDI value:
1. as you have done with FriendlyName -> MIDI, but reversed: "Value:4 Set FriendlyName = 'Input channel 4'". "Value" Set is mapped MIDI value when the control is triggered.
2. there are 2 variants, but logic is the same: "Set FriendlyName <Map from MIDI>". So, just one Action. But MIDI values /FriendlyName should be made "compatible".
a) you define just existing FriendlyNames. But in this case the mapping is from 128 to N, so you will need send specific MIDI values.
b) you define exactly 128 States in FriendlyName (most of them can be ""). Then the mapping is 1 to 1.
-
Hello Alexey
I configured using your variant 2b).
For the test I continued to send MIDI feedback out from Track 1 and loop back into Track 25.
I have some functionality but one issue is remaining:-
I added additional 'dummy' states in the Software States 'FriendlyNames' so there was a total of 128 states. So now I expected to have 1 to 1 mapping.
However these additional states are being ignored by the Track25 action list.
So the 25 'real sources' are still being mapped equally spread across the 128 MIDI values.
I have attached the preset so hopefully you will be able to see my error?
Regards
Robert
-
SPP you attach is somehow broken, my Cakewalk can't import it. It show preset, but I am unable to select...
Sometimes AZ Controller trigger some rare corruption when preset is edited "on the go". I was unable to reproduce so far.
I recommend re-do 128 states (without using them during creation). Mapping should be 1-1.
-
Hello Alexey
I did some further investigating and experimentation:
1. I had made a mistake in one of the actions for Track25. I have attached a screenshot of what is now working except for one issue which I will come to in a moment.
2. I found that the total number of software states which need to be created for one-to-one mapping appears to include 'unknown' as one of the 128 states. Is this what you expected?
Just to remind you that I am exporting MIDI values from the current state of Track1 input source and looping these back in to control Track25 (for my test).
3. I think I found out why you were unable to load the pre-set. I have four instances of AZ Controller running in my test system. I have found that any pre-set which is exported from a particular instance of AZ must be imported into the same instance number. So the pre-set I have now attached was exported from the 4th instance of AZ (which in my case is called 'Source Selection'. If you import it into the 4th instance of AZ on your own system (so I mean counting down from the top of the instances table), it should load okay. I tried this on a different PC and it imported just fine.
4. The only problem I have remaining is that Track1 source selection 'None' is not setting Track25 to 'None'. It is being ignored. I can see (using MIDI-OX) that selecting 'None' on Track1 is correctly outputting the correct MIDI code (in my example, decimal 126). The exact entry of Cakewalk Source 'None' as a state within 'FriendlyNames' is '--- None ---' which I found out using the AZ Display facility (following your previous advice on this point).
So I know that the Cakewalk Track 1 Source 'None' is being interpreted correctly as a Feedback to MIDI output but seems to be being ignored when the reverse operation is required, so perhaps the 'FriendlyNames' from MIDI value action?
I would be very grateful if you could have a look at this one remaining issue, hopefully to find a solution.
Let me know if you are able to load the attached pre-set, using the 4th instance of AZ.
Best regards
Robert
-
There was bugs, it should work correctly now (with None and for all Sends). Please download b407 (latest release).
-
Hello Alexey
I have tested with b407 and all sources including None are now working correctly.
Thank you so much for taking care of this.
Best regards
Robert
-
Hello Alexey
I am programming the Transport commands between Cakewalk and my PIC computer.
I have an unexpected AZ Controller state which I want to check with you please.
I have set up a MIDI feedback output for 'RECORD: : STATE MONITOR'
It is set to output 'Value'.
When I put Cakewalk into record then I get the value 127
When I take Cakewalk out of record then I get no value output
Is this the expected behaviour?
I need to be able to detect when Cakewalk comes out of record.
Best regards
Robert
-
I don't know about "Record" State Set. You need to monitor "Transport" state and construct sent values yourself. State monitors don't provide distinct Values.
-
Hello Alexey
Thanks for your guidance. I got confused!
Yes I can monitor Transport state and it conveniently outputs three values as follows:
STOP 0
PLAY 40
REC PLAY 7F
This is fine for my needs.
Best regards
Robert
-
Hello Alexey
I am working on controlling the flow of MIDI messages between Cakewalk/AZ Controller and my PIC microcontrollers when both systems are launched.
Can I please ask two questions:
1. When a Cakewalk project is opened, is there any way for AZ Controller to 'handshake' with an external MIDI controller?
So I mean either:
a. AZ Controller responds to a SYSEX type message and sends out some kind of acknowledgement
b. AZ Controller sends out a SYSEX type message when a Cakewalk project is loaded.
2. Currently, when I start Cakewalk, I am getting a small stream of MIDI messages, even when I have no controller loaded in Cakewalk/preferences/controllers (and before a project is loaded).
Are you aware of any default messages which Cakewalk sends out?
I have attached an image of the messages which are being outputted from Cakewalk. They seem to be consistent in content each time the Cakewalk application is started.
Best regards
Robert
-
Hi :)
I think Cakewalk do "Reset all Controllers" on startup. If it is activated in the preferences it does reset on Stopp normally.
Bassman.
-
1. AZ Controller can do event/time based activity in "Monitor"s. There is "Context" state set, which has "NoProject" state. You can organize state monitoring for it and update some defined by you state set, f.e. "Project" with states "Not Loaded"/"Loaded". Then using conditions update that set so it match the reality. Finally, you can monitor "Project" set and send something.
For initial handshake, you can use timer based monitor conditioned with "Initialized" ("Yes"/"No") set, so it send something let say once per second till it gets expected response. For an example check build-in "Mack. Control" preset.
2. As Bassman has mentioned, Cakewalk sends some resets to all MIDI ports. You can set "Block all channel messages" + "Block all SysEx" in AZ Controller Options to prevent that for particular port (if you don't want disable these messages globally, f.e. you use some hardware MIDI synth). But something still can leak in case AZ Controller / Preset are not leaded yet at the time Cakewalk sends these messages (should not happened in practice...).