Avatar

Please consider registering
guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
I get the error "The command "setlocal..." during my VST Plugin compilation
Avatar
Admin
February 15, 2018 - 1:06 pm
Member Since: January 29, 2017
Forum Posts: 640
sp_UserOfflineSmall Offline

If you are getting VST validator errors that look like this:

1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): error MSB3073: The command "setlocal
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): error MSB3073: cd C:\Users\<your computer and directory>\VST_SDK\VST3_SDK\myprojects\RackAFXCompressor\win_build\bin
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): error MSB3073: C:
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(133,5): error MSB3073: 

etc... 

We have found out this is due to a missing Windows DLL and is caused by a request (from Microsoft) to build with the Universal C-Runtime DLL. All new RackAFX exported projects adhere to this new paradigm. It is also causing grief among commercial plugin developers. 

See the forum post here for all the details, including an easy way to fix the problem, at least temporarily while you debug/test your plugin. 

http://www.willpirkle.com/foru.....s-runtime/

There is also a user post here, where we discovered this issue (thanks Rick M):

http://www.willpirkle.com/foru.....gin/#p2017

- Will

Avatar
Member
Members
May 11, 2018 - 8:08 pm
Member Since: March 13, 2017
Forum Posts: 18
sp_UserOfflineSmall Offline

i found out this error is also caused if the validator crashes due to a stereo track check on a mono plugin

eg. if using

 

// if STEREO,
if(inBuffer[1])
pInputR = inBuffer[1];

its better to use

// if STEREO,
if(uNumChannels>1)
pInputR = inBuffer[1];

 

and alter the fire midi events to

 

// --- fire midi events (AU, VST2, AAX buffer processing only; not needed if you use processAudioFrame())
if (m_pMidiEventList)
    if (m_pMidiEventList->getEventCount()>0)
           m_pMidiEventList->fireMidiEvent(uSample++);

 

then it does not crash and has no errors

Avatar
Member
Members
July 4, 2018 - 6:07 pm
Member Since: June 25, 2018
Forum Posts: 43
sp_UserOfflineSmall Offline

Getting same error - even with a new made (empty) synth (output only) plugin.
Working with VS 2017 Community on Win 8.1 and Win10 (all updates installed).
This only happens with Output Only plugins. Effect plugins build just fine.

Any idea anybody?

Thanks a lot!

Avatar
Member
Members
July 6, 2018 - 3:55 pm
Member Since: June 25, 2018
Forum Posts: 43
sp_UserOfflineSmall Offline

maybe more info is usefull:
The SDK plugins build fine (like shown in this video: http://www.willpirkle.com/foru.....gin/#p2014)
When I export my synth plugin (output only) from RackAFX as effect (so unchecking Output Only) it builds fine and works in my DAW - but as FX not as Synth.
So that's kind of confusing for me 😀

Avatar
Admin
July 7, 2018 - 11:47 am
Member Since: January 29, 2017
Forum Posts: 640
sp_UserOfflineSmall Offline

Your problem is due to a bug in the VST3 SDK 3.6.9 which I reported to the VST3 Users Forum here:

https://sdk.steinberg.net/viewtopic.php?f=4&t=553

I don't know how they missed that, unless they simply don't test the SingleComponentEffect object, on which we base our VST exported projects. They have fixed this in SDK 3.6.10 though I have not confirmed it. I have not issued a new RackAFX version for the new SDK because I have been working on a new book, and I have a couple of other issues to fix before doing another release. 

You can fix the problem in two ways: the first is to modify the SDK itself as indicated in the reply to my bug report in the link above. This is the approach I have taken for my own projects. The other option is to modify the plugin so that it exposes an audio input, even though it is a synth plugin. I would suggest the first solution. The vstsinglecomponenteffect.cpp file is part of your VST exported project, so you have access to modify it directly from your Visual Studio Project; you can find it in the "VST3 SDK" filter in your Visual Studio Project. The offending function can be found around line 104 of that file. Just cut and paste the "fix" from the link above and your project will then compile properly. 

A couple of notes:

1) if the setlocal failure occurs, check the Output tab in Visual Studio (or the log in Xcode, if compiling for a Mac) -- this error means the validator failed. You can trace back through the log and find the point where it fails; this is what I did when I reported the bug above. If the validator fails for some other reason (not this VST bug) then you'll need to go back and try to figure out what happened, using a variety of debugging approaches

2) if you are going to target VST3, you should either join, or at least lurk on the VST3 developer's forum above. This is where the latest bug reports are submitted and the engineers will address your questions or concerns - they are generally very nice and helpful, though they are also busy with other stuff so you sometimes need to be patient when waiting for a reply. Also, do not post anything involving RackAFX (or JUCE or other plugin framework stuff) because they generally (and rightfully) will ignore it since it isn't their direct issue.

A new RackAFX version should be available by the end of August, which is when we return to classes at the University of Miami and it will include the support for the 3.6.10 SDK as well as a few other fixes.

Thanks for using RackAFX! There is a big new surprise coming in the Fall with a new RAFX front-end and new super-tight, 100%-professional plugin framework called ASPiK, which of course will be 100% license-free for use.Wink

- Will

Avatar
Member
Members
July 7, 2018 - 10:22 pm
Member Since: June 25, 2018
Forum Posts: 43
sp_UserOfflineSmall Offline

Awesome!
Thank you so much! I was really getting crazy the las 2 weeks or so - you saved me!
In my case the 2nd solution worked best (maybe because I'm using processAudioFrame - I don't know) - both solutions build without errors.

I'm looking forward to your new book and the new RackAFX!

Thanks a lot again!

Avatar
Anglia
Member
Members
July 22, 2021 - 6:49 pm
Member Since: June 2, 2014
Forum Posts: 15
sp_UserOfflineSmall Offline

I've been working on the slightly older RackAFX, ASPiK and VST SDK 3.7.1 for a couple of weeks now. I built the volume plugin, as outlined in the ASPiK SDK, and that built fine and I could load the VST3 in Reaper. I then created the same plugin using RackAFX, exported that to ASPiK and could equally well build this and load the VST3 into Reaper.

(On a side note, I did have to copy the "inner" VST3 into my Reaper VST directory - VST_SDK\VST3_SDK\myprojects\Volume\win_build\VST3\Debug\Volume.vst3\Contents\x86_64-win\Volume.vst3 to get Reaper to see it. If I copied the "outer" VST3 - VST_SDK\VST3_SDK\myprojects\Volume\win_build\VST3\Debug\Volume.vst3, Reaper never loaded it. I don't quite understand why that is, as the SDK examples were copied as an "outer" VST3 and Reaper coould see those fine)

I've now completed the IIRFilters Plugin, in RackAFX, which is performing perfectly well. After having exported to an ASPiK project, I ran the cmake command, then msbuild IIRFilters.sln. This resulted in the dreaded page of error MSB3073: The command "setlocal errors being spat out, much to my dismay. I decided at this point, probably unwisely, to update ASPiK, RackAFX and VST3)SDK to the latest versions, RackAFX 7.0.3.1, ASPiK 1.6.8 and VST3_SDK 3.7.2

I upgraded the RackAFX project, VSTGUI 4.10 as per the instructions, and even cleared out my ASPiK project and regenerated the ASPiK IIRFilters project. (Question: Can I actually regenerate an ASPiK project over an exisiting one? Will it update the ASPiK project accordingly?).

Of course this made no difference to my errors. I did a bit of digging and found the command line of the Post-Build Event for IIRFilters.sln (the ASPiK project) was invoking the validator, which is failing.

So I ran the validator on its own, to see if I could understand more about what's going wrong. It simply seems to stop at the phase TestSuite: Single Precision (32 bit) Tests, without saying much more:

D:\Documents\Source\Repos\VST_SDK\VST3_SDK\myprojects\IIRFilters\win_build>D:\Documents\Source\Repos\VST_SDK\VST3_SDK\myprojects\IIRFilters\win_build\bin\Debug\validator.exe D:/Documents/Source/Repos/VST_SDK/VST3_SDK/myprojects/IIRFilters/win_build/VST3/Debug/IIRFilters.vst3/Contents/x86_64-win/IIRFilters.vst3
* Loading module...

D:/Documents/Source/Repos/VST_SDK/VST3_SDK/myprojects/IIRFilters/win_build/VST3/Debug/IIRFilters.vst3/Contents/x86_64-win/IIRFilters.vst3

* Scanning classes...

Factory Info:
vendor = Doomsville Soundscapes
url = https://github.com/DoomyDwyer
email = doomy@puscii.nl

Class Info 0:
name = IIRFilters
category = Audio Module Class
subCategories = Fx
version = 1.0.0.001
sdkVersion = VST 3.7.2
cid = 7B9972424B753C05883B723C128ECC18

* Checking snapshots...

Info: No snapshots in Bundle.

* Creating tests...

* Running tests...

-------------------------------------------------------------
TestSuite : IIRFilters
-------------------------------------------------------------

-------------------------------------------------------------
TestSuite : General Tests
-------------------------------------------------------------

[Scan Editor Classes]
Info: ===Scan Editor Classes ====================================
Info: Processor and edit controller united.
[Succeeded]

[Scan Buses]
Info: ===Scan Buses ====================================
Info: => Audio Buses: [2 In(s) => 1 Out(s)]
Info: In [0]: "Stereo Input" (Main-Default Active)
Info: In [1]: "AuxInput" (Aux-Default Active)
Info: Out[0]: "Stereo Output" (Main-Default Active)
Info: => Event Buses: [1 In(s) => 0 Out(s)]
Info: In [0]: "Event Input" (Main-Default Active)
[Succeeded]

[Scan Parameters]
Info: ===Scan Parameters ====================================
Info: This component exports 137 parameter(s)
Info: Parameter 000 (id=0): [title="fc"] [unit="Hz"] [type = F, default = 0.564386, unit = 0]
Info: Parameter 001 (id=1): [title="Q"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 002 (id=2): [title="Boost/Cut"] [unit="dB"] [type = F, default = 0.500000, unit = 0]
Info: Parameter 003 (id=3): [title="Filter Type"] [unit=""] [type = D, default = 0.000000, unit = 0]
Info: Parameter 004 (id=131077): [title="Scale GUI"] [unit=""] [type = D, default = 0.000000, unit = 0]
Info: Parameter 005 (id=1000): [title="midiCC_0"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 006 (id=1001): [title="midiCC_1"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 007 (id=1002): [title="midiCC_2"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 008 (id=1003): [title="midiCC_3"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 009 (id=1004): [title="midiCC_4"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 010 (id=1005): [title="midiCC_5"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 011 (id=1006): [title="midiCC_6"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 012 (id=1007): [title="midiCC_7"] [unit=""] [type = F, default = 1.000000, unit = 0]
Info: Parameter 013 (id=1008): [title="midiCC_8"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 014 (id=1009): [title="midiCC_9"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 015 (id=1010): [title="midiCC_10"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 016 (id=1011): [title="midiCC_11"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 017 (id=1012): [title="midiCC_12"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 018 (id=1013): [title="midiCC_13"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 019 (id=1014): [title="midiCC_14"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 020 (id=1015): [title="midiCC_15"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 021 (id=1016): [title="midiCC_16"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 022 (id=1017): [title="midiCC_17"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 023 (id=1018): [title="midiCC_18"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 024 (id=1019): [title="midiCC_19"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 025 (id=1020): [title="midiCC_20"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 026 (id=1021): [title="midiCC_21"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 027 (id=1022): [title="midiCC_22"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 028 (id=1023): [title="midiCC_23"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 029 (id=1024): [title="midiCC_24"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 030 (id=1025): [title="midiCC_25"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 031 (id=1026): [title="midiCC_26"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 032 (id=1027): [title="midiCC_27"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 033 (id=1028): [title="midiCC_28"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 034 (id=1029): [title="midiCC_29"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 035 (id=1030): [title="midiCC_30"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 036 (id=1031): [title="midiCC_31"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 037 (id=1032): [title="midiCC_32"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 038 (id=1033): [title="midiCC_33"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 039 (id=1034): [title="midiCC_34"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 040 (id=1035): [title="midiCC_35"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 041 (id=1036): [title="midiCC_36"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 042 (id=1037): [title="midiCC_37"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 043 (id=1038): [title="midiCC_38"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 044 (id=1039): [title="midiCC_39"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 045 (id=1040): [title="midiCC_40"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 046 (id=1041): [title="midiCC_41"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 047 (id=1042): [title="midiCC_42"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 048 (id=1043): [title="midiCC_43"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 049 (id=1044): [title="midiCC_44"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 050 (id=1045): [title="midiCC_45"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 051 (id=1046): [title="midiCC_46"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 052 (id=1047): [title="midiCC_47"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 053 (id=1048): [title="midiCC_48"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 054 (id=1049): [title="midiCC_49"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 055 (id=1050): [title="midiCC_50"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 056 (id=1051): [title="midiCC_51"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 057 (id=1052): [title="midiCC_52"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 058 (id=1053): [title="midiCC_53"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 059 (id=1054): [title="midiCC_54"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 060 (id=1055): [title="midiCC_55"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 061 (id=1056): [title="midiCC_56"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 062 (id=1057): [title="midiCC_57"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 063 (id=1058): [title="midiCC_58"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 064 (id=1059): [title="midiCC_59"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 065 (id=1060): [title="midiCC_60"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 066 (id=1061): [title="midiCC_61"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 067 (id=1062): [title="midiCC_62"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 068 (id=1063): [title="midiCC_63"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 069 (id=1064): [title="midiCC_64"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 070 (id=1065): [title="midiCC_65"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 071 (id=1066): [title="midiCC_66"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 072 (id=1067): [title="midiCC_67"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 073 (id=1068): [title="midiCC_68"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 074 (id=1069): [title="midiCC_69"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 075 (id=1070): [title="midiCC_70"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 076 (id=1071): [title="midiCC_71"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 077 (id=1072): [title="midiCC_72"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 078 (id=1073): [title="midiCC_73"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 079 (id=1074): [title="midiCC_74"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 080 (id=1075): [title="midiCC_75"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 081 (id=1076): [title="midiCC_76"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 082 (id=1077): [title="midiCC_77"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 083 (id=1078): [title="midiCC_78"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 084 (id=1079): [title="midiCC_79"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 085 (id=1080): [title="midiCC_80"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 086 (id=1081): [title="midiCC_81"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 087 (id=1082): [title="midiCC_82"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 088 (id=1083): [title="midiCC_83"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 089 (id=1084): [title="midiCC_84"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 090 (id=1085): [title="midiCC_85"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 091 (id=1086): [title="midiCC_86"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 092 (id=1087): [title="midiCC_87"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 093 (id=1088): [title="midiCC_88"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 094 (id=1089): [title="midiCC_89"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 095 (id=1090): [title="midiCC_90"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 096 (id=1091): [title="midiCC_91"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 097 (id=1092): [title="midiCC_92"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 098 (id=1093): [title="midiCC_93"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 099 (id=1094): [title="midiCC_94"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 100 (id=1095): [title="midiCC_95"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 101 (id=1096): [title="midiCC_96"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 102 (id=1097): [title="midiCC_97"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 103 (id=1098): [title="midiCC_98"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 104 (id=1099): [title="midiCC_99"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 105 (id=1100): [title="midiCC_100"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 106 (id=1101): [title="midiCC_101"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 107 (id=1102): [title="midiCC_102"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 108 (id=1103): [title="midiCC_103"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 109 (id=1104): [title="midiCC_104"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 110 (id=1105): [title="midiCC_105"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 111 (id=1106): [title="midiCC_106"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 112 (id=1107): [title="midiCC_107"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 113 (id=1108): [title="midiCC_108"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 114 (id=1109): [title="midiCC_109"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 115 (id=1110): [title="midiCC_110"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 116 (id=1111): [title="midiCC_111"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 117 (id=1112): [title="midiCC_112"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 118 (id=1113): [title="midiCC_113"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 119 (id=1114): [title="midiCC_114"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 120 (id=1115): [title="midiCC_115"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 121 (id=1116): [title="midiCC_116"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 122 (id=1117): [title="midiCC_117"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 123 (id=1118): [title="midiCC_118"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 124 (id=1119): [title="midiCC_119"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 125 (id=1120): [title="midiCC_120"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 126 (id=1121): [title="midiCC_121"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 127 (id=1122): [title="midiCC_122"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 128 (id=1123): [title="midiCC_123"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 129 (id=1124): [title="midiCC_124"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 130 (id=1125): [title="midiCC_125"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 131 (id=1126): [title="midiCC_126"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 132 (id=1127): [title="midiCC_127"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 133 (id=1128): [title="midiAT"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 134 (id=1129): [title="midiPB"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 135 (id=131072): [title="Bypass"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 136 (id=1886548852): [title="MyPresets"] [unit=""] [type = F, default = 0.000000, unit = 0]
Info: Parameter 136 (id=1886548852) is kIsProgramChange, but not a kIsList!
[Succeeded]

[MIDI Mapping]
Info: ===MIDI Mapping ====================================
[Succeeded]

[MIDI Learn]
Info: ===MIDI Learn ====================================
Info: No MIDI Learn interface supplied!
[Succeeded]

[Scan Units]
Info: ===Scan Units ====================================
Info: This component has 1 unit(s).
Info: Unit000 (ID = 0): "Root" (parent ID = -1, programlist ID = 1886548852)
[Succeeded]

[Scan Programs]
Info: ===Scan Programs ====================================
Info: Programlist 000 (id=131075): "Factory Presets" (1 programs).
Info: Programlist 000->Program 000: "Factory Preset"
[Succeeded]

[Terminate/Initialize]
Info: ===Terminate/Initialize ====================================
[Succeeded]

[Check Unit Structure]
Info: ===Check Unit Structure ====================================
Info: All units have valid parent IDs.
[Succeeded]

[Valid State Transition 32bits]
Info: ===Valid State Transition 32bits ====================================
[Succeeded]

[Valid State Transition 64bits]
Info: ===Valid State Transition 64bits ====================================
Info: 64bit Audio Processing not supported.
[Succeeded]

[Bus Consistency]
Info: ===Bus Consistency ====================================
[Succeeded]

[Bus Activation]
Info: ===Bus Activation ====================================
Info: Bus Activation: Input Audio Bus (0) (kMain)
Info: Bus Activation: Input Audio Bus (1) (kAux)
Info: Bus Activation: Output Audio Bus (0) (kMain)
Info: Bus Activation: Input Event Bus (0) (kMain)
[Succeeded]

[Check Audio Bus Arrangement]
Info: ===Check Audio Bus Arrangement ====================================
Info: Check Input Audio Bus Arrangement (0)
Info: Check Input Audio Bus Arrangement (1)
Info: Check Output Audio Bus Arrangement (0)
[Succeeded]

[SideChain Arrangement]
Info: ===SideChain Arrangement ====================================
[Succeeded]

[Suspend/Resume]
Info: ===Suspend/Resume ====================================
[Succeeded]

[Note Expression]
Info: ===Note Expression ====================================
Info: No Note Expression interface supplied!
[Succeeded]

[Keyswitch]
Info: ===Keyswitch ====================================
Info: No Keyswitch interface supplied!
[Succeeded]

[ProcessContext Requirements]
Info: ===ProcessContext Requirements ====================================
Info: ProcessContextRequirements:
Info: - Tempo
[Succeeded]

-------------------------------------------------------------
TestSuite : Single Precision (32 bit) Tests
-------------------------------------------------------------

[Process Test]

D:\Documents\Source\Repos\VST_SDK\VST3_SDK\myprojects\IIRFilters\win_build>

Avatar
Admin
July 23, 2021 - 12:01 pm
Member Since: January 29, 2017
Forum Posts: 640
sp_UserOfflineSmall Offline

First, a user has reported an issue with sidechaining in VST3 ASPiK exports and I am working on that now. But it does not sound like you had the sidechain activated. If not - please read on. If so, I should have a fix shortly that will also roll in a fix a GitHub user fixed (hooray! an open-source fix, the first one).

Here is what I did to test this (just now, this morning).

First, I have RackAFX on both Win8 and Win10. The Win10 machine is my "pristine" one because it does NOT have the RackAFX development software installed on it. The Win10 machine mimics an ordinary user's machine and I upgrade the OS and do other stuff to it that a normal user would.

I installed RackAFX 7.0.3.1 on both machines, using the installer downloaded from this site.

I wisely upgraded existing versions of RackAFX, just as a user would, so neither of these were fresh installs.

On both machines, I first followed the notes in the "Migrating" documents on the Downloads page and made a backup copy of my RackAFX projects folder - just in case - (it wasn't needed in either OS, but always a good idea when installing new RAFX software, especially one that has a change due to the changes made in the VST3 SDK 3.7.2 and VSTGUI 4.10).

Next, I have VST3 SDK 3.7.2 installed on both machines, with a "myprojects" folder in the VST3_SDK folder, as per the videos (and, the folder does not have to be named myprojects, it can be named anything that is a valid CMake folder name (no whitespaces)). I copied the VSGTGUI4 folder into that, as per the videos and docs. I had already done this prior to releasing RackAFX 7.0.3.1 for testing, but wanted to list it here for completeness.

I also saved my old VST3.7.1 SDK, just in case, but it was not needed.

I already had Reaperx64 on both machines:

Reaper x64 on Win8: v6.19
Reaper x64 on Win10: v5.78
NOTE: see notes at end about new version of Reaper

I performed these tests on both machines. 

1. IIRFilters from website

- Downloaded IIRFilters project from https://www.willpirkle.com/fx-book/project-gallery/iirfilters-2/

- Compiled and tested in RackAFX. Used Export ASPiK to export as an individual VST3 project. 

- ran CMake, no problems; built the exported project in Visual Studio 2019; no problems, validator passed as usual

- placed VST3 bundle into my C:/Program Files/Common Files/VST3 folder

- Opened in Reaper x64 and tested - no problems.

 

2. Homemade project, from scratch

- created a simple volume plugin, from scratch in RackAFX, added a simple GUI and tested.

- exported as ASPiK for individual VST3.

- ran CMake, no problems; built with VS2019, no errors, validator passed as usual

- placed VST3 bundle into my C:/Program Files/Common Files/VST3 folder

- Opened in Reaper x64 and tested, no problems

 

3. Existing RackAFX Projects

- Opened existing projects (old RAFX stuff): used SuperSaturator on Win8 and StereoDelay on Win10 as they were both old versions from >9 months ago.

- got a message from RackAFX that the files had been upgraded to 7.0.3.1 *and* that the original files that were upgraded/modified had been backed up for me - just in case

- built and tested the projects - all good.

- exported as ASPiK for individual VST3.

- ran CMake, no problems; built with VS2019, no errors, validator passed as usual

- placed VST3 bundle into my C:/Program Files/Common Files/VST3 folder

- Opened in Reaper x64 and tested, no problems

I repeated both tests on Win8 - same results, no problems. All good.

4. Upgraded Reaper
I then upgraded Reaper to the latest version, 6.32 and re-opened -- all of my VST3s were gone. I copied the internal .vst3 portion of one project and reopened and re-scanned - the VST3 then showed up.

Before blaming RackAFX or ASPiK, I did my usual test with the VST3 SDK itself - I built the sample VST3 plugins that come with the VST3 SDK. In those Steinberg sample CMake files, the post-build rules also copy the VST3 bundle (actually a shortcut to it) into the /Program Files/Common Files/VST3 folder, after the validator is run. You must be running VS2019 as Administrator for this to work, other wise you get the "setlocal failed... error" -- I removed this file copy from the ASPiK CMake scripts because so many users were having problems with running VS as admin (not sure why as it is widely documented on the interwebs).

I opened Reaper x64 v6.32 -- the Steinberg VST3s were not there either.

I copied the internal adelay.vst3 file into the /VST3 folder, and re-opened Reaper. The VST3 showed up.

Therefore, there is a bug in Reaper 6.32, since even Steinberg's own samples did not show up when used as bundles.

Question: Did you build the sample plugins from the VST3 SDK as part of your testing?

So, I have found no issues at all with RackAFX 7.0.3.1/ASPiK 1.6.8, on two OS's and two installs of RackAFX 7.0.3.1.

I did find that there is probably a bug in Reaper.

FYI: I had already done all of this - every one of the FX book projects, 15 all together, which I had to do because of the VST3 3.7.2 update - prior to releasing RackAFX 7.0.3.1, but took the morning off to replicate these two again - just in case I may have overlooked something.

I also did all of this on MacOS using the Catalina version of Reaper, prior to releasing RackAFX 7.0.3.1 - no issues there (bundles were OK in Reaper).

To answer your other question:

- When you export, it will not overwrite an existing ASPiK project. Each exported project is it's own package (there are way too many gotchas trying to overwrite an existing project, and then each time Steinberg releases a new VST3 SDK, it would be a nightmare as they almost always change their internal CMake modules, and make undocumented changes to the CMakeLists.txt files).

Will

Avatar
Anglia
Member
Members
July 23, 2021 - 4:22 pm
Member Since: June 2, 2014
Forum Posts: 15
sp_UserOfflineSmall Offline

Hi Will,

Thanks for putting all this time into trying to reproduce this issue.

I'm on Windows 10, Home Edition, and am using Reaper v6.32/win64 - the latest release.

I have successfully built the VST3_SDK examples and have loaded those successfully in Reaper. I've also built the Volume control from the ASPiK Developer's Guide, as well as another version from RackAFX, then exported to ASPiK. Both versions built and can be loaded into Reaper, by copying the internal vst3 to my VST3 directory.

So it seems the only issue I'm having is with the IIRfilters plugin - I'm sure I've broken something, but can't for the life of me figure out what. I even tried cheating and copied the IIRFilters.vst3 file, which had already been built, to my VST3 directory and tried to load it in Reaper. Needless to say, this crashed my DAW.

Walking through the error output from msbuild, and running individual lines from this script, I've figured out that the validator is failing (as per my output above). The ERRORLEVEL after running the validator is 3. This is also in keeping with the fact that the plugin crashed Reaper.

I think what I really need is to understand better what the validator does, and how to investigate failures thrown by the validator.

Avatar
Anglia
Member
Members
July 23, 2021 - 4:27 pm
Member Since: June 2, 2014
Forum Posts: 15
sp_UserOfflineSmall Offline

-------------------------------------------------------------
TestSuite : Single Precision (32 bit) Tests
-------------------------------------------------------------

[Process Test]

D:\Documents\Source\Repos\VST_SDK\VST3_SDK\myprojects\IIRFilters\win_build>echo %ERRORLEVEL%
3

Avatar
Admin
July 23, 2021 - 5:17 pm
Member Since: January 29, 2017
Forum Posts: 640
sp_UserOfflineSmall Offline

Yeah, the validator can be very frustrating to use as it doesn't usually give you all the information you need. I understand the pain of that, and there's a thread on the VST Dev Forum as well here (I actually added a bit of advice):

https://forums.steinberg.net/t/how-can-i-debug-validator-failures-in-visual-studio/201966

I just (as in 2 minutes ago) rev'ed the ASPiK SDK to 1.6.9 and RackAFX to 7.0.3.2 and this was to change only one ASPiK file - the vst3plugin.cpp file, because a power user of mine named Dave Clark found an issue with the sidechaining code - not sure when it got broken, but it would also crash the validator on the process( ) function. But, that would only matter if you had sidechaining enabled - whether you were actually using the sidechain input or not did not matter. So, if you did not have sidechaining enabled, then something else is wrong. 

Another thing I tweaked was the base class code that processes audio blocks - if you were not processing blocks then that would not matter and 99% of users process frames because it is easier to think about. I realized that the users would need to write a bit more code that wasn't obvious, so I added that (basically resets the block size after each pass in case there was a partial block, which doesn't happen very often, or at all, in most VST3 clients). 

One thing you could do is to compare your IIRFIlters code with that of the demo project at the link in the previous message from me. This might have something to do with the three different chunks of code (mono -  mono, mono - stereo or stereo - stereo). 

Another thing you can do is to find out whether or not the issue is in your processAudioFrame( ) function or not and that is an easy test - I just did that this morning when fixing the sidechaining issue.

In the vst3plugin.cpp process function, comment out the line of code near the bottom where it calls:

pluginCore -> processAudioFrame(...)

and then rebuild. If the validator passes, the bug is in the processAudioFrame( ) code. This is how I found out that my sidechaining bug was in the VST3 shell code, and not in the plugin core. 

If you want to try a test to see if my sidechain fix also fixes yours (somehow...) then you can grab just the vst3plugin.cpp file here:

https://willpirkle.com/Downloads/vst3plugin.cpp

Then plant it in your VST3 project's vst_source folder. This will let you test this without having to install a new version of RackAFX. 

But, if you ever do block or buffer processing, you'll want the new 7.0.3.2 version for sure to avoid the partial buffer pitfall. 

So, that's the latest news from me - a new RackAFX and a new ASPiK, mainly to change the one VST3 file.

Will

Avatar
Anglia
Member
Members
July 23, 2021 - 6:49 pm
Member Since: June 2, 2014
Forum Posts: 15
sp_UserOfflineSmall Offline

Thanks Will. I'll check this out in depth in the morning. From what I understood from the FX book about sidechaining, I think I might well have it enabled:

PluginCore::PluginCore()
...
    // --- for sidechaining, we support mono and stereo inputs; auxOutputs reserved for future use
    addSupportedAuxIOCombination({ kCFMono, kCFNone });
    addSupportedAuxIOCombination({ kCFStereo, kCFNone });
although my working Volume plugin has the same code...

I've spent the evening while stuck on this, building a cute VCVRack styled panel for the IIRFilters plugin, using JKnobMan and SynthPanelsDesigner, so at least I've been productive.
Avatar
Admin
July 24, 2021 - 10:59 am
Member Since: January 29, 2017
Forum Posts: 640
sp_UserOfflineSmall Offline

When you setup a RackAFX or ASPiK project, there is a checkbox for enabling the sidechain. The IO combination code you listed just sets the capabilities of the sidechain, if there is one.

The place to look is in the plugindescription.h file, which is generated from your selections when you setup the project (RackAFX or the ASPiKreator). 

Here is what one of mine looks like (I am processing whole buffers). The older versions of ASPiK did not have the processFrames and blockSize parameters. You can see that the sidechain is disabled via the constant delcaration.

// --- Plugin Options

const bool kProcessFrames = false;

const uint32_t kBlockSize = WANT_WHOLE_BUFFER;

const bool kWantSidechain = false;

const uint32_t kLatencyInSamples = 0;

const double kTailTimeMsec = 0.000;

const bool kVSTInfiniteTail = false;

const bool kVSTSAA = false;

const uint32_t kVST3SAAGranularity = 1;

const uint32_t kAAXCategory = 0;

If the vst3plugin.cpp file in the link helped, let me know as it only affected the sidechain code. 

And you also have the IIRFilters project from the download page to compare your processing stuff with.

Will 

Avatar
Anglia
Member
Members
July 24, 2021 - 2:59 pm
Member Since: June 2, 2014
Forum Posts: 15
sp_UserOfflineSmall Offline

Hi Will,

Thanks for those tips on where to find the validator source code - this will very likely come in handy if (when) I hit issues running the validator again; being able to add extra debug code here will be a massive help.

It turns out that I did have sidechaining enabled - I'd checked that box when creating the RackAFX project, so every time I generated the ASPiK project, this flag was set to true:

const bool kWantSidechain = true;

Interestingly, if I changed his assignment to set this value to false in the RackAFX project, then it was still set to true in the ASPiK project - so it looks like these values are set every time from the RackAFX project settings, rather than from the plugindescription.h in the RackAFX source directory.

I've now upgraded to RackAFX 7.0.3.2, ASPiK 1.6.9 and am using the latest Steinberg VST3 SDK, 7.3.2. With these versions, I've regenerated the IIRFilters ASPiK project, and could build successfully, and load & run the plugin in Reaper. So it definitely looks like the upgrade to RackAFX 7.0.3.2 has fixed the issue! (With sidechaining still enabled).

Thanks for your support with this, I could have been potentially stuck for days, and the extra pointers to how the validator can be extended to give extra logging is going to an extremely helpful piece of knowledge, which should allow me to figure out things better on my own in future.

Avatar
Admin
July 26, 2021 - 10:53 am
Member Since: January 29, 2017
Forum Posts: 640
sp_UserOfflineSmall Offline

Once you have exported the plugin, you can always change the setting in the plugindescription.h file, after the fact, to experiment or correct this behavior. 

You can also fix this in the CMakeLists.txt file, which when run, re-generates the plugindescription.h file based on the settings there, which are written by the ASPiKreator or RackAFX. This file is the "outer" CMakeLists.txt file that is in the project folder's root. Feel free to alter these variable as you wish, then re-run CMake to avoid having to re-export the project. 

# --- Plugin Options ---
set(INCLUDE_FX_OBJECTS TRUE) # <-- set TRUE or FALSE
set(LINK_FFTW FALSE) # <-- set TRUE or FALSE
set(EXPOSE_SIDECHAIN FALSE) # <-- set TRUE or FALSE
set(LATENCY_IN_SAMPLES 0) # <-- numerical, in samples
set(TAIL_TIME_MSEC 0.000000) # <-- numerical, in mSec
set(PROCESS_FRAMES TRUE) # <-- set TRUE or FALSE
set(PROCESS_BUFFERS FALSE) # <-- set TRUE or FALSE
set(PROCESS_BLOCKS FALSE) # <-- set TRUE or FALSE
set(BLOCK_SIZE DEFAULT_AUDIO_BLOCK_SIZE) # <-- numerical, in samples (per channel) if using blocks

# --- VST3 Only ---
set(VST3_INFINITE_TAIL FALSE)
set(VST3_SAMPLE_ACCURATE_AUTOMATION FALSE)
set(VST3_SAMPLE_ACCURATE_GRANULARITY 1)

Will 

Forum Timezone: America/New_York

Most Users Ever Online: 152

Currently Online:
7 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Chaes: 56

jim: 53

Skyler: 48

Derek: 46

Frodson: 45

Peter: 43

TheSmile: 43

clau_ste: 39

Nickolai: 39

JimmyM: 33

Member Stats:

Guest Posters: 1

Members: 732

Moderators: 1

Admins: 5

Forum Stats:

Groups: 13

Forums: 42

Topics: 804

Posts: 3087

Moderators: W Pirkle: 640