Page 1 of 1

CSegmentButton + VS2010 with some segment count(s)

Posted: Sat Sep 24, 2016 1:39 pm
by willpirkle
VST3 SDK 3.6.6 build 58 with included VSTGUI4.3

I’m posting this in the VSTGUI Forum but I think it applies to the VST3 SDK Forum as well (for documentation purposes). This has to do with confirming which versions of Visual Studio will work with both the SDK 3.6.6 and VSTGUI 4.3, specifically with the CSegmentButton control.

I noticed in one of my VST3 plugins, compiled with VS2010, that my CSegmentButton was not working. This horizontal segment button control happened to have 7 segments. The problem did *not* occur if the button had 6 or 8 segments - only 7. The problem was that the 6th segment would not get selected. Clicking on the 6th segment would select the 5th segment instead. All other buttons would be selected correctly.

The solution was to re-compile the plugin with VS2015 (I did not try VS2013). Then, the control worked properly.

Documentation:

The VST3 SDK states: “Windows platform samples (Win32 and x64, requires Visual C++ 2013, 2012, 2010 or 2008)” for the Note Expression Synth example (perhaps this needs to be updated?)

The VSTGUI4.3 SourceForge page states “Microsoft Windows (with Visual Studio 2008/2010/2012/2015 and Windows 7 Platform SDK)”

The VSTGUI4.3 GitHub page states “Visual Studio 2013/2015 or Xcode 6/7”

Also, the Note Expression Synth project includes the note_expression_synth_vc10.sln, apparently specifically for VS2010.

You can replicate this issue using the Note Expression Synth sample code:

1 - add a dummy string list parameter with 7 strings in the Controller::initialize( ) method
2 - add a CSegmentButton control to the .uidesc file (GUI) with 7 segments and connect the tag to the above parameter
3 - build the project in VS2010 and open in Cubase - the 6th segment will not be selected when you click on it; it will select the 5th segment instead
4 - rebuild the project in VS2015 and open in Cubase - now the control works properly

I have replicated this multiple times to verify and I can create a short video that shows it, if necessary.

I have also replicated it in non-VST3 application.

Interestingly, the other VSTGUI4.3 controls seem to work without issues when compiled with both VS2008 and VS2010 - it is only the CSegmentButton, and only with 7 segments, where the problem occurs. If it is some kind of float->integer rounding issue (that’s my current guess), then there may be other segment-counts that give the same problem.

So, I am asking for confirmation that this is either a VSTGUI4.3 problem (involving rounding?) and/or that VSTGUI4.3 must use VS2013/VS2015, in which case the VST3 SDK 3.6.6 should be updated to remove the xxxxx_vc10.sln files and documentation should be changed to reflect that. I understand that future versions of VSTGUI will require C++11 (perhaps the same will be true for the VST3 SDK) which would limit the compilers that could be used. Honestly, for me, the fewer compilers, the better, so I am not complaining - just need to verify what is going on here.

Thanks as always!
- Will

Re: CSegmentButton + VS2010 with some segment count(s)

Posted: Tue Dec 27, 2016 4:51 pm
by willpirkle
FYI:

This turned out to be user error (face-palm) - the vmax value was being set incorrectly for the CSegmentButton. :oops:

The rounding was handled differently in VS2015, but in the end, it didn't matter.

My Bad... sorry for the spam-post.

- Will