Author Topic: Yamaha 01V96VCM_v2 - Preset Creation  (Read 6975 times)

Offline nickeson

  • Newbie
  • *
  • Posts: 6
Yamaha 01V96VCM_v2 - Preset Creation
« on: January 16, 2016, 07:25:09 AM »
Hi,

I just wanted to start by saying I really love your plugin!  It has solved several problems for me with my control surfaces (Yamaha 01V96VCMv2 and Behringer BCR2000).  They're both capable of bidirectional communication, but weren't able to do so without your plugin.

I've done a lot of reading on your plugin (all of the general forum posts and anything I could find re: BCR2000).  I have a couple of issues I haven't found solutions for yet and thought that it may be quicker if someone here could point me in the right direction.

I'm using Sonar X3e (x64).

The main issues I'm having are regarding the 01V.  I've been able to learn a lot from MarKo's BCR2000 plugin on how to use your AZslow plugin, but I haven't been able to figure it all out on my own and I'm here for help.  I've done everything I can to learn it on my own, but I'm to the 'banging my head against the wall' phase of things and hoping somebody here can set me straight.

The 01V in 'Remote' mode uses Mackie HUI protocol (in several of it's remote configurations: Protools, Nuendo, Cubase, General DAW).  The Mute & Solo buttons work great, and the 01V doesn't seem to output any commands other than these and the 8 user defined keys, so this is a good starting point for me as everything works great 'out of the box'. 

The issue comes with the fact that the 01V outputs identically formatted information on channels 1-8 (using the 1st midi port) as it does on channels 9-16 (using the 2nd midi port).  In the 01V configuration page, you have to choose a SET of 2 midi ports for the 'Remote' layer to use.  When I setup the 01V as two separate instances of the azslow plugin, each with a HUI preset loaded, everything works just as I'd want with the exception of one thing - the WAI doesn't work right when I bank left/right.   Only the first group of 8 faders banks left/right, chs 9-16 stay put and I believe all my user defined keys that I can program on the 01V output information to the first of the two chosen midi ports only, so I can't program separate buttons (or shift functions) to bank chs 9-16 at the same time as chs 1-8.

I understand this is solved by putting the two AZctrl plugins in 'cooperation mode', and I have done some experimenting in that way.  The WAI bank left/right works great in this configuration, but the midi commands (volume/mute/solo) coming in on the 2nd midi port (slave controller) show up differently in azctrl in this configuration than they do in the 'dual HUI', non-cooperated mode.

 I found workarounds to get the faders working in this (cooperation mode) configuration, but I have yet to understand how to program the buttons for mute/solo as they too output different values in this configuration than when operated separately (non-cooperated).  From what I can tell, the Azctrl plugin in this configuration is modifying the incoming data from the 2nd (slave) controller because it matches the format identically to the master controller (midi port 1), as a way of avoiding conflict internally between master and slave.  The 'Last MIDI' event data for channels 9-16 shows up differently than that for channels 1-8 when they're in cooperation mode, even though I'm quite certain what the 01V is outputting is identical parameter values (but on different midi ports).  Somehow azslow is translating them.  I can verify this by watching the parameter format on chs 9-16 when using them in non-cooperated 'Dual HUI' mode. 

This is making programming the 9-16 mute/solo buttons very difficult as I don't understand SysEx enough and they seem to be using sysex values.  If I could get the rest of the buttons working in this mode it'd be great, as I've figured out how to map chs 9-16 faders in a way they work by re-learning those faders on the hardware tab and then instead of outputting Ctrl-MIDI values to them like on chs 1-8, I had to output specific values on chs 9-16 to get those faders to respond bidirectionally.  It didn't seem to work for the buttons though, but again, I'm at my programming limit of expertise when it comes to SysEx (and most of this in general - I just trial and error my way through most of it anyway).

I'm thinking there may be a way of having the two separate instances of AZCtrl bank together at the same time using the WAI Functionality that MarKo uses in his BCR2000 preset (version beta 8), but I don't understand it well enough and his logic is quite deep in that plugin setup with multiple pages, multiple shift changes to parameters, timers, etc., so I haven't gotten very by analyzing what he's doing yet as I don't really understand it well enough to know if I could use this method.  My logic is to setup the 2 banks as separate (non cooperating) HUI surfaces.  On the 2nd surface, I could have it periodically check what channel is in focus in sonar, and them modify it's bank configuration appropriately.  I especially like in MarKo's BCR2000 preset how it does this but still keeps the specific bank within the channel perfectly.  For example, if the WAI is set to chs 1-8 in Sonar and I use the mouse to click on channel 14, the WAI for the whole surface goes to 9-16, but ch 14 is the one selected in Sonar's track inspector.  My ideal solution would have WAI behave this way and control both HUI banks on the 01V.  But how to do this is beyond me...

As another solution, I tried configuring the azctrl plugin as a synth in Sonar thinking maybe I could setup a bank button as a MIDI note and then use a midi track with input monitoring to pass the midi note from the 1st azctrl HUI to the 2nd azctrl HUI (not in cooperation mode) via midi in/out on the midi channel, so they banked at the same time.  But Sonar doesn't support that 'configure as synth' option for ctrl surface plugins, only VSTs & synths.  So, I struck out on this method, unless you know of another way to pass a specific midi note or CC from one instance of AZCtrl to a 2nd instance of AZCtrl without using cooperation mode.

So, I was thinking you (Alexey?) may have a way on your end to program functionality into the azctrl plugin to allow passing of specific midi parameters between 2 or more instances of your plugin without passing all midi data (like a pseudo cooperation mode).  That way I could setup the bank command in the HUI #1 to be triggered by a MIDI note or CC (that I program in on the 01V in the user defined keys section which only outputs from the 1st of the 2 midi ports in 'Remote' mode), then that MIDI note or CC would get echoed to the 'pseudo-slave' controller(s) which are programmed to respond by moving their WAI bank when they receive that MIDI note/CC.  Is this a crazy way of accomplishing my goal?

OK, all that being said, I've got the 01V working about 95% of the way I want.  But I want 100%, so some more info that may help:

The 01V has 3 layers besides 'Remote' that I've been able to successfully use with AZctrl to program faders, panning and 3 other buttons (actually I'm using the Hi-Q/Hi-Mid Gain/Low Gain knobs as buttons by using them in step mode/accelerated/50%).  The problem I run into using any of these 3 layers (which output data on a completely separate MIDI port than what is used in the 'Remote' configuration which takes it's own 2 midi ports) is that while I can get the faders to respond bidirectionally, they seem to 'fight' with Sonar.  If I move them too quickly, the motorized fader fights me.  I can control the faders onscreen though, and can move them with the mouse & have the 01V's motorized faders respond.  So, I'm close with this method but I couldn't find any type of combination that worked flawlessly by changing from Direct to Catch, etc.  From my understanding of the situation in this mode, the 01V doesn't communicate as quickly or smoothly in these 3 layer modes as it does in 'Remote' mode.  Likely the internal hardware is optimized for using 'Remote' mode with a DAW and the other modes are more for the Digital Mixer itself, not really for control surface commands, even though I have forced it to output & respond to MIDI commands.  It just doesn't seem as responsive in these 3 layers to bidirectional control messages, and I think it's because it's using one midi port for all 16 channels whereas the 'Remote' layer uses 2 midi ports for 16 channels.  I think these 3 other layers have midi bottlenecks on the 01V and it's not really an AzCtrl issue.  So, this makes me not want to use these layers for faders.  Another drawback to using one of these 3 layers for faders/mute/solo instead of using the 'Remote' layer is that in this mode the 01V doesn't seem to output midi data from the solo buttons, which means it's much less intuitive than using the 'Remote' layer as HUIx2 for my workflow.   As of right now I'm just using these 3 layers as additional controls - I plan on programming them for Record Enable, Phase Shift, Automation Write enable, possibly to control sends, etc.  I'd really prefer to keep this option open and find a way to get the HUIx2 setup working properly using the 01V's 'Remote' layer.

So, to summarize, my options to get the fader/mute/solo controls working as smoothly as possible and keep all 16 channels bankable at the same time seem to be:

- 2 separate Azcontrol instances, both in HUI mode on 1st and 2nd midi ports (does everything I want but they don't bank together)

- 2 'cooperated' azcontrol instances (master/slave), but find a way to get mute/solo buttons working correctly (and I don't understand SysEx!).  This configuration has the issue that channel 9-16's midi values seem to get translated by azctrl and I don't know how to workaround this.

I think the first option would be the easiest, but I don't know how to pass the WAI bank left/right message between the instances.  Can this be done indirectly by using MarKo's BCR2000 WAI method?  This seems ideal to me but I really don't get how he's doing it.

Anyway, I can send over a couple of presets I've made for you to experiment with if you want, but you may have an easy solution for me that I've somehow missed on the forums and without an 01V it may be easier to have me do the experimenting and someone here can provide me a couple of example presets for whatever you think is the sleekest method of solving this banking issue.

I'm also happy to share my presets with the forum once I get them finished (or at least functional), as I'm sure there are others with a Sonar X3e / Yamaha 01V96VCM configuration that would get some benefit from the hours I've put in.

Also, I have a rearranged & modified version of MarKo's BCR2000 plugin I'll post once I'm done with it as well.

A couple of other unrelated questions I had were regarding the ProChannel.  Is there a command somewhere to expand the prochannel?  I've been able to do it using MarKo's BCR200 plugin using the S/D feature (really it seems to output +/- values to Sonar which act as a toggle for whatever is highlighted with the mouse).  It's the 'Show/Hide' ProChannel feature.  I'd love to program that onto a button that opened/closed it on whatever track was selected. 

In a similar way, I'd really like to know how to open the ProChannel QuadCurve EQ's 'Zoom' feature using AZCtrl.  This is the >> (Open Zoom Window) feature of the ProChanel EQ.  Can you let me know if AZCtrl has control over that parameter?  What about the 'pin' feature that keeps this EQ Zoom Window open/on-top?  Those 3 buttons would get a lot of use as I find myself opening/closing/pinning that window quite a bit, as well as show/hide of the ProChannel itself.

The final question I had was regarding changing from one ProChannel plugin to the next.  Is there an easy way to 'select prev/next' on the ProChannel using two buttons for prev/next?  MarKo's plugin already has a ProChannel mode, but in that mode, bank left/right just move the WAI left/right by one channel.  In previous versions of his beta preset those buttons were supposed to move forward and back through ProChannel plugins, but I couldn't seem to figure out how that worked as it didn't seem to be doing anything.  When I got to version 8 of his preset it just moves the WAI prev/next one channel, so maybe MarKo never fully got that feature working & bailed out on it?  This feature would also be extremely helpful for me so I could put most of my ProChannel plugins on the BCR2000 by way of your ACT mapping, and move through the various plugins using prev/next.  I have rearranged his ProChannel page to have a more inclusive mapping of the QuadCurve EQ (his didn't have lo/hi shelf enable) and to be on the opposite side of the BCR2000.  I've also setup the Console Emulator Channel on this ProChannel page in my modified version of his preset, as well as a couple of sends/send-pans.  This is a better solution for my workflow.  All in all, I've managed to modify his beta-8 preset to do almost everything I want but I wanted those 4 extra features.

Quick summary of the features I'm still struggling with on the BCR2000:

- Show/Hide Prochannel
- ProChannel QuadCurve EQ 'Open Zoom Window'
- ProChannel QuadCurve EQ 'Open Zoom Window Pin'
- prev/next buttons for moving through which ProChannel module is selected.

Sorry for the long post - I wanted to be as thorough as I could so you'd know how to best respond, but also as a way of keeping track of my findings for other 01V and BCR2000 users.

Again, outstanding work on this plugin and thanks for keeping me with Cakewalk - I almost jumped ship to Steinberg a couple of times over lack of bidirectional support for control surfaces in Sonar, but you kept me onboard.

Best Regards,

Kris

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1701
Re: Yamaha 01V96VCM_v2 - Preset Creation
« Reply #1 on: January 18, 2016, 01:34:22 AM »
Hi Kris, and welcome to the club!

I was not at home this weekend and I am a bit tired, at 1:00 AM after 650km driving... So I am not going to answer all your questions at once at the moment. But I also do not what to make you think I am ignoring you  ;)

So, for 01V. Master/Slave is the way to go. I will prepare "HUI Master" preset, with 16 channels support the same way as my "HUI" preset (tomorrow evening). Than you can adopt it. In short, the trick is within HUI protocol. MIDI message mode switching is required on the Option tab to assign what is called "_S_" controls responsible for mute/solo/arm and faders touch. Once assigned, they will be shown correctly in any mode. There is no universal definition how to interpret MIDI CC messages. In HUI, some 14bit CCs (these are 2 sequential CC7) are used "as is" (for Faders), other 14bit CCs are used with additional "address" byte in one of values bytes (for buttons) and yet another CC7 are used for encoders. Plug-in has absolutely no way to automatically recognize what to use, all CCs looks similar. So there is this option to set the mode manually for assignment purpose.
I will also change WAI to 16 strips in this preset.

About ProChannel:
1) show/hide is done with a key combination (I do not remember which at the moment, that is somewhere in Sonar documentation)
2) if I remember correctly, we have not found the way to open fly window nor pin it.
3) focusing "next/previous" pro-channel  module (as well as any plug-in) is possible with "Function"/"Context" set of functions.

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1701
Re: Yamaha 01V96VCM_v2 - Preset Creation
« Reply #2 on: January 18, 2016, 08:32:49 PM »
I attach the presets.

Warning!!! Do not forget to save your current preset, better with export!

Assign HUI Slave to the second instance first, then HUI Master to the first. Do not keep 2 GUIs open at the same time! You will see "HUI Master" in both then, but it will work as expected. Everything should go to the Master, "Slave" just internally transfer IO to it.

If that is working for you as expected (16 strips control), we continue with the rest of questions. If not, well, we should solve that first.

If the information in the Internet is correct, 01 should send transport, bank switch, etc.

Offline nickeson

  • Newbie
  • *
  • Posts: 6
Re: Yamaha 01V96VCM_v2 - Preset Creation
« Reply #3 on: January 20, 2016, 02:16:48 AM »
Hi,

That preset file contained 'Master HUI' and 'Slave HUI', but both appear to be blank inside.  Both are set to Standalone, have no hardware or logical controls defined, and don't seem to do anything with the 01V.  Loading the old HUI preset makes it roar to live, either as master/slave (with banking working and mute/solo broken), or as 'dual master' (with banking broken but mute/solo works fine) .  Also, your presets seem to be set to 7 bit, cc only, whereas my controller seems to output 14 bit (seems to work best on 'Strict' when using as master/slave, but also works on MSB when using the 'dual master' setup.

I have uploaded a few presets I've been working with, in case that gives you any clues.  The ones labeled with .2 .3 and .4 are the ones I load for the 01V and correspond with the midi ports used on the 01V.  Ports 3/4 in this case correspond to the HUI functionality accessed by using the 'Remote' layer on the 01V.  Chs 1-8 are on port 3, Chs 9-16 are on port 4, so ch3 is master, ch4 is slave.

The file with the .2 is for midi port 2 and corresponds with the 'Layer1' function on the 01V, which in this preset works for Mute/Solo/Record/Pan/bank (works for all 16chs), using the HiQ/Hi-Mid Gain/Low Gain for Mute/Record/Solo, and Pan for Panning functions, which all output discrete MIDI on all 16chs.  Eventually once the dual HUI is working I'll remap these to Pan, Record Arm, Phase, Interleave, Automation Record.  Right now the faders aren't mapped anywhere in this preset.  This has been my workaround for now as an addition to using the HUI as 'dual master', but may give you insight into how the 01V is outputting data.

My guess is something went wrong when you exported your new HUI Master/Slave preset?  I've tried (after backing up!) deleting all presets, restarting sonar, then importing your 2 presets, and I get the same result - the presets are basically empty on the Hardware and Logical controls screens, which doesn't seem right...  Also, the notes from above apply - they're both set to Standalone/7-bit CC Only mode, which from my understanding of your plugin would not work in this scenario even if the hardware and logical controls were mapped. 

I also tried re-downloading the file thinking it was corrupt, but the same results.

So...before we get into any of the fancy stuff, can you double check your preset & re-post?  My preset file also contains your original HUI preset which works great for 8 chs in 'Dual Master' mode, but then I still have my original banking problem.  I kept it in there for reference.

Thanks again for all your help - I'm sure we'll get this sorted soon & have another great preset for your archives!

Cheers,

Kris

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1701
Re: Yamaha 01V96VCM_v2 - Preset Creation
« Reply #4 on: January 20, 2016, 10:35:48 AM »
Sorry, I forgot to mention that you need the latest test (now release) version v0.4r2b300. Presets are not forward compatible and you use older version (I see that in presets you have attached). I always use my development version.

So please check again, with 0.4r2b300

Offline nickeson

  • Newbie
  • *
  • Posts: 6
Re: Yamaha 01V96VCM_v2 - Preset Creation
« Reply #5 on: January 20, 2016, 11:30:40 AM »
That worked like a charm!

I found one bug with banking though, but I've also found the fix.  Value 1 and Value 3 for bank were both set to +16, so it only banked to the right with either bank button.  I've fixed it by changing value 1 to -16, works as expected now.

I've attached that modified preset as HUI_MasterSlave_v2.spp that seems to work.  I tested mute/solo for chs 1-16, they all have smooth fader action (no fighting with the motorized faders), respond bidirectionally with sonar changes.  I haven't found any knobs that output any MIDI data in this Remote Layer beyond what we already have working, and I know how to program the user defined keys to output standard Midi note or program change or CC messages, so I'll find a way to make those work.  My goal is to be able to implement a shift and/or a control button, to turn this bank of 8 buttons into many more.  I believe there's functionality in the 01V to do this as well, so I may just go that route for shift/ctrl as that function in your plugin is a bit out of my depth currently, though I've almost figured out the logic of how those puzzle pieces fit together in your program, I just think I can get at it quicker doing it on the 01V side (it has about 8 presets for those 8 user defined keys, so I could program two buttons to scroll back and forth through those presets...).

That gets me up and running, and I see one of the issues I was having with interleave not working as expected is a fix you put in this latest release, so I'll give that a go, too as that's one I wanted to be able to control from one of the Layer1/Layer2 buttons.  I'm going to work on programming my Layer1 and Layer2 and Master layers to be useful now that I have the basics of this HUI preset.  I'm also going to tackle making this automatically follow the onscreen WAI if changed by the mouse and keep the selected channel in focus, but the WAI as a bank of 16 for whatever channel is in focus, the way MarKo's BCR2000 preset v8 works.  I still don't fully understand it, but I have a solid starting point now with this preset you made and I'm going to pick apart his logic on that feature and keep hacking at it, unless you have a tutorial or preset on that 'auto-follow' WAI feature he used in the BCR2000 preset that I could read or import - I couldn't find one in the forum posts as a starting place for that type of functionality, but I haven't read some of the pages that correspond to other control surface presets - perhaps it's covered there.  I'll keep digging as I don't want to waste any of your time as you've already been very helpful.

Thanks a million, I'm going to need a couple of days to digest what I've got but any time you have to point me in the right direction with some of my other questions, that'd be great.  You really are amazing and this preset's going to save me (and hopefully others!) a lot of headaches.  I think I'm also going to build in a Channel L/R, similar to the bank L/R you have in here now.  Ah, my wishlist grows...

Cheers,

Kris

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1701
Re: Yamaha 01V96VCM_v2 - Preset Creation
« Reply #6 on: January 20, 2016, 05:04:05 PM »
Sorry for the error in Bank... I barely can test presets I am creating, so there are errors.

Since I see you want to understand how all that works, I will write examples with explanations when required. More "power users" like MarKo is worse the time spent. Different people have different ideas, and the only purpose of my project is fun and creativity.

So, lets go throw "WAI follow focused strip type can strip", "Focused strip change" and "Shift/Caps lock" in one step. The example preset is attached (takes 5 minutes to create... when you know how it works).

Assign some buttons to "Left", "Right" and "Shift" control to test it. "Shift" button should generate "On" and "Off" events to work. Other "controls" are not for hardware (I put "_" before names to make that clear).

States:
* StripType will be used to follow currently selected type in Sonar.
* Shift is used to remember either we are in "Shift" mode
* _ShiftUsed is there to detect either we want "Shift" of "CapsLock" functionality from the hardware "Shift" button. I explain how it works later.

1) "Strip type" detection. We want to know either bus or tracks are in focus (plug-in can not "see" mains focus, but that is useless in most cases, note that you still can have WAI on some mains and control volumes of them). In "_StripTypeMonitor" the first monitor is "Timer". Note "Ultra" speed (~13 times per second) and the Priority 1. When several monitors are executed in one cycle, they are executed in the priority order. Sometimes important, in this example not really. In the "Feedback" for that monitor I remember currently focused strip type in the "StripType" state. Note "Set engine state", during monitoring changes in states are normally temporarily since monitors follows "what happens if..." philosophy. In this case we want remember new state as global.

2) Next monitor in "_StripTypeMonitor" control is for the "StripType" state changes. Why it is different? "Strip type" detection is executed 13 times per second, even when nothing is changed. It always set "StripType"! But if the is no changes, the value will be the same. We do not want set WAI 13 times per second, that will work in this particular example (the plug-in will detect there is no real changes in WAI and will not disturb Sonar), but for logical clarity I have separated monitors. Depending from what you do on state changes, that can significantly influence CPU load or even trigger false response. Note Priority 2. We want it executed AFTER setting the state (Priority 1), otherwise it will be executed in the next "cycle". Again, in this particular example 1/13 of the second delay is not important. But if you use the same methods for setting real time parameters, for example level meters, you can easily spot such delay. In the monitor itself, I set WAI "width only" (so, I do not change the position of WAI, just the number of strips) depending on currently focused strip type. One of WAI, with track, is "Initial" and set on preset load

3) "_FocusMonitor" track current focus ("Parameter name" of current strip Volume, note that "StripType" is used since track and buses have "focused" strips, even when only one of them is really in windows focus). That monitor itself is executed on changes (since parameter is always "Volume", it is called on strip changes only). This time I use "selected strip" as the reference for WAI setting. Note "Align 3" options. 1,2,3 gives "1"; 4,5,6 produce "4" and so on (in your case it will be "Align 16").

4) "Shift" button toggle "Sift" state when pressed ("Note:On" condition, not shown by it is default for all actions. "CC 0" is interpreted as "Note:Off" when assigned to "Pad" control type. Otherwise (for example for "Unknown" control type) it is possible to test for "Value:0" condition). "_ShiftUsed" is "unarmed" at the same time. When "Shift" is depressed ("Note:Off") I again change "Shift" state, but only if (!) "_ShiftUsed" is set to "Yes". So, if nothing changes "_ShiftUsed" between "Shift" Pressed and Released, the button work as CapsLock!

5) "Left" and "Right" always set "_ShiftUsed" to "Yes", indicating we want "Shift" button function as normal "Shift" (see (4)). Then, actions are executed with corresponding "Shift" condition. With "Shift:On" both buttons switch focus between tracks and buses. Looks a bit ugly, but the only way it works reliable (more logical versions for such switching hit several bugs in Sonar...). When "Shift:Off", these buttons focus previous/next strip ("StripType", "<current>", +-1).


I hope you can follow that and implement in your preset. When(if) done, let me know what you want as next. Otherwise let me know what is unclear.

Offline nickeson

  • Newbie
  • *
  • Posts: 6
Re: Yamaha 01V96VCM_v2 - Preset Creation
« Reply #7 on: January 22, 2016, 06:17:42 AM »
Great - thanks for the tutorial and the example preset.  I'm looking forward to implementing that and using the Shift as a way to control channel L/R as an alternate to bank L/R without shift. 

I've got a couple of projects to finish for clients in the next few days so it'll be a week or so before I get back on this, but I can hardly wait.

Thanks again for all your help - do you have a way to PM you?  I have some music I'd like to send you.

Cheers,

Kris

Offline azslow3

  • Administrator
  • Hero Member
  • *****
  • Posts: 1701
Re: Yamaha 01V96VCM_v2 - Preset Creation
« Reply #8 on: January 22, 2016, 11:07:54 AM »
You can PM me in this forum (click on my nick, then on "Send PM"). Not that my e-mail is really hidden, but if I mention it in open forum I will get more spam  ;)